<?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>223736</bug_id>
          
          <creation_ts>2021-03-25 01:43:36 -0700</creation_ts>
          <short_desc>Update WebGL conformance test suite 2021-03-24</short_desc>
          <delta_ts>2021-03-30 00:24:29 -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>WebGL</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>222964</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1743691</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-25 01:43:36 -0700</bug_when>
    <thetext>Update WebGL conformance test suite 2021-03-24

To:

commit 44ac38b3b23be26fa8812334ec3e9bf67ecb5a9f (origin/master, origin/HEAD)
Author: Ken Russell &lt;kbrussel@alum.mit.edu&gt;
Date:   Wed Mar 24 18:14:46 2021 -0700

    Fix whitespace by rerunning IDL extraction scripts. (#3265)
    
    Somehow many changes were introduced recently that should be fixed
    separately from other updates.

As per:

&gt; Kenneth Russell 2021-03-19 14:38:17 PDT
&gt; Just a note that it looks like there&apos;s been a significant recent regression in the video-related conformance tests in https://github.com/KhronosGroup/WebGL .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743692</commentid>
    <comment_count>1</comment_count>
      <attachid>424221</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-25 01:46:29 -0700</bug_when>
    <thetext>Created attachment 424221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744852</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-03-29 13:08:46 -0700</bug_when>
    <thetext>Great; thanks for handling this update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745040</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-30 00:24:00 -0700</bug_when>
    <thetext>Committed r275198: &lt;https://commits.webkit.org/r275198&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 424221.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745041</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-30 00:24:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/75993378&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424221</attachid>
            <date>2021-03-25 01:46:29 -0700</date>
            <delta_ts>2021-03-30 00:24:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223736-20210325104627.patch</filename>
            <type>text/plain</type>
            <size>73365</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MDEyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmU4OGEyZDM0ZTY2ZTAyMjA3NGFk
MDAzZjRhYTBjYmEzZjI2YjA0OC4uYmM0NDU1Yzc2NGQ1MTcxZjQwOTNhMzVhY2NmZTVmOWQwOTEx
ZTIyMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTAzLTI1ICBLaW1tbyBLaW5udW5lbiAg
PGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIFdlYkdMIGNvbmZvcm1hbmNl
IHRlc3Qgc3VpdGUgMjAyMS0wMy0yNAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzNzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVG8gY29tbWl0IDQ0YWMzOGIzYjIzYmUyNmZhODgxMjMzNGVjM2U5YmY2
N2VjYjVhOWYgIEZpeCB3aGl0ZXNwYWNlIGJ5IHJlcnVubmluZyBJREwgZXh0cmFjdGlvbiBzY3Jp
cHRzLiAoIzMyNjUpCisgICAgICAgIEFzIHBlciBpdCBsb29rcyBsaWtlIHRoZXJlJ3MgYmVlbiBh
IHNpZ25pZmljYW50IHJlY2VudCByZWdyZXNzaW9uIGluIHRoZSB2aWRlby1yZWxhdGVkIGNvbmZv
cm1hbmNlIHRlc3RzCisgICAgICAgIGluIHRoZSB0ZXN0IHN1aXRlLgorCisgICAgICAgICogd2Vi
Z2wvMi4wLnkvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvaW1tdXRhYmxlLXRleC1yZW5kZXIt
ZmVlZGJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC8yLjAueS9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvbWlzYy9pbW11dGFibGUtdGV4LXJlbmRlci1mZWVkYmFjay5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLXdlYmNvZGVjcy12aWRlby1mcmFtZS5odG1sOgorICAg
ICAgICAqIHdlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1
cmVzL21pc2MvdmlkZW8tcm90YXRpb24uaHRtbDoKKyAgICAgICAgKiB3ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZXh0ZW5zaW9ucy9vZXMtZHJhdy1idWZmZXJz
LWluZGV4ZWQuaHRtbDoKKyAgICAgICAgKiB3ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy9pbW11dGFibGUtdGV4LXJlbmRlci1mZWVkYmFj
ay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzOgorICAgICAgICAoZGVzdHJveUNvbnRleHQpOgorICAg
ICAgICAqIHdlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy92aWRlby1y
b3RhdGlvbi0wLnZwOS5tcDQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL3Jlc291cmNlcy92aWRlby1yb3RhdGlvbi0xODAudnA5Lm1wNDogQWRkZWQu
CisgICAgICAgICogd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3Zp
ZGVvLXJvdGF0aW9uLTI3MC52cDkubXA0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvdmlkZW8tcm90YXRpb24tOTAudnA5Lm1wNDog
QWRkZWQuCisKIDIwMjEtMDMtMjQgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gUmUtc2tpcCBtb2Rlcm4tbWVkaWEtY29udHJvbHMgdGVzdHMgYWZ0ZXIg
cjI3NDgxMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLnkvY29uZm9ybWFuY2Uy
L3RleHR1cmVzL21pc2MvaW1tdXRhYmxlLXRleC1yZW5kZXItZmVlZGJhY2stZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLnkvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvaW1t
dXRhYmxlLXRleC1yZW5kZXItZmVlZGJhY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiMmEy
ZmFmNzM5MzM5YjMxZDM3NWRlNjk2YmIyMDM3M2Q0NDRhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC8yLjAueS9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy9pbW11dGFi
bGUtdGV4LXJlbmRlci1mZWVkYmFjay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlz
IHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCBy
ZXBvcnRzIFBBU1Mgb3IgRkFJTC4KKworVGVzdDogLi4vLi4vLi4vLi4vcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21pc2MvaW1tdXRhYmxlLXRleC1yZW5k
ZXItZmVlZGJhY2suaHRtbD93ZWJnbFZlcnNpb249MgorWyBQQVNTIF0gQWxsIHRlc3RzIHBhc3Nl
ZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLnkvY29uZm9ybWFuY2UyL3RleHR1
cmVzL21pc2MvaW1tdXRhYmxlLXRleC1yZW5kZXItZmVlZGJhY2suaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsLzIuMC55L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL2ltbXV0YWJsZS10ZXgtcmVu
ZGVyLWZlZWRiYWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjBhMGQyOTljNTcyMjg0OTE1MmVhNTFhMzEz
YmFkOWQ4YzY1YmM1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsLzIuMC55
L2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL2ltbXV0YWJsZS10ZXgtcmVuZGVyLWZlZWRiYWNr
Lmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCEtLSBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQg
YnkgVG9vbHMvU2NyaXB0cy91cGRhdGUtd2ViZ2wtY29uZm9ybWFuY2UtdGVzdHMuIERPIE5PVCBF
RElUIC0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHRpdGxlPldlYkdMIENvbmZvcm1hbmNlIFRlc3QgV3JhcHBlciBmb3IgaW1tdXRh
YmxlLXRleC1yZW5kZXItZmVlZGJhY2suaHRtbDwvdGl0bGU+Cis8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL3dlYmtpdC13ZWJnbC10ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cg
aW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC48L3A+CitUZXN0OiA8YSBocmVm
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4
dHVyZXMvbWlzYy9pbW11dGFibGUtdGV4LXJlbmRlci1mZWVkYmFjay5odG1sP3dlYmdsVmVyc2lv
bj0yIj4uLi8uLi8uLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvbWlzYy9pbW11dGFibGUtdGV4LXJlbmRlci1mZWVkYmFjay5odG1sP3dlYmdsVmVy
c2lvbj0yPC9hPgorPGRpdiBpZD0iaWZyYW1lIj4KKzxpZnJhbWUgc3JjPSIuLi8uLi8uLi8uLi9y
ZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy9pbW11
dGFibGUtdGV4LXJlbmRlci1mZWVkYmFjay5odG1sP3dlYmdsVmVyc2lvbj0yIiB3aWR0aD0iODAw
IiBoZWlnaHQ9IjYwMCI+PC9pZnJhbWU+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLXdlYmNvZGVj
cy12aWRlby1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rl
c3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC13ZWJjb2RlY3MtdmlkZW8tZnJh
bWUuaHRtbAppbmRleCA1Mzc0OThiYjc1MmFiN2RmZTA3ODUxNThlNjM5ZTVkNzhmZTVkOGI2Li5m
MGU0MTNlMmY2ZjQ3NGNjYjZiZWEyZTAzYjg4NTEzMGUwZGZmNTdiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRl
bnNpb25zL3dlYmdsLXdlYmNvZGVjcy12aWRlby1mcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
d2ViZ2wtd2ViY29kZWNzLXZpZGVvLWZyYW1lLmh0bWwKQEAgLTEsMTk5ICsxLDIxMSBAQAotPCEt
LQotQ29weXJpZ2h0IChjKSAyMDIxIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KLVVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCi1mb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KLS0tPgotCi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotCi08aGVhZD4KLSAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgotICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIg
Lz4KLSAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSAg
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotICA8
c2NyaXB0IHNyYz0iLi4vLi4vanMvdGVzdHMvb3V0LW9mLWJvdW5kcy10ZXN0LmpzIj48L3Njcmlw
dD4KLSAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2V4dGVuc2lvbnMvcHJvcG9zYWxzL1dFQkdM
X3dlYmNvZGVjc192aWRlb19mcmFtZS93ZWJnbF93ZWJjb2RlY3NfdmlkZW9fZnJhbWUuanMiPjwv
c2NyaXB0PgotICA8c3R5bGU+Ci0gICAgY2FudmFzIHsKLSAgICAgIHBhZGRpbmc6IDEwcHg7Ci0g
ICAgICBiYWNrZ3JvdW5kOiBnb2xkOwotICAgIH0KLQotICAgIGJ1dHRvbiB7Ci0gICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiAjNTU1NTU1OwotICAgICAgYm9yZGVyOiBub25lOwotICAgICAgY29sb3I6
IHdoaXRlOwotICAgICAgcGFkZGluZzogMTVweCAzMnB4OwotICAgICAgd2lkdGg6IDE1MHB4Owot
ICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgICAgZGlzcGxheTogYmxvY2s7Ci0gICAgICBm
b250LXNpemU6IDE2cHg7Ci0gICAgfQotICA8L3N0eWxlPgotPC9oZWFkPgotCi08Ym9keT4KLSAg
PGNhbnZhcyBpZD0ic3JjIiB3aWR0aD0iNjQwIiBoZWlnaHQ9IjQ4MCI+PC9jYW52YXM+Ci0gIDxj
YW52YXMgaWQ9ImRzdCIgd2lkdGg9IjY0MCIgaGVpZ2h0PSI0ODAiPjwvY2FudmFzPgotICA8cCBp
ZD0iaW5mbyI+PC9wPgotICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0gIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgotICA8c2NyaXB0PgotICAgICJ1c2Ugc3RyaWN0IjsKLSAgICBkZXNj
cmlwdGlvbigiVGVzdCBvZiBpbXBvcnRpbmcgVmlkZW9mcmFtZSBmcm9tIFdlYmNvZGVjcyB0byBX
ZWJnbCIpOwotCi0gICAgY29uc3Qga0lzUnVubmluZ1Rlc3QgPSB0cnVlOwotICAgIGNvbnN0IGtN
YXhGcmFtZSA9IDEwOwotICAgIGNvbnN0IGtUZXN0UGl4ZWwgPSBbMjU1LCAxMjgsIDAsIDI1NV07
Ci0gICAgLy8gU3VtIG9mIHBpeGVsIGRpZmZlcmVuY2Ugb2YgUi9HL0IgY2hhbm5lbC4gVXNlIHRv
IGRlY2lkZSB3aGV0aGVyIGEKLSAgICAvLyBwaXhlbCBpcyBtYXRjaGVkIHdpdGggYW5vdGhlci4K
LSAgICBjb25zdCBjb2RlY19zdHJpbmcgPSAidnAwOS4wMC41MS4wOC4wMCI7Ci0KLSAgICBsZXQg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7Ci0gICAgbGV0IGNudiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzcmMiKTsKLSAgICBsZXQgc3JjX3dpZHRoID0gY252LndpZHRoOwotICAgIGxldCBzcmNf
aGVpZ2h0ID0gY252LmhlaWdodDsKLSAgICBsZXQgc3JjX2NvbG9yID0gInJnYmEoIiArIGtUZXN0
UGl4ZWxbMF0udG9TdHJpbmcoKSArICIsIiArIGtUZXN0UGl4ZWxbMV0udG9TdHJpbmcoKSArICIs
IgotICAgICAgKyBrVGVzdFBpeGVsWzJdLnRvU3RyaW5nKCkgKyAiLCIgKyBrVGVzdFBpeGVsWzNd
LnRvU3RyaW5nKCkgKyAiKSI7Ci0gICAgbGV0IGZyYW1lX2NvdW50ZXIgPSAwOwotICAgIGxldCBw
aXhlbENvbXBhcmVUb2xlcmFuY2UgPSA1OwotCi0gICAgZnVuY3Rpb24gZ2V0UXVlcnlWYXJpYWJs
ZSh2YXJpYWJsZSkgewotICAgICAgdmFyIHF1ZXJ5ID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5z
dWJzdHJpbmcoMSk7Ci0gICAgICB2YXIgdmFycyA9IHF1ZXJ5LnNwbGl0KCImIik7Ci0gICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHZhcnMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdmFyIHBhaXIg
PSB2YXJzW2ldLnNwbGl0KCI9Iik7Ci0gICAgICAgIGlmIChwYWlyWzBdID09IHZhcmlhYmxlKSB7
IHJldHVybiBwYWlyWzFdOyB9Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgbGV0IHRoID0gcGFyc2VJbnQoZ2V0UXVlcnlWYXJpYWJsZSgndGhyZXNob2xkJykpOwot
ICAgIGlmICghaXNOYU4odGgpKQotICAgICAgcGl4ZWxDb21wYXJlVG9sZXJhbmNlID0gdGg7Ci0K
LSAgICBhc3luYyBmdW5jdGlvbiBzdGFydERyYXdpbmcoKSB7Ci0gICAgICBsZXQgY252ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNyYyIpOwotICAgICAgdmFyIGN0eCA9IGNudi5nZXRDb250
ZXh0KCcyZCcsIHsgYWxwaGE6IGZhbHNlIH0pOwotCi0gICAgICBjdHguZmlsbFN0eWxlID0gc3Jj
X2NvbG9yOwotICAgICAgbGV0IGRyYXdPbmVGcmFtZSA9IGZ1bmN0aW9uICh0aW1lKSB7Ci0gICAg
ICAgIGN0eC5maWxsU3R5bGUgPSBzcmNfY29sb3I7Ci0gICAgICAgIGN0eC5maWxsUmVjdCgwLCAw
LCBzcmNfd2lkdGgsIHNyY19oZWlnaHQpOwotICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlv
bkZyYW1lKGRyYXdPbmVGcmFtZSk7Ci0gICAgICB9Ci0gICAgICB3aW5kb3cucmVxdWVzdEFuaW1h
dGlvbkZyYW1lKGRyYXdPbmVGcmFtZSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY2FwdHVyZUFu
ZEVuY29kZShwcm9jZXNzQ2h1bmspIHsKLSAgICAgIGxldCBjbnYgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic3JjIik7Ci0gICAgICBsZXQgZnBzID0gNjA7Ci0gICAgICBsZXQgcGVuZGluZ19v
dXRwdXRzID0gMDsKLSAgICAgIGxldCBzdHJlYW0gPSBjbnYuY2FwdHVyZVN0cmVhbShmcHMpOwot
ICAgICAgbGV0IHZ0ciA9IG5ldyBWaWRlb1RyYWNrUmVhZGVyKHN0cmVhbS5nZXRWaWRlb1RyYWNr
cygpWzBdKTsKLQotICAgICAgY29uc3QgaW5pdCA9IHsKLSAgICAgICAgb3V0cHV0OiAoY2h1bmsp
ID0+IHsKLSAgICAgICAgICB0ZXN0UGFzc2VkKCJFbmNvZGUgZnJhbWUgc3VjY2Vzc2Z1bGx5LiIp
OwotICAgICAgICAgIHBlbmRpbmdfb3V0cHV0cy0tOwotICAgICAgICAgIHByb2Nlc3NDaHVuayhj
aHVuayk7Ci0gICAgICAgIH0sCi0gICAgICAgIGVycm9yOiAoZSkgPT4gewotICAgICAgICAgIHRl
c3RGYWlsZWQoIkZhaWxlZCB0byBlbmNvZGUgZnJhbWUuIik7Ci0gICAgICAgICAgZmluaXNoVGVz
dCgpOwotICAgICAgICAgIHZ0ci5zdG9wKCk7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0KLSAgICAg
IGNvbnN0IGNvbmZpZyA9IHsKLSAgICAgICAgY29kZWM6IGNvZGVjX3N0cmluZywKLSAgICAgICAg
d2lkdGg6IGNudi53aWR0aCwKLSAgICAgICAgaGVpZ2h0OiBjbnYuaGVpZ2h0LAotICAgICAgICBi
aXRyYXRlOiAxMGU2LAotICAgICAgICBmcmFtZXJhdGU6IGZwcywKLSAgICAgIH07Ci0KLSAgICAg
IGxldCBlbmNvZGVyID0gbmV3IFZpZGVvRW5jb2Rlcihpbml0KTsKLSAgICAgIGVuY29kZXIuY29u
ZmlndXJlKGNvbmZpZyk7Ci0KLSAgICAgIHZ0ci5zdGFydCgoZnJhbWUpID0+IHsKLSAgICAgICAg
aWYgKHBlbmRpbmdfb3V0cHV0cyA+IDMwKSB7Ci0gICAgICAgICAgY29uc29sZS5sb2coImRyb3Ag
dGhpcyBmcmFtZSIpOwotICAgICAgICAgIC8vIFRvbyBtYW55IGZyYW1lcyBpbiBmbGlnaHQsIGVu
Y29kZXIgaXMgb3ZlcndoZWxtZWQKLSAgICAgICAgICAvLyBsZXQncyBkcm9wIHRoaXMgZnJhbWUu
Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChmcmFtZV9jb3VudGVy
ID09IGtNYXhGcmFtZSkgewotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IGZyYW1lX2NvdW50ZXIrKzsKLSAgICAgICAgcGVuZGluZ19vdXRwdXRzKys7Ci0gICAgICAgIGNv
bnN0IGluc2VydF9rZXlmcmFtZSA9IChmcmFtZV9jb3VudGVyICUgMTUwKSA9PSAwOwotICAgICAg
ICBlbmNvZGVyLmVuY29kZShmcmFtZSwgeyBrZXlGcmFtZTogaW5zZXJ0X2tleWZyYW1lIH0pOwot
ICAgICAgfSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc3RhcnREZWNvZGluZ0FuZFJlbmRlcmlu
ZyhjbnYsIGhhbmRsZUZyYW1lKSB7Ci0gICAgICBjb25zdCBpbml0ID0gewotICAgICAgICBvdXRw
dXQ6IGhhbmRsZUZyYW1lLAotICAgICAgICBlcnJvcjogKGUpID0+IHsKLSAgICAgICAgICB0ZXN0
RmFpbGVkKCJGYWlsZWQgdG8gZGVjb2RlIGZyYW1lLiIpOwotICAgICAgICAgIGZpbmlzaFRlc3Qo
KTsKLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgY29uc3QgY29uZmlnID0gewotICAgICAg
ICBjb2RlYzogY29kZWNfc3RyaW5nLAotICAgICAgICBjb2RlZFdpZHRoOiBjbnYud2lkdGgsCi0g
ICAgICAgIGNvZGVkSGVpZ2h0OiBjbnYuaGVpZ2h0LAotICAgICAgICBhY2NlbGVyYXRpb246ICJk
ZW55IiwKLQotICAgICAgfTsKLQotICAgICAgbGV0IGRlY29kZXIgPSBuZXcgVmlkZW9EZWNvZGVy
KGluaXQpOwotICAgICAgZGVjb2Rlci5jb25maWd1cmUoY29uZmlnKTsKLSAgICAgIHJldHVybiBk
ZWNvZGVyOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGlzRnJhbWVQaXhlbE1hdGNoZWQoZ2wsIHRo
X3Blcl9waXhlbCA9IHBpeGVsQ29tcGFyZVRvbGVyYW5jZSkgewotICAgICAgV2ViR0xUZXN0VXRp
bHMuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCBzcmNfd2lkdGgsIHNyY193aWR0aCwga1Rlc3RQ
aXhlbCwgInNob3VsZCBiZSBvcmFuZ2UiLCBwaXhlbENvbXBhcmVUb2xlcmFuY2UpCi0gICAgfQot
Ci0gICAgZnVuY3Rpb24gbWFpbigpIHsKLSAgICAgIGlmICghKCJWaWRlb0VuY29kZXIiIGluIHdp
bmRvdykpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiV2ViQ29kZWNzIEFQSSBpcyBub3Qgc3VwcG9y
dGVkLiIpOwotICAgICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0K
LSAgICAgIGxldCBjbnYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHN0Iik7Ci0KLSAgICAg
IGxldCB3ZWJnbF93ZWJjb2RlY3NfdGVzdF9jb250ZXh0ID0gewotICAgICAgICBtYXhGcmFtZVRl
c3RlZDoga01heEZyYW1lLAotICAgICAgICBkaXNwbGF5ZWRfZnJhbWU6IDAsCi0gICAgICAgIGlz
RnJhbWVQaXhlbE1hdGNoZWQ6IGlzRnJhbWVQaXhlbE1hdGNoZWQsCi0gICAgICAgIHRlc3RGYWls
ZWQ6IHRlc3RGYWlsZWQsCi0gICAgICAgIHRlc3RQYXNzZWQ6IHRlc3RQYXNzZWQsCi0gICAgICAg
IGZpbmlzaFRlc3Q6IGZpbmlzaFRlc3QKLSAgICAgIH07Ci0gICAgICBzZXRUZXN0TW9kZSh3ZWJn
bF93ZWJjb2RlY3NfdGVzdF9jb250ZXh0KTsKLSAgICAgIGxldCBoYW5kbGVGcmFtZSA9IHJlcXVl
c3RXZWJHTFZpZGVvRnJhbWVIYW5kbGVyKGNudik7Ci0gICAgICBpZiAoaGFuZGxlRnJhbWUgPT09
IG51bGwpIHsKLSAgICAgICAgZmluaXNoVGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgICB9
Ci0KLSAgICAgIHN0YXJ0RHJhd2luZygpOwotICAgICAgbGV0IGRlY29kZXIgPSBzdGFydERlY29k
aW5nQW5kUmVuZGVyaW5nKGNudiwgaGFuZGxlRnJhbWUpOwotICAgICAgY2FwdHVyZUFuZEVuY29k
ZSgoY2h1bmspID0+IHsKLSAgICAgICAgZGVjb2Rlci5kZWNvZGUoY2h1bmspOwotICAgICAgfSk7
Ci0gICAgfQotCi0gICAgZG9jdW1lbnQuYm9keS5vbmxvYWQgPSBtYWluOwotICA8L3NjcmlwdD4K
LQotPC9ib2R5PgotCis8IS0tDQorQ29weXJpZ2h0IChjKSAyMDIxIFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4NCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLg0K
Ky0tPg0KKw0KKzwhRE9DVFlQRSBodG1sPg0KKzxodG1sPg0KKw0KKzxoZWFkPg0KKyAgPG1ldGEg
Y2hhcnNldD0iVVRGLTgiPg0KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+DQorICA8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmds
LXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0Pg0KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3Rz
L291dC1vZi1ib3VuZHMtdGVzdC5qcyI+PC9zY3JpcHQ+DQorICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vZXh0ZW5zaW9ucy9wcm9wb3NhbHMvV0VCR0xfd2ViY29kZWNzX3ZpZGVvX2ZyYW1lL3dl
YmdsX3dlYmNvZGVjc192aWRlb19mcmFtZS5qcyI+PC9zY3JpcHQ+DQorICA8c3R5bGU+DQorICAg
IGNhbnZhcyB7DQorICAgICAgcGFkZGluZzogMTBweDsNCisgICAgICBiYWNrZ3JvdW5kOiBnb2xk
Ow0KKyAgICB9DQorDQorICAgIGJ1dHRvbiB7DQorICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzU1
NTU1NTsNCisgICAgICBib3JkZXI6IG5vbmU7DQorICAgICAgY29sb3I6IHdoaXRlOw0KKyAgICAg
IHBhZGRpbmc6IDE1cHggMzJweDsNCisgICAgICB3aWR0aDogMTUwcHg7DQorICAgICAgdGV4dC1h
bGlnbjogY2VudGVyOw0KKyAgICAgIGRpc3BsYXk6IGJsb2NrOw0KKyAgICAgIGZvbnQtc2l6ZTog
MTZweDsNCisgICAgfQ0KKyAgPC9zdHlsZT4NCis8L2hlYWQ+DQorDQorPGJvZHk+DQorICA8Y2Fu
dmFzIGlkPSJzcmMiIHdpZHRoPSI2NDAiIGhlaWdodD0iNDgwIj48L2NhbnZhcz4NCisgIDxjYW52
YXMgaWQ9ImRzdCIgd2lkdGg9IjY0MCIgaGVpZ2h0PSI0ODAiPjwvY2FudmFzPg0KKyAgPHAgaWQ9
ImluZm8iPjwvcD4NCisgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4NCisgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2Pg0KKyAgPHNjcmlwdD4NCisgICAgInVzZSBzdHJpY3QiOw0KKyAgICBk
ZXNjcmlwdGlvbigiVGVzdCBvZiBpbXBvcnRpbmcgVmlkZW9mcmFtZSBmcm9tIFdlYmNvZGVjcyB0
byBXZWJnbCIpOw0KKw0KKyAgICBjb25zdCBrSXNSdW5uaW5nVGVzdCA9IHRydWU7DQorICAgIGNv
bnN0IGtNYXhGcmFtZSA9IDEwOw0KKyAgICBjb25zdCBrVGVzdFBpeGVsID0gWzI1NSwgMTI4LCAw
LCAyNTVdOw0KKyAgICAvLyBTdW0gb2YgcGl4ZWwgZGlmZmVyZW5jZSBvZiBSL0cvQiBjaGFubmVs
LiBVc2UgdG8gZGVjaWRlIHdoZXRoZXIgYQ0KKyAgICAvLyBwaXhlbCBpcyBtYXRjaGVkIHdpdGgg
YW5vdGhlci4NCisgICAgY29uc3QgY29kZWNfc3RyaW5nID0gInZwMDkuMDAuNTEuMDguMDAiOw0K
Kw0KKyAgICBsZXQgd3R1ID0gV2ViR0xUZXN0VXRpbHM7DQorICAgIGxldCBjbnYgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic3JjIik7DQorICAgIGxldCBzcmNfd2lkdGggPSBjbnYud2lkdGg7
DQorICAgIGxldCBzcmNfaGVpZ2h0ID0gY252LmhlaWdodDsNCisgICAgbGV0IHNyY19jb2xvciA9
ICJyZ2JhKCIgKyBrVGVzdFBpeGVsWzBdLnRvU3RyaW5nKCkgKyAiLCIgKyBrVGVzdFBpeGVsWzFd
LnRvU3RyaW5nKCkgKyAiLCINCisgICAgICArIGtUZXN0UGl4ZWxbMl0udG9TdHJpbmcoKSArICIs
IiArIGtUZXN0UGl4ZWxbM10udG9TdHJpbmcoKSArICIpIjsNCisgICAgbGV0IGZyYW1lX2NvdW50
ZXIgPSAwOw0KKyAgICBsZXQgcGl4ZWxDb21wYXJlVG9sZXJhbmNlID0gNTsNCisNCisgICAgZnVu
Y3Rpb24gZ2V0UXVlcnlWYXJpYWJsZSh2YXJpYWJsZSkgew0KKyAgICAgIHZhciBxdWVyeSA9IHdp
bmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpOw0KKyAgICAgIHZhciB2YXJzID0gcXVl
cnkuc3BsaXQoIiYiKTsNCisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhcnMubGVuZ3RoOyBp
KyspIHsNCisgICAgICAgIHZhciBwYWlyID0gdmFyc1tpXS5zcGxpdCgiPSIpOw0KKyAgICAgICAg
aWYgKHBhaXJbMF0gPT0gdmFyaWFibGUpIHsgcmV0dXJuIHBhaXJbMV07IH0NCisgICAgICB9DQor
ICAgICAgcmV0dXJuIGZhbHNlOw0KKyAgICB9DQorDQorICAgIGxldCB0aCA9IHBhcnNlSW50KGdl
dFF1ZXJ5VmFyaWFibGUoJ3RocmVzaG9sZCcpKTsNCisgICAgaWYgKCFpc05hTih0aCkpDQorICAg
ICAgcGl4ZWxDb21wYXJlVG9sZXJhbmNlID0gdGg7DQorDQorICAgIGFzeW5jIGZ1bmN0aW9uIHN0
YXJ0RHJhd2luZygpIHsNCisgICAgICBsZXQgY252ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InNyYyIpOw0KKyAgICAgIHZhciBjdHggPSBjbnYuZ2V0Q29udGV4dCgnMmQnLCB7IGFscGhhOiBm
YWxzZSB9KTsNCisNCisgICAgICBjdHguZmlsbFN0eWxlID0gc3JjX2NvbG9yOw0KKyAgICAgIGxl
dCBkcmF3T25lRnJhbWUgPSBmdW5jdGlvbiAodGltZSkgew0KKyAgICAgICAgY3R4LmZpbGxTdHls
ZSA9IHNyY19jb2xvcjsNCisgICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBzcmNfd2lkdGgsIHNy
Y19oZWlnaHQpOw0KKyAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShkcmF3T25l
RnJhbWUpOw0KKyAgICAgIH0NCisgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGRy
YXdPbmVGcmFtZSk7DQorICAgIH0NCisNCisgICAgZnVuY3Rpb24gY2FwdHVyZUFuZEVuY29kZShw
cm9jZXNzQ2h1bmspIHsNCisgICAgICBsZXQgY252ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InNyYyIpOw0KKyAgICAgIGxldCBmcHMgPSA2MDsNCisgICAgICBsZXQgcGVuZGluZ19vdXRwdXRz
ID0gMDsNCisgICAgICBsZXQgc3RyZWFtID0gY252LmNhcHR1cmVTdHJlYW0oZnBzKTsNCisgICAg
ICBsZXQgcHJvY2Vzc29yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3Ioc3RyZWFtLmdl
dFZpZGVvVHJhY2tzKClbMF0pOw0KKw0KKyAgICAgIGNvbnN0IGluaXQgPSB7DQorICAgICAgICBv
dXRwdXQ6IChjaHVuaykgPT4gew0KKyAgICAgICAgICB0ZXN0UGFzc2VkKCJFbmNvZGUgZnJhbWUg
c3VjY2Vzc2Z1bGx5LiIpOw0KKyAgICAgICAgICBwZW5kaW5nX291dHB1dHMtLTsNCisgICAgICAg
ICAgcHJvY2Vzc0NodW5rKGNodW5rKTsNCisgICAgICAgIH0sDQorICAgICAgICBlcnJvcjogKGUp
ID0+IHsNCisgICAgICAgICAgdGVzdEZhaWxlZCgiRmFpbGVkIHRvIGVuY29kZSBmcmFtZS4iKTsN
CisgICAgICAgICAgZmluaXNoVGVzdCgpOw0KKyAgICAgICAgICB2dHIuc3RvcCgpOw0KKyAgICAg
ICAgfQ0KKyAgICAgIH07DQorDQorICAgICAgY29uc3QgY29uZmlnID0gew0KKyAgICAgICAgY29k
ZWM6IGNvZGVjX3N0cmluZywNCisgICAgICAgIHdpZHRoOiBjbnYud2lkdGgsDQorICAgICAgICBo
ZWlnaHQ6IGNudi5oZWlnaHQsDQorICAgICAgICBiaXRyYXRlOiAxMGU2LA0KKyAgICAgICAgZnJh
bWVyYXRlOiBmcHMsDQorICAgICAgfTsNCisNCisgICAgICBsZXQgZW5jb2RlciA9IG5ldyBWaWRl
b0VuY29kZXIoaW5pdCk7DQorICAgICAgZW5jb2Rlci5jb25maWd1cmUoY29uZmlnKTsNCisNCisg
ICAgICBjb25zdCBmcmFtZV9yZWFkZXIgPSBwcm9jZXNzb3IucmVhZGFibGUuZ2V0UmVhZGVyKCk7
DQorICAgICAgZnJhbWVfcmVhZGVyLnJlYWQoKS50aGVuKGZ1bmN0aW9uIHByb2Nlc3NGcmFtZSh7
ZG9uZSwgdmFsdWV9KSB7DQorICAgICAgICBpZiAoZG9uZSkNCisgICAgICAgICAgcmV0dXJuOw0K
Kw0KKyAgICAgICAgaWYgKHBlbmRpbmdfb3V0cHV0cyA+IDMwKSB7DQorICAgICAgICAgIGNvbnNv
bGUubG9nKCJkcm9wIHRoaXMgZnJhbWUiKTsNCisgICAgICAgICAgLy8gVG9vIG1hbnkgZnJhbWVz
IGluIGZsaWdodCwgZW5jb2RlciBpcyBvdmVyd2hlbG1lZA0KKyAgICAgICAgICAvLyBsZXQncyBk
cm9wIHRoaXMgZnJhbWUuDQorICAgICAgICAgIHZhbHVlLmNsb3NlKCk7DQorICAgICAgICAgIGZy
YW1lX3JlYWRlci5yZWFkKCkudGhlbihwcm9jZXNzRnJhbWUpOw0KKyAgICAgICAgICByZXR1cm47
DQorICAgICAgICB9DQorDQorICAgICAgICBpZihmcmFtZV9jb3VudGVyID09IGtNYXhGcmFtZSkg
ew0KKyAgICAgICAgICBmcmFtZV9yZWFkZXIucmVsZWFzZUxvY2soKTsNCisgICAgICAgICAgcHJv
Y2Vzc29yLnJlYWRhYmxlLmNhbmNlbCgpOw0KKyAgICAgICAgICB2YWx1ZS5jbG9zZSgpOw0KKyAg
ICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorDQorICAgICAgICBmcmFtZV9jb3VudGVyKys7
DQorICAgICAgICBwZW5kaW5nX291dHB1dHMrKzsNCisgICAgICAgIGNvbnN0IGluc2VydF9rZXlm
cmFtZSA9IChmcmFtZV9jb3VudGVyICUgMTUwKSA9PSAwOw0KKyAgICAgICAgZW5jb2Rlci5lbmNv
ZGUodmFsdWUsIHsga2V5RnJhbWU6IGluc2VydF9rZXlmcmFtZSB9KTsNCisNCisgICAgICAgIGZy
YW1lX3JlYWRlci5yZWFkKCkudGhlbihwcm9jZXNzRnJhbWUpOw0KKyAgICAgIH0pOw0KKyAgICB9
DQorDQorICAgIGZ1bmN0aW9uIHN0YXJ0RGVjb2RpbmdBbmRSZW5kZXJpbmcoY252LCBoYW5kbGVG
cmFtZSkgew0KKyAgICAgIGNvbnN0IGluaXQgPSB7DQorICAgICAgICBvdXRwdXQ6IGhhbmRsZUZy
YW1lLA0KKyAgICAgICAgZXJyb3I6IChlKSA9PiB7DQorICAgICAgICAgIHRlc3RGYWlsZWQoIkZh
aWxlZCB0byBkZWNvZGUgZnJhbWUuIik7DQorICAgICAgICAgIGZpbmlzaFRlc3QoKTsNCisgICAg
ICAgIH0NCisgICAgICB9Ow0KKw0KKyAgICAgIGNvbnN0IGNvbmZpZyA9IHsNCisgICAgICAgIGNv
ZGVjOiBjb2RlY19zdHJpbmcsDQorICAgICAgICBjb2RlZFdpZHRoOiBjbnYud2lkdGgsDQorICAg
ICAgICBjb2RlZEhlaWdodDogY252LmhlaWdodCwNCisgICAgICAgIGFjY2VsZXJhdGlvbjogImRl
bnkiLA0KKw0KKyAgICAgIH07DQorDQorICAgICAgbGV0IGRlY29kZXIgPSBuZXcgVmlkZW9EZWNv
ZGVyKGluaXQpOw0KKyAgICAgIGRlY29kZXIuY29uZmlndXJlKGNvbmZpZyk7DQorICAgICAgcmV0
dXJuIGRlY29kZXI7DQorICAgIH0NCisNCisgICAgZnVuY3Rpb24gaXNGcmFtZVBpeGVsTWF0Y2hl
ZChnbCwgdGhfcGVyX3BpeGVsID0gcGl4ZWxDb21wYXJlVG9sZXJhbmNlKSB7DQorICAgICAgV2Vi
R0xUZXN0VXRpbHMuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCBzcmNfd2lkdGgsIHNyY193aWR0
aCwga1Rlc3RQaXhlbCwgInNob3VsZCBiZSBvcmFuZ2UiLCBwaXhlbENvbXBhcmVUb2xlcmFuY2Up
DQorICAgIH0NCisNCisgICAgZnVuY3Rpb24gbWFpbigpIHsNCisgICAgICBpZiAoISgiVmlkZW9F
bmNvZGVyIiBpbiB3aW5kb3cpKSB7DQorICAgICAgICB0ZXN0UGFzc2VkKCJXZWJDb2RlY3MgQVBJ
IGlzIG5vdCBzdXBwb3J0ZWQuIik7DQorICAgICAgICBmaW5pc2hUZXN0KCk7DQorICAgICAgICBy
ZXR1cm47DQorICAgICAgfQ0KKyAgICAgIGxldCBjbnYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZHN0Iik7DQorDQorICAgICAgbGV0IHdlYmdsX3dlYmNvZGVjc190ZXN0X2NvbnRleHQgPSB7
DQorICAgICAgICBtYXhGcmFtZVRlc3RlZDoga01heEZyYW1lLA0KKyAgICAgICAgZGlzcGxheWVk
X2ZyYW1lOiAwLA0KKyAgICAgICAgaXNGcmFtZVBpeGVsTWF0Y2hlZDogaXNGcmFtZVBpeGVsTWF0
Y2hlZCwNCisgICAgICAgIHRlc3RGYWlsZWQ6IHRlc3RGYWlsZWQsDQorICAgICAgICB0ZXN0UGFz
c2VkOiB0ZXN0UGFzc2VkLA0KKyAgICAgICAgZmluaXNoVGVzdDogZmluaXNoVGVzdA0KKyAgICAg
IH07DQorICAgICAgc2V0VGVzdE1vZGUod2ViZ2xfd2ViY29kZWNzX3Rlc3RfY29udGV4dCk7DQor
ICAgICAgbGV0IGhhbmRsZUZyYW1lID0gcmVxdWVzdFdlYkdMVmlkZW9GcmFtZUhhbmRsZXIoY252
KTsNCisgICAgICBpZiAoaGFuZGxlRnJhbWUgPT09IG51bGwpIHsNCisgICAgICAgIGZpbmlzaFRl
c3QoKTsNCisgICAgICAgIHJldHVybjsNCisgICAgICB9DQorDQorICAgICAgc3RhcnREcmF3aW5n
KCk7DQorICAgICAgbGV0IGRlY29kZXIgPSBzdGFydERlY29kaW5nQW5kUmVuZGVyaW5nKGNudiwg
aGFuZGxlRnJhbWUpOw0KKyAgICAgIGNhcHR1cmVBbmRFbmNvZGUoKGNodW5rKSA9PiB7DQorICAg
ICAgICBkZWNvZGVyLmRlY29kZShjaHVuayk7DQorICAgICAgfSk7DQorICAgIH0NCisNCisgICAg
ZG9jdW1lbnQuYm9keS5vbmxvYWQgPSBtYWluOw0KKyAgPC9zY3JpcHQ+DQorDQorPC9ib2R5Pg0K
Kw0KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0
dXJlcy9taXNjL3ZpZGVvLXJvdGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3ZpZGVvLXJvdGF0
aW9uLmh0bWwKaW5kZXggMzIyYzI3OGY0ODkyZDRkMzRkMjZkMzhiNjk3M2E3MmFmZjdkZDA1ZC4u
YjZkMjhmMTVkYzBiZjNiNWYwM2M0MjhiNDRmM2QwY2M1OTU3NjZjOCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvbWlzYy92aWRlby1yb3RhdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdmlkZW8t
cm90YXRpb24uaHRtbApAQCAtMjksNyArMjksNyBAQCBmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQg
ZmlsZS4KICAgICAgICAgbGV0IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOwogICAg
ICAgICBsZXQgcHJvZ3JhbSA9IHRpdS5zZXR1cFRleHR1cmVkUXVhZChnbCwgZ2wuUkdCQSk7CiAg
ICAgICAgIGNvbnN0IHJlc291cmNlUGF0aCA9ICIuLi8uLi8uLi9yZXNvdXJjZXMvIjsKLSAgICAg
ICAgY29uc3QgdG9sZXJhbmNlID0gNTsKKyAgICAgICAgY29uc3QgdG9sZXJhbmNlID0gMTA7CiAK
ICAgICAgICAgY29uc3QgZXhwZWN0ZWRDb2xvcnMgPSB7CiAgICAgICAgICAgICB0b3A6IHsgbG9j
YXRpb246IFswLjUsIDAuMjVdLCBjb2xvcjogWzI1NSwgMCwgMF0gfSwKQEAgLTg5LDExICs4OSwx
MiBAQCBmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGNvbnN0IHR5cGUgPSAndmlkZW8vbXA0
OyBjb2RlY3M9ImF2YzEuNDJFMDFFLCBtcDRhLjQwLjIiJzsKLSAgICAgICAgICAgIGlmICghdmlk
ZW8uY2FuUGxheVR5cGUodHlwZSkucmVwbGFjZSgvbm8vLCAnJykpIHsKLSAgICAgICAgICAgICAg
ICBkZWJ1Zyh0eXBlICsgIiB1bnN1cHBvcnRlZCIpOworICAgICAgICAgICAgbGV0IHN1cHBvcnRz
X2gyNjQgPSAhIXZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMS40MkUw
MUUiJykucmVwbGFjZSgvbm8vLCAnJyk7CisgICAgICAgICAgICBsZXQgc3VwcG9ydHNfdnA5ID0g
ISF2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vbXA0OyBjb2RlY3M9InZwMDkuMDAuMTAuMDgiJyku
cmVwbGFjZSgvbm8vLCAnJyk7CisgICAgICAgICAgICBpZiAoIXN1cHBvcnRzX2gyNjQgJiYgIXN1
cHBvcnRzX3ZwOSkgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIHN1cHBvcnRlZCB2
aWRlbyB0eXBlcy4iKTsKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Owor
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBsZXQgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgp
OwogICAgICAgICAgICAgLy8gQmluZCB0aGUgdGV4dHVyZSB0byB0aGUgZGVmYXVsdCB0ZXh0dXJl
IHVuaXQgMApAQCAtMTA3LDI3ICsxMDgsNDQgQEAgZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZp
bGUuCiAgICAgICAgICAgICAvLyBUaGVzZSBmaWxlcyB3ZXJlIGNyZWF0ZWQgYnkgY29udmVydGlu
ZyBleGlmLW9yaWVudGF0aW9uLXRlc3QtMS1ub3JtYWwuanBnIHRvIG1wNAogICAgICAgICAgICAg
Ly8gZmlsZXMsIHJvdGF0aW5nIHRoZW0gdXNpbmcgdGhlIHRyYW5zcG9zZSBmaWx0ZXIsIGFuZCBh
ZGRpbmcgcm90YXRlIG1ldGFkYXRhLCBhbGwKICAgICAgICAgICAgIC8vIHVzaW5nIHRoZSBmZm1w
ZWcgY29tbWFuZC1saW5lIHRvb2wuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gRnJv
bSBzZGsvdGVzdHMvcmVzb3VyY2VzLyBkaXJlY3Rvcnk6CisgICAgICAgICAgICAvLwogICAgICAg
ICAgICAgLy8gMDoKLSAgICAgICAgICAgIC8vIGZmbXBlZyAtbm9hdXRvcm90YXRlIC1pIHNkay90
ZXN0cy9yZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi10ZXN0LTEtbm9ybWFsLmpwZyAtcGl4X2Zt
dCB5dXY0MjBwIHRlbXAubXA0ICYmCi0gICAgICAgICAgICAvLyBmZm1wZWcgLWkgdGVtcC5tcDQg
LWMgY29weSAtbWV0YWRhdGE6czp2OjAgcm90YXRlPTAgc2RrL3Rlc3RzL3Jlc291cmNlcy92aWRl
by1yb3RhdGlvbi0wLm1wCisgICAgICAgICAgICAvLyBmZm1wZWcgLW5vYXV0b3JvdGF0ZSAtaSBl
eGlmLW9yaWVudGF0aW9uLXRlc3QtMS1ub3JtYWwuanBnIC1waXhfZm10IHl1djQyMHAgLXkgdGVt
cC5tcDQgJiYKKyAgICAgICAgICAgIC8vIGZmbXBlZyAtaSB0ZW1wLm1wNCAtYyBjb3B5IC1tZXRh
ZGF0YTpzOnY6MCByb3RhdGU9MCB2aWRlby1yb3RhdGlvbi0wLm1wNAorICAgICAgICAgICAgLy8g
ZmZtcGVnIC1ub2F1dG9yb3RhdGUgLWkgZXhpZi1vcmllbnRhdGlvbi10ZXN0LTEtbm9ybWFsLmpw
ZyAtcGl4X2ZtdCB5dXY0MjBwIC1jcmYgMCAtdmNvZGVjIGxpYnZweC12cDkgLXkgdGVtcC5tcDQg
JiYKKyAgICAgICAgICAgIC8vIGZmbXBlZyAtaSB0ZW1wLm1wNCAtYyBjb3B5IC1tZXRhZGF0YTpz
OnY6MCByb3RhdGU9MCB2aWRlby1yb3RhdGlvbi0wLnZwOS5tcDQKICAgICAgICAgICAgIC8vIDkw
OgotICAgICAgICAgICAgLy8gZmZtcGVnIC1ub2F1dG9yb3RhdGUgLWkgc2RrL3Rlc3RzL3Jlc291
cmNlcy9leGlmLW9yaWVudGF0aW9uLXRlc3QtMS1ub3JtYWwuanBnIC12ZiAidHJhbnNwb3NlPTIi
IC1waXhfZm10IHl1djQyMHAgdGVtcC5tcDQgJiYKLSAgICAgICAgICAgIC8vIGZmbXBlZyAtaSB0
ZW1wLm1wNCAtYyBjb3B5IC1tZXRhZGF0YTpzOnY6MCByb3RhdGU9MjcwIHNkay90ZXN0cy9yZXNv
dXJjZXMvdmlkZW8tcm90YXRpb24tOTAubXA0CisgICAgICAgICAgICAvLyBmZm1wZWcgLW5vYXV0
b3JvdGF0ZSAtaSBleGlmLW9yaWVudGF0aW9uLXRlc3QtMS1ub3JtYWwuanBnIC12ZiAidHJhbnNw
b3NlPTIiIC1waXhfZm10IHl1djQyMHAgLXkgdGVtcC5tcDQgJiYKKyAgICAgICAgICAgIC8vIGZm
bXBlZyAtaSB0ZW1wLm1wNCAtYyBjb3B5IC1tZXRhZGF0YTpzOnY6MCByb3RhdGU9MjcwIHZpZGVv
LXJvdGF0aW9uLTkwLm1wNAorICAgICAgICAgICAgLy8gZmZtcGVnIC1ub2F1dG9yb3RhdGUgLWkg
ZXhpZi1vcmllbnRhdGlvbi10ZXN0LTEtbm9ybWFsLmpwZyAtdmYgInRyYW5zcG9zZT0yIiAtcGl4
X2ZtdCB5dXY0MjBwIC1jcmYgMCAtdmNvZGVjIGxpYnZweC12cDkgLXkgdGVtcC5tcDQgJiYKKyAg
ICAgICAgICAgIC8vIGZmbXBlZyAtaSB0ZW1wLm1wNCAtYyBjb3B5IC1tZXRhZGF0YTpzOnY6MCBy
b3RhdGU9MjcwIHZpZGVvLXJvdGF0aW9uLTkwLnZwOS5tcDQKICAgICAgICAgICAgIC8vIDE4MDoK
LSAgICAgICAgICAgIC8vIGZmbXBlZyAtbm9hdXRvcm90YXRlIC1pIHNkay90ZXN0cy9yZXNvdXJj
ZXMvZXhpZi1vcmllbnRhdGlvbi10ZXN0LTEtbm9ybWFsLmpwZyAtdmYgInRyYW5zcG9zZT0yLHRy
YW5zcG9zZT0yIiAtcGl4X2ZtdCB5dXY0MjBwIHRlbXAubXA0ICYmCi0gICAgICAgICAgICAvLyBm
Zm1wZWcgLWkgdGVtcC5tcDQgLWMgY29weSAtbWV0YWRhdGE6czp2OjAgcm90YXRlPTE4MCBzZGsv
dGVzdHMvcmVzb3VyY2VzL3ZpZGVvLXJvdGF0aW9uLTE4MC5tcDQKKyAgICAgICAgICAgIC8vIGZm
bXBlZyAtbm9hdXRvcm90YXRlIC1pIGV4aWYtb3JpZW50YXRpb24tdGVzdC0xLW5vcm1hbC5qcGcg
LXZmICJ0cmFuc3Bvc2U9Mix0cmFuc3Bvc2U9MiIgLXBpeF9mbXQgeXV2NDIwcCAteSB0ZW1wLm1w
NCAmJgorICAgICAgICAgICAgLy8gZmZtcGVnIC1pIHRlbXAubXA0IC1jIGNvcHkgLW1ldGFkYXRh
OnM6djowIHJvdGF0ZT0xODAgdmlkZW8tcm90YXRpb24tMTgwLm1wNAorICAgICAgICAgICAgLy8g
ZmZtcGVnIC1ub2F1dG9yb3RhdGUgLWkgZXhpZi1vcmllbnRhdGlvbi10ZXN0LTEtbm9ybWFsLmpw
ZyAtdmYgInRyYW5zcG9zZT0yLHRyYW5zcG9zZT0yIiAtcGl4X2ZtdCB5dXY0MjBwIC1jcmYgMCAt
dmNvZGVjIGxpYnZweC12cDkgLXkgdGVtcC5tcDQgJiYKKyAgICAgICAgICAgIC8vIGZmbXBlZyAt
aSB0ZW1wLm1wNCAtYyBjb3B5IC1tZXRhZGF0YTpzOnY6MCByb3RhdGU9MTgwIHZpZGVvLXJvdGF0
aW9uLTE4MC52cDkubXA0CiAgICAgICAgICAgICAvLyAyNzA6Ci0gICAgICAgICAgICAvLyBmZm1w
ZWcgLW5vYXV0b3JvdGF0ZSAtaSBzZGsvdGVzdHMvcmVzb3VyY2VzL2V4aWYtb3JpZW50YXRpb24t
dGVzdC0xLW5vcm1hbC5qcGcgLXZmICJ0cmFuc3Bvc2U9MSIgLXBpeF9mbXQgeXV2NDIwcCB0ZW1w
Lm1wNCAmJgotICAgICAgICAgICAgLy8gZmZtcGVnIC1pIHRlbXAubXA0IC1jIGNvcHkgLW1ldGFk
YXRhOnM6djowIHJvdGF0ZT05MCBzZGsvdGVzdHMvcmVzb3VyY2VzL3ZpZGVvLXJvdGF0aW9uLTI3
MC5tcDQKKyAgICAgICAgICAgIC8vIGZmbXBlZyAtbm9hdXRvcm90YXRlIC1pIGV4aWYtb3JpZW50
YXRpb24tdGVzdC0xLW5vcm1hbC5qcGcgLXZmICJ0cmFuc3Bvc2U9MSIgLXBpeF9mbXQgeXV2NDIw
cCAteSB0ZW1wLm1wNCAmJgorICAgICAgICAgICAgLy8gZmZtcGVnIC1pIHRlbXAubXA0IC1jIGNv
cHkgLW1ldGFkYXRhOnM6djowIHJvdGF0ZT05MCB2aWRlby1yb3RhdGlvbi0yNzAubXA0CisgICAg
ICAgICAgICAvLyBmZm1wZWcgLW5vYXV0b3JvdGF0ZSAtaSBleGlmLW9yaWVudGF0aW9uLXRlc3Qt
MS1ub3JtYWwuanBnIC12ZiAidHJhbnNwb3NlPTEiIC1waXhfZm10IHl1djQyMHAgLWNyZiAwIC12
Y29kZWMgbGlidnB4LXZwOSAteSB0ZW1wLm1wNCAmJgorICAgICAgICAgICAgLy8gZmZtcGVnIC1p
IHRlbXAubXA0IC1jIGNvcHkgLW1ldGFkYXRhOnM6djowIHJvdGF0ZT05MCB2aWRlby1yb3RhdGlv
bi0yNzAudnA5Lm1wNAogICAgICAgICAgICAgY29uc3QgZmlsZW5hbWVzID0gWwotICAgICAgICAg
ICAgICAgICJ2aWRlby1yb3RhdGlvbi0wLm1wNCIsCi0gICAgICAgICAgICAgICAgInZpZGVvLXJv
dGF0aW9uLTkwLm1wNCIsCi0gICAgICAgICAgICAgICAgInZpZGVvLXJvdGF0aW9uLTE4MC5tcDQi
LAotICAgICAgICAgICAgICAgICJ2aWRlby1yb3RhdGlvbi0yNzAubXA0IiwKKyAgICAgICAgICAg
ICAgICAidmlkZW8tcm90YXRpb24tMCIsCisgICAgICAgICAgICAgICAgInZpZGVvLXJvdGF0aW9u
LTkwIiwKKyAgICAgICAgICAgICAgICAidmlkZW8tcm90YXRpb24tMTgwIiwKKyAgICAgICAgICAg
ICAgICAidmlkZW8tcm90YXRpb24tMjcwIiwKICAgICAgICAgICAgIF07CiAKLSAgICAgICAgICAg
IGZvciAobGV0IGZuIG9mIGZpbGVuYW1lcykgewotICAgICAgICAgICAgICAgIGF3YWl0IHRlc3RW
aWRlb0VsZW1lbnQoZm4pOworICAgICAgICAgICAgaWYgKHN1cHBvcnRzX2gyNjQpIHsKKyAgICAg
ICAgICAgICAgICBmb3IgKGxldCBmbiBvZiBmaWxlbmFtZXMpCisgICAgICAgICAgICAgICAgICAg
IGF3YWl0IHRlc3RWaWRlb0VsZW1lbnQoZm4gKyAiLm1wNCIpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoc3VwcG9ydHNfdnA5KSB7CisgICAgICAgICAgICAgICAgZm9yIChsZXQg
Zm4gb2YgZmlsZW5hbWVzKQorICAgICAgICAgICAgICAgICAgICBhd2FpdCB0ZXN0VmlkZW9FbGVt
ZW50KGZuICsgIi52cDkubXA0Iik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZpbmlz
aFRlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9leHRlbnNpb25zL29lcy1kcmF3LWJ1ZmZlcnMtaW5kZXhl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UyL2V4dGVuc2lvbnMvb2VzLWRyYXctYnVmZmVycy1pbmRleGVkLmh0bWwKaW5kZXgg
M2JlNzcxN2JjNDE0ZDU1NzJiYzliMzdhOTliODMwMWVhOTEyNWRlZS4uZGUzZjc4OWU3ZTIwYTVk
NjQxNDNiYjI3NzkyOTFlMWZmMGU3NjRlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvb2VzLWRy
YXctYnVmZmVycy1pbmRleGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvb2VzLWRyYXctYnVmZmVy
cy1pbmRleGVkLmh0bWwKQEAgLTEsMzI3ICsxLDMyNyBAQAotPCEtLQotQ29weXJpZ2h0IChjKSAy
MDIwIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KLVVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi1mb3VuZCBpbiB0aGUg
TElDRU5TRS50eHQgZmlsZS4KLS0tPgotCi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+V2ViR0wgT0VTX2RyYXdfYnVmZmVyc19p
bmRleGVkIENvbmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KLTxMSU5LIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+
Ci0idXNlIHN0cmljdCI7Ci1kZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBmdW5j
dGlvbmFsaXR5IG9mIHRoZSBPRVNfZHJhd19idWZmZXJzX2luZGV4ZWQgZXh0ZW5zaW9uLCBpZiBp
dCBpcyBhdmFpbGFibGUuIik7Ci0KLWRlYnVnKCIiKTsKLQotdmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwotdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLXZh
ciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQobnVsbCwgbnVsbCwgMik7Ci12YXIgZXh0OwotCi1j
b25zdCB2cyA9IGAjdmVyc2lvbiAzMDAgZXMKLWxheW91dChsb2NhdGlvbj0wKSBpbiB2ZWM0IHZQ
b3NpdGlvbjsKLXZvaWQgbWFpbigpCi17Ci0gICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247Ci19
Ci1gOwotCi1jb25zdCBmcyA9IGAjdmVyc2lvbiAzMDAgZXMKLXByZWNpc2lvbiBsb3dwIGZsb2F0
OwotbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IHZlYzQgb19jb2xvcjA7Ci1sYXlvdXQobG9jYXRp
b24gPSAxKSBvdXQgdmVjNCBvX2NvbG9yMTsKLXZvaWQgbWFpbigpCi17Ci0gICAgb19jb2xvcjAg
PSB2ZWM0KDEsIDAsIDAsIDApOwotICAgIG9fY29sb3IxID0gdmVjNCgxLCAwLCAwLCAwKTsKLX0K
LWA7Ci0KLWZ1bmN0aW9uIHNldHVwKCkgewotICAgIGNvbnN0IHByb2dyYW0gPSB3dHUuc2V0dXBQ
cm9ncmFtKGdsLCBbdnMsIGZzXSk7Ci0gICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKLSAgICB3
dHUuc2V0dXBVbml0UXVhZChnbCwgMCk7Ci0gICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgMCwg
J05vIGVycm9ycyBmcm9tIHByb2dyYW0nKTsKLQotICAgIGNvbnN0IHRleDEgPSBnbC5jcmVhdGVU
ZXh0dXJlKCk7Ci0gICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4MSk7Ci0gICAg
Z2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAxLCAxLCAwLCBnbC5SR0JB
LCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKLSAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCAw
LCAnQ3JlYXRlIHRleHR1cmUgMSBzdWNjZXNzZnVsbHknKTsKLQotICAgIGNvbnN0IHRleDIgPSBn
bC5jcmVhdGVUZXh0dXJlKCk7Ci0gICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4
Mik7Ci0gICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAxLCAxLCAw
LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKLSAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCAwLCAnQ3JlYXRlIHRleHR1cmUgMiBzdWNjZXNzZnVsbHknKTsKLQotICAgIGNvbnN0
IGF0dGFjaG1lbnRzID0gW2dsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5DT0xPUl9BVFRBQ0hNRU5U
MV07Ci0KLSAgICBjb25zdCBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7Ci0gICAgZ2wuYmlu
ZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYik7Ci0gICAgZ2wuZnJhbWVidWZmZXJUZXh0
dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnRzWzBdLCBnbC5URVhUVVJFXzJELCB0ZXgx
LCAwKTsKLSAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgYXR0YWNo
bWVudHNbMV0sIGdsLlRFWFRVUkVfMkQsIHRleDIsIDApOwotICAgIHNob3VsZEJlKCdnbC5jaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKScsICdnbC5GUkFNRUJVRkZFUl9DT01Q
TEVURScpOwotCi0gICAgZ2wuZHJhd0J1ZmZlcnMoYXR0YWNobWVudHMpOwotICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIDAsICdTZXQgZHJhdyBidWZmZXJzIHdpdGhvdXQgZXJyb3JzJyk7Ci19
Ci0KLWZ1bmN0aW9uIGVuYWJsZURpc2FibGVUZXN0KCkgewotICAgIGRlYnVnKCJUZXN0aW5nIGVu
YWJsZWlPRVMvZGlzYWJsZWlPRVMiKTsKLQotICAgIC8vIEludmFsaWQgaW5wdXQKLSAgICBleHQu
ZW5hYmxlaU9FUyhnbC5ERVBUSF9URVNULCAwKTsKLSAgICBleHQuZGlzYWJsZWlPRVMoZ2wuREVQ
VEhfVEVTVCwgMCk7Ci0gICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVN
LCAndGFyZ2V0IGNvdWxkIG9ubHkgYmUgZ2wuQkxFTkQnKTsKLQotICAgIGdsLmRpc2FibGUoZ2wu
QkxFTkQpOwotCi0gICAgLy8gVmFsaWQgaW5wdXQKLSAgICBleHQuZW5hYmxlaU9FUyhnbC5CTEVO
RCwgMCk7Ci0gICAgc2hvdWxkQmUoJ2dsLmlzRW5hYmxlZChnbC5CTEVORCknLCAndHJ1ZScpOwot
ICAgIGV4dC5kaXNhYmxlaU9FUyhnbC5CTEVORCwgMCk7Ci0gICAgZXh0LmVuYWJsZWlPRVMoZ2wu
QkxFTkQsIDEpOwotICAgIHNob3VsZEJlKCdnbC5pc0VuYWJsZWQoZ2wuQkxFTkQpJywgJ2ZhbHNl
Jyk7Ci0gICAgZ2wuZW5hYmxlKGdsLkJMRU5EKTsKLSAgICBzaG91bGRCZSgnZ2wuaXNFbmFibGVk
KGdsLkJMRU5EKScsICd0cnVlJyk7Ci0gICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgMCwgJ05v
IGVycm9ycyBmcm9tIGVuYWJsZSBhbmQgZGlzYWJsZSBkcmF3IGJ1ZmZlcnMgYmxlbmQgc3RhdGUn
KTsKLX0KLQotZnVuY3Rpb24gY29uc3RhbnRBbHBoYUJsZW5kQ29sb3JWYWxpZGF0aW9uVGVzdCgp
IHsKLSAgICBkZWJ1ZygiVGVzdGluZyBDT05TVEFOVF9DT0xPUi9BTFBIQSBibGVuZCBmdW5jdGlv
bnMgbGltaXQgdmFsaWRhdGlvbiIpOwotICAgIGZ1bmN0aW9uIGlzQ29uc3RhbnRDb2xvckFuZEFs
cGhhQmxlbmRGdW5jdGlvbnMoZmlyc3QsIHNlY29uZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAo
Zmlyc3QgPT0gZ2wuQ09OU1RBTlRfQ09MT1IgfHwgZmlyc3QgPT0gZ2wuT05FX01JTlVTX0NPTlNU
QU5UX0NPTE9SKSAmJgotICAgICAgICAgICAgKHNlY29uZCA9PSBnbC5DT05TVEFOVF9BTFBIQSB8
fCBzZWNvbmQgPT0gZ2wuT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBKTsKLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiBjaGVja0JsZW5kRnVuY3Rpb25zKHNyYywgZHN0KQotICAgIHsKLSAgICAgICAgaWYg
KGlzQ29uc3RhbnRDb2xvckFuZEFscGhhQmxlbmRGdW5jdGlvbnMoc3JjLCBkc3QpIHx8Ci0gICAg
ICAgICAgICBpc0NvbnN0YW50Q29sb3JBbmRBbHBoYUJsZW5kRnVuY3Rpb25zKGRzdCwgc3JjKSkK
LSAgICAgICAgewotICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04sICdpbnZhbGlkIGNvbWJpbmF0aW9ucycpOwotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgMCwgJ05vIGVycm9yJyk7Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGNvbnN0IHNyY0Z1bmMgPSBbCi0gICAg
ICAgIGdsLlpFUk8sCi0gICAgICAgIGdsLk9ORSwKLSAgICAgICAgZ2wuU1JDX0NPTE9SLAotICAg
ICAgICBnbC5PTkVfTUlOVVNfU1JDX0NPTE9SLAotICAgICAgICBnbC5EU1RfQ09MT1IsCi0gICAg
ICAgIGdsLk9ORV9NSU5VU19EU1RfQ09MT1IsCi0gICAgICAgIGdsLlNSQ19BTFBIQSwKLSAgICAg
ICAgZ2wuT05FX01JTlVTX1NSQ19BTFBIQSwKLSAgICAgICAgZ2wuRFNUX0FMUEhBLAotICAgICAg
ICBnbC5PTkVfTUlOVVNfRFNUX0FMUEhBLAotICAgICAgICBnbC5DT05TVEFOVF9DT0xPUiwKLSAg
ICAgICAgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SLAotICAgICAgICBnbC5DT05TVEFOVF9B
TFBIQSwKLSAgICAgICAgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBLAotICAgICAgICBnbC5T
UkNfQUxQSEFfU0FUVVJBVEUsCi0gICAgXTsKLQotICAgIGNvbnN0IGRzdEZ1bmMgPSBbCi0gICAg
ICAgIGdsLlpFUk8sICAgICAgICAgICBnbC5PTkUsCi0gICAgICAgIGdsLlNSQ19DT0xPUiwgICAg
ICBnbC5PTkVfTUlOVVNfU1JDX0NPTE9SLAotICAgICAgICBnbC5EU1RfQ09MT1IsICAgICAgZ2wu
T05FX01JTlVTX0RTVF9DT0xPUiwKLSAgICAgICAgZ2wuU1JDX0FMUEhBLCAgICAgIGdsLk9ORV9N
SU5VU19TUkNfQUxQSEEsCi0gICAgICAgIGdsLkRTVF9BTFBIQSwgICAgICBnbC5PTkVfTUlOVVNf
RFNUX0FMUEhBLAotICAgICAgICBnbC5DT05TVEFOVF9DT0xPUiwgZ2wuT05FX01JTlVTX0NPTlNU
QU5UX0NPTE9SLAotICAgICAgICBnbC5DT05TVEFOVF9BTFBIQSwgZ2wuT05FX01JTlVTX0NPTlNU
QU5UX0FMUEhBLAotICAgIF07Ci0KLSAgICBsZXQgc3JjLCBkc3Q7Ci0KLSAgICAvLyBDT05TVEFO
VF9DT0xPUi9BTFBIQSBpbnZhbGlkIGNvbWJpbmF0aW9uIGNoZWNrCi0gICAgZm9yIChsZXQgaSA9
IDAsIGxlbmkgPSBzcmNGdW5jLmxlbmd0aDsgaSA8IGxlbmk7IGkrKykKLSAgICB7Ci0gICAgICAg
IHNyYyA9IHNyY0Z1bmNbaV07Ci0gICAgICAgIGZvciAobGV0IGogPSAwLCBsZW5qID0gZHN0RnVu
Yy5sZW5ndGg7IGogPCBsZW5qOyBqKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRzdCA9IGRz
dEZ1bmNbal07Ci0gICAgICAgICAgICBleHQuYmxlbmRGdW5jaU9FUygwLCBzcmMsIGRzdCk7Ci0g
ICAgICAgICAgICBjaGVja0JsZW5kRnVuY3Rpb25zKHNyYywgZHN0KTsKLSAgICAgICAgICAgIGV4
dC5ibGVuZEZ1bmNTZXBhcmF0ZWlPRVMoMCwgc3JjLCBkc3QsIGdsLk9ORSwgZ2wuT05FKTsKLSAg
ICAgICAgICAgIGNoZWNrQmxlbmRGdW5jdGlvbnMoc3JjLCBkc3QpOwotICAgICAgICB9Ci0gICAg
fQotfQotCi1mdW5jdGlvbiBpbmRleGVkQmxlbmRDb2xvclRlc3QoKSB7Ci0gICAgZGVidWcoIlRl
c3RpbmcgYmxlbmRFcXVhdGlvbmlPRVMgYW5kIGJsZW5kRnVuY2lPRVMiKTsKLSAgICBnbC5jbGVh
ckNvbG9yKDAsIDAsIDEsIDEpOwotICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOwot
Ci0gICAgZXh0LmJsZW5kRXF1YXRpb25pT0VTKDAsIGdsLkZVTkNfQUREKTsKLSAgICBleHQuYmxl
bmRGdW5jaU9FUygwLCBnbC5PTkUsIGdsLk9ORSk7Ci0gICAgZXh0LmJsZW5kRXF1YXRpb25pT0VT
KDEsIGdsLkZVTkNfQUREKTsKLSAgICBleHQuYmxlbmRGdW5jaU9FUygxLCBnbC5TUkNfQUxQSEEs
IGdsLk9ORV9NSU5VU19TUkNfQUxQSEEpOwotICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVT
LCAwLCA2KTsKLSAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCAwLCAnRHJhdyBxdWFkIHdpdGhv
dXQgZXJyb3JzJyk7Ci0KLSAgICBnbC5yZWFkQnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQwKTsK
LSAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxLCAxLCBbMjU1LCAwLCAyNTUsIDI1
NV0pOwotCi0gICAgZ2wucmVhZEJ1ZmZlcihnbC5DT0xPUl9BVFRBQ0hNRU5UMSk7Ci0gICAgd3R1
LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgMSwgMSwgWzAsIDAsIDI1NSwgMjU1XSk7Ci0KLSAg
ICBkZWJ1ZygiVGVzdGluZyBibGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTIGFuZCBibGVuZEZ1bmNT
ZXBhcmF0ZWlPRVMiKTsKLSAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKLQotICAg
IGV4dC5ibGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTKDAsIGdsLkZVTkNfQURELCBnbC5GVU5DX1NV
QlRSQUNUKTsKLSAgICBleHQuYmxlbmRGdW5jU2VwYXJhdGVpT0VTKDAsIGdsLk9ORSwgZ2wuT05F
LCBnbC5aRVJPLCBnbC5aRVJPKTsKLSAgICBleHQuYmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUygx
LCBnbC5GVU5DX0FERCwgZ2wuRlVOQ19TVUJUUkFDVCk7Ci0gICAgZXh0LmJsZW5kRnVuY1NlcGFy
YXRlaU9FUygxLCBnbC5TUkNfQUxQSEEsIGdsLk9ORV9NSU5VU19TUkNfQUxQSEEsIGdsLlpFUk8s
IGdsLlpFUk8pOwotICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKLSAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCAwLCAnRHJhdyBxdWFkIHdpdGhvdXQgZXJyb3JzJyk7Ci0K
LSAgICBnbC5yZWFkQnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQwKTsKLSAgICB3dHUuY2hlY2tD
YW52YXNSZWN0KGdsLCAwLCAwLCAxLCAxLCBbMjU1LCAwLCAyNTUsIDBdKTsKLQotICAgIGdsLnJl
YWRCdWZmZXIoZ2wuQ09MT1JfQVRUQUNITUVOVDEpOwotICAgIHd0dS5jaGVja0NhbnZhc1JlY3Qo
Z2wsIDAsIDAsIDEsIDEsIFswLCAwLCAyNTUsIDBdKTsKLQotICAgIGRlYnVnKCJUZXN0aW5nIGNv
bG9yTWFza2lPRVMiKTsKLSAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKLSAgICBl
eHQuY29sb3JNYXNraU9FUygwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Ci0gICAgZXh0
LmNvbG9yTWFza2lPRVMoMSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Ci0KLSAgICBnbC5kcmF3
QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7Ci0gICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
MCwgJ0RyYXcgcXVhZCB3aXRob3V0IGVycm9ycycpOwotCi0gICAgZ2wucmVhZEJ1ZmZlcihnbC5D
T0xPUl9BVFRBQ0hNRU5UMCk7Ci0gICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgMSwg
MSwgWzAsIDAsIDI1NSwgMjU1XSk7Ci0KLSAgICBnbC5yZWFkQnVmZmVyKGdsLkNPTE9SX0FUVEFD
SE1FTlQxKTsKLSAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCAwLCAwLCAxLCAxLCBbMCwgMCwg
MjU1LCAwXSk7Ci0KLSAgICBkZWJ1ZygiVGVzdGluZyBuZXcgdG9rZW5zIGZvciBnZXRJbmRleGVk
UGFyYW1ldGVyVGVzdCIpOwotICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGV4
dC5CTEVORF9FUVVBVElPTl9SR0IsIDApJywgJ2dsLkZVTkNfQUREJyk7Ci0gICAgc2hvdWxkQmUo
J2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX0VRVUFUSU9OX0FMUEhBLCAwKScsICdn
bC5GVU5DX1NVQlRSQUNUJyk7Ci0gICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIo
ZXh0LkJMRU5EX1NSQ19SR0IsIDApJywgJ2dsLk9ORScpOwotICAgIHNob3VsZEJlKCdnbC5nZXRJ
bmRleGVkUGFyYW1ldGVyKGV4dC5CTEVORF9EU1RfUkdCLCAwKScsICdnbC5PTkUnKTsKLSAgICBz
aG91bGRCZSgnZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihleHQuQkxFTkRfU1JDX0FMUEhBLCAwKScs
ICdnbC5aRVJPJyk7Ci0gICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJM
RU5EX0RTVF9BTFBIQSwgMCknLCAnZ2wuWkVSTycpOwotICAgIHNob3VsZEJlKCdnbC5nZXRJbmRl
eGVkUGFyYW1ldGVyKGV4dC5CTEVORF9FUVVBVElPTl9SR0IsIDEpJywgJ2dsLkZVTkNfQUREJyk7
Ci0gICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX0VRVUFUSU9O
X0FMUEhBLCAxKScsICdnbC5GVU5DX1NVQlRSQUNUJyk7Ci0gICAgc2hvdWxkQmUoJ2dsLmdldElu
ZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX1NSQ19SR0IsIDEpJywgJ2dsLlNSQ19BTFBIQScpOwot
ICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGV4dC5CTEVORF9EU1RfUkdCLCAx
KScsICdnbC5PTkVfTUlOVVNfU1JDX0FMUEhBJyk7Ci0gICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4
ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX1NSQ19BTFBIQSwgMSknLCAnZ2wuWkVSTycpOwotICAgIHNo
b3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGV4dC5CTEVORF9EU1RfQUxQSEEsIDEpJywg
J2dsLlpFUk8nKTsKLQotICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGV4dC5D
T0xPUl9XUklURU1BU0ssIDApJywgJ1tmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV0nKTsKLSAg
ICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihleHQuQ09MT1JfV1JJVEVNQVNLLCAx
KScsICdbdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZV0nKTsKLQotICAgIGRlYnVnKCJUZXN0aW5nIG5v
bi1pbmRleGVkIGdldFBhcmFtdGVyIGdldCBzdGF0ZSBmcm9tIGRyYXcgYnVmZmVyIDAiKTsKLSAg
ICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMRU5EX1NSQ19SR0IpJywgJ2dsLk9ORScp
OwotICAgIHNob3VsZEJlKCdnbC5nZXRQYXJhbWV0ZXIoZ2wuQkxFTkRfRFNUX1JHQiknLCAnZ2wu
T05FJyk7Ci0gICAgc2hvdWxkQmUoJ2dsLmdldFBhcmFtZXRlcihnbC5CTEVORF9TUkNfQUxQSEEp
JywgJ2dsLlpFUk8nKTsKLSAgICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMRU5EX0RT
VF9BTFBIQSknLCAnZ2wuWkVSTycpOwotICAgIHNob3VsZEJlKCdnbC5nZXRQYXJhbWV0ZXIoZ2wu
QkxFTkRfRVFVQVRJT05fUkdCKScsICdnbC5GVU5DX0FERCcpOwotICAgIHNob3VsZEJlKCdnbC5n
ZXRQYXJhbWV0ZXIoZ2wuQkxFTkRfRVFVQVRJT05fQUxQSEEpJywgJ2dsLkZVTkNfU1VCVFJBQ1Qn
KTsKLSAgICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLkNPTE9SX1dSSVRFTUFTSyknLCAn
W2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXScpOwotCi0gICAgZGVidWcoIlRlc3Rpbmcgbm9u
LWluZGV4ZWQgY2FsbHMgbW9kaWZ5IGFsbCBkcmF3IGJ1ZmZlcnMgc3RhdGUiKTsKLSAgICBnbC5i
bGVuZEVxdWF0aW9uU2VwYXJhdGUoZ2wuRlVOQ19TVUJUUkFDVCwgZ2wuRlVOQ19BREQpOwotICAg
IGdsLmJsZW5kRnVuY1NlcGFyYXRlKGdsLk9ORV9NSU5VU19EU1RfQUxQSEEsIGdsLkRTVF9BTFBI
QSwgZ2wuT05FLCBnbC5PTkUpOwotICAgIGdsLmNvbG9yTWFzayh0cnVlLCBmYWxzZSwgdHJ1ZSwg
ZmFsc2UpOwotICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIDAsICdOb24taW5kZXhlZCBzdGF0
ZSBzZXQgd2l0aG91dCBlcnJvcnMnKTsKLQotICAgIHNob3VsZEJlKCdnbC5nZXRQYXJhbWV0ZXIo
Z2wuQkxFTkRfRVFVQVRJT05fUkdCKScsICdnbC5GVU5DX1NVQlRSQUNUJyk7Ci0gICAgc2hvdWxk
QmUoJ2dsLmdldFBhcmFtZXRlcihnbC5CTEVORF9FUVVBVElPTl9BTFBIQSknLCAnZ2wuRlVOQ19B
REQnKTsKLSAgICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMRU5EX1NSQ19SR0IpJywg
J2dsLk9ORV9NSU5VU19EU1RfQUxQSEEnKTsKLSAgICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVy
KGdsLkJMRU5EX0RTVF9SR0IpJywgJ2dsLkRTVF9BTFBIQScpOwotICAgIHNob3VsZEJlKCdnbC5n
ZXRQYXJhbWV0ZXIoZ2wuQkxFTkRfU1JDX0FMUEhBKScsICdnbC5PTkUnKTsKLSAgICBzaG91bGRC
ZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMRU5EX0RTVF9BTFBIQSknLCAnZ2wuT05FJyk7Ci0gICAg
c2hvdWxkQmUoJ2dsLmdldFBhcmFtZXRlcihnbC5DT0xPUl9XUklURU1BU0spJywgJ1t0cnVlLCBm
YWxzZSwgdHJ1ZSwgZmFsc2VdJyk7Ci0KLSAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhlZFBhcmFt
ZXRlcihleHQuQkxFTkRfRVFVQVRJT05fUkdCLCAwKScsICdnbC5GVU5DX1NVQlRSQUNUJyk7Ci0g
ICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX0VRVUFUSU9OX0FM
UEhBLCAwKScsICdnbC5GVU5DX0FERCcpOwotICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFy
YW1ldGVyKGV4dC5CTEVORF9TUkNfUkdCLCAwKScsICdnbC5PTkVfTUlOVVNfRFNUX0FMUEhBJyk7
Ci0gICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX0RTVF9SR0Is
IDApJywgJ2dsLkRTVF9BTFBIQScpOwotICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1l
dGVyKGV4dC5CTEVORF9TUkNfQUxQSEEsIDApJywgJ2dsLk9ORScpOwotICAgIHNob3VsZEJlKCdn
bC5nZXRJbmRleGVkUGFyYW1ldGVyKGV4dC5CTEVORF9EU1RfQUxQSEEsIDApJywgJ2dsLk9ORScp
OwotICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGV4dC5CTEVORF9FUVVBVElP
Tl9SR0IsIDEpJywgJ2dsLkZVTkNfU1VCVFJBQ1QnKTsKLSAgICBzaG91bGRCZSgnZ2wuZ2V0SW5k
ZXhlZFBhcmFtZXRlcihleHQuQkxFTkRfRVFVQVRJT05fQUxQSEEsIDEpJywgJ2dsLkZVTkNfQURE
Jyk7Ci0gICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX1NSQ19S
R0IsIDEpJywgJ2dsLk9ORV9NSU5VU19EU1RfQUxQSEEnKTsKLSAgICBzaG91bGRCZSgnZ2wuZ2V0
SW5kZXhlZFBhcmFtZXRlcihleHQuQkxFTkRfRFNUX1JHQiwgMSknLCAnZ2wuRFNUX0FMUEhBJyk7
Ci0gICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX1NSQ19BTFBI
QSwgMSknLCAnZ2wuT05FJyk7Ci0gICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIo
ZXh0LkJMRU5EX0RTVF9BTFBIQSwgMSknLCAnZ2wuT05FJyk7Ci0KLSAgICBzaG91bGRCZSgnZ2wu
Z2V0SW5kZXhlZFBhcmFtZXRlcihleHQuQ09MT1JfV1JJVEVNQVNLLCAwKScsICdbdHJ1ZSwgZmFs
c2UsIHRydWUsIGZhbHNlXScpOwotICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVy
KGV4dC5DT0xPUl9XUklURU1BU0ssIDEpJywgJ1t0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2VdJyk7
Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3RFeHRlbnNpb24oKSB7Ci0gICAgc2V0dXAoKTsKLQotICAg
IGVuYWJsZURpc2FibGVUZXN0KCk7Ci0KLSAgICAvLyBibGVuZGluZyBzaG91bGQgYmUgZW5hYmxl
ZCBmb3IgZHJhd0J1ZmZlcnMgMCBhbmQgMSBhdCB0aGlzIHBvaW50Ci0KLSAgICBjb25zdGFudEFs
cGhhQmxlbmRDb2xvclZhbGlkYXRpb25UZXN0KCk7Ci0KLSAgICBpbmRleGVkQmxlbmRDb2xvclRl
c3QoKTsKLX0KLQotZnVuY3Rpb24gcnVuSW52YWxpZEVudW1zVGVzdCgpIHsKLSAgICBkZWJ1Zygi
VGVzdGluZyBuZXcgZW51bXMgZm9yIGdldEluZGV4ZWRQYXJhbWV0ZXJUZXN0IGJlaW5nIGludmFs
aWQgYmVmb3JlIHJlcXVlc3RpbmcgdGhlIGV4dGVuc2lvbiIpOwotICAgIGdsLmdldEluZGV4ZWRQ
YXJhbWV0ZXIoMHg4MDA5LCAwKTsgIC8vIEJMRU5EX0VRVUFUSU9OX1JHQgotICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgJ0JMRU5EX0VRVUFUSU9OX1JHQicpOwot
ICAgIGdsLmdldEluZGV4ZWRQYXJhbWV0ZXIoMHg4ODNELCAwKTsgIC8vIEJMRU5EX0VRVUFUSU9O
X0FMUEhBCi0gICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAnQkxF
TkRfRVFVQVRJT05fQUxQSEEnKTsKLSAgICBnbC5nZXRJbmRleGVkUGFyYW1ldGVyKDB4ODBDOSwg
MCk7ICAvLyBCTEVORF9TUkNfUkdCCi0gICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9FTlVNLCAnQkxFTkRfU1JDX1JHQicpOwotICAgIGdsLmdldEluZGV4ZWRQYXJhbWV0ZXIo
MHg4MENCLCAwKTsgIC8vIEJMRU5EX1NSQ19BTFBIQQotICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLklOVkFMSURfRU5VTSwgJ0JMRU5EX1NSQ19BTFBIQScpOwotICAgIGdsLmdldEluZGV4
ZWRQYXJhbWV0ZXIoMHg4MEM4LCAwKTsgIC8vIEJMRU5EX0RTVF9SR0IKLSAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VOVU0sICdCTEVORF9EU1RfUkdCJyk7Ci0gICAgZ2wu
Z2V0SW5kZXhlZFBhcmFtZXRlcigweDgwQ0EsIDApOyAgLy8gQkxFTkRfRFNUX0FMUEhBCi0gICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAnQkxFTkRfRFNUX0FMUEhB
Jyk7Ci0gICAgZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcigweDBDMjMsIDApOyAgLy8gQ09MT1JfV1JJ
VEVNQVNLCi0gICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgW2dsLklOVkFMSURfT1BFUkFUSU9O
LCBnbC5JTlZBTElEX0VOVU1dLCAnaW52YWxpZCBvcGVyYXRpb25zIG9yIGludmFsaWQgZW51bXMg
Zm9yIENPTE9SX1dSSVRFTUFTSycpOwotfQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICBpZiAo
IWdsKSB7Ci0gICAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOwotICB9IGVs
c2UgewotICAgIHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7Ci0KLSAgICBydW5JbnZhbGlk
RW51bXNUZXN0KCk7Ci0KLSAgICBleHQgPSBnbC5nZXRFeHRlbnNpb24oIk9FU19kcmF3X2J1ZmZl
cnNfaW5kZXhlZCIpOwotCi0gICAgd3R1LnJ1bkV4dGVuc2lvblN1cHBvcnRlZFRlc3QoZ2wsICJP
RVNfZHJhd19idWZmZXJzX2luZGV4ZWQiLCBleHQgIT09IG51bGwpOwotCi0gICAgaWYgKGV4dCAh
PT0gbnVsbCkgewotICAgICAgcnVuVGVzdEV4dGVuc2lvbigpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICB0ZXN0UGFzc2VkKCJObyBPRVNfZHJhd19idWZmZXJzX2luZGV4ZWQgc3VwcG9ydCAtLSB0aGlz
IGlzIGxlZ2FsIik7Ci0gICAgfQotICB9Ci19Ci0KLXJ1blRlc3QoKTsKLQotdmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgorPCEtLQ0KK0NvcHlyaWdo
dCAoYykgMjAyMCBUaGUgS2hyb25vcyBHcm91cCBJbmMuDQorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCitmb3Vu
ZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4NCistLT4NCisNCis8IURPQ1RZUEUgaHRtbD4NCis8
aHRtbD4NCis8aGVhZD4NCis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+DQorPHRpdGxlPldlYkdMIE9F
U19kcmF3X2J1ZmZlcnNfaW5kZXhlZCBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+DQorPExJTksg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4NCis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4NCis8L2hl
YWQ+DQorPGJvZHk+DQorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pg0KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2Pg0KKzxzY3JpcHQ+DQorInVzZSBzdHJpY3QiOw0KK2Rlc2NyaXB0aW9uKCJU
aGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIE9FU19kcmF3X2J1ZmZl
cnNfaW5kZXhlZCBleHRlbnNpb24sIGlmIGl0IGlzIGF2YWlsYWJsZS4iKTsNCisNCitkZWJ1Zygi
Iik7DQorDQordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOw0KK3ZhciBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7DQordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4
dChudWxsLCBudWxsLCAyKTsNCit2YXIgZXh0Ow0KKw0KK2NvbnN0IHZzID0gYCN2ZXJzaW9uIDMw
MCBlcw0KK2xheW91dChsb2NhdGlvbj0wKSBpbiB2ZWM0IHZQb3NpdGlvbjsNCit2b2lkIG1haW4o
KQ0KK3sNCisgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247DQorfQ0KK2A7DQorDQorY29uc3Qg
ZnMgPSBgI3ZlcnNpb24gMzAwIGVzDQorcHJlY2lzaW9uIGxvd3AgZmxvYXQ7DQorbGF5b3V0KGxv
Y2F0aW9uID0gMCkgb3V0IHZlYzQgb19jb2xvcjA7DQorbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0
IHZlYzQgb19jb2xvcjE7DQordm9pZCBtYWluKCkNCit7DQorICAgIG9fY29sb3IwID0gdmVjNCgx
LCAwLCAwLCAwKTsNCisgICAgb19jb2xvcjEgPSB2ZWM0KDEsIDAsIDAsIDApOw0KK30NCitgOw0K
Kw0KK2Z1bmN0aW9uIHNldHVwKCkgew0KKyAgICBjb25zdCBwcm9ncmFtID0gd3R1LnNldHVwUHJv
Z3JhbShnbCwgW3ZzLCBmc10pOw0KKyAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOw0KKyAgICB3
dHUuc2V0dXBVbml0UXVhZChnbCwgMCk7DQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIDAs
ICdObyBlcnJvcnMgZnJvbSBwcm9ncmFtJyk7DQorDQorICAgIGNvbnN0IHRleDEgPSBnbC5jcmVh
dGVUZXh0dXJlKCk7DQorICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleDEpOw0K
KyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDEsIDEsIDAsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOw0KKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCAwLCAnQ3JlYXRlIHRleHR1cmUgMSBzdWNjZXNzZnVsbHknKTsNCisNCisgICAgY29uc3Qg
dGV4MiA9IGdsLmNyZWF0ZVRleHR1cmUoKTsNCisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV8yRCwgdGV4Mik7DQorICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdC
QSwgMSwgMSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7DQorICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIDAsICdDcmVhdGUgdGV4dHVyZSAyIHN1Y2Nlc3NmdWxseScpOw0K
Kw0KKyAgICBjb25zdCBhdHRhY2htZW50cyA9IFtnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuQ09M
T1JfQVRUQUNITUVOVDFdOw0KKw0KKyAgICBjb25zdCBmYiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVy
KCk7DQorICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOw0KKyAgICBn
bC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudHNbMF0sIGds
LlRFWFRVUkVfMkQsIHRleDEsIDApOw0KKyAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5G
UkFNRUJVRkZFUiwgYXR0YWNobWVudHNbMV0sIGdsLlRFWFRVUkVfMkQsIHRleDIsIDApOw0KKyAg
ICBzaG91bGRCZSgnZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUiknLCAn
Z2wuRlJBTUVCVUZGRVJfQ09NUExFVEUnKTsNCisNCisgICAgZ2wuZHJhd0J1ZmZlcnMoYXR0YWNo
bWVudHMpOw0KKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCAwLCAnU2V0IGRyYXcgYnVmZmVy
cyB3aXRob3V0IGVycm9ycycpOw0KK30NCisNCitmdW5jdGlvbiBlbmFibGVEaXNhYmxlVGVzdCgp
IHsNCisgICAgZGVidWcoIlRlc3RpbmcgZW5hYmxlaU9FUy9kaXNhYmxlaU9FUyIpOw0KKw0KKyAg
ICAvLyBJbnZhbGlkIGlucHV0DQorICAgIGV4dC5lbmFibGVpT0VTKGdsLkRFUFRIX1RFU1QsIDAp
Ow0KKyAgICBleHQuZGlzYWJsZWlPRVMoZ2wuREVQVEhfVEVTVCwgMCk7DQorICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgJ3RhcmdldCBjb3VsZCBvbmx5IGJlIGds
LkJMRU5EJyk7DQorDQorICAgIGdsLmRpc2FibGUoZ2wuQkxFTkQpOw0KKw0KKyAgICAvLyBWYWxp
ZCBpbnB1dA0KKyAgICBleHQuZW5hYmxlaU9FUyhnbC5CTEVORCwgMCk7DQorICAgIHNob3VsZEJl
KCdnbC5pc0VuYWJsZWQoZ2wuQkxFTkQpJywgJ3RydWUnKTsNCisgICAgZXh0LmRpc2FibGVpT0VT
KGdsLkJMRU5ELCAwKTsNCisgICAgZXh0LmVuYWJsZWlPRVMoZ2wuQkxFTkQsIDEpOw0KKyAgICBz
aG91bGRCZSgnZ2wuaXNFbmFibGVkKGdsLkJMRU5EKScsICdmYWxzZScpOw0KKyAgICBnbC5lbmFi
bGUoZ2wuQkxFTkQpOw0KKyAgICBzaG91bGRCZSgnZ2wuaXNFbmFibGVkKGdsLkJMRU5EKScsICd0
cnVlJyk7DQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIDAsICdObyBlcnJvcnMgZnJvbSBl
bmFibGUgYW5kIGRpc2FibGUgZHJhdyBidWZmZXJzIGJsZW5kIHN0YXRlJyk7DQorfQ0KKw0KK2Z1
bmN0aW9uIGNvbnN0YW50QWxwaGFCbGVuZENvbG9yVmFsaWRhdGlvblRlc3QoKSB7DQorICAgIGRl
YnVnKCJUZXN0aW5nIENPTlNUQU5UX0NPTE9SL0FMUEhBIGJsZW5kIGZ1bmN0aW9ucyBsaW1pdCB2
YWxpZGF0aW9uIik7DQorICAgIGZ1bmN0aW9uIGlzQ29uc3RhbnRDb2xvckFuZEFscGhhQmxlbmRG
dW5jdGlvbnMoZmlyc3QsIHNlY29uZCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIChmaXJzdCA9
PSBnbC5DT05TVEFOVF9DT0xPUiB8fCBmaXJzdCA9PSBnbC5PTkVfTUlOVVNfQ09OU1RBTlRfQ09M
T1IpICYmDQorICAgICAgICAgICAgKHNlY29uZCA9PSBnbC5DT05TVEFOVF9BTFBIQSB8fCBzZWNv
bmQgPT0gZ2wuT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBKTsNCisgICAgfQ0KKw0KKyAgICBmdW5j
dGlvbiBjaGVja0JsZW5kRnVuY3Rpb25zKHNyYywgZHN0KQ0KKyAgICB7DQorICAgICAgICBpZiAo
aXNDb25zdGFudENvbG9yQW5kQWxwaGFCbGVuZEZ1bmN0aW9ucyhzcmMsIGRzdCkgfHwNCisgICAg
ICAgICAgICBpc0NvbnN0YW50Q29sb3JBbmRBbHBoYUJsZW5kRnVuY3Rpb25zKGRzdCwgc3JjKSkN
CisgICAgICAgIHsNCisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZB
TElEX09QRVJBVElPTiwgJ2ludmFsaWQgY29tYmluYXRpb25zJyk7DQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgew0KKyAgICAg
ICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIDAsICdObyBlcnJvcicpOw0KKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIGNvbnN0IHNyY0Z1
bmMgPSBbDQorICAgICAgICBnbC5aRVJPLA0KKyAgICAgICAgZ2wuT05FLA0KKyAgICAgICAgZ2wu
U1JDX0NPTE9SLA0KKyAgICAgICAgZ2wuT05FX01JTlVTX1NSQ19DT0xPUiwNCisgICAgICAgIGds
LkRTVF9DT0xPUiwNCisgICAgICAgIGdsLk9ORV9NSU5VU19EU1RfQ09MT1IsDQorICAgICAgICBn
bC5TUkNfQUxQSEEsDQorICAgICAgICBnbC5PTkVfTUlOVVNfU1JDX0FMUEhBLA0KKyAgICAgICAg
Z2wuRFNUX0FMUEhBLA0KKyAgICAgICAgZ2wuT05FX01JTlVTX0RTVF9BTFBIQSwNCisgICAgICAg
IGdsLkNPTlNUQU5UX0NPTE9SLA0KKyAgICAgICAgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9S
LA0KKyAgICAgICAgZ2wuQ09OU1RBTlRfQUxQSEEsDQorICAgICAgICBnbC5PTkVfTUlOVVNfQ09O
U1RBTlRfQUxQSEEsDQorICAgICAgICBnbC5TUkNfQUxQSEFfU0FUVVJBVEUsDQorICAgIF07DQor
DQorICAgIGNvbnN0IGRzdEZ1bmMgPSBbDQorICAgICAgICBnbC5aRVJPLCAgICAgICAgICAgZ2wu
T05FLA0KKyAgICAgICAgZ2wuU1JDX0NPTE9SLCAgICAgIGdsLk9ORV9NSU5VU19TUkNfQ09MT1Is
DQorICAgICAgICBnbC5EU1RfQ09MT1IsICAgICAgZ2wuT05FX01JTlVTX0RTVF9DT0xPUiwNCisg
ICAgICAgIGdsLlNSQ19BTFBIQSwgICAgICBnbC5PTkVfTUlOVVNfU1JDX0FMUEhBLA0KKyAgICAg
ICAgZ2wuRFNUX0FMUEhBLCAgICAgIGdsLk9ORV9NSU5VU19EU1RfQUxQSEEsDQorICAgICAgICBn
bC5DT05TVEFOVF9DT0xPUiwgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SLA0KKyAgICAgICAg
Z2wuQ09OU1RBTlRfQUxQSEEsIGdsLk9ORV9NSU5VU19DT05TVEFOVF9BTFBIQSwNCisgICAgXTsN
CisNCisgICAgbGV0IHNyYywgZHN0Ow0KKw0KKyAgICAvLyBDT05TVEFOVF9DT0xPUi9BTFBIQSBp
bnZhbGlkIGNvbWJpbmF0aW9uIGNoZWNrDQorICAgIGZvciAobGV0IGkgPSAwLCBsZW5pID0gc3Jj
RnVuYy5sZW5ndGg7IGkgPCBsZW5pOyBpKyspDQorICAgIHsNCisgICAgICAgIHNyYyA9IHNyY0Z1
bmNbaV07DQorICAgICAgICBmb3IgKGxldCBqID0gMCwgbGVuaiA9IGRzdEZ1bmMubGVuZ3RoOyBq
IDwgbGVuajsgaisrKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGRzdCA9IGRzdEZ1bmNbal07
DQorICAgICAgICAgICAgZXh0LmJsZW5kRnVuY2lPRVMoMCwgc3JjLCBkc3QpOw0KKyAgICAgICAg
ICAgIGNoZWNrQmxlbmRGdW5jdGlvbnMoc3JjLCBkc3QpOw0KKyAgICAgICAgICAgIGV4dC5ibGVu
ZEZ1bmNTZXBhcmF0ZWlPRVMoMCwgc3JjLCBkc3QsIGdsLk9ORSwgZ2wuT05FKTsNCisgICAgICAg
ICAgICBjaGVja0JsZW5kRnVuY3Rpb25zKHNyYywgZHN0KTsNCisgICAgICAgIH0NCisgICAgfQ0K
K30NCisNCitmdW5jdGlvbiBpbmRleGVkQmxlbmRDb2xvclRlc3QoKSB7DQorICAgIGRlYnVnKCJU
ZXN0aW5nIGJsZW5kRXF1YXRpb25pT0VTIGFuZCBibGVuZEZ1bmNpT0VTIik7DQorICAgIGdsLmNs
ZWFyQ29sb3IoMCwgMCwgMSwgMSk7DQorICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQp
Ow0KKw0KKyAgICBleHQuYmxlbmRFcXVhdGlvbmlPRVMoMCwgZ2wuRlVOQ19BREQpOw0KKyAgICBl
eHQuYmxlbmRGdW5jaU9FUygwLCBnbC5PTkUsIGdsLk9ORSk7DQorICAgIGV4dC5ibGVuZEVxdWF0
aW9uaU9FUygxLCBnbC5GVU5DX0FERCk7DQorICAgIGV4dC5ibGVuZEZ1bmNpT0VTKDEsIGdsLlNS
Q19BTFBIQSwgZ2wuT05FX01JTlVTX1NSQ19BTFBIQSk7DQorICAgIGdsLmRyYXdBcnJheXMoZ2wu
VFJJQU5HTEVTLCAwLCA2KTsNCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgMCwgJ0RyYXcg
cXVhZCB3aXRob3V0IGVycm9ycycpOw0KKw0KKyAgICBnbC5yZWFkQnVmZmVyKGdsLkNPTE9SX0FU
VEFDSE1FTlQwKTsNCisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgMSwgMSwgWzI1
NSwgMCwgMjU1LCAyNTVdKTsNCisNCisgICAgZ2wucmVhZEJ1ZmZlcihnbC5DT0xPUl9BVFRBQ0hN
RU5UMSk7DQorICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEsIFswLCAwLCAy
NTUsIDI1NV0pOw0KKw0KKyAgICBkZWJ1ZygiVGVzdGluZyBibGVuZEVxdWF0aW9uU2VwYXJhdGVp
T0VTIGFuZCBibGVuZEZ1bmNTZXBhcmF0ZWlPRVMiKTsNCisgICAgZ2wuY2xlYXIoZ2wuQ09MT1Jf
QlVGRkVSX0JJVCk7DQorDQorICAgIGV4dC5ibGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTKDAsIGds
LkZVTkNfQURELCBnbC5GVU5DX1NVQlRSQUNUKTsNCisgICAgZXh0LmJsZW5kRnVuY1NlcGFyYXRl
aU9FUygwLCBnbC5PTkUsIGdsLk9ORSwgZ2wuWkVSTywgZ2wuWkVSTyk7DQorICAgIGV4dC5ibGVu
ZEVxdWF0aW9uU2VwYXJhdGVpT0VTKDEsIGdsLkZVTkNfQURELCBnbC5GVU5DX1NVQlRSQUNUKTsN
CisgICAgZXh0LmJsZW5kRnVuY1NlcGFyYXRlaU9FUygxLCBnbC5TUkNfQUxQSEEsIGdsLk9ORV9N
SU5VU19TUkNfQUxQSEEsIGdsLlpFUk8sIGdsLlpFUk8pOw0KKyAgICBnbC5kcmF3QXJyYXlzKGds
LlRSSUFOR0xFUywgMCwgNik7DQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIDAsICdEcmF3
IHF1YWQgd2l0aG91dCBlcnJvcnMnKTsNCisNCisgICAgZ2wucmVhZEJ1ZmZlcihnbC5DT0xPUl9B
VFRBQ0hNRU5UMCk7DQorICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEsIFsy
NTUsIDAsIDI1NSwgMF0pOw0KKw0KKyAgICBnbC5yZWFkQnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1F
TlQxKTsNCisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgMSwgMSwgWzAsIDAsIDI1
NSwgMF0pOw0KKw0KKyAgICBkZWJ1ZygiVGVzdGluZyBjb2xvck1hc2tpT0VTIik7DQorICAgIGds
LmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOw0KKyAgICBleHQuY29sb3JNYXNraU9FUygwLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7DQorICAgIGV4dC5jb2xvck1hc2tpT0VTKDEsIHRy
dWUsIHRydWUsIHRydWUsIHRydWUpOw0KKw0KKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xF
UywgMCwgNik7DQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIDAsICdEcmF3IHF1YWQgd2l0
aG91dCBlcnJvcnMnKTsNCisNCisgICAgZ2wucmVhZEJ1ZmZlcihnbC5DT0xPUl9BVFRBQ0hNRU5U
MCk7DQorICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIDEsIDEsIFswLCAwLCAyNTUs
IDI1NV0pOw0KKw0KKyAgICBnbC5yZWFkQnVmZmVyKGdsLkNPTE9SX0FUVEFDSE1FTlQxKTsNCisg
ICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgMSwgMSwgWzAsIDAsIDI1NSwgMF0pOw0K
Kw0KKyAgICBkZWJ1ZygiVGVzdGluZyBuZXcgdG9rZW5zIGZvciBnZXRJbmRleGVkUGFyYW1ldGVy
VGVzdCIpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihleHQuQkxFTkRf
RVFVQVRJT05fUkdCLCAwKScsICdnbC5GVU5DX0FERCcpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0
SW5kZXhlZFBhcmFtZXRlcihleHQuQkxFTkRfRVFVQVRJT05fQUxQSEEsIDApJywgJ2dsLkZVTkNf
U1VCVFJBQ1QnKTsNCisgICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJM
RU5EX1NSQ19SR0IsIDApJywgJ2dsLk9ORScpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhl
ZFBhcmFtZXRlcihleHQuQkxFTkRfRFNUX1JHQiwgMCknLCAnZ2wuT05FJyk7DQorICAgIHNob3Vs
ZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGV4dC5CTEVORF9TUkNfQUxQSEEsIDApJywgJ2ds
LlpFUk8nKTsNCisgICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5E
X0RTVF9BTFBIQSwgMCknLCAnZ2wuWkVSTycpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhl
ZFBhcmFtZXRlcihleHQuQkxFTkRfRVFVQVRJT05fUkdCLCAxKScsICdnbC5GVU5DX0FERCcpOw0K
KyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihleHQuQkxFTkRfRVFVQVRJT05f
QUxQSEEsIDEpJywgJ2dsLkZVTkNfU1VCVFJBQ1QnKTsNCisgICAgc2hvdWxkQmUoJ2dsLmdldElu
ZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX1NSQ19SR0IsIDEpJywgJ2dsLlNSQ19BTFBIQScpOw0K
KyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihleHQuQkxFTkRfRFNUX1JHQiwg
MSknLCAnZ2wuT05FX01JTlVTX1NSQ19BTFBIQScpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5k
ZXhlZFBhcmFtZXRlcihleHQuQkxFTkRfU1JDX0FMUEhBLCAxKScsICdnbC5aRVJPJyk7DQorICAg
IHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGV4dC5CTEVORF9EU1RfQUxQSEEsIDEp
JywgJ2dsLlpFUk8nKTsNCisNCisgICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIo
ZXh0LkNPTE9SX1dSSVRFTUFTSywgMCknLCAnW2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXScp
Ow0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihleHQuQ09MT1JfV1JJVEVN
QVNLLCAxKScsICdbdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZV0nKTsNCisNCisgICAgZGVidWcoIlRl
c3Rpbmcgbm9uLWluZGV4ZWQgZ2V0UGFyYW10ZXIgZ2V0IHN0YXRlIGZyb20gZHJhdyBidWZmZXIg
MCIpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMRU5EX1NSQ19SR0IpJywg
J2dsLk9ORScpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMRU5EX0RTVF9S
R0IpJywgJ2dsLk9ORScpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLkJMRU5E
X1NSQ19BTFBIQSknLCAnZ2wuWkVSTycpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVy
KGdsLkJMRU5EX0RTVF9BTFBIQSknLCAnZ2wuWkVSTycpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0
UGFyYW1ldGVyKGdsLkJMRU5EX0VRVUFUSU9OX1JHQiknLCAnZ2wuRlVOQ19BREQnKTsNCisgICAg
c2hvdWxkQmUoJ2dsLmdldFBhcmFtZXRlcihnbC5CTEVORF9FUVVBVElPTl9BTFBIQSknLCAnZ2wu
RlVOQ19TVUJUUkFDVCcpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGdsLkNPTE9S
X1dSSVRFTUFTSyknLCAnW2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXScpOw0KKw0KKyAgICBk
ZWJ1ZygiVGVzdGluZyBub24taW5kZXhlZCBjYWxscyBtb2RpZnkgYWxsIGRyYXcgYnVmZmVycyBz
dGF0ZSIpOw0KKyAgICBnbC5ibGVuZEVxdWF0aW9uU2VwYXJhdGUoZ2wuRlVOQ19TVUJUUkFDVCwg
Z2wuRlVOQ19BREQpOw0KKyAgICBnbC5ibGVuZEZ1bmNTZXBhcmF0ZShnbC5PTkVfTUlOVVNfRFNU
X0FMUEhBLCBnbC5EU1RfQUxQSEEsIGdsLk9ORSwgZ2wuT05FKTsNCisgICAgZ2wuY29sb3JNYXNr
KHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSk7DQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IDAsICdOb24taW5kZXhlZCBzdGF0ZSBzZXQgd2l0aG91dCBlcnJvcnMnKTsNCisNCisgICAgc2hv
dWxkQmUoJ2dsLmdldFBhcmFtZXRlcihnbC5CTEVORF9FUVVBVElPTl9SR0IpJywgJ2dsLkZVTkNf
U1VCVFJBQ1QnKTsNCisgICAgc2hvdWxkQmUoJ2dsLmdldFBhcmFtZXRlcihnbC5CTEVORF9FUVVB
VElPTl9BTFBIQSknLCAnZ2wuRlVOQ19BREQnKTsNCisgICAgc2hvdWxkQmUoJ2dsLmdldFBhcmFt
ZXRlcihnbC5CTEVORF9TUkNfUkdCKScsICdnbC5PTkVfTUlOVVNfRFNUX0FMUEhBJyk7DQorICAg
IHNob3VsZEJlKCdnbC5nZXRQYXJhbWV0ZXIoZ2wuQkxFTkRfRFNUX1JHQiknLCAnZ2wuRFNUX0FM
UEhBJyk7DQorICAgIHNob3VsZEJlKCdnbC5nZXRQYXJhbWV0ZXIoZ2wuQkxFTkRfU1JDX0FMUEhB
KScsICdnbC5PTkUnKTsNCisgICAgc2hvdWxkQmUoJ2dsLmdldFBhcmFtZXRlcihnbC5CTEVORF9E
U1RfQUxQSEEpJywgJ2dsLk9ORScpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0UGFyYW1ldGVyKGds
LkNPTE9SX1dSSVRFTUFTSyknLCAnW3RydWUsIGZhbHNlLCB0cnVlLCBmYWxzZV0nKTsNCisNCisg
ICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX0VRVUFUSU9OX1JH
QiwgMCknLCAnZ2wuRlVOQ19TVUJUUkFDVCcpOw0KKyAgICBzaG91bGRCZSgnZ2wuZ2V0SW5kZXhl
ZFBhcmFtZXRlcihleHQuQkxFTkRfRVFVQVRJT05fQUxQSEEsIDApJywgJ2dsLkZVTkNfQUREJyk7
DQorICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGV4dC5CTEVORF9TUkNfUkdC
LCAwKScsICdnbC5PTkVfTUlOVVNfRFNUX0FMUEhBJyk7DQorICAgIHNob3VsZEJlKCdnbC5nZXRJ
bmRleGVkUGFyYW1ldGVyKGV4dC5CTEVORF9EU1RfUkdCLCAwKScsICdnbC5EU1RfQUxQSEEnKTsN
CisgICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX1NSQ19BTFBI
QSwgMCknLCAnZ2wuT05FJyk7DQorICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVy
KGV4dC5CTEVORF9EU1RfQUxQSEEsIDApJywgJ2dsLk9ORScpOw0KKyAgICBzaG91bGRCZSgnZ2wu
Z2V0SW5kZXhlZFBhcmFtZXRlcihleHQuQkxFTkRfRVFVQVRJT05fUkdCLCAxKScsICdnbC5GVU5D
X1NVQlRSQUNUJyk7DQorICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGV4dC5C
TEVORF9FUVVBVElPTl9BTFBIQSwgMSknLCAnZ2wuRlVOQ19BREQnKTsNCisgICAgc2hvdWxkQmUo
J2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX1NSQ19SR0IsIDEpJywgJ2dsLk9ORV9N
SU5VU19EU1RfQUxQSEEnKTsNCisgICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIo
ZXh0LkJMRU5EX0RTVF9SR0IsIDEpJywgJ2dsLkRTVF9BTFBIQScpOw0KKyAgICBzaG91bGRCZSgn
Z2wuZ2V0SW5kZXhlZFBhcmFtZXRlcihleHQuQkxFTkRfU1JDX0FMUEhBLCAxKScsICdnbC5PTkUn
KTsNCisgICAgc2hvdWxkQmUoJ2dsLmdldEluZGV4ZWRQYXJhbWV0ZXIoZXh0LkJMRU5EX0RTVF9B
TFBIQSwgMSknLCAnZ2wuT05FJyk7DQorDQorICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFy
YW1ldGVyKGV4dC5DT0xPUl9XUklURU1BU0ssIDApJywgJ1t0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFs
c2VdJyk7DQorICAgIHNob3VsZEJlKCdnbC5nZXRJbmRleGVkUGFyYW1ldGVyKGV4dC5DT0xPUl9X
UklURU1BU0ssIDEpJywgJ1t0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2VdJyk7DQorfQ0KKw0KK2Z1
bmN0aW9uIHJ1blRlc3RFeHRlbnNpb24oKSB7DQorICAgIHNldHVwKCk7DQorDQorICAgIGVuYWJs
ZURpc2FibGVUZXN0KCk7DQorDQorICAgIC8vIGJsZW5kaW5nIHNob3VsZCBiZSBlbmFibGVkIGZv
ciBkcmF3QnVmZmVycyAwIGFuZCAxIGF0IHRoaXMgcG9pbnQNCisNCisgICAgY29uc3RhbnRBbHBo
YUJsZW5kQ29sb3JWYWxpZGF0aW9uVGVzdCgpOw0KKw0KKyAgICBpbmRleGVkQmxlbmRDb2xvclRl
c3QoKTsNCit9DQorDQorZnVuY3Rpb24gcnVuSW52YWxpZEVudW1zVGVzdCgpIHsNCisgICAgZGVi
dWcoIlRlc3RpbmcgbmV3IGVudW1zIGZvciBnZXRJbmRleGVkUGFyYW1ldGVyVGVzdCBiZWluZyBp
bnZhbGlkIGJlZm9yZSByZXF1ZXN0aW5nIHRoZSBleHRlbnNpb24iKTsNCisgICAgZ2wuZ2V0SW5k
ZXhlZFBhcmFtZXRlcigweDgwMDksIDApOyAgLy8gQkxFTkRfRVFVQVRJT05fUkdCDQorICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgJ0JMRU5EX0VRVUFUSU9OX1JH
QicpOw0KKyAgICBnbC5nZXRJbmRleGVkUGFyYW1ldGVyKDB4ODgzRCwgMCk7ICAvLyBCTEVORF9F
UVVBVElPTl9BTFBIQQ0KKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0VO
VU0sICdCTEVORF9FUVVBVElPTl9BTFBIQScpOw0KKyAgICBnbC5nZXRJbmRleGVkUGFyYW1ldGVy
KDB4ODBDOSwgMCk7ICAvLyBCTEVORF9TUkNfUkdCDQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLklOVkFMSURfRU5VTSwgJ0JMRU5EX1NSQ19SR0InKTsNCisgICAgZ2wuZ2V0SW5kZXhl
ZFBhcmFtZXRlcigweDgwQ0IsIDApOyAgLy8gQkxFTkRfU1JDX0FMUEhBDQorICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgJ0JMRU5EX1NSQ19BTFBIQScpOw0KKyAg
ICBnbC5nZXRJbmRleGVkUGFyYW1ldGVyKDB4ODBDOCwgMCk7ICAvLyBCTEVORF9EU1RfUkdCDQor
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwgJ0JMRU5EX0RTVF9S
R0InKTsNCisgICAgZ2wuZ2V0SW5kZXhlZFBhcmFtZXRlcigweDgwQ0EsIDApOyAgLy8gQkxFTkRf
RFNUX0FMUEhBDQorICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfRU5VTSwg
J0JMRU5EX0RTVF9BTFBIQScpOw0KKyAgICBnbC5nZXRJbmRleGVkUGFyYW1ldGVyKDB4MEMyMywg
MCk7ICAvLyBDT0xPUl9XUklURU1BU0sNCisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgW2ds
LklOVkFMSURfT1BFUkFUSU9OLCBnbC5JTlZBTElEX0VOVU1dLCAnaW52YWxpZCBvcGVyYXRpb25z
IG9yIGludmFsaWQgZW51bXMgZm9yIENPTE9SX1dSSVRFTUFTSycpOw0KK30NCisNCitmdW5jdGlv
biBydW5UZXN0KCkgew0KKyAgaWYgKCFnbCkgew0KKyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRv
ZXMgbm90IGV4aXN0Iik7DQorICB9IGVsc2Ugew0KKyAgICB0ZXN0UGFzc2VkKCJjb250ZXh0IGV4
aXN0cyIpOw0KKw0KKyAgICBydW5JbnZhbGlkRW51bXNUZXN0KCk7DQorDQorICAgIGV4dCA9IGds
LmdldEV4dGVuc2lvbigiT0VTX2RyYXdfYnVmZmVyc19pbmRleGVkIik7DQorDQorICAgIHd0dS5y
dW5FeHRlbnNpb25TdXBwb3J0ZWRUZXN0KGdsLCAiT0VTX2RyYXdfYnVmZmVyc19pbmRleGVkIiwg
ZXh0ICE9PSBudWxsKTsNCisNCisgICAgaWYgKGV4dCAhPT0gbnVsbCkgew0KKyAgICAgIHJ1blRl
c3RFeHRlbnNpb24oKTsNCisgICAgfSBlbHNlIHsNCisgICAgICB0ZXN0UGFzc2VkKCJObyBPRVNf
ZHJhd19idWZmZXJzX2luZGV4ZWQgc3VwcG9ydCAtLSB0aGlzIGlzIGxlZ2FsIik7DQorICAgIH0N
CisgIH0NCit9DQorDQorcnVuVGVzdCgpOw0KKw0KK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOw0KKzwvc2NyaXB0Pg0KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0Pg0KKzwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3RleHR1cmVzL21p
c2MvaW1tdXRhYmxlLXRleC1yZW5kZXItZmVlZGJhY2suaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL2lt
bXV0YWJsZS10ZXgtcmVuZGVyLWZlZWRiYWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk0ZTM1OWQ2NDRj
ODMxZWRlMjA3M2UwOGVjZGM1MjU0NGIzNGRjMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi90ZXh0dXJl
cy9taXNjL2ltbXV0YWJsZS10ZXgtcmVuZGVyLWZlZWRiYWNrLmh0bWwKQEAgLTAsMCArMSwyMjEg
QEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxl
PkVuc3VyZSBzYW1wbGluZy1mZWVkYmFjayBkZXRlY3Rpb24gY2FuIGFsbG93IGNlcnRhaW4gaW1t
dXRhYmxlIHRleHR1cmUgdXNlczwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworCitjb25zdCB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK2Rlc2Ny
aXB0aW9uKCk7CisKK2NvbnN0IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCh1bmRlZmluZWQsIHVu
ZGVmaW5lZCwgMik7CisKK2Z1bmN0aW9uKiByYW5nZShhLCBiKSB7CisgICAgYS5yZXF1aXJlZDsK
KyAgICBpZiAoYiA9PT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGIgPSBhOworICAgICAgICBhID0g
MDsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IGE7IGkgPCBiOyBpICs9IDEpIHsKKyAgICAgICAg
eWllbGQgaTsKKyAgICB9Cit9CisKK2NvbnN0IFZTID0gYFwKK3ZvaWQgbWFpbigpIHsKKyAgICBn
bF9Qb2ludFNpemUgPSAxLjA7Cit9CitgOworCitjb25zdCBGUyA9IGBcCit1bmlmb3JtIHNhbXBs
ZXIyRCB1X3RleDA7Cit2b2lkIG1haW4oKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJE
KHVfdGV4MCwgdmVjMigwKSk7Cit9CitgOworCitjb25zdCBwcm9nID0gd3R1LmxvYWRQcm9ncmFt
KGdsLCBWUywgRlMpOworZ2wudXNlUHJvZ3JhbShwcm9nKTsKKworKCgpID0+IHsKKyAgICBjb25z
dCBNSVBTID0gMzsKKyAgICBjb25zdCBTSVpFID0gMTA7CisKKyAgICBjb25zdCBpbW11dFRleCA9
IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBpbW11dFRleC5uYW1lID0gImltbXV0VGV4IjsKKyAg
ICBpbW11dFRleC5pbW11dGFibGUgPSB0cnVlOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIGltbXV0VGV4KTsKKyAgICBnbC50ZXhTdG9yYWdlMkQoZ2wuVEVYVFVSRV8yRCwgTUlQ
UywgZ2wuUkdCQTgsIFNJWkUsIFNJWkUpOworCisgICAgY29uc3QgbXV0VGV4ID0gZ2wuY3JlYXRl
VGV4dHVyZSgpOworICAgIG11dFRleC5uYW1lID0gIm11dFRleCI7CisgICAgbXV0VGV4LmltbXV0
YWJsZSA9IGZhbHNlOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG11dFRleCk7
CisgICAgZm9yIChjb25zdCBtaXAgb2YgcmFuZ2UoTUlQUykpIHsKKyAgICAgICAgY29uc3Qgc2l6
ZSA9IFNJWkUgPj4gbWlwOworICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIG1p
cCwgZ2wuUkdCQTgsIHNpemUsIHNpemUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgZ2wuUkdC
QSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgfQorCisgICAgY29uc3QgTUFHX0ZJTFRF
UlMgPSBbCisgICAgICAgICdMSU5FQVInLAorICAgICAgICAnTkVBUkVTVCcsCisgICAgXTsKKyAg
ICBjb25zdCBNSU5fRklMVEVSUyA9IFsKKyAgICAgICAgWydMSU5FQVInLGZhbHNlXSwKKyAgICAg
ICAgWydMSU5FQVJfTUlQTUFQX0xJTkVBUicsdHJ1ZV0sCisgICAgICAgIFsnTElORUFSX01JUE1B
UF9ORUFSRVNUJyx0cnVlXSwKKyAgICAgICAgWydORUFSRVNUJyxmYWxzZV0sCisgICAgICAgIFsn
TkVBUkVTVF9NSVBNQVBfTElORUFSJyx0cnVlXSwKKyAgICAgICAgWydORUFSRVNUX01JUE1BUF9O
RUFSRVNUJyx0cnVlXSwKKyAgICBdOworCisgICAgY29uc3QgZmIgPSBnbC5jcmVhdGVGcmFtZWJ1
ZmZlcigpOworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZmIpOworCisg
ICAgZGVidWcoYAorICAgICAgICBtaXBzOiAke01JUFN9OiBbMCwke01JUFMtMX1dIChpbmNsdXNp
dmUpCisgICAgICAgIHNpemU6ICR7U0laRX1gKTsKKyAgICBjb25zdCB0ZXhzID0gWworICAgICAg
ICBpbW11dFRleCwKKyAgICAgICAgbXV0VGV4LAorICAgIF07CisgICAgZm9yIChjb25zdCB0ZXgg
b2YgdGV4cykgeworICAgICAgICBkZWJ1ZyhgXAorCisgICAgICAgICAgICBpbW11dGFibGU6ICR7
dGV4LmltbXV0YWJsZX1gKTsKKyAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwg
dGV4KTsKKworICAgICAgICBmb3IgKGNvbnN0IGxldmVsX3ByaW1lX2Jhc2Ugb2YgcmFuZ2UoTUlQ
UysxKSkgeyAvLyBgbGV2ZWxfYmFzZWAgaW4gR0xFUworICAgICAgICAgICAgLy8gRVMgMy4wLjYg
cDE1MAorICAgICAgICAgICAgbGV0IF9sZXZlbF9iYXNlID0gbGV2ZWxfcHJpbWVfYmFzZTsKKyAg
ICAgICAgICAgIGlmICh0ZXguaW1tdXRhYmxlKSB7CisgICAgICAgICAgICAgICAgX2xldmVsX2Jh
c2UgPSBNYXRoLm1pbihfbGV2ZWxfYmFzZSwgTUlQUy0xKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNvbnN0IGxldmVsX2Jhc2UgPSBfbGV2ZWxfYmFzZTsKKworICAgICAgICAgICAgZm9y
IChsZXQgX2xldmVsX3ByaW1lX21heCBvZiByYW5nZShsZXZlbF9wcmltZV9iYXNlLTEsIE1JUFMr
MikpIHsgLy8gYHFgIGluIEdMRVMKKyAgICAgICAgICAgICAgICBpZiAoX2xldmVsX3ByaW1lX21h
eCA8IDApIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGlmIChfbGV2ZWxfcHJpbWVfbWF4ID09
IE1JUFMrMSkgeworICAgICAgICAgICAgICAgICAgICBfbGV2ZWxfcHJpbWVfbWF4ID0gMTAwMDA7
IC8vIFRoaXMgaXMgdGhlIGRlZmF1bHQsIGFmdGVyIGFsbCEKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgY29uc3QgbGV2ZWxfcHJpbWVfbWF4ID0gX2xldmVsX3ByaW1lX21heDsK
KworICAgICAgICAgICAgICAgIC8vIEVTIDMuMC42IHAxNTAKKyAgICAgICAgICAgICAgICBsZXQg
X2xldmVsX21heCA9IGxldmVsX3ByaW1lX21heDsKKyAgICAgICAgICAgICAgICBpZiAodGV4Lmlt
bXV0YWJsZSkgeworICAgICAgICAgICAgICAgICAgICBfbGV2ZWxfbWF4ID0gTWF0aC5taW4oTWF0
aC5tYXgobGV2ZWxfYmFzZSwgbGV2ZWxfcHJpbWVfbWF4KSwgTUlQUy0xKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgY29uc3QgbGV2ZWxfbWF4ID0gX2xldmVsX21heDsKKwor
ICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBNYXRoLmZsb29yKE1hdGgubG9nMihTSVpFKSkgKyBs
ZXZlbF9iYXNlOworICAgICAgICAgICAgICAgIGNvbnN0IHEgPSBNYXRoLm1pbihwLCBsZXZlbF9t
YXgpOworCisgICAgICAgICAgICAgICAgZGVidWcoYFwKKworICAgICAgICAgICAgICAgICAgICBs
ZXZlbF9wcmltZV9iYXNlL21heDogWyR7bGV2ZWxfcHJpbWVfYmFzZX0sICR7bGV2ZWxfcHJpbWVf
bWF4fV0gKGluY2x1c2l2ZSkKKyAgICAgICAgICAgICAgICAgICAgbGV2ZWxfYmFzZS9tYXg6IFsk
e2xldmVsX2Jhc2V9LCAke2xldmVsX21heH1dIChpbmNsdXNpdmUpCisgICAgICAgICAgICAgICAg
ICAgIHE6ICR7cX1gKTsKKyAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfQkFTRV9MRVZFTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxldmVsX3ByaW1lX2Jhc2UpOworICAgICAgICAgICAgICAgIGdsLnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQVhfTEVWRUwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsZXZlbF9wcmltZV9tYXgpOworCisgICAgICAgICAgICAgICAgY29u
c3QgbWlwQ29tcGxldGUgPSAocSA8PSBNSVBTLTEpOworCisgICAgICAgICAgICAgICAgZm9yIChj
b25zdCBbbWluRmlsdGVyLHVzZU1pcHNdIG9mIE1JTl9GSUxURVJTKSB7CisgICAgICAgICAgICAg
ICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklM
VEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsW21pbkZpbHRlcl0p
OworCisgICAgICAgICAgICAgICAgICAgIC8vIEVTMy4wIHAyMTEKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3JjTWF4U2FtcGxlZE1pcCA9ICh1c2VNaXBzID8gcSA6IGxldmVsX2Jhc2UpOwor
CisgICAgICAgICAgICAgICAgICAgIC8vIEVTMy4wIHAxNjAtMTYxCisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHRleHR1cmVDb21wbGV0ZSA9IChzcmNNYXhTYW1wbGVkTWlwIDw9IE1JUFMtMSkg
JiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldmVsX2Jh
c2UgPD0gbGV2ZWxfbWF4KTsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG1hZ0Zp
bHRlciBvZiBNQUdfRklMVEVSUykgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoYFwK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogJHttaW5GaWx0ZXJ9LCBtYWc6ICR7
bWFnRmlsdGVyfWApOworICAgICAgICAgICAgICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsW21hZ0ZpbHRlcl0pOworCisgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKGNvbnN0IGRzdE1pcCBvZiByYW5nZSgwLE1JUFMrMSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1pcDogJHtkc3RNaXB9YCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuZnJh
bWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLlRF
WFRVUkVfMkQsIHRleCwgZHN0TWlwKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IC0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVTMy4wIHAyMTMtMjE0CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZiQ29tcGxldGUgPSB0cnVlOworCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gKiAiVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgYGltYWdl
YCBhcmUgbm9uLXplcm8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmJDb21wbGV0ZSAm
PSAoMCA8PSBkc3RNaXAgJiYgZHN0TWlwIDw9IE1JUFMtMSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIXRleC5pbW11dGFibGUpIHsgLy8gIi4uLmRvZXMgbm90IG5hbWUgYW4g
aW1tdXRhYmxlLWZvcm1hdCB0ZXh0dXJlLi4uIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAqICIuLi50aGUgdmFsdWUgb2YgW2xldmVsXSBtdXN0IGJlIGluIHRoZSByYW5nZSBg
W2xldmVsX2Jhc2UsIHFdYCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmJDb21w
bGV0ZSAmPSAobGV2ZWxfYmFzZSA8PSBkc3RNaXAgJiYgZHN0TWlwIDw9IHEpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICogIi4uLnRoZSB2YWx1ZSBvZiBbbGV2ZWxdIGlz
IG5vdCBgbGV2ZWxfYmFzZWAsIHRoZW4gdGhlIHRleHR1cmUgbXVzdCBiZSBtaXBtYXAgY29tcGxl
dGUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkc3RNaXAgIT0gbGV2ZWxf
YmFzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmJDb21wbGV0ZSAm
PSBtaXBDb21wbGV0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IC0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleHBlY3RFcnJvciA9IDA7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGV4cGVjdFN0YXR1cyA9IGdsLkZSQU1FQlVG
RkVSX0NPTVBMRVRFOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRVMzLjAgcDIx
MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzYW1wbGluZ0ZlZWRiYWNrID0gKGxl
dmVsX2Jhc2UgPD0gZHN0TWlwICYmIGRzdE1pcCA8PSBzcmNNYXhTYW1wbGVkTWlwKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmVDb21wbGV0ZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmNvbXBsZXRlIHRleHR1cmVzIGFyZSBzYWZlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsaW5nRmVlZGJhY2sgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHNhbXBsaW5nRmVlZGJhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0RXJyb3IgPSBnbC5JTlZBTElEX09QRVJBVElPTjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmYkNvbXBsZXRl
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdFN0YXR1cyA9IGdsLkZS
QU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0RXJyb3IgPSBnbC5JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTjsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAtCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3dHUuZnJhbWVidWZmZXJT
dGF0dXNTaG91bGRCZShnbCwgZ2wuRlJBTUVCVUZGRVIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3RTdGF0dXMsIGB7aW1tdXRhYmxlOiAke3RleC5pbW11dGFibGV9LCBsZXZl
bF9wcmltZV9iYXNlL21heDogWyR7bGV2ZWxfcHJpbWVfYmFzZX0sICR7bGV2ZWxfcHJpbWVfbWF4
fV0sIG1pbkZpbHRlcjogJHttaW5GaWx0ZXJ9LCBkZXN0OiAke2RzdE1pcH19YCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlBPSU5UUywgMCwgMSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZXhwZWN0
RXJyb3IsICJhZnRlciBkcmF3IHdpdGggdGV4dHVyZSIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorfSkoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvd2ViZ2wt
dGVzdC11dGlscy5qcwppbmRleCAwMzkyODM4ZmI4OTM3YzdkMTE3ZThlYjJjN2ExODYyNWZlYzdk
ZmNiLi40Njg0ZWE4MTBiZWFmOWYyN2E5MGQwZmEzOGRhNWYzNDkxMjhkZmI2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy93ZWJnbC10
ZXN0LXV0aWxzLmpzCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMKQEAgLTMxMzIsNyArMzEzMiwxNiBAQCB2YXIg
cnVuU3RlcHMgPSBmdW5jdGlvbihzdGVwcykgewogICogQHBhcmFtIHshZnVuY3Rpb24oIUhUTUxW
aWRlb0VsZW1lbnQpOiB2b2lkfSBjYWxsYmFjayBGdW5jdGlvbiB0byBjYWxsIHdoZW4KICAqICAg
ICAgICB2aWRlbyBpcyByZWFkeS4KICAqLwotdmFyIHN0YXJ0UGxheWluZ0FuZFdhaXRGb3JWaWRl
byA9IGZ1bmN0aW9uKHZpZGVvLCBjYWxsYmFjaykgeworZnVuY3Rpb24gc3RhcnRQbGF5aW5nQW5k
V2FpdEZvclZpZGVvKHZpZGVvLCBjYWxsYmFjaykgeworICBpZiAodmlkZW8uZXJyb3IpIHsKKyAg
ICB0ZXN0RmFpbGVkKCdWaWRlbyBmYWlsZWQgdG8gbG9hZDogJyArIHZpZGVvLmVycm9yKTsKKyAg
ICByZXR1cm47CisgIH0KKworICB2aWRlby5hZGRFdmVudExpc3RlbmVyKAorICAgICAgJ2Vycm9y
JywgZSA9PiB7IHRlc3RGYWlsZWQoJ1ZpZGVvIHBsYXliYWNrIGZhaWxlZDogJyArIGUubWVzc2Fn
ZSk7IH0sCisgICAgICB0cnVlKTsKKwogICB2YXIgcnZmYyA9IGdldFJlcXVlc3RWaWRGcmFtZUNh
bGxiYWNrKCk7CiAgIGlmIChydmZjID09PSB1bmRlZmluZWQpIHsKICAgICB2YXIgdGltZVdhdGNo
ZXIgPSBmdW5jdGlvbigpIHsKQEAgLTMzMjksMTIgKzMzMzgsMTIgQEAgZnVuY3Rpb24gY29tcGFy
ZVBpeGVscyhjbXAsIHJlZiwgdG9sZXJhbmNlLCBkaWZmKSB7CiB9CiAKIGZ1bmN0aW9uIGRlc3Ry
b3lDb250ZXh0KGdsKSB7Ci0gIGdsLmNhbnZhcy53aWR0aCA9IDE7Ci0gIGdsLmNhbnZhcy5oZWln
aHQgPSAxOwogICBjb25zdCBleHQgPSBnbC5nZXRFeHRlbnNpb24oJ1dFQkdMX2xvc2VfY29udGV4
dCcpOwogICBpZiAoZXh0KSB7CiAgICAgZXh0Lmxvc2VDb250ZXh0KCk7CiAgIH0KKyAgZ2wuY2Fu
dmFzLndpZHRoID0gMTsKKyAgZ2wuY2FudmFzLmhlaWdodCA9IDE7CiB9CiAKIGZ1bmN0aW9uIGRl
c3Ryb3lBbGxDb250ZXh0cygpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy92aWRlby1yb3RhdGlvbi0wLnZwOS5tcDQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMv
dmlkZW8tcm90YXRpb24tMC52cDkubXA0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjNDk5MGU1OWQyZjc1MWQ0ZWEy
YjdjZDdiZmViZmQ3NDA2ODgyYjUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI5MTcKemNtWnV6
Y3w0VHM3a2BvRSRgWFVvV0okO18zfFQ4RzZmVU1oTipIRGRHZShTPUM9NWxTWHpZfXdFe1NZS1d2
I2ZECnpXWGFNKip9QXNrR0d2ZnRHezFNS1RmaDdKb3pIdW9eRjgxNWViNCo2PWxTT1cwNis+dTRE
I358QW05T2o2SlNUcwp6Yj98PD0rNWlDWFZmQGkoRnIyYG5raT59TlJ9U3l5byMkTiEzPjJnITBi
cEJCbkVyXzhGa3w/VE1RfHkoZj9ULWIKendsTUlsRkV+RHNNWTh5K3d6QT9AeEh2b2tZNSkyPj0k
bXI3aTR3JihqdzdnMldeRzdCekdUVkh0TmwqdiQ2ZFdkCnohPWFAcjNKYHs5Kj85SXpBVz4kSDJZ
YlNFVEpYUk4lKmRDN15yTn4jd3JPT25JeE9AVXd1KT95S08qZHdZUSttbAp6Ull8I3JVOUx9KSNH
Y0omSFI+aUIrfl5ZOzc7bXRRWFIldGIxKW1idXBJQk9qX1FCNnJESTBkRnY2d2xJWFpENzUKeml2
MmJrVzU/dWFVKTleTk5SZGI3SjRjOylVVkFYVC1AK0hrPFE5OFBzP1N8fVhzek0zQXZ4ZjlNPCo0
UWdhWmFZCnorZTBVWVdLTnZxZFMlfE5HR3ZmPlpjKF40dHMmIUYpMTF6UTkqKWEzR3BMJksycFJP
QzlIVlFRKDR1em9hJDFNdAp6IUtab2g7PnVkYTlrPSlLU3xjaylgc2k+JDJMYnlRV3JlKCRqfDNF
PVVscEolckBIZUJxJFdeaFE/bmBFIStDaSQKelYpbztzPCteYDZraVQ2emtzezV5bnNGSHQhaEp3
U15yN31HWEVeTUlMJnQoITQpPnNXKTZgJklQUkwyaENzQnMlCnpoa0Izc01PKT8xT1FucGkxQHtf
Tmd0LUE8JVJ7QHQ7Kjw9N1l3R0ljWHVWYlAqclVkKTNebkBVY29pZ2BjV2tZQQp6Pjd5V1pTWVZ7
YVBuKXRjcFAkaS11dmchdmJ7V314SW5qTzttbms0fi1eV1A1dSZ3SSEkY0tIIXdoaSVPaHRgP0cK
ekdQRDg0ezhUaG1qUCZrNj49UW9HOU9yZ0QqNWFrYClEYFVOIzBBKjtqaTdnPmZqejQ0WGFeYyY+
MkQtOGx9Mjk5Cno4fE5Le1lFZGNmYnZqWS1UNVItVXdBfndNTndTYn1tdmk/OUZGNmVJOWBRNz83
ajMhQXpfM1BXcHxTSytoRTI3eQp6aF9GRDctb1ZoSWJSdnpCZWUpfFZIPTh3X2ItTF4qKiRhTHA8
bmUzaCN+QDFRa0BZPmRVfmpGV3Y4YHErJk15dVIKejhpZ19RRW5rWTFhdEhSbCsmQ0xLLXpjR0dn
PyZ4cWFoP3JYOzFlb3V3cHh1ISk0aUQ3UjMyKyl6ZWlOR0F2Wm5pCnpCRX5TNT1HNnQ9Rm92RzNn
PW5DWHxJb213cnxqcytVXmEpQGNGK1hjJDdqKDtWaW8wWEREQXNEKGA+eWtFQWgoZQp6Tz9fREJ5
fWUhQjt3ekV7UzY9al8zcjFyP1I3P0YyZV9SPmEyPnVBNSg1c0kjRVdNdjxpYnhzMFlaVmtkQTxz
figKek5temJuazh0VDJKKEhWPyRMaGZDdn07eTFmU0JUdlhOMT1URCVPKSNvYilEJiE/bispQ3Mz
a01sZlBgTCREUkxGCnpnN2dBOVYlI1ZJQG5LR0o9aSl0X0NpSz1zVCZVOXJIfX1IWk9gfSQrU055
bDFGYCV7ZSktb1VJSEJBWCFlVkUrYwp6VlFyPEtWe3A5WilTZDtfZDtlRD1VYU5laVVFQj5qaU40
e3J3I2VEJXkxUXhgVVFOU2B0XmVMRzkrfHhsVmZ4PFoKeiE4Pm1gSnBSaFd2fmppVGh4USh+PmtJ
dz9CSEYkTDtSfj40JkEoRHIzXmhsQTl2dW1qRGxAMmhnd2AoaSt8QH41CnpMcko2fGk8QCZpUUlN
Tjc+YWFsI1Jmd0t9d0xXVUlRelB7SVdPVHhwJDZrI3k1MSNnRTstNmdoX3NnRVR0NE03cwp6bSk1
dX54YzlYJGx+MlcjSzJ8aX0zdVRjPDY/SVFTdFIwe2BDP1dgZlRRMUdAI0EqNlUrJEhvI1V9VW5U
dSZrV1YKenJSdXVMdEtzaFVoMEY+QnA+T3xzdVpxZHN0UCU4UzFWP31PWW5TOGl3UDhwZj54dXkw
R3NZRmdlYjxqKUVCc0s2Cno7M19LR1hgdk9hNSltWjcyYm9VaUtQRl9CVV8oemYoXjsyd1A7ISp6
OyEmdiMpPzJXJU5MLXdZa3xEJiQ2QH1oaQp6Wms+YmF6cng8STllMUlCdTdsWXx3SU5uakU+MTRf
UlBoQHMmQT0hJDV5YlModDZwWEQtRChGS0pVU0RtX3NCJiQKelpRU0s/bzYqRWdORjtAWVI5P1N1
KS1aX1BecWAyI1lkcWB5bztIdHtyPU5FamV+eD84b1luIUtXOTQ3OGpEe0NpCnpHWkBhXkZseURH
YSQpNEFKMSl3dWZVQTMpeytoZ14+PHJkS0ohI3U7c0lnJmEhZ2R7MWtBZUUpUzxCUnYyTnkwYAp6
PFVJWksjSHxRPGAqPlM8cWxONmUtSWItMj5wUSlKT15mX0VPaGRea3dNfFgxQ0BFO0V0QkoofVp8
UXNDLXxXSkkKekJxTzVVNT1ZKCtXdkdXRypmK2BKMU1gPnZQQEdEV3NZentTPFFnNStKQH08MW9U
TUt5WT90QCNfJkxkb3VgYGZACnpCUEFEZVhNemhXam9seUFyfD9WckxpT2tnWWM8ZHlLNj9lZmA+
WkRZU1NqNHYkPEIpcm9pU2dpN0kyMG1KPD0jIQp6SEYoRHRsQ15wNl5SXzNQM01SMjAocWw8Q3o0
TWdyc08lRGtIKVBgJjxJenlxNzxxQGNQcEBuMDFmdkR0Q09SODQKem1CbzxYKElOaGZKSCU7JFdY
OVJgVnp4c2ZLYytsaXJ6KE1ZeFMkI1BoRSt9OHtiYXlJR3dGLWZvIUh7UlErJCF9CnpCfSFjNEBy
cHFAezR2KkJmNnZyNXRhaDBiNG45dl9HT2RQTypyPFgwQSY/WTtvNyhaI3ZZR34/TWBoWjI+TjZj
Rgp6SVNHU156PGZ6NmVSXz1CUVErTFFPdWUkWERIfm96dHdTTnQtcHxue200eX5WcTthazdadFkx
b051VDFsPnt5Vj4Kek1AZCF+QlI3dD17UkpDQi1LPSojYS0mTl4zV21XfXpIJiEqI3tQen00UXpu
ZC1oYXRUX2c9UyNsJEVlcD54ay1KCnpPIU1heGp1bSthdTRKbXNTRWh4SFlHc3N9NTl8K3JZO2R6
NiVzQTt0LTh8KTtNRTY/KVlvcChlTWRkNE4lWC0rewp6R1R+SjNXTU8tTEMwWTdCVk99d2NwWFpI
ZiNyNUI9RTtMK0hqZiMxX19CQTVTSEJeWWQ/KDxtOyZmMUtzcHdGanwKei02M2l1IVRmNF4tPzFg
czt7TVVyITkjeXFudmVIT05ONldkUHdFXyEyQFM2KV5odGJHTV9Cb3R6aVcwQ3Q8PzhZCnorPGJl
bm5WOGg9T3BHTyptU2I+M1ImZTBmTmRzfEtFMzJSbSNAaGxWX0lxNWEpUEE7Nl8oSXtQUlc7Uzdl
OCVwVQp6JT10RWZxZEg8Ryt1WCVjX3M9RkN0PHVVV2V5VChCb0c0OF4pdjItZmxvOzBgX141d0I8
VVY4KW13QUdoRn0qKEAKemZ8TVQyPlJ5WUElOUw+V3Q2RytpdTR0cGkpRFJsN0RWVDR5ezw1QX1e
diVlM1JQMShNO0Y7dm49bSU9Mko3aGZeCno3NXBeZmpHNnBTRzd6LWItaEckdmZmb3pUSVhyPHQw
cyMoQkkqJFY1RlVJdjVPcTJsKmZjXlptfDRLbW1VJUJafAp6PF5NeVI7NVQ7P3tnRk9rKFNfKTxg
QXgyMGdnPzN8fEg1cy1BQyhgNGY5MGxacDdQeFJLbW07KzI3czlxOFcldFcKekJpcTwtWjF2cklt
eEdFJmNfQmU9SHktdXhmN2J6TlBRYWxOMzs+e1U5KTxKWU1CcWE1TFYtODJwWExiV2drd2x3Cno2
YntZU2FHMm58ZEAmI3BCakdvans8PSpDKUsqT2o8JlMxLSp2NzY0MXA0RTRmNSolS3E2WkdkWCN2
RTU5fHl3TAp6TTNlbHE0OGgyQFV3ZHZiNiE2IU5mc3BOTmAoTVF0fDh0ZE92QXslKDxtWSowUV9M
VTEkO3JLMD1FciFVYWhzZiYKejJobzNQY3N4Tn0wTlZqVEdKdj1fU2hrY2MwdiRZNGFNMGo+Sj1w
LVhAQkJZZTQ2RnJqbUg0Y18qRm55Y3UqR2ZhCnopSXNiS2gkMTR2Y218SyZqTz89OXVmcW9xJXBk
OUokRFlxV3JzMWA5IWlvaCUwPXVDIWN0dko2VlEmSmtMNlJfZgpOMkFjWjFuJVlgZ3t7Z2pOaW4w
SXoKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy92aWRlby1yb3RhdGlvbi0xODAu
dnA5Lm1wNCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jl
c291cmNlcy92aWRlby1yb3RhdGlvbi0xODAudnA5Lm1wNApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZWU4NjA4YjM2
Y2I0NDdhZjNjYWY0N2EwNzViNGYxYmIxN2ZiZDhkCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAy
OTI2CnpjbVp1emN8MjY+OCRZLWlPRFJqVGozcDZqV0d6RnYqfCRWcDVmV2lXTSNmbWlXRSozdGta
ZyZOP05YTT9OUip3agp6bFZ6KylMPXF4PFhiakZoTC0qRmJ6dSlzWSZ3ME1qX3hZYVpKQDUxV144
eD8+Y2Z8WCtWTFdrSTBBS3tANXBvNXIKem8wMj5MMDQkQ2tYZnpacVZOckpZVjFwMSVRUD1gKDYr
bnVeYDJnVXpYQyZwJG5hSGxSdFBrd0V6NkN4N1U2MGsyCnpEfUZ5QD5NUDR4cj4waz96MnF+U2FA
eVFXbjd7dGdPaFJZbWZHbWs9PFdrbF9TXjtNOGRpQSRxWmIyZ01ZP3BrPQp6LTFeV2Z6fl9tYE0l
MXA7OzcyfF80aVReLWxTd1QlSnhUfntFZW4xY2ZDbGZeP213eDxBPE5TUUdKQWRWM1ZMYSgKeiZl
VjFhe3deLXI9IyU2Y2t2NyUtIWEmNnJzb2heRiNwPjFgPzF5eDZKSjF8YCV3KFR3cjBHfjFeTWhp
Vzd2WGhwCnpLZXJiPEZoe1ZiSUpTeylwdElhJTc3RWVALWVrO2I0IypjWjdRWm02RTQ0ODZOLXtj
b2UoKEZkUUl6WWY/cEIhfAp6TXxrT3xObEwtcFd5K1l3ZlFWV0MoRm5tcUUzQz43dCZpUi07MjVg
R0hseXVNeGpmTzkpOWMoJGFuLXcqamdXWSMKemBgdEpTdG85LUphTHYqQndjcTtuaFg9bXJicjJ8
NW5IX2g+OX1kZVdeJiReKmMxVHpSVURkVWo3VjtZTDQzNmtkCnpNWklTTE9kYmEzN0EzT0ZqP2Rk
YXxKWEBzeSRXdE5ZbnVAUit+KVQ4Xl9gbnJCTUolb0dwbH0wQHBxMXFGci1hXwp6ZjwlKG5iVzt9
YURQRHtKaERQQVMyVmp9aWZ3ZEprckxCRXppR2VyX0N5KnJgJjRiWEVzc1pLSmhpYnNwQylefU0K
eikmYEp6eih2fmVGbWpwdU1DV2IkckB+NiVHZ1M3QW5iZ2l3N0ZhR1UpZiNydDMkfGpoU01RKTs0
OVJ4MGVLX2gmCnoweVU+WW1NVyUlK3Z1NktBZkBeWVoxSjZtWjtNJmtUMEVYKSQqLVEkcCpLOUA8
ZHJpNXR+WUVaU3pgRl8jdk5IWQp6TilsTHxHdTgtfFh9NE1wQCk9YWhIN1VBY0RETSh+TX5XfD53
YHlEJl5QITRqa0UzOXcyZn5JX1RNVXtoaFM7ZjYKemste3FULSkkTDdNS1h3akgleEF4UTUzNENw
XjN4NHhBbERLKyUkVXEoIXM5YHIrWCNnKFBHK0oyM2NrNnRNYkk3CnpVKCYmPUEqN2BjbmE8NVRB
UGo5OSloOFlLbUY0bll1T19mOXhmPHdxP3RJSE1SKn43aWtaOUdWb24wKGQjdF9fOAp6OVlSKHxG
bnhQJSo7Ry1xK3RqalZXNkdra1FucmtvQyR5Vi1rJnx+K0B3X3dGc0MmZW9eSlVBRFd+WEd8RDNn
TmcKenFZfUQ5VEE5cnI9PyNrYnhyMD4zSE43aUVaUE19Mil7bXFpUjdZTUZKO0ZgZl8keWtzPzIp
UVRqejAtKnVBflE5CnpDP3FwYk52R3kqfEE/T3NeeHh3e3lnZz08RiY8eWlpMVE0VzRWYiplbWdu
S2pCeWhuQUFyP2ZBPk57fj07SmFNdwp6b0JlNVo7dWYjKTlIJFZgbDlzUDVSUTZLRT51MEBFVEB4
d3JfMDgqK0BRbHlwaWA1TmxRej5lRCt4eWY2JFUtJjkKekNRZitMQ3N5SCk+ST55I2wkcHZMem5j
OzhJPSgoP2ZSKH0odmVhITNwSSU5VmswPStvRCRPVHVFPlA0KlleZlArCnohPEh+PGVXdSt6e25v
U2RudShLLVA8bkMtazcpVCZWV3dxX09zfH5YVkl2a3hTKnt+bS1tU3xXT3hHVGhNP2c9Vgp6M2cm
TjBWcG91KDg8ajBhUUhRdXxWOFhZdndhJmU7YF47ZX4reTdjeVgxPn4wY2A0MUpAIW1SbEtNaiVv
dzZUX3UKekZGQ18wR2N6MHo+Xn0+ezhYfDxXTj4yK0xnQHEjS0o4Ml96PEA7YEJpNWloTlllUEZV
eHsrbW9qRl57N293WnohCnpaXkpYSmdnRTEmSk90dXAqbk9DPVk5RkdKQmVRaHJIPjRvVDJUPX4o
QEZmP3hfN3NJaC1icUZ6TXFwYUtFS0dNKQp6THNPTVl0T2NfezA+eFMxdmVgVigwIXRGP0gpMC02
KjR4SSlnUT8jX3h6cCFAemJuMio1O1hPeVBQZ2MlN3Y2QysKemNoITtYV3E3OSlILWR2VCppIWo8
Zk8keiNRUjhleDhqSEhrRE9XaThrM1RPUDRFMUo5I3UjcUIpcVg7ajhpcSQqCno0MH5NZXtBVlph
PzFeKyRoSFBpS1B6U2xBPEllO3AhXkw0SDM+aktvZmYqN1MwYSRpIz4pdykjZWs/Z0I8PyROdgp6
ez9uNiY2dyRjRnM2QnxXVDdAfTx1dEI4KSNXYXRHPFFUejYtI3FScGdZXj1fPjVTYyE9elFUeDdE
S1koWWZBMksKemdwKFgpTDs2fTdJJDhJXmpXcT8obmw1Jj84bjNiN2RtclU1XmkxMk5PeXxyKkpX
RS08JDFDM2AyK2tHTUEyQ0ZzCnozcFZ3aTliQnQldzU+RFFhKkIpUWpVPHZjRD9QTEhjcF5uSndp
dlNmVj8jXmlIIWo0Pns+Z2dWZHtpPCtjZ2VhVAp6dSNRQjV2dHB3OFh9I1FqZyRMcV5gNTY0XnQ5
d3JKaWpjdEFpUlRzOChZYXM3cSR0aDJUb3NPI1oxO2xsR2oqTSEKeklGZ0g9emVKfHJiKDNDfWZy
NE8xRF5rXk1SaWcwfFc9QSNoYDEjNHYlQnEtPjYtNF4/NTdtOV5QWCtAb1pkZ3JuCnpCOSlLRmNa
UEp1WExUS2tAM082JE9CKSE5UTtpdGRPNyFzNCl+MiFUVm5AQ29XPW1MVTRmampDYk5wT0RTTzIq
Rgp6ZWJRUF9ifHdHfDVESl5qemttP2wjRVcmJWRVJVZedVRGXmhlO0sjPlJeMGtFJGxIPTd3JkJE
elRRYStqJnQrSmIKemJsZj5jPiV0M2hpJDJxcWV2Ynd8IV47enJDUT12YHYtYTFoQ3wxTzdKI0JH
ZFBNa1IoO2s3b3pjZWROVXA/RHVBCnpTLW5USXB4TXw/QkIoTSgjPEZ8RncpPDtTWU01fER5QGFW
NkpuSDdWI2M3WUkjTVkmZSRQfG80aFQ0YjRSOzY8PAp6PUV2V2U4eUIqLVlqQ1VDNThpSzkqZUoz
cC1hV3sqc0w2XlNZMXA0VS1wczJ1dDl4bndCRXxjYjFQWXptMTVQbFUKemVTcDtOUEo1VXRvemVi
THR2dTI0RHxmbilXMEZ8VCMlNjJONFlMUWdZTm4oZzl9cil6KUE3eVlkK3N6JmxjXk9LCnpWTE87
cT52cUY1R0dTXndeIXMmZ09oWkA+SEZteT9Ue3FKYEw1RjZsdmE2QCpYMndHRjh8M0QrZT9SfEM8
TGhRTQp6OzB1QWgrUlh1KDExPnQ7NzMjRHhYMklfYUAhbXhmRGpsTkg+Kz5eQnE/ZipEOzdyRXZs
bmYtZ0IjLSRudWNTfE0Kei1qU1FgbnBVQ21WNEl3Sl5mLXlUQ1NaUzU2R25AQGsxYlJjRlhafGcq
byVhR2VVTj8zMGV1Syo7PHF9dVd5NVopCnpqXz5YZ0c7KzdJU2g/aEVRMWVBdU08Nj0pdTlTdkJ0
cD8lbGVkKjVfdUlIP3JgbXBYZC1UMn0oSFklZGBRKGJncAp6dmNlcTlxO3FBcTt0VHNrXjJRb183
Uks4VXg/d1FSVnt0ZUYxWUVFTENsbk5hRntVWGZrcGRWMWB0I0hObHxifT0KemFgbTZlfEEhYyVI
VG0lI2NHc1l5SFU4VDZub1BlNHxMIUxCMyUzbkhAWlpkVGI5SCgtQFBgOXtJMndpYmdmY2tWCnoj
UzslankzdT5AXnhhO0NBcl8wbSpnPjJxN1dMbn5EP2xfT1V7KChXMEZaRyl4cC1fTj10YVB3cGV4
eD1HbHoxVgp6ek1VKHwxeD9wNW9XZiNVOVU7SSZ6LX5BRmRxZWF1IzhFcG5JTFpTfSpVKmgjLXxn
ayRCS2lZd2M7Zjl7QWVgdWwKel94JEBuPSRiSHNvMTYrMT5Hb15TOVZRVWt4O19OeVBQaE02P0M/
THxlQUAlJEEtRmtjWkh3ODA4NXd0Tm0pUlVLCnpYcVJueyN+JHlvR2QkK04wZjZvUnp+X25JOXhQ
by03ZU5sNERLdSM0ZTt3IW12TEYwRWtxNF56P3Z6K2VmN0J0KQp6MGtefCM+a3RzT19kPzxBcGxG
M2ZaJTJDaDtJRzRuNCRRO08mNWJedmVAcTZtYkhXbU5jcFNaPDVPaTBqSD0rTG8KU1V9USZkSmRR
bDN0YU1DWFBWTyk1Y2NmP2wKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy92aWRl
by1yb3RhdGlvbi0yNzAudnA5Lm1wNCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL3Jlc291cmNlcy92aWRlby1yb3RhdGlvbi0yNzAudnA5Lm1wNApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNjAzMzJhZDkzZGE2YWUzMzA3ZGIxOWZhMzMzZjM3N2UxZDM2Yzk1CkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCAyOTM5CnpjbVp1emNVKTgxNjI3I2M2aFQ1PHF5O0dnTWx8N3RqdElpaTZ2
YjdWdSstMkFpNmomT0ROK15gTDheZTE2LTdWKwp6az9QVz1IPkxORU57TGhqZjxWYUxmVUNaSlor
Pl5xZURscUI9YmsmfnA5MjVAemE4LXctalJVQTBzdVdnaT1hem0KekBue3FQMEVnX3tZO0QyZGZX
PXI1QDh8P3c1TW98cy1VUUBEYEZRfDxAbFN1Yk50PW1sNkVAc0ZScGtgPlR5aTNYCnpfZUhOeSpe
Ryo4dlk8JClIX2sxNSo3eTg1MyRBaj9NbXdmO3ZaOXloaSp3OWU4Pn1Md14oTGghUXNrYl5DO0Vf
WQp6eUlLTiU3TShqaWUhLWlER3MyayZAaEslRWhxSXotJXdJKylQY0FpVGp3c0tHJT1MTCRMJW1o
JmpKYUZVIysob0wKej0rbmNebShPOHo3ckpWdzNqPWNGPGNwMEZfZC1UWTdIJnBTe3JuM1A/b31t
d1o9VD8pTkx2cXkhJSt0ezZ9ZzU1CnpCNUxJQ3Z7VyFlOTIqdXd5a1lpbDVFRlFNMCVieztrKXco
O05UT0lfU29AViRFJkFpS1JCRGEoXjRTcXsjakJTRwp6QnRtMSZebjcpWEd3OzMoWV5DbHclM0Eq
Z0BrPWpRZUY3N1RAa1lpKW4zJV97MV55fWQ+cWFfVUhxdjtHWn16RmcKekt4RSVXTmI+Y3NJaWxP
PG9kYyNfaG5aMyYycypQYGA2WEZFNlNAT21YUSZKYHN5MX0tI1ZWI3NTOGR1MXlgUWdlCnpLTn1x
QCpSRlZUTThJOEZ7Vns5UzxkSjMqTiF9NkM9JDNmd1hmJkl0U0MxPkJsZFNjNjleelNlMGNVaWVo
Q00lUwp6SkJIam9XJkwpeU87VXY/cGk0WlZSYFlHY1JlSmdWRnNvK21ScUMzezl+d3tOVFIxYTFS
VkteUGk1Z3R6aFY+ckYKemJTXiU9eDQzRmc3XyNNMTRTKygqdWZQYCpVcGxhcyRqS0h+PEw1Ukp2
JEJSLVdrfjhCMkh+PjFPSWhnLVk4I1JyCnpPWVJyJj84LT17VmBBfE5NKSMrWXpSO2Y4ekkxJnZe
bGF2RGVPJE9MbEMwUFp2I2habXR1JXc0N31Ic1c9X0hTKgp6Y3ZRKDAjTndHY2JxQntGP04xJDZA
U2pyWWUjaDd5d05ydVJGQnM4ZCQtZ1A9VVVIM3hHZURycVVkYX0rI0tJX2YKejdTYF9UKjRQJk9u
NjtFU2t9cmg2MnolZHUzJSFNQ25Za1cqamU2T2YpakRtV3t9WFIxd0pYUkIqJTdjaWx0SzdDCnpt
KnVFOWJyYmVaP3NjeFhobnN2N0xlUmg+cDQ2MUUodzxpRlE3QyhCdi07Kzx3LUMrcC1LUjY5XzAq
bmVfTyVXYgp6O3hoJHxoKihmYVJKUDZCVXcjdWk9SVp6QjxqLT9HQXh8Y2xWYXUqVkJGTC1QUHpE
dSFzWSRZYGBzRiUhOShiTm8Kem5+T0d3RHdPdnMtRWhQIztiXyo0VUdtNikkcm84VTwxa30+SiVM
emwtPlJjLUp7QnRHSW85MnhHMkxmQXYmcWA1CnpMU2Mydz1BP21hLT1HX2c+KEdjezREMzJRX0E3
JjUlT3JLVVRTQDhFZTY7Vjl4fGQwSHNXJlZ+LSUwYXwrP0VfWgp6b20jS2l7XzBXLUxjbk1WKEtf
SytHeyg2MFR1b2JZVGdUajRaSD0pYUxZYWthQVU4XzBwQWhjYnFwOE9KRCNGKUIKeko+diQlbjU2
UCN0VnJYMiVaUUVWbzF6LShgJHheJHIjSzRvczF5fDM2TFRnaHklc01sPDAoOTN4JnxrR0kxKFNz
Cnp4ZDl+SER2b1R7QDtZPUxaTC1Be04ybj5zWShHNF4qaj1gJitpQWJGX2s4ZWlsZGg+I3RjNVpC
TndwVGAhK0pyQQp6UTJqSSMtPHkmZSsreFheIX1nKGFmPElYVlYoQ1k5Jkx3Kmd1fkp0Z0NITm5v
TDQ0aGR3TEh0RkhzVno4OztfK0QKenN1bWQtcn0oKn5AZC1SRWVQejVMbXVeZkk7a2tRYT5nQnE1
Wkl3VEByVXMzQ0ZGant9aHhLVUdabmp2eTtPU2xxCnpJc18jKXZDSys1Xk42IWllXnBtbHtXIS07
RCh0bzZuPWw+MlQmJj07KihJTnV4SnxEM3lfTDBpWjgrcHFyV3laaQp6NGIjZDhVQ1I9Pj15MExs
ISVyOzhMYVMrSGF2fVJBPU9pRypiWiFvb0x1WT9UdzZKIVYjOVEwQSpYR0FXbyQoUHEKeiR+YnRt
SzUjNEsjRVNOJmBEZHdqKD4pITtBayR3JFByR1V1QnNzbGFZJHRPVCtYX0s7UCRJbVdPezc4U1M+
RVltCnpZbDZCLT1yMT9eZ2h5SUZranhHRGFmPUp7RVNDSzNXWWtQdiVpPWp2UjchcU5ufWY4YWhU
YCN0ZmspZWtYV3kwPwp6Kkd6UW88bjxBNkNNMyMwYCRJPUo1aVlrc3JBUjtjXmRicFg+bzBRVW1w
dGRMJT8wXygkNzEmNFN8MnJ1bTI/eiMKei1OTm1KKEQmMjVVTl4rOXI8MVp8PGNGPj1sfnYlaW9Z
WX1AJTZGeHRxQkotfHB0XlE8NkJIXzYmfVoxTkQ9MG57CnpMTlleOGJgUSowSTNac3pIZl97VE95
OWZFKkZDaTMpZ2ZjYD5gSSVNJiNRaSs+V3thbnpnRj5gKEhuWU0kdj9tMQp6OT1ze2l0eyRIO1Q8
dytNPFVzVjQmPmVxZXJhIV5pODhtcnUzfkd7cCt5WGdnWWg0cVFvfHVQVDdLVUJ1VkQye18KenNo
MHtncHJuK3U7Tk1INSN9clJ6OTV6YktPcVAhTT5kbytPRVYwT2VwbVNfRWJIenslVFcwb1U4Q1Rq
fG52MG1pCnpBTEMqdDt3el8wKF5lJjcyLV4yYHNJT0ZqPzYmOEh4LU5ISUQrPiFXN3FVeyVScWU0
WmNyalYhVTQ7ZXxHPEsrOwp6aCVfMXZoPGxAWXVXa3BMMm1nYSFHZTVhVHJUWCFHPVc1b2ZXWmQx
SEVhWXN8TnJxKz9PV310UypfVGN5d2NYPW0Kemt8ak55VUYpUSVoNERnbiNAQmJuV3xtJEUqJG9f
fV5mNWhidGtEYDxyPHhnJFJaRlMpQiZQN0QqWGZzYmNMZih5CnpjIzVsN3tfcVJqZDQ8KDVMb3pq
dHVjanJGbnMkeGZZdkBAYE5WcV5rWW40Y3lGSzZOJiRPakxrMHZtNGM5JGdlPAp6RH5nNShVdFNi
bns9RDw2aWtzRS1uNmF6d3RSJkJBND14bUFeSV8mNHR7d2E0S0Y9XllHUCZse2Z7X1BERHJAb0EK
eihMYylVXi1sXy0oZWRLWFUkPigjTUhqTypGbTZNVWMkPStAdzxCc3R5SE5BbTxJTUdBbH1JXkMy
SUFWbnQtYzRNCno+K3RARXYjfEtpbSY8b2BQZUVlMGkmMzRFYGI5UVNqQEtoZnhlYSNpUzlZWnUh
VkZ6R3FNUn5pV1FaezxxayQ/Ygp6dkxFRjYmTShiPTdLeGl2YlZVYUNNbUFiM1RhWVB3cCY8fDZf
S1AxdTYlOWBlb1lOVVh1RkNCKTJiXyNMTTBnb0oKekZkMjhaR0g9TVQ0WDVGRUVoWHtjQDc8enMl
e281aypBXlNyaFZVRVFSazgoPXEzc0BNRzBCaWN2cWcmQjs5XzkyCnpmaXxwTHh6KCh4UiRGZnVy
JnNnUT56czk2YCR4SntCcDkwfUtQbyVsUWxJc1d3YTlOa3shckRNKXNmQFRJKVQwSgp6SHRLTyVp
MXU1elEqTyteM21UcClFKTtEMiNYaCg9eVJZfURAYTZWUXBVd2RBeztgNl47WEpeNWhZUXhqMFJ6
VUwKempBMCYzQm1nPnFfV1pFX048akt3eCN8eil8M21jUEg7KXREdGVuQjM4UFIkRm4rIWgqfExH
PzI2WmFpYnNvJnJ+CnpzX3p2NVBeSUMzWnc+Jld3aXFHLSU9bTN4MnQrV19qUH0rKy1+SVJMcU9s
bDlFMDdieVYqZFRfKGpaTF83JkwkWgp6MEhobytFXmhrPlRzI354O1FqMX04Rzw9WitzWU49Vm9U
R3xEUHRYNz9MZmZvZiElTlZeSHhQTTJRX3wtbj1NVTQKekdnX1VeLU9XWWw4e1E9bHR6QUh6TkZX
bWFJU2BzQSVtYV45MDMqJFE/cz5vamZXTkt7TFltWDtlLSNKKGtDa1ZDCnpuQXskQzh9KXJMJU49
QHBydXtPRG91alNHS0Y0aU1iVVBSeDxRQFJmOH59SS0jUW5rMkZpaXdIYyY2Wj4hVHM5TQp6MEJH
TyU/fnhtPGNee014UyQ/YTdvREpAUCt0LX4ydjkmdmZYYSZYX1NsaihiRTEmcHpffjMhTFM+ZkB0
YEZ1QWkKaiRBYzNWJU9UPXU0RiRsOUdwen0yNlRsQGE0Pzd3OEdqaXhOQz94VzQ3Tz0yTwoKbGl0
ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3ZpZGVvLXJvdGF0aW9uLTkwLnZwOS5tcDQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMv
dmlkZW8tcm90YXRpb24tOTAudnA5Lm1wNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTY2MDgzZWM0ZGQwYzIyNzAw
ZDc3MTNkNzIzZTU0MjRjMDBjZTQzCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyOTUwCnpjbVp1
emN8NFRzN2t8ZSgkKEMlMTVKZyN7JGVNbDBuI2tfRCY4bGdQV29FSygqOWIrb1Aranx5RWsjST9Z
XjlKagp6Sks8NnhXZTdMQkc0Sm1reTA/RCFfZEIyV0ptLTc5PVJEX20tZ0V3VzAwMG9oa15fQmtC
eVIhJEZhWm47PX1DZioKemlaVEVJYTRacG5mZWVYJk12eD1UQzxZU2ppfG5nX3kwb1k7MEkmZXpZ
VTVjRz1mOWw2IzshIyt4cWxQU3klNk4+Cno3dyY9bUpmMWV6RGUkRmtwVm9NPW5vZztNP2VAeFp3
WXRnbyFCbGJ4cnMlbUMrcDxrQ2w+YDdHYnEoTmJhVSUpQAp6eSZoOVFhSjhDYFN6JnUqLXZxZXk9
OXhmNlclNFFUUV4ob1NYc05ZK15SJEVEK19HeW5hLWhGWiVseG4jcz0xazQKek92UWQ9ckohYjN6
MXtWdEhsQVBfcjQjcmVDJEwkNnFIfm5AJlReUE14UkxlaHdka2RlJHJ9e2N5JkpXU2NKJFd1Cno2
PF9+XzMpTGolZHM7b042Q3FoSGhXR2FDbD1MdXBUPGR9SHh7VjlLU3x2KDB3ITBzNWlwIXlUZEY9
MFNwMVM3dAp6NEU3ZEcqV1QydUY4UmdmMio8SkxuTEAkcGNmM0opJi1VMT96blZgXzhJfXlmWFUl
Q3Y9dlN4OzFTbnZ4eUl4R0oKenZGZk9OeHRpfFAtNlc4fGBudD9TXkB3ZDUrRmV6LXokdypBJVl6
UmNZUCNDZXkwKlAjQHEzTnM+YT5NUlM0TjViCnpYRUhgOzMwQU51U0hePmBub0l3eXMkIzl3Mn1a
QlhqeUFJRHB6SnAmM3pTfSZ5KUMxcHdxaDUpJlhNMVBIKXR+Pwp6K3EpVTx5PzglVnpGUVA1V3NT
MUA+aSQ+V0pMV3gte3FOUnBQZz17SERhZW5PIWd2I1Zad21UQGlhR21ES253U30KellSN3x6LVJ5
S2Upcz5XUDRXRF4mcFZMXzZXemx1Ynlgezc+LUwkOGglYDtxY0BhTjs5ZUQxMkBoMXRUQkV4bFlh
CnpyfTE9bXJhKFImfDEjRWVSUHViUjhTXm19Y2kjQ2x6az1JeWlYZlFPJFd9QUpWZypoZiE8T0xR
YDFkPENgR2ZQfAp6OTV8RSkyLUArfGw2eVpGVjZsZVktR1diTHQrXngkTnZ9Tz4tQlJ2bD0lMXJj
YFMoVEM+WF8zNXUqZXtrWUp+N3gKeiskWU0xPEt8I2olP0lNSVkqd2xZKFRDYXU8bGdxT2VIODVF
Iyh4fm48ZkJSKmZCZU9xUiRYe3dtU1ozc3N9IVk9CnplNVVFcmRDS2dhOVkpc0I7VT43Ym4hZmp1
YkI8VHc2UC1ibkAwfXQmMUhvSG9PVHhyN21lfEJRVCpsNUdCJTM7JAp6SGF2UFNGVypQKWtsY3Yo
Y0Bvcnh3dFUqZkJTUEtjN1M9Wi1BJS1keVZ2XiFSSnYoamZLeF80UWJNX0BpTT1FSW4KejFRV2F4
TWZ8RihRc05APDhDJk4lYlhIdUs9UT0weUtkPnc+O19YcWEqTmE5dks3TkM5WUgpNDVRO0Jud01W
Zl9jCnp4SUNQMWlMMjViLXZZTkF0YVNxVngyLThXRnVnQGJIQmR3KEghe0gmZERqRzkrR3NsTUFE
TWtYczt8LTNEeEBOXwp6cjw3LWB3V1ErUVUqUWtaTS18eTt2VT0mcGdnXihIUGhsbjd7ZzV3cmZA
c2RiNXc3WkBUMjNBMCVpc1opR000NnkKej1Ubyg/Jjd0V3NfNEctJj81X3hrSXc2YHxPTEZ+Q3te
V2JIZThXYDFlMzF2Zm0oXnNXdWppJSk1a0oqZXpweiZ0CnphVzt4cHdvP3o5ZDdwM2EzO2xqTHhC
QiRNKzUrYGwwVW9NdyF6KkB2MVUlNnpQJVNpa3BrR3s5aDkzMXd2RGU5awp6dTw1QyZvNCh5JHpL
bWhkVU1oZHNwaSF5YjghVjBMX2lsZWheenNyNDZBNlUqO0g1YlpiPFdieCUycng5K0tuM0UKeml8
WD1xYF5KazBNQ1l+MT9MIVVsaFg+eGtnSzQ5T3lodElRZmd7VzhwO05XdCl7bSowN0NFNnMjd2k3
SlhrOXFHCnpjJihtcGRgNkB8WGpGcWhGWntNYHIkdnBZbHJRTGxRe3tFciZCbSgycTtvVE5OU2xq
Y01yQiY+S2NpR0tab1Flewp6WDQ/V1hfcnkmfiE8LWN8K2YxfkdiP3B1Mj18Yy1MelUjMiFCVHRQ
OShZN3xvTVUtS0wpcigpYU5qWFAzPmk1UjwKenJXejt+R2pyK012dm5iamlZP1o9enZ8UTNfWm5f
YGxrUDt7PD0zVnVaIzVRKVd2OWVsK25sJSlaRlkpY2NJa0BRCnpkYGNwKkRXSiMkVCNBb2ZMTE89
SjRZZUBAXilafXEkQVBZUEp0eT8+UkQrbUNwTWF5Yz1DLWQ0OGlnZUIoYWE7Uwp6LWM3SiFaY35p
WGJmZWEtKms2YFdaTCk5YDQ3KXRJQDFSKl5PbCtFVmooTFczKG17bVpPYDFYd1VmMWN3XmtGJk8K
ejtTOUhpTyhfcztTY2ZtQXR7QzBAYkVOKCo7PXs9ZW5wRD1IdiNqeV9yRnNkV3JzZUI4NGU9JjdK
ZVp3QmRDWjVrCnptY2EpYit9WEJiK0hUOTQ5JCZGKS00d3czOytgPiU4VCZ2fT9rOW1DZ0FIbz0p
eSE4fCZUX3N1eTFFKTdvPGxhZwp6UEd6RWF3dHRpMHlZMEJ4RH5fazNzeHRUdFZzSV9wa14hSHpR
KFApV3dhbWlTWCt6UWFhZV85PmlNb1JFc05+O3sKei1wO3xDV0RDcFNHcVAoJCF9NlYzQ3RSYypX
PHdLRkZodDY0MGwpUjsoKHUkcl5nKXdQaW5Sd2o0OTgteUtJM1otCnpnR0xqMD1JQ1lGQmVEQFVm
VztGJmlQKFVadCt0TWVzb3NySHZPfFRuclBOZmtLQ0ByTGZuYyolQTkhP3shVSQ/Qwp6Ujs9ZmQ1
TG1peEx7Pnk5emw/ZCglNjh+UCMpO2g0S1M2TkhRZj1QdHByenBucXY9Q0pDbzRYfFNSSzZaK2tg
WGEKelRvcnYzRWxjV35UVjU/Wjd2S2BWa0w1V2V3QH03IzdoMHBRYVh0TFgtNSlPMWVreW9XV3Ng
TkVmYTI7R2I+RW9iCnpKMkVrJTdyIzlUMHhtViErWVQjNG50ZSZVNiZaRGFwM3ZqYjNOSSZLOVVe
dk9rN2Y+dG07V2dARXVhQHZSdk1vcwp6ZXJ6ekpeX3N5Xi0kcVpicVBtKjA7SXtLSmY9KVFMajJj
UDZfeHV+d1dhUEhSKT8pRntLITc3dHM9fjZyPmFhRS0KenkkQWk3cHV5VFBjUVArMEhYUGxoU0xk
SV9uJVJmIVMlV2BJZVNyQXY1bl9+KFpJYTVPZDlffEVXaFQ0KHJZVjJyCnpiSng3bl5zSjxOJlh4
V2o0bUByKzRhLX5tVzhgdUtYVjJFQz1AfHsoa0xgbmBnJVhALWcmSU93QDNjXlZsUG1TPQp6Z1ct
X2VBKzlUZnpIeFBZN2QyTkxHXzw4TSpCd1NOaGR8PCEpPk9efkNCY0Q3PDJeSWppWnNxRjw9OEV3
KktsVjgKemclRGUqI0ooZ2NwRFYqQm5GNis2WUtBPVJqZTY/ZDB4TzgwaylqSHxQNGBaZXZ0MzxW
OGNIbF9DYWQwJD41YDNSCno0JldEQSRNcWZHKk40a055ZkZIR3pndT5oR2pBOHV1TzMmfHQ4IWlv
UnE8WGVpYkk0STxVTzdYbH0kRjctTjVCaQp6STlqO317KXBHejtgKzk1RENfeCEweWc+RUd4ZStK
eVktYlVVeT9RdF5VcH0wJipoenNnPGMqXjNqfVgoS0x+Z2QKens0U3YoYDsjeiNoOCRTezF+OSVL
QD9RPV98STYzPWtAXjErNkxqVlFHNyo3P2ZeS0J8Jlk4P1ZDSGBHYV85eU5LCnp7Mm0zdEFKcEdT
ant6ZFNEKiNBaSZ9OFc4MUJoWmdObzI/fWd0Mj9LP29KKDgwcylPZkslNHt0e3FLSzIzREhifAp6
e2NGZW9mV2pyVEN2Z1dzaXlzYVJKPUsxUTFMUyszTVI9aC1GXm45VEhVWn5fZyNmPUZWVztUI0VB
TVFPTShAVCUKeihMQFgqaGFycU89TXwhLSNDSj8xayYmSmRQOX44X2UtRElfNllKLXJxeWJybXs5
SlJGaUdZNm5FQ2Q8S2twSW90Cno8JHRXZ0o1QSpHXkZiTnpCeSZWRUZ8cUUxSWp9ZzQ9TUtrQEJv
bFg9JENpYH5GY2JpVU4jdmN6R0V4fnlrVX0kcwp6OFYlaFMjUT4wZT1sYCslUCVMT1MxWk5ETTVy
O1VHX2Ije04lUj9BPjF4LWRrKWBmdUN2NWNfZiYmYEpoTW53NGQKcEYjN1k0REJ5TXtlNThvJSVf
dH1heWBkUko3PjU5czJ0VFo8eH11dGpxT3l8R2UqZ2ladGx0MHQKCmxpdGVyYWwgMApIY21WP2Qw
MDAwMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>