<?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>84038</bug_id>
          
          <creation_ts>2012-04-16 09:19:54 -0700</creation_ts>
          <short_desc>Web Inspector: rename heap profiler files and classes DetailedHeapshot* -&gt;HeapSnapshot*</short_desc>
          <delta_ts>2012-04-16 10:23:43 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>603196</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-16 09:19:54 -0700</bug_when>
    <thetext>Web Inspector: rename heap profiler files and classes DetailedHeapshot* -&gt;HeapSnapshot*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603224</commentid>
    <comment_count>1</comment_count>
      <attachid>137355</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-16 09:48:35 -0700</bug_when>
    <thetext>Created attachment 137355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603258</commentid>
    <comment_count>2</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-16 10:23:43 -0700</bug_when>
    <thetext>Committed r114271: &lt;http://trac.webkit.org/changeset/114271&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137355</attachid>
            <date>2012-04-16 09:48:35 -0700</date>
            <delta_ts>2012-04-16 09:55:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84038-20120416204832.patch</filename>
            <type>text/plain</type>
            <size>423299</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM3MjE3NWFmZGEyMzkx
ZDIwMTcyMGI5ZGEzMDU4NDllMjMwNjQyOC4uMmM5M2ZlZTVhMWM5ZTJhYjE5ZjMzNWUxMGFmMDg1
N2NhN2UyYTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2MSBAQAorMjAxMi0wNC0xNiAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiByZW5hbWUgaGVhcCBwcm9maWxlciBmaWxlcyBhbmQgY2xhc3NlcyBEZXRhaWxlZEhlYXBz
aG90KiAtPkhlYXBTbmFwc2hvdCoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg0MDM4CisKKyAgICAgICAgQSBidW5jaCBvZiByZW5hbWVzICJkZXRhaWxl
ZCBoZWFwc2hvdCIgLT4gImhlYXAgc25hcHNob3QiLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1z
bmFwc2hvdC1jb21wYXJpc29uLWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwK
KyAgICAgICAgICAgICAgIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlz
b24tc2hvdy1hbGwuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAt
c25hcHNob3QtY29tcGFyaXNvbi1zaG93LW5leHQuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVj
dG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1zaG93bi1ub2RlLWNvdW50LXBy
ZXNlcnZlZC13aGVuLXNvcnRpbmcuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL3Byb2Zp
bGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1zb3J0aW5nLmh0bWwKKyAgICAgICAgICAgICAg
IGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbnRhaW5tZW50LWV4cGFuc2lvbi1w
cmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9wcm9m
aWxlci9oZWFwLXNuYXBzaG90LWNvbnRhaW5tZW50LXNob3ctYWxsLmh0bWwKKyAgICAgICAgICAg
ICAgIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbnRhaW5tZW50LXNob3ctbmV4
dC5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1j
b250YWlubWVudC1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRpbmcuaHRtbAor
ICAgICAgICAgICAgICAgaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29udGFpbm1l
bnQtc29ydGluZy5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1z
bmFwc2hvdC1kb21pbmF0b3JzLWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwK
KyAgICAgICAgICAgICAgIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWRvbWluYXRv
cnMtc2hvdy1hbGwuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAt
c25hcHNob3QtZG9taW5hdG9ycy1zaG93LW5leHQuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVj
dG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZG9taW5hdG9ycy1zaG93bi1ub2RlLWNvdW50LXBy
ZXNlcnZlZC13aGVuLXNvcnRpbmcuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL3Byb2Zp
bGVyL2hlYXAtc25hcHNob3QtZG9taW5hdG9ycy1zb3J0aW5nLmh0bWwKKyAgICAgICAgICAgICAg
IGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXN1bW1hcnktZXhwYW5zaW9uLXByZXNl
cnZlZC13aGVuLXNvcnRpbmcuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL3Byb2ZpbGVy
L2hlYXAtc25hcHNob3Qtc3VtbWFyeS1zaG93LWFsbC5odG1sCisgICAgICAgICAgICAgICBpbnNw
ZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNob3ctbmV4dC5odG1sCisgICAg
ICAgICAgICAgICBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNob3du
LW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sCisgICAgICAgICAgICAgICBp
bnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNvcnRpbmcuaHRtbAorCisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdEdyaWROb2Rlcy5qczogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hv
dEdyaWROb2Rlcy5qcy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9k
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUucHJvdG90eXBl
LmVuc3VyZUNvbnRlbnRDcmVhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RHcmlkTm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90R3JpZE5vZGUucHJvdG90eXBlLmRpc3Bvc2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5oYXNIb3Zlck1lc3NhZ2UuZmFs
c2UucXVlcnlPYmplY3RDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RHcmlkTm9kZS5wcm90b3R5cGUuX3RvUGVyY2VudFN0cmluZyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUucHJvdG90eXBlLl9jcmVhdGVWYWx1ZUNlbGwpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5fcG9w
dWxhdGUuc29ydGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9k
ZS5wcm90b3R5cGUuX3BvcHVsYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RHcmlkTm9kZS5wcm90b3R5cGUucG9wdWxhdGVDaGlsZHJlbi5jYWxsU2VyaWFsaXplKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUucG9wdWxh
dGVDaGlsZHJlbi5jaGlsZHJlblJldHJpZXZlZC5ub3RpZnkpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuLmNoaWxk
cmVuUmV0cmlldmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9k
ZS5wcm90b3R5cGUucG9wdWxhdGVDaGlsZHJlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90R3JpZE5vZGUucHJvdG90eXBlLl9zYXZlQ2hpbGRyZW4pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5zb3J0LmFmdGVyU29ydC5h
ZnRlclBvcHVsYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9k
ZS5wcm90b3R5cGUuc29ydC5hZnRlclNvcnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5zb3J0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RMYXp5R3JpZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdExhenlHcmlkTm9kZS5wcm90b3R5cGUuZW5zdXJlQ29udGVudENyZWF0ZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExhenlHcmlkTm9kZS5wcm90b3R5cGUuY3JlYXRl
Q2VsbHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3RO
b2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9k
ZS5wcm90b3R5cGUuY3JlYXRlQ2VsbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90R2VuZXJpY09iamVjdE5vZGUucHJvdG90eXBlLl9jcmVhdGVPYmplY3RDZWxsKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5wcm90b3R5cGUu
Z2V0IGRhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmpl
Y3ROb2RlLnByb3RvdHlwZS5xdWVyeU9iamVjdENvbnRlbnQuZWxzZS5mb3JtYXRSZXN1bHQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLnByb3Rv
dHlwZS5xdWVyeU9iamVjdENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdEdlbmVyaWNPYmplY3ROb2RlLnByb3RvdHlwZS5nZXQgX3JldGFpbmVkU2l6ZVBlcmNlbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLnBy
b3RvdHlwZS5nZXQgX3NoYWxsb3dTaXplUGVyY2VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90R2VuZXJpY09iamVjdE5vZGUucHJvdG90eXBlLnVwZGF0ZUhhc0NoaWxkcmVu
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5w
cm90b3R5cGUuaXNXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdl
bmVyaWNPYmplY3ROb2RlLnByb3RvdHlwZS5zaG9ydGVuV2luZG93VVJMKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RPYmplY3ROb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RPYmplY3ROb2RlLnByb3RvdHlwZS51cGRhdGVIYXNDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZS5wcm90b3R5cGUuX2Ny
ZWF0ZUNoaWxkTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0
Tm9kZS5wcm90b3R5cGUuX2NoaWxkSGFzaEZvckVudGl0eSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZS5wcm90b3R5cGUuX2NoaWxkSGFzaEZvck5vZGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUucHJvdG90eXBlLmNv
bXBhcmF0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUu
cHJvdG90eXBlLl9lbXB0eURhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dE9iamVjdE5vZGUucHJvdG90eXBlLl9lbmhhbmNlRGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZS5wcm90b3R5cGUuX3ByZWZpeE9iamVjdENlbGwpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEluc3RhbmNlTm9kZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlLnByb3RvdHlwZS5fY3JlYXRl
Q2hpbGROb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJbnN0YW5jZU5v
ZGUucHJvdG90eXBlLl9jaGlsZEhhc2hGb3JFbnRpdHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdEluc3RhbmNlTm9kZS5wcm90b3R5cGUuX2NoaWxkSGFzaEZvck5vZGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEluc3RhbmNlTm9kZS5wcm90b3R5cGUu
Y29tcGFyYXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VO
b2RlLnByb3RvdHlwZS5fZW1wdHlEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RJbnN0YW5jZU5vZGUucHJvdG90eXBlLl9lbmhhbmNlRGF0YSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlLnByb3RvdHlwZS5nZXQgaXNEZWxldGVk
Tm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2Rl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rvck5vZGUucHJv
dG90eXBlLmNyZWF0ZUNlbGwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENv
bnN0cnVjdG9yTm9kZS5wcm90b3R5cGUuX2NyZWF0ZUNoaWxkTm9kZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlLnByb3RvdHlwZS5fY3JlYXRlTm9k
ZXNQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0
b3JOb2RlLnByb3RvdHlwZS5jb21wYXJhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RDb25zdHJ1Y3Rvck5vZGUucHJvdG90eXBlLl9jaGlsZEhhc2hGb3JFbnRpdHkpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yTm9kZS5wcm90b3R5
cGUuX2NoaWxkSGFzaEZvck5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dENvbnN0cnVjdG9yTm9kZS5wcm90b3R5cGUuZ2V0IGRhdGEpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yTm9kZS5wcm90b3R5cGUuZ2V0IF9jb3VudFBlcmNl
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yTm9kZS5w
cm90b3R5cGUuZ2V0IF9yZXRhaW5lZFNpemVQZXJjZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rvck5vZGUucHJvdG90eXBlLmdldCBfc2hhbGxvd1NpemVQ
ZXJjZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJdGVyYXRvcnNUdXBs
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SXRlcmF0b3JzVHVwbGUucHJv
dG90eXBlLmRpc3Bvc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEl0ZXJh
dG9yc1R1cGxlLnByb3RvdHlwZS5zb3J0QW5kUmV3aW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3REaWZmTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90RGlmZk5vZGUucHJvdG90eXBlLmNhbGN1bGF0ZURpZmYuZGlmZkNhbGN1bGF0ZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlLnByb3RvdHlwZS5jYWxjdWxh
dGVEaWZmKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90
b3R5cGUuY2FsY3VsYXRlRGlmZi5iYXNlSWRzUmVjZWl2ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlLnByb3RvdHlwZS5jYWxjdWxhdGVEaWZmLmlkc1JlY2Vp
dmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90b3R5
cGUuX2NyZWF0ZUNoaWxkTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
RGlmZk5vZGUucHJvdG90eXBlLl9jcmVhdGVOb2Rlc1Byb3ZpZGVyLmNyZWF0ZVByb3ZpZGVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90b3R5cGUuX2Ny
ZWF0ZU5vZGVzUHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERp
ZmZOb2RlLnByb3RvdHlwZS5fY2hpbGRIYXNoRm9yRW50aXR5KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90b3R5cGUuX2NoaWxkSGFzaEZvck5vZGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlLnByb3RvdHlwZS5jb21w
YXJhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90
b3R5cGUucG9wdWxhdGVDaGlsZHJlbi5maXJzdFByb3ZpZGVyUG9wdWxhdGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90b3R5cGUucG9wdWxhdGVDaGls
ZHJlbi5lbHNlLmZpcnN0UHJvdmlkZXJQb3B1bGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdERpZmZOb2RlLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90b3R5cGUuX3NpZ25Gb3JE
ZWx0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUucHJvdG90
eXBlLmdldCBkYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0
b3JPYmplY3ROb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0
b3JPYmplY3ROb2RlLnByb3RvdHlwZS5fY3JlYXRlQ2hpbGROb2RlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JPYmplY3ROb2RlLnByb3RvdHlwZS5fY3JlYXRl
UHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvck9i
amVjdE5vZGUucHJvdG90eXBlLl9jaGlsZEhhc2hGb3JFbnRpdHkpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvck9iamVjdE5vZGUucHJvdG90eXBlLl9jaGlsZEhh
c2hGb3JOb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JP
YmplY3ROb2RlLnByb3RvdHlwZS5jb21wYXJhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3REb21pbmF0b3JPYmplY3ROb2RlLnByb3RvdHlwZS5fZW1wdHlEYXRhKToKKyAg
ICAgICAgKE1peEluU25hcHNob3ROb2RlRnVuY3Rpb25zKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanM6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzLgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlLmRpc3Bvc2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJv
dG90eXBlLnJlc2V0U29ydGluZ0NhY2hlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3RvdHlwZS5zb3J0aW5nQ2hhbmdlZC5Tb3J0QnlUd29G
aWVsZHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdy
aWQucHJvdG90eXBlLnNvcnRpbmdDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3RvdHlwZS51cGRhdGVWaXNpYmxlTm9kZXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJvdG90
eXBlLm9uUmVzaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJs
ZURhdGFHcmlkLnByb3RvdHlwZS5fb25TY3JvbGwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlLl9wZXJmb3JtU29ydGluZyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3JpZC5wcm90b3R5
cGUucmVjdXJzaXZlU29ydGluZ0VudGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3RvdHlwZS5yZWN1cnNpdmVTb3J0aW5nTGVhdmUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnRhaW5tZW50RGF0YUdyaWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnRhaW5tZW50RGF0YUdyaWQucHJv
dG90eXBlLl9kZWZhdWx0UG9wdWxhdGVDb3VudC4xMDAuZXhwYW5kUm91dGUubmV4dFN0ZXAuZWxz
ZS5hZnRlckV4cGFuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFp
bm1lbnREYXRhR3JpZC5wcm90b3R5cGUuX2RlZmF1bHRQb3B1bGF0ZUNvdW50LjEwMC5leHBhbmRS
b3V0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFpbm1lbnREYXRh
R3JpZC5wcm90b3R5cGUuc2V0RGF0YVNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90Q29udGFpbm1lbnREYXRhR3JpZC5wcm90b3R5cGUuc29ydGluZ0NoYW5nZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbm1lbnREYXRhR3JpZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWlubWVudERhdGFHcmlkLnByb3Rv
dHlwZS5fc29ydEZpZWxkcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0
YWlubWVudERhdGFHcmlkLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90Q29uc3RydWN0b3JzRGF0YUdyaWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yc0RhdGFHcmlkLnByb3RvdHlwZS5fZGVmYXVsdFBvcHVs
YXRlQ291bnQuMTAwLl9zb3J0RmllbGRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RDb25zdHJ1Y3RvcnNEYXRhR3JpZC5wcm90b3R5cGUuc2V0RGF0YVNvdXJjZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JzRGF0YUdyaWQucHJvdG90
eXBlLnBvcHVsYXRlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dENvbnN0cnVjdG9yc0RhdGFHcmlkLnByb3RvdHlwZS5fZmlsdGVyU2VsZWN0SW5kZXhDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZEYXRhR3JpZC5wcm90b3R5cGUuX2Rl
ZmF1bHRQb3B1bGF0ZUNvdW50LjUwLl9zb3J0RmllbGRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQucHJvdG90eXBlLnNldERhdGFTb3VyY2UpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZEYXRhR3JpZC5wcm90b3R5cGUuX2Jh
c2VQcm9maWxlSW5kZXhDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3REaWZmRGF0YUdyaWQucHJvdG90eXBlLnNldEJhc2VEYXRhU291cmNlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQucHJvdG90eXBlLnBvcHVsYXRlQ2hp
bGRyZW4uYmFzZUFnZ3JlZ2F0ZXNSZWNlaXZlZC5hZ2dyZWdhdGVzUmVjZWl2ZWQuYWRkTm9kZUlm
Tm9uWmVyb0RpZmYpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZEYXRh
R3JpZC5wcm90b3R5cGUucG9wdWxhdGVDaGlsZHJlbi5iYXNlQWdncmVnYXRlc1JlY2VpdmVkLmFn
Z3JlZ2F0ZXNSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlm
ZkRhdGFHcmlkLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JzRGF0YUdyaWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdERvbWluYXRvcnNEYXRhR3JpZC5wcm90b3R5cGUuX2RlZmF1bHRQb3B1
bGF0ZUNvdW50LjI1LnNldERhdGFTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdERvbWluYXRvcnNEYXRhR3JpZC5wcm90b3R5cGUuc29ydGluZ0NoYW5nZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvZmlsZUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZS5kaXNwb3NlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZS5nZXQgc3RhdHVzQmFySXRlbXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlLmdldCBwcm9m
aWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZS5n
ZXQgcHJvZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZp
ZXcucHJvdG90eXBlLmdldCBiYXNlUHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90Vmlldy5wcm90b3R5cGUuZ2V0IGJhc2VQcm9maWxlV3JhcHBlcik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUud2FzU2hvd24ucHJvZmls
ZUNhbGxiYWNrMSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90
b3R5cGUud2FzU2hvd24ucHJvZmlsZUNhbGxiYWNrMik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUud2FzU2hvd24pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlLndpbGxIaWRlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZS5vblJlc2l6ZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUuc2VhcmNoQ2FuY2VsZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlLnBlcmZvcm1T
ZWFyY2gubWF0Y2hlc0J5TmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Vmlldy5wcm90b3R5cGUucGVyZm9ybVNlYXJjaC5tYXRjaGVzQnlJZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUucGVyZm9ybVNlYXJjaC5tYXRjaGVz
UXVlcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBl
LnBlcmZvcm1TZWFyY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcu
cHJvdG90eXBlLmp1bXBUb0ZpcnN0U2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZS5qdW1wVG9MYXN0U2VhcmNoUmVzdWx0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZS5qdW1wVG9OZXh0
U2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnBy
b3RvdHlwZS5qdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUuc2hvd2luZ0ZpcnN0U2VhcmNoUmVzdWx0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZS5zaG93aW5n
TGFzdFNlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Vmll
dy5wcm90b3R5cGUuX2p1bXBUb1NlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUucmVmcmVzaFZpc2libGVEYXRhKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZS5fY2hhbmdlQmFzZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUuX2NoYW5nZUZp
bHRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUu
X2NyZWF0ZVRvb2xiYXJXaXRoQ2xhc3NOYW1lRmlsdGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZS5fY2hhbmdlTmFtZUZpbHRlcik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUuX3Byb2ZpbGVzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZS5fbG9hZFByb2Zp
bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlLl9s
b2FkUHJvZmlsZUJ5SW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZp
ZXcucHJvdG90eXBlLmlzRGV0YWlsZWRTbmFwc2hvdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUucHJvY2Vzc0xvYWRlZFNuYXBzaG90KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZS5fc2VsZWN0aW9uQ2hh
bmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUu
X2luc3BlY3RlZE9iamVjdENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFZpZXcucHJvdG90eXBlLl9zZXRSZXRhaW5tZW50RGF0YUdyaWRTb3VyY2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlLl9tb3VzZURvd25JbkNv
bnRlbnRzR3JpZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90
b3R5cGUuY2hhbmdlVmlldy5zb3J0aW5nQ29tcGxldGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlLmNoYW5nZVZpZXcpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlLl9jaGFuZ2VWaWV3KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZS5fZ2V0SG92ZXJBbmNob3Ip
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlLl9yZXNv
bHZlT2JqZWN0Rm9yUG9wb3Zlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Vmlldy5wcm90b3R5cGUuX2hlbHBDbGlja2VkLmFwcGVuZEhlbHApOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlLl9oZWxwQ2xpY2tlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUuX3N0YXJ0UmV0YWluZXJz
SGVhZGVyRHJhZ2dpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcu
cHJvdG90eXBlLl9yZXRhaW5lcnNIZWFkZXJEcmFnZ2luZyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUuX2VuZFJldGFpbmVyc0hlYWRlckRyYWdnaW5n
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZS5fdXBk
YXRlUmV0YWlubWVudFZpZXdIZWlnaHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFZpZXcucHJvdG90eXBlLl91cGRhdGVCYXNlT3B0aW9ucyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUuX3VwZGF0ZUZpbHRlck9wdGlvbnMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuZ2V0IGJ1dHRv
blRvb2x0aXApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBl
LnByb3RvdHlwZS5idXR0b25DbGlja2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuZ2V0IHRyZWVJdGVtVGl0bGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLnByb3RvdHlwZS5nZXQgZGVzY3Jp
cHRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLnBy
b3RvdHlwZS5jcmVhdGVTaWRlYmFyVHJlZUVsZW1lbnRGb3JQcm9maWxlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuY3JlYXRlVmlldyk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9hZGRIZWFwU25hcHNob3RD
aHVuayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUudGFr
ZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90
b3R5cGUuX3JlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9oZWFw
UHJvZmlsZXIuY3NzOgorICAgICAgICAoLmhlYXAtc25hcHNob3Qtdmlldyk6CisgICAgICAgICgu
aGVhcC1zbmFwc2hvdC12aWV3LnZpc2libGUpOgorICAgICAgICAoLmhlYXAtc25hcHNob3Qtdmll
dyAudmlldyk6CisgICAgICAgICguaGVhcC1zbmFwc2hvdC12aWV3IC52aWV3LnZpc2libGUpOgor
ICAgICAgICAoLmhlYXAtc25hcHNob3QtdmlldyAuZGF0YS1ncmlkIHRyOmVtcHR5KToKKyAgICAg
ICAgKC5oZWFwLXNuYXBzaG90LXZpZXcgLmRhdGEtZ3JpZCk6CisgICAgICAgICguaGVhcC1zbmFw
c2hvdC12aWV3IC5kYXRhLWdyaWQgdGQuY291bnQtY29sdW1uKToKKyAgICAgICAgKC5oZWFwLXNu
YXBzaG90LXZpZXcgLmRhdGEtZ3JpZCB0ZC5hZGRlZENvdW50LWNvbHVtbik6CisgICAgICAgICgu
aGVhcC1zbmFwc2hvdC12aWV3IC5kYXRhLWdyaWQgdGQucmVtb3ZlZENvdW50LWNvbHVtbik6Cisg
ICAgICAgICguaGVhcC1zbmFwc2hvdC12aWV3IC5kYXRhLWdyaWQgdGQuY291bnREZWx0YS1jb2x1
bW4pOgorICAgICAgICAoLmhlYXAtc25hcHNob3QtdmlldyAuZGF0YS1ncmlkIHRkLmFkZGVkU2l6
ZS1jb2x1bW4pOgorICAgICAgICAoLmhlYXAtc25hcHNob3QtdmlldyAuZGF0YS1ncmlkIHRkLnJl
bW92ZWRTaXplLWNvbHVtbik6CisgICAgICAgICguaGVhcC1zbmFwc2hvdC12aWV3IC5kYXRhLWdy
aWQgdGQuc2l6ZURlbHRhLWNvbHVtbik6CisgICAgICAgICguaGVhcC1zbmFwc2hvdC12aWV3IC5k
YXRhLWdyaWQgdGQuc2hhbGxvd1NpemUtY29sdW1uKToKKyAgICAgICAgKC5oZWFwLXNuYXBzaG90
LXZpZXcgLmRhdGEtZ3JpZCB0ZC5yZXRhaW5lZFNpemUtY29sdW1uKToKKyAgICAgICAgKC5oZWFw
LXNuYXBzaG90LXZpZXcgLmRhdGEtZ3JpZCB0ZC5kaXN0YW5jZVRvV2luZG93LWNvbHVtbik6Cisg
ICAgICAgICguaGVhcC1zbmFwc2hvdC12aWV3IC5kYXRhLWdyaWQgc3Bhbi5wZXJjZW50LWNvbHVt
bik6CisgICAgICAgICguaGVhcC1zbmFwc2hvdC12aWV3IC5jb25zb2xlLWZvcm1hdHRlZC1vYmpl
Y3QsIC5jb25zb2xlLWZvcm1hdHRlZC1ub2RlKToKKyAgICAgICAgKC5oZWFwLXNuYXBzaG90LXZp
ZXcgLmNvbnNvbGUtZm9ybWF0dGVkLXN0cmluZyk6CisgICAgICAgICguaGVhcC1zbmFwc2hvdC12
aWV3IC5jb25zb2xlLWZvcm1hdHRlZC1pZCk6CisgICAgICAgICguaGVhcC1zbmFwc2hvdC12aWV3
IC5kYXRhLWdyaWQgdHIuc2VsZWN0ZWQgKik6CisgICAgICAgICguaGVhcC1zbmFwc2hvdC12aWV3
IC5kYXRhLWdyaWQ6Zm9jdXMgdHIuc2VsZWN0ZWQgKik6CisgICAgICAgICguaGVhcC1zbmFwc2hv
dC12aWV3IC5kZWxpbWl0ZXIpOgorICAgICAgICAoLmhlYXAtc25hcHNob3QtdmlldyAudmlld3Mt
Y29udGFpbmVyKToKKyAgICAgICAgKC5oZWFwLXNuYXBzaG90LXZpZXcgLnZpZXdzLWNvbnRhaW5l
ciAudmlldyk6CisgICAgICAgICguaGVhcC1zbmFwc2hvdC12aWV3IC5yZXRhaW5pbmctcGF0aHMt
dmlldyk6CisgICAgICAgICguaGVhcC1zbmFwc2hvdC12aWV3IC5jbGFzcy12aWV3LWdyaWQpOgor
ICAgICAgICAoLmhlYXAtc25hcHNob3QtdmlldyAuY2xhc3Mtdmlldy10b29sYmFyKToKKyAgICAg
ICAgKC5oZWFwLXNuYXBzaG90LXZpZXcgLmNsYXNzLXZpZXctdG9vbGJhciBpbnB1dC5jbGFzcy1u
YW1lLWZpbHRlcik6CisgICAgICAgICguaGVhcC1zbmFwc2hvdC12aWV3IC5yZXRhaW5lcnMtdmll
dy1oZWFkZXIpOgorICAgICAgICAoLmhlYXAtc25hcHNob3QtdmlldyAucmV0YWluZXJzLXZpZXct
aGVhZGVyIC50aXRsZSA+IHNwYW4pOgorICAgICAgICAoLmhlYXAtc25hcHNob3QtdmlldyB0cjpu
b3QoLnNlbGVjdGVkKSB0ZC5vYmplY3QtY29sdW1uIHNwYW4uaGlnaGxpZ2h0KToKKyAgICAgICAg
KC5oZWFwLXNuYXBzaG90LXZpZXcgdGQub2JqZWN0LWNvbHVtbiBzcGFuLmdyYXllZCk6CisgICAg
ICAgICguaGVhcC1zbmFwc2hvdC1oZWxwLXN0YXR1cy1iYXItaXRlbSAuZ2x5cGgpOgorICAgICAg
ICAodGFibGUuaGVhcC1zbmFwc2hvdC1oZWxwKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sOgorCiAyMDEyLTA0LTE2ICBKYXNvbiBMaXUgIDxqYXNvbi5saXVA
dG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBNaXNzaW5nIHJlYWR5
U3RhdGUgMiB3aGVuIGEgWE1MSHR0cFJlcXVlc3QgY2FsbHMgeG1saHR0cC5vcGVuKCJIRUFEIiwi
bm90RXhpc3QuaHRtbCIsdHJ1ZSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMGQ2NzBhZGEyMjU0Y2U0
Y2E2MzU1MTM1MzZjMzY1YWYyMWU3MWMyYS4uNWQwNDk0YzEwOTVmYjZiMDczZThjY2U2NzNiZDZj
NmFhODQwYWUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjMwOSw4ICs2MzA5LDYgQEAKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcycsCi0gICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzJywKLSAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RpYWxvZy5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9ET01CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzJywKQEAgLTYzMzUsNyAr
NjMzMyw5IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IQVJFbnRyeS5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IYW5kbGVyUmVnaXN0cnkuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzJywKKyAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdEdyaWROb2Rlcy5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcycsCisg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFdvcmtlci5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RXb3JrZXJEaXNwYXRj
aGVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hlbHBTY3JlZW4uanMn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA4
OGUwZDVlNDk5M2M5YTRhZTkxMGIwNmRhZTFiY2ZlNmZjOTQxNDYwLi41Njg5NWY1MGRjZTk5MWI1
MDViMjBjMzViYTBjYjdiNGEzMDRhZDBiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzM5MjUsMTQgKzczOTI1LDYgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9u
dC1lbmRcRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qcyIKLQkJCQkJPgotCQkJCTwvRmlsZT4K
LQkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRGV0
YWlsZWRIZWFwc2hvdFZpZXcuanMiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXGRpYWxvZy5jc3MiCiAJCQkJ
CT4KIAkJCQk8L0ZpbGU+CkBAIC03NDA0NSwxMCArNzQwMzcsMTggQEAKIAkJCQkJPgogCQkJCTwv
RmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1l
bmRcSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxIZWFwU25hcHNo
b3RQcm94eS5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcSGVhcFNuYXBzaG90Vmlldy5qcyIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxmcm9udC1lbmRcSGVhcFNuYXBzaG90V29ya2VyLmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CmluZGV4IDVj
ZTIxZTkxYTQ2ZDIwYTMzNjJiZGMxMTQwYjk3MDc4N2M5YmRhZjAuLjM2ZmI4NzZlNTVlNDRkNDE0
YjY1YzFkZDJhNjQ0NjVhMzdiNjA3MTggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9jb21waWxlLWZyb250LWVuZC5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Y29tcGlsZS1mcm9udC1lbmQucHkKQEAgLTI3NywxNyArMjc3LDE3IEBAIG1vZHVsZXMgPSBbCiAg
ICAgICAgICJzb3VyY2VzIjogWwogICAgICAgICAgICAgIkJvdHRvbVVwUHJvZmlsZURhdGFHcmlk
VHJlZS5qcyIsCiAgICAgICAgICAgICAiQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcyIsCi0gICAg
ICAgICAgICAiRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMiLAotICAgICAgICAgICAgIkRldGFpbGVk
SGVhcHNob3RHcmlkTm9kZXMuanMiLAorICAgICAgICAgICAgIkhlYXBTbmFwc2hvdC5qcyIsCisg
ICAgICAgICAgICAiSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzIiwKKyAgICAgICAgICAgICJIZWFw
U25hcHNob3RQcm94eS5qcyIsCisgICAgICAgICAgICAiSGVhcFNuYXBzaG90Vmlldy5qcyIsCisg
ICAgICAgICAgICAiSGVhcFNuYXBzaG90V29ya2VyLmpzIiwKKyAgICAgICAgICAgICJIZWFwU25h
cHNob3RXb3JrZXJEaXNwYXRjaGVyLmpzIiwKICAgICAgICAgICAgICJQcm9maWxlRGF0YUdyaWRU
cmVlLmpzIiwKICAgICAgICAgICAgICJQcm9maWxlc1BhbmVsLmpzIiwKICAgICAgICAgICAgICJQ
cm9maWxlTGF1bmNoZXJWaWV3LmpzIiwKICAgICAgICAgICAgICJQcm9maWxlVmlldy5qcyIsCiAg
ICAgICAgICAgICAiVG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanMiLAotICAgICAgICAgICAg
IkhlYXBTbmFwc2hvdC5qcyIsCi0gICAgICAgICAgICAiSGVhcFNuYXBzaG90UHJveHkuanMiLAot
ICAgICAgICAgICAgIkhlYXBTbmFwc2hvdFdvcmtlci5qcyIsCi0gICAgICAgICAgICAiSGVhcFNu
YXBzaG90V29ya2VyRGlzcGF0Y2hlci5qcyIsCiAgICAgICAgIF0KICAgICB9LAogIyAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVh
cHNob3RHcmlkTm9kZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Rl
dGFpbGVkSGVhcHNob3RHcmlkTm9kZXMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDQ3M2Q1MGIxMDg5NmI2NGVkOWM3ZDc5ZmQzNmYwZWE4NGM0ZjcxM2UuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsOTQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5EYXRhR3JpZE5vZGV9Ci0gKi8KLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9k
ZSA9IGZ1bmN0aW9uKHRyZWUsIGhhc0NoaWxkcmVuKQotewotICAgIFdlYkluc3BlY3Rvci5EYXRh
R3JpZE5vZGUuY2FsbCh0aGlzLCBudWxsLCBoYXNDaGlsZHJlbik7Ci0gICAgdGhpcy5fZGVmYXVs
dFBvcHVsYXRlQ291bnQgPSB0cmVlLl9kZWZhdWx0UG9wdWxhdGVDb3VudDsKLSAgICB0aGlzLl9w
cm92aWRlciA9IG51bGw7Ci0gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCJwb3B1bGF0ZSIsIHRo
aXMuX3BvcHVsYXRlLCB0aGlzKTsKLX0KLQotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWRO
b2RlLnByb3RvdHlwZSA9IHsKLSAgICBlbnN1cmVDb250ZW50Q3JlYXRlZDogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgLy8gTWF5IGJlIG92ZXJyaWRlbiBpbiBkZXNjZW5kYW50cyB3aXRoIGxh
enkgY29udGVudC4KLSAgICB9LAotCi0gICAgY3JlYXRlQ2VsbDogZnVuY3Rpb24oY29sdW1uSWRl
bnRpZmllcikKLSAgICB7Ci0gICAgICAgIHZhciBjZWxsID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbC5jYWxsKHRoaXMsIGNvbHVtbklkZW50aWZpZXIpOwot
ICAgICAgICBpZiAodGhpcy5fc2VhcmNoTWF0Y2hlZCkKLSAgICAgICAgICAgIGNlbGwuYWRkU3R5
bGVDbGFzcygiaGlnaGxpZ2h0Iik7Ci0gICAgICAgIHJldHVybiBjZWxsOwotICAgIH0sCi0KLSAg
ICBkaXNwb3NlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcHJvdmlkZXIp
Ci0gICAgICAgICAgICB0aGlzLl9wcm92aWRlci5kaXNwb3NlKCk7Ci0gICAgICAgIGZvciAodmFy
IG5vZGUgPSB0aGlzLmNoaWxkcmVuWzBdOyBub2RlOyBub2RlID0gbm9kZS50cmF2ZXJzZU5leHRO
b2RlKHRydWUsIHRoaXMsIHRydWUpKQotICAgICAgICAgICAgaWYgKG5vZGUuZGlzcG9zZSkKLSAg
ICAgICAgICAgICAgICBub2RlLmRpc3Bvc2UoKTsKLSAgICB9LAotCi0gICAgaGFzSG92ZXJNZXNz
YWdlOiBmYWxzZSwKLQotICAgIHF1ZXJ5T2JqZWN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2sp
Ci0gICAgewotICAgIH0sCi0KLSAgICBfdG9QZXJjZW50U3RyaW5nOiBmdW5jdGlvbihudW0pCi0g
ICAgewotICAgICAgICByZXR1cm4gbnVtLnRvRml4ZWQoMCkgKyAiXHUyMDA5JSI7IC8vIFx1MjAw
OSBpcyBhIHRoaW4gc3BhY2UuCi0gICAgfSwKLQotICAgIF9jcmVhdGVWYWx1ZUNlbGw6IGZ1bmN0
aW9uKGNvbHVtbklkZW50aWZpZXIpCi0gICAgewotICAgICAgICB2YXIgY2VsbCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgIGNlbGwuY2xhc3NOYW1lID0gY29sdW1uSWRl
bnRpZmllciArICItY29sdW1uIjsKLSAgICAgICAgaWYgKHRoaXMuZGF0YUdyaWQuc25hcHNob3Qu
dG90YWxTaXplICE9PSAwKSB7Ci0gICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICB2YXIgdmFsdWVTcGFuID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAgdmFsdWVTcGFuLnRleHRDb250ZW50ID0g
dGhpcy5kYXRhW2NvbHVtbklkZW50aWZpZXJdOwotICAgICAgICAgICAgZGl2LmFwcGVuZENoaWxk
KHZhbHVlU3Bhbik7Ci0gICAgICAgICAgICB2YXIgcGVyY2VudENvbHVtbiA9IGNvbHVtbklkZW50
aWZpZXIgKyAiLXBlcmNlbnQiOwotICAgICAgICAgICAgaWYgKHBlcmNlbnRDb2x1bW4gaW4gdGhp
cy5kYXRhKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHBlcmNlbnRTcGFuID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAgICAgIHBlcmNlbnRTcGFuLmNsYXNzTmFt
ZSA9ICJwZXJjZW50LWNvbHVtbiI7Ci0gICAgICAgICAgICAgICAgcGVyY2VudFNwYW4udGV4dENv
bnRlbnQgPSB0aGlzLmRhdGFbcGVyY2VudENvbHVtbl07Ci0gICAgICAgICAgICAgICAgZGl2LmFw
cGVuZENoaWxkKHBlcmNlbnRTcGFuKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNlbGwu
YXBwZW5kQ2hpbGQoZGl2KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gY2VsbDsKLSAgICB9
LAotCi0gICAgX3BvcHVsYXRlOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9wdWxhdGUiLCB0aGlzLl9wb3B1bGF0ZSwgdGhpcyk7Ci0g
ICAgICAgIGZ1bmN0aW9uIHNvcnRlZChpZ25vcmVkKQotICAgICAgICB7Ci0gICAgICAgICAgICB0
aGlzLnBvcHVsYXRlQ2hpbGRyZW4oKTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9wcm92aWRl
ci5zb3J0QW5kUmV3aW5kKHRoaXMuY29tcGFyYXRvcigpLCBzb3J0ZWQuYmluZCh0aGlzKSk7Ci0g
ICAgfSwKLQotICAgIHBvcHVsYXRlQ2hpbGRyZW46IGZ1bmN0aW9uKHByb3ZpZGVyLCBob3dNYW55
LCBhdEluZGV4LCBhZnRlclBvcHVsYXRlLCBzdXBwcmVzc05vdGlmeUFib3V0Q29tcGxldGlvbikK
LSAgICB7Ci0gICAgICAgIGlmICghaG93TWFueSAmJiBwcm92aWRlcikgewotICAgICAgICAgICAg
aG93TWFueSA9IHByb3ZpZGVyLmluc3RhbmNlQ291bnQ7Ci0gICAgICAgICAgICBwcm92aWRlci5p
bnN0YW5jZUNvdW50ID0gMDsKLSAgICAgICAgfQotICAgICAgICBwcm92aWRlciA9IHByb3ZpZGVy
IHx8IHRoaXMuX3Byb3ZpZGVyOwotICAgICAgICBpZiAoISgiaW5zdGFuY2VDb3VudCIgaW4gcHJv
dmlkZXIpKQotICAgICAgICAgICAgcHJvdmlkZXIuaW5zdGFuY2VDb3VudCA9IDA7Ci0gICAgICAg
IGhvd01hbnkgPSBob3dNYW55IHx8IHRoaXMuX2RlZmF1bHRQb3B1bGF0ZUNvdW50OwotICAgICAg
ICBhdEluZGV4ID0gYXRJbmRleCB8fCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsKLSAgICAgICAgdmFy
IGhhdmVTYXZlZENoaWxkcmVuID0gISF0aGlzLl9zYXZlZENoaWxkcmVuOwotICAgICAgICBpZiAo
aGF2ZVNhdmVkQ2hpbGRyZW4pIHsKLSAgICAgICAgICAgIGhhdmVTYXZlZENoaWxkcmVuID0gZmFs
c2U7Ci0gICAgICAgICAgICBmb3IgKHZhciBjIGluIHRoaXMuX3NhdmVkQ2hpbGRyZW4pIHsKLSAg
ICAgICAgICAgICAgICBoYXZlU2F2ZWRDaGlsZHJlbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcGFydCA9IDA7
Ci0gICAgICAgIGZ1bmN0aW9uIGNhbGxTZXJpYWxpemUoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAocGFydCA+PSBob3dNYW55KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIHBhcnQgKz0gdGhpcy5fZGVmYXVsdFBvcHVsYXRlQ291bnQ7Ci0gICAgICAgICAgICBwcm92
aWRlci5zZXJpYWxpemVOZXh0SXRlbXModGhpcy5fZGVmYXVsdFBvcHVsYXRlQ291bnQsIGNoaWxk
cmVuUmV0cmlldmVkLmJpbmQodGhpcykpOwotICAgICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uIGNo
aWxkcmVuUmV0cmlldmVkKGl0ZW1zKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbGVuZ3Ro
ID0gaXRlbXMudG90YWxMZW5ndGg7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGl0
ZW1zLmxlbmd0aDsgaSA8IGw7ICsraSkgewotICAgICAgICAgICAgICAgIHZhciBpdGVtID0gaXRl
bXNbaV07Ci0gICAgICAgICAgICAgICAgaWYgKGhhdmVTYXZlZENoaWxkcmVuKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHZhciBoYXNoID0gdGhpcy5fY2hpbGRIYXNoRm9yRW50aXR5KGl0ZW0pOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoaGFzaCBpbiB0aGlzLl9zYXZlZENoaWxkcmVuKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydENoaWxkKHRoaXMuX3NhdmVkQ2hpbGRy
ZW5baGFzaF0sIGF0SW5kZXgrKyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB0aGlzLmluc2VydENoaWxkKHRoaXMuX2NyZWF0ZUNoaWxkTm9kZShpdGVtLCBwcm92aWRlciwg
dGhpcyksIGF0SW5kZXgrKyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcm92aWRlci5p
bnN0YW5jZUNvdW50ICs9IGl0ZW1zLmxlbmd0aDsKLSAgICAgICAgICAgIGlmIChwYXJ0IDwgaG93
TWFueSkgewotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2FsbFNlcmlhbGl6ZS5iaW5kKHRo
aXMpLCAwKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGlmIChpdGVtcy5oYXNOZXh0KQotICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q2hp
bGQobmV3IFdlYkluc3BlY3Rvci5TaG93TW9yZURhdGFHcmlkTm9kZSh0aGlzLnBvcHVsYXRlQ2hp
bGRyZW4uYmluZCh0aGlzLCBwcm92aWRlciksIHRoaXMuX2RlZmF1bHRQb3B1bGF0ZUNvdW50LCBs
ZW5ndGgpLCBhdEluZGV4KyspOwotICAgICAgICAgICAgaWYgKGFmdGVyUG9wdWxhdGUpCi0gICAg
ICAgICAgICAgICAgYWZ0ZXJQb3B1bGF0ZSgpOwotICAgICAgICAgICAgaWYgKCFzdXBwcmVzc05v
dGlmeUFib3V0Q29tcGxldGlvbikgewotICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG5vdGlmeSgp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycygicG9wdWxhdGUgY29tcGxldGUiKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgc2V0VGltZW91dChub3RpZnkuYmluZCh0aGlzKSwgMCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgc2V0VGltZW91dChjYWxsU2VyaWFsaXplLmJpbmQo
dGhpcyksIDApOwotICAgIH0sCi0KLSAgICBfc2F2ZUNoaWxkcmVuOiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICB0aGlzLl9zYXZlZENoaWxkcmVuID0ge307Ci0gICAgICAgIGZvciAodmFyIGkg
PSAwLCBjaGlsZHJlbkNvdW50ID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBjaGlsZHJlbkNv
dW50OyArK2kpIHsKLSAgICAgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5baV07Ci0g
ICAgICAgICAgICBpZiAoY2hpbGQuZXhwYW5kZWQpCi0gICAgICAgICAgICAgICAgdGhpcy5fc2F2
ZWRDaGlsZHJlblt0aGlzLl9jaGlsZEhhc2hGb3JOb2RlKGNoaWxkKV0gPSBjaGlsZDsKLSAgICAg
ICAgfQotICAgIH0sCi0KLSAgICBzb3J0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlz
LmRhdGFHcmlkLnJlY3Vyc2l2ZVNvcnRpbmdFbnRlcigpOwotICAgICAgICBmdW5jdGlvbiBhZnRl
clNvcnQoc29ydGVkKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXNvcnRlZCkgewotICAg
ICAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQucmVjdXJzaXZlU29ydGluZ0xlYXZlKCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5fc2F2
ZUNoaWxkcmVuKCk7Ci0gICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7Ci0KLSAgICAg
ICAgICAgIGZ1bmN0aW9uIGFmdGVyUG9wdWxhdGUoKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlbltpXTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLmV4cGFuZGVkKQotICAgICAgICAgICAgICAg
ICAgICAgICAgY2hpbGQuc29ydCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB0aGlzLmRhdGFHcmlkLnJlY3Vyc2l2ZVNvcnRpbmdMZWF2ZSgpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZUNoaWxkcmVuKHRoaXMuX3Byb3ZpZGVyLCBudWxsLCBu
dWxsLCBhZnRlclBvcHVsYXRlLmJpbmQodGhpcykpOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMu
X3Byb3ZpZGVyLnNvcnRBbmRSZXdpbmQodGhpcy5jb21wYXJhdG9yKCksIGFmdGVyU29ydC5iaW5k
KHRoaXMpKTsKLSAgICB9Ci19OwotCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBl
OwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RHcmlkTm9kZX0KLSAqLwotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExhenlHcmlk
Tm9kZSA9IGZ1bmN0aW9uKHRyZWUsIGhhc0NoaWxkcmVuKQotewotICAgIFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RHcmlkTm9kZS5jYWxsKHRoaXMsIHRyZWUsIGhhc0NoaWxkcmVuKTsKLSAgICB0
aGlzLl9kZWZlckNvbnRlbnRDcmVhdGlvbiA9IHRydWU7Ci19Ci0KLVdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RMYXp5R3JpZE5vZGUucHJvdG90eXBlID0gewotICAgIGVuc3VyZUNvbnRlbnRDcmVh
dGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX2RlZmVyQ29udGVudENy
ZWF0aW9uKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9kZWZlckNvbnRlbnRD
cmVhdGlvbiA9IGZhbHNlOwotICAgICAgICB0aGlzLmNyZWF0ZUNlbGxzKCk7Ci0gICAgfSwKLQot
ICAgIGNyZWF0ZUNlbGxzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZGVm
ZXJDb250ZW50Q3JlYXRpb24pCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbHMuY2FsbCh0aGlz
KTsKLSAgICB9Ci19OwotCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TGF6eUdyaWROb2RlLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUucHJv
dG90eXBlOwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RHcmlkTm9kZX0KLSAqLwotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdl
bmVyaWNPYmplY3ROb2RlID0gZnVuY3Rpb24odHJlZSwgbm9kZSkKLXsKLSAgICBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUuY2FsbCh0aGlzLCB0cmVlLCBmYWxzZSk7Ci0gICAgdGhp
cy5fbmFtZSA9IG5vZGUubmFtZTsKLSAgICB0aGlzLl90eXBlID0gbm9kZS50eXBlOwotICAgIHRo
aXMuX2Rpc3RhbmNlVG9XaW5kb3cgPSBub2RlLmRpc3RhbmNlVG9XaW5kb3c7Ci0gICAgdGhpcy5f
c2hhbGxvd1NpemUgPSBub2RlLnNlbGZTaXplOwotICAgIHRoaXMuX3JldGFpbmVkU2l6ZSA9IG5v
ZGUucmV0YWluZWRTaXplOwotICAgIHRoaXMuc25hcHNob3ROb2RlSWQgPSBub2RlLmlkOwotICAg
IHRoaXMuc25hcHNob3ROb2RlSW5kZXggPSBub2RlLm5vZGVJbmRleDsKLSAgICBpZiAodGhpcy5f
dHlwZSA9PT0gInN0cmluZyIpCi0gICAgICAgIHRoaXMuaGFzSG92ZXJNZXNzYWdlID0gdHJ1ZTsK
LSAgICBlbHNlIGlmICh0aGlzLl90eXBlID09PSAib2JqZWN0IiAmJiB0aGlzLmlzV2luZG93KHRo
aXMuX25hbWUpKSB7Ci0gICAgICAgIHRoaXMuX25hbWUgPSB0aGlzLnNob3J0ZW5XaW5kb3dVUkwo
dGhpcy5fbmFtZSwgZmFsc2UpOwotICAgICAgICB0aGlzLmhhc0hvdmVyTWVzc2FnZSA9IHRydWU7
Ci0gICAgfSBlbHNlIGlmIChub2RlLmZsYWdzICYgdHJlZS5zbmFwc2hvdC5ub2RlRmxhZ3MuY2Fu
QmVRdWVyaWVkKQotICAgICAgICB0aGlzLmhhc0hvdmVyTWVzc2FnZSA9IHRydWU7Ci0gICAgaWYg
KG5vZGUuZmxhZ3MgJiB0cmVlLnNuYXBzaG90Lm5vZGVGbGFncy5kZXRhY2hlZERPTVRyZWVOb2Rl
KQotICAgICAgICB0aGlzLmRldGFjaGVkRE9NVHJlZU5vZGUgPSB0cnVlOwotfTsKLQotV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLnByb3RvdHlwZSA9IHsKLSAgICBj
cmVhdGVDZWxsOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAgdmFy
IGNlbGwgPSBjb2x1bW5JZGVudGlmaWVyICE9PSAib2JqZWN0IiA/IHRoaXMuX2NyZWF0ZVZhbHVl
Q2VsbChjb2x1bW5JZGVudGlmaWVyKSA6IHRoaXMuX2NyZWF0ZU9iamVjdENlbGwoKTsKLSAgICAg
ICAgaWYgKHRoaXMuX3NlYXJjaE1hdGNoZWQpCi0gICAgICAgICAgICBjZWxsLmFkZFN0eWxlQ2xh
c3MoImhpZ2hsaWdodCIpOwotICAgICAgICByZXR1cm4gY2VsbDsKLSAgICB9LAotCi0gICAgX2Ny
ZWF0ZU9iamVjdENlbGw6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBjZWxsID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAgICAgY2VsbC5jbGFzc05hbWUgPSAib2Jq
ZWN0LWNvbHVtbiI7Ci0gICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICAgICAgZGl2LmNsYXNzTmFtZSA9ICJzb3VyY2UtY29kZSBldmVudC1wcm9wZXJ0
aWVzIjsKLSAgICAgICAgZGl2LnN0eWxlLm92ZXJmbG93ID0gInZpc2libGUiOwotICAgICAgICB2
YXIgZGF0YSA9IHRoaXMuZGF0YVsib2JqZWN0Il07Ci0gICAgICAgIGlmICh0aGlzLl9wcmVmaXhP
YmplY3RDZWxsKQotICAgICAgICAgICAgdGhpcy5fcHJlZml4T2JqZWN0Q2VsbChkaXYsIGRhdGEp
OwotICAgICAgICB2YXIgdmFsdWVTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIp
OwotICAgICAgICB2YWx1ZVNwYW4uY2xhc3NOYW1lID0gInZhbHVlIGNvbnNvbGUtZm9ybWF0dGVk
LSIgKyBkYXRhLnZhbHVlU3R5bGU7Ci0gICAgICAgIHZhbHVlU3Bhbi50ZXh0Q29udGVudCA9IGRh
dGEudmFsdWU7Ci0gICAgICAgIGRpdi5hcHBlbmRDaGlsZCh2YWx1ZVNwYW4pOwotICAgICAgICB2
YXIgaWRTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICBpZFNw
YW4uY2xhc3NOYW1lID0gImNvbnNvbGUtZm9ybWF0dGVkLWlkIjsKLSAgICAgICAgaWRTcGFuLnRl
eHRDb250ZW50ID0gIiBAIiArIGRhdGFbIm5vZGVJZCJdOwotICAgICAgICBkaXYuYXBwZW5kQ2hp
bGQoaWRTcGFuKTsKLSAgICAgICAgaWYgKHRoaXMuX3Bvc3RmaXhPYmplY3RDZWxsKQotICAgICAg
ICAgICAgdGhpcy5fcG9zdGZpeE9iamVjdENlbGwoZGl2LCBkYXRhKTsKLSAgICAgICAgY2VsbC5h
cHBlbmRDaGlsZChkaXYpOwotICAgICAgICBjZWxsLmFkZFN0eWxlQ2xhc3MoImRpc2Nsb3N1cmUi
KTsKLSAgICAgICAgaWYgKHRoaXMuZGVwdGgpCi0gICAgICAgICAgICBjZWxsLnN0eWxlLnNldFBy
b3BlcnR5KCJwYWRkaW5nLWxlZnQiLCAodGhpcy5kZXB0aCAqIHRoaXMuZGF0YUdyaWQuaW5kZW50
V2lkdGgpICsgInB4Iik7Ci0gICAgICAgIHJldHVybiBjZWxsOwotICAgIH0sCi0KLSAgICBnZXQg
ZGF0YSgpCi0gICAgewotICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX2VtcHR5RGF0YSgpOwotCi0g
ICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX25hbWU7Ci0gICAgICAgIHZhciB2YWx1ZVN0eWxlID0g
Im9iamVjdCI7Ci0gICAgICAgIHN3aXRjaCAodGhpcy5fdHlwZSkgewotICAgICAgICBjYXNlICJz
dHJpbmciOgotICAgICAgICAgICAgdmFsdWUgPSAiXCIiICsgdmFsdWUgKyAiXCIiOwotICAgICAg
ICAgICAgdmFsdWVTdHlsZSA9ICJzdHJpbmciOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgInJlZ2V4cCI6Ci0gICAgICAgICAgICB2YWx1ZSA9ICIvIiArIHZhbHVlICsgIi8iOwot
ICAgICAgICAgICAgdmFsdWVTdHlsZSA9ICJzdHJpbmciOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgImNsb3N1cmUiOgotICAgICAgICAgICAgdmFsdWUgPSAiZnVuY3Rpb24iICsg
KHZhbHVlID8gIiAiIDogIiIpICsgdmFsdWUgKyAiKCkiOwotICAgICAgICAgICAgdmFsdWVTdHls
ZSA9ICJmdW5jdGlvbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAibnVtYmVy
IjoKLSAgICAgICAgICAgIHZhbHVlU3R5bGUgPSAibnVtYmVyIjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlICJoaWRkZW4iOgotICAgICAgICAgICAgdmFsdWVTdHlsZSA9ICJudWxs
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJhcnJheSI6Ci0gICAgICAgICAg
ICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgICAgIHZhbHVlID0gIltdIjsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICB2YWx1ZSArPSAiW10iOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH07Ci0gICAgICAgIGlmICh0aGlzLmhhc0hvdmVyTWVzc2FnZSkKLSAgICAgICAg
ICAgIHZhbHVlU3R5bGUgKz0gIiBoaWdobGlnaHQiOwotICAgICAgICBpZiAodmFsdWUgPT09ICJP
YmplY3QiKQotICAgICAgICAgICAgdmFsdWUgPSAiIjsKLSAgICAgICAgaWYgKHRoaXMuZGV0YWNo
ZWRET01UcmVlTm9kZSkKLSAgICAgICAgICAgIHZhbHVlU3R5bGUgKz0gIiBkZXRhY2hlZC1kb20t
dHJlZS1ub2RlIjsKLSAgICAgICAgZGF0YVsib2JqZWN0Il0gPSB7IHZhbHVlU3R5bGU6IHZhbHVl
U3R5bGUsIHZhbHVlOiB2YWx1ZSwgbm9kZUlkOiB0aGlzLnNuYXBzaG90Tm9kZUlkIH07Ci0KLSAg
ICAgICAgdmFyIHZpZXcgPSB0aGlzLmRhdGFHcmlkLnNuYXBzaG90VmlldzsKLSAgICAgICAgZGF0
YVsiZGlzdGFuY2VUb1dpbmRvdyJdID0gIHRoaXMuX2Rpc3RhbmNlVG9XaW5kb3c7Ci0gICAgICAg
IGRhdGFbInNoYWxsb3dTaXplIl0gPSBOdW1iZXIud2l0aFRob3VzYW5kc1NlcGFyYXRvcih0aGlz
Ll9zaGFsbG93U2l6ZSk7Ci0gICAgICAgIGRhdGFbInJldGFpbmVkU2l6ZSJdID0gTnVtYmVyLndp
dGhUaG91c2FuZHNTZXBhcmF0b3IodGhpcy5fcmV0YWluZWRTaXplKTsKLSAgICAgICAgZGF0YVsi
c2hhbGxvd1NpemUtcGVyY2VudCJdID0gdGhpcy5fdG9QZXJjZW50U3RyaW5nKHRoaXMuX3NoYWxs
b3dTaXplUGVyY2VudCk7Ci0gICAgICAgIGRhdGFbInJldGFpbmVkU2l6ZS1wZXJjZW50Il0gPSB0
aGlzLl90b1BlcmNlbnRTdHJpbmcodGhpcy5fcmV0YWluZWRTaXplUGVyY2VudCk7Ci0KLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2VuaGFuY2VEYXRhID8gdGhpcy5fZW5oYW5jZURhdGEoZGF0YSkgOiBk
YXRhOwotICAgIH0sCi0KLSAgICBxdWVyeU9iamVjdENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNr
LCBvYmplY3RHcm91cE5hbWUpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fdHlwZSA9PT0gInN0
cmluZyIpCi0gICAgICAgICAgICBjYWxsYmFjayhXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZy
b21QcmltaXRpdmVWYWx1ZSh0aGlzLl9uYW1lKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgZnVuY3Rpb24gZm9ybWF0UmVzdWx0KGVycm9yLCBvYmplY3QpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFlcnJvciAmJiBvYmplY3QudHlwZSkKLSAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2soV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChvYmpl
Y3QpLCAhIWVycm9yKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IGNhbGxiYWNrKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVByaW1pdGl2ZVZhbHVlKFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiTm90IGF2YWlsYWJsZSIpKSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBQcm9maWxlckFnZW50LmdldE9iamVjdEJ5SGVhcE9iamVjdElkKHRoaXMuc25h
cHNob3ROb2RlSWQsIG9iamVjdEdyb3VwTmFtZSwgZm9ybWF0UmVzdWx0KTsKLSAgICAgICAgfQot
ICAgIH0sCi0KLSAgICBnZXQgX3JldGFpbmVkU2l6ZVBlcmNlbnQoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX3JldGFpbmVkU2l6ZSAvIHRoaXMuZGF0YUdyaWQuc25hcHNob3QudG90YWxT
aXplICogMTAwLjA7Ci0gICAgfSwKLQotICAgIGdldCBfc2hhbGxvd1NpemVQZXJjZW50KCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zaGFsbG93U2l6ZSAvIHRoaXMuZGF0YUdyaWQuc25h
cHNob3QudG90YWxTaXplICogMTAwLjA7Ci0gICAgfSwKLQotICAgIHVwZGF0ZUhhc0NoaWxkcmVu
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBmdW5jdGlvbiBpc0VtcHR5Q2FsbGJhY2soaXNF
bXB0eSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9ICFpc0VtcHR5
OwotICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3Byb3ZpZGVyLmlzRW1wdHkoaXNFbXB0eUNhbGxi
YWNrLmJpbmQodGhpcykpOwotICAgIH0sCi0KLSAgICBpc1dpbmRvdzogZnVuY3Rpb24oZnVsbE5h
bWUpCi0gICAgewotICAgICAgICByZXR1cm4gZnVsbE5hbWUuc3Vic3RyKDAsIDkpID09PSAiV2lu
ZG93IjsKLSAgICB9LAotCi0gICAgc2hvcnRlbldpbmRvd1VSTDogZnVuY3Rpb24oZnVsbE5hbWUs
IGhhc09iamVjdElkKQotICAgIHsKLSAgICAgICAgdmFyIHN0YXJ0UG9zID0gZnVsbE5hbWUuaW5k
ZXhPZigiLyIpOwotICAgICAgICB2YXIgZW5kUG9zID0gaGFzT2JqZWN0SWQgPyBmdWxsTmFtZS5p
bmRleE9mKCJAIikgOiBmdWxsTmFtZS5sZW5ndGg7Ci0gICAgICAgIGlmIChzdGFydFBvcyAhPT0g
LTEgJiYgZW5kUG9zICE9PSAtMSkgewotICAgICAgICAgICAgdmFyIGZ1bGxVUkwgPSBmdWxsTmFt
ZS5zdWJzdHJpbmcoc3RhcnRQb3MgKyAxLCBlbmRQb3MpLnRyaW1MZWZ0KCk7Ci0gICAgICAgICAg
ICB2YXIgdXJsID0gZnVsbFVSTC50cmltVVJMKCk7Ci0gICAgICAgICAgICBpZiAodXJsLmxlbmd0
aCA+IDQwKQotICAgICAgICAgICAgICAgIHVybCA9IHVybC50cmltTWlkZGxlKDQwKTsKLSAgICAg
ICAgICAgIHJldHVybiBmdWxsTmFtZS5zdWJzdHIoMCwgc3RhcnRQb3MgKyAyKSArIHVybCArIGZ1
bGxOYW1lLnN1YnN0cihlbmRQb3MpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVy
biBmdWxsTmFtZTsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmlj
T2JqZWN0Tm9kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dEdyaWROb2RlLnByb3RvdHlwZTsKLQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRz
IHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R2VuZXJpY09iamVjdE5vZGV9Ci0gKi8KLVdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RPYmplY3ROb2RlID0gZnVuY3Rpb24odHJlZSwgaXNGcm9tQmFz
ZVNuYXBzaG90LCBlZGdlLCBwYXJlbnRHcmlkTm9kZSkKLXsKLSAgICBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90R2VuZXJpY09iamVjdE5vZGUuY2FsbCh0aGlzLCB0cmVlLCBlZGdlLm5vZGUpOwot
ICAgIHRoaXMuX3JlZmVyZW5jZU5hbWUgPSBlZGdlLm5hbWU7Ci0gICAgdGhpcy5fcmVmZXJlbmNl
VHlwZSA9IGVkZ2UudHlwZTsKLSAgICB0aGlzLl9wcm9wZXJ0eUFjY2Vzc29yID0gZWRnZS5wcm9w
ZXJ0eUFjY2Vzc29yOwotICAgIHRoaXMuX2Rpc3RhbmNlVG9XaW5kb3cgPSBlZGdlLmRpc3RhbmNl
VG9XaW5kb3c7Ci0gICAgdGhpcy5zaG93UmV0YWluaW5nRWRnZXMgPSB0cmVlLnNob3dSZXRhaW5p
bmdFZGdlczsKLSAgICB0aGlzLl9pc0Zyb21CYXNlU25hcHNob3QgPSBpc0Zyb21CYXNlU25hcHNo
b3Q7Ci0gICAgdGhpcy5fcHJvdmlkZXIgPSB0aGlzLl9jcmVhdGVQcm92aWRlcighaXNGcm9tQmFz
ZVNuYXBzaG90ID8gdHJlZS5zbmFwc2hvdCA6IHRyZWUuYmFzZVNuYXBzaG90LCBlZGdlLm5vZGVJ
bmRleCwgdHJlZSk7Ci0gICAgdGhpcy51cGRhdGVIYXNDaGlsZHJlbihwYXJlbnRHcmlkTm9kZSk7
Ci19Ci0KLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RPYmplY3ROb2RlLnByb3RvdHlwZSA9IHsK
LSAgICB1cGRhdGVIYXNDaGlsZHJlbjogZnVuY3Rpb24ocGFyZW50R3JpZE5vZGUpCi0gICAgewot
ICAgICAgICB0aGlzLl9wYXJlbnRHcmlkTm9kZSA9IHBhcmVudEdyaWROb2RlOwotICAgICAgICB2
YXIgYW5jZXN0b3IgPSBwYXJlbnRHcmlkTm9kZTsKLSAgICAgICAgd2hpbGUgKGFuY2VzdG9yKSB7
Ci0gICAgICAgICAgICBpZiAoYW5jZXN0b3Iuc25hcHNob3ROb2RlSWQgPT09IHRoaXMuc25hcHNo
b3ROb2RlSWQpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9jeWNsZWRXaXRoQW5jZXN0b3JHcmlk
Tm9kZSA9IGFuY2VzdG9yOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3IuX3BhcmVudEdyaWROb2RlOwotICAgICAg
ICB9Ci0gICAgICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5w
cm90b3R5cGUudXBkYXRlSGFzQ2hpbGRyZW4uY2FsbCh0aGlzKTsKLSAgICB9LAotCi0gICAgX2Ny
ZWF0ZUNoaWxkTm9kZTogZnVuY3Rpb24oaXRlbSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUodGhpcy5kYXRhR3JpZCwgdGhpcy5f
aXNGcm9tQmFzZVNuYXBzaG90LCBpdGVtLCB0aGlzKTsKLSAgICB9LAotCi0gICAgX2NyZWF0ZVBy
b3ZpZGVyOiBmdW5jdGlvbihzbmFwc2hvdCwgbm9kZUluZGV4LCB0cmVlKQotICAgIHsKLSAgICAg
ICAgdmFyIHNob3dIaWRkZW5EYXRhID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dIZWFwU25h
cHNob3RPYmplY3RzSGlkZGVuUHJvcGVydGllcy5nZXQoKTsKLSAgICAgICAgdmFyIGZpbHRlciA9
ICJmdW5jdGlvbihlZGdlKSB7XG4iICsKLSAgICAgICAgICAgICIgICAgcmV0dXJuICFlZGdlLmlz
SW52aXNpYmxlXG4iICsKLSAgICAgICAgICAgICIgICAgICAgICYmICgiICsgIXRoaXMuc2hvd1Jl
dGFpbmluZ0VkZ2VzICsgIiB8fCAoZWRnZS5ub2RlLmlkICE9PSAxICYmICFlZGdlLm5vZGUuaXNT
eW50aGV0aWMpKVxuIiArCi0gICAgICAgICAgICAiICAgICAgICAmJiAoIiArIHNob3dIaWRkZW5E
YXRhICsgIiB8fCAoIWVkZ2UuaXNIaWRkZW4gJiYgIWVkZ2Uubm9kZS5pc0hpZGRlbikpO1xuIiAr
Ci0gICAgICAgICAgICAifVxuIjsKLSAgICAgICAgaWYgKHRyZWUuc2hvd1JldGFpbmluZ0VkZ2Vz
KQotICAgICAgICAgICAgcmV0dXJuIHNuYXBzaG90LmNyZWF0ZVJldGFpbmluZ0VkZ2VzUHJvdmlk
ZXIobm9kZUluZGV4LCBmaWx0ZXIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4g
c25hcHNob3QuY3JlYXRlRWRnZXNQcm92aWRlcihub2RlSW5kZXgsIGZpbHRlcik7Ci0gICAgfSwK
LQotICAgIF9jaGlsZEhhc2hGb3JFbnRpdHk6IGZ1bmN0aW9uKGVkZ2UpCi0gICAgewotICAgICAg
ICB2YXIgcHJlZml4ID0gdGhpcy5zaG93UmV0YWluaW5nRWRnZXMgPyBlZGdlLm5vZGUuaWQgKyAi
IyIgOiAiIjsKLSAgICAgICAgcmV0dXJuIHByZWZpeCArIGVkZ2UudHlwZSArICIjIiArIGVkZ2Uu
bmFtZTsKLSAgICB9LAotCi0gICAgX2NoaWxkSGFzaEZvck5vZGU6IGZ1bmN0aW9uKGNoaWxkTm9k
ZSkKLSAgICB7Ci0gICAgICAgIHZhciBwcmVmaXggPSB0aGlzLnNob3dSZXRhaW5pbmdFZGdlcyA/
IGNoaWxkTm9kZS5zbmFwc2hvdE5vZGVJZCArICIjIiA6ICIiOwotICAgICAgICByZXR1cm4gcHJl
Zml4ICsgY2hpbGROb2RlLl9yZWZlcmVuY2VUeXBlICsgIiMiICsgY2hpbGROb2RlLl9yZWZlcmVu
Y2VOYW1lOwotICAgIH0sCi0KLSAgICBjb21wYXJhdG9yOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB2YXIgc29ydEFzY2VuZGluZyA9IHRoaXMuZGF0YUdyaWQuc29ydE9yZGVyID09PSAiYXNj
ZW5kaW5nIjsKLSAgICAgICAgdmFyIHNvcnRDb2x1bW5JZGVudGlmaWVyID0gdGhpcy5kYXRhR3Jp
ZC5zb3J0Q29sdW1uSWRlbnRpZmllcjsKLSAgICAgICAgdmFyIHNvcnRGaWVsZHMgPSB7Ci0gICAg
ICAgICAgICBvYmplY3Q6IFsiIWVkZ2VOYW1lIiwgc29ydEFzY2VuZGluZywgInJldGFpbmVkU2l6
ZSIsIGZhbHNlXSwKLSAgICAgICAgICAgIGNvdW50OiBbIiFlZGdlTmFtZSIsIHRydWUsICJyZXRh
aW5lZFNpemUiLCBmYWxzZV0sCi0gICAgICAgICAgICBzaGFsbG93U2l6ZTogWyJzZWxmU2l6ZSIs
IHNvcnRBc2NlbmRpbmcsICIhZWRnZU5hbWUiLCB0cnVlXSwKLSAgICAgICAgICAgIHJldGFpbmVk
U2l6ZTogWyJyZXRhaW5lZFNpemUiLCBzb3J0QXNjZW5kaW5nLCAiIWVkZ2VOYW1lIiwgdHJ1ZV0s
Ci0gICAgICAgICAgICBkaXN0YW5jZVRvV2luZG93OiBbImRpc3RhbmNlVG9XaW5kb3ciLCBzb3J0
QXNjZW5kaW5nLCAiX25hbWUiLCB0cnVlXQotICAgICAgICB9W3NvcnRDb2x1bW5JZGVudGlmaWVy
XSB8fCBbIiFlZGdlTmFtZSIsIHRydWUsICJyZXRhaW5lZFNpemUiLCBmYWxzZV07Ci0gICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3Iu
cHJvdG90eXBlLmNyZWF0ZUNvbXBhcmF0b3Ioc29ydEZpZWxkcyk7Ci0gICAgfSwKLQotICAgIF9l
bXB0eURhdGE6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB7IGNvdW50OiAiIiwg
YWRkZWRDb3VudDogIiIsIHJlbW92ZWRDb3VudDogIiIsIGNvdW50RGVsdGE6ICIiLCBhZGRlZFNp
emU6ICIiLCByZW1vdmVkU2l6ZTogIiIsIHNpemVEZWx0YTogIiIgfTsKLSAgICB9LAotCi0gICAg
X2VuaGFuY2VEYXRhOiBmdW5jdGlvbihkYXRhKQotICAgIHsKLSAgICAgICAgdmFyIG5hbWUgPSB0
aGlzLl9yZWZlcmVuY2VOYW1lOwotICAgICAgICBpZiAobmFtZSA9PT0gIiIpIG5hbWUgPSAiKGVt
cHR5KSI7Ci0gICAgICAgIHZhciBuYW1lQ2xhc3MgPSAibmFtZSI7Ci0gICAgICAgIHN3aXRjaCAo
dGhpcy5fcmVmZXJlbmNlVHlwZSkgewotICAgICAgICBjYXNlICJjb250ZXh0IjoKLSAgICAgICAg
ICAgIG5hbWVDbGFzcyA9ICJjb25zb2xlLWZvcm1hdHRlZC1udW1iZXIiOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgImludGVybmFsIjoKLSAgICAgICAgY2FzZSAiaGlkZGVuIjoK
LSAgICAgICAgICAgIG5hbWVDbGFzcyA9ICJjb25zb2xlLWZvcm1hdHRlZC1udWxsIjsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJlbGVtZW50IjoKLSAgICAgICAgICAgIG5hbWUg
PSAiWyIgKyBuYW1lICsgIl0iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgZGF0YVsib2JqZWN0Il0ubmFtZUNsYXNzID0gbmFtZUNsYXNzOwotICAgICAgICBkYXRhWyJv
YmplY3QiXS5uYW1lID0gbmFtZTsKLSAgICAgICAgZGF0YVsiZGlzdGFuY2VUb1dpbmRvdyJdID0g
dGhpcy5fZGlzdGFuY2VUb1dpbmRvdzsKLSAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgfSwKLQot
ICAgIF9wcmVmaXhPYmplY3RDZWxsOiBmdW5jdGlvbihkaXYsIGRhdGEpCi0gICAgewotICAgICAg
ICBpZiAodGhpcy5fY3ljbGVkV2l0aEFuY2VzdG9yR3JpZE5vZGUpCi0gICAgICAgICAgICBkaXYu
Y2xhc3NOYW1lICs9ICIgY3ljbGVkLWFuY2Vzc29yLW5vZGUiOwotCi0gICAgICAgIHZhciBuYW1l
U3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgbmFtZVNwYW4u
Y2xhc3NOYW1lID0gZGF0YS5uYW1lQ2xhc3M7Ci0gICAgICAgIG5hbWVTcGFuLnRleHRDb250ZW50
ID0gZGF0YS5uYW1lOwotICAgICAgICBkaXYuYXBwZW5kQ2hpbGQobmFtZVNwYW4pOwotCi0gICAg
ICAgIHZhciBzZXBhcmF0b3JTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwot
ICAgICAgICBzZXBhcmF0b3JTcGFuLmNsYXNzTmFtZSA9ICJncmF5ZWQiOwotICAgICAgICBzZXBh
cmF0b3JTcGFuLnRleHRDb250ZW50ID0gdGhpcy5zaG93UmV0YWluaW5nRWRnZXMgPyAiIGluICIg
OiAiIDo6ICI7Ci0gICAgICAgIGRpdi5hcHBlbmRDaGlsZChzZXBhcmF0b3JTcGFuKTsKLSAgICB9
Ci19Ci0KLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RPYmplY3ROb2RlLnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R2VuZXJpY09iamVjdE5vZGUucHJvdG90
eXBlOwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZX0KLSAqLwotV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdEluc3RhbmNlTm9kZSA9IGZ1bmN0aW9uKHRyZWUsIGJhc2VTbmFwc2hvdCwgc25hcHNob3Qs
IG5vZGUpCi17Ci0gICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2Rl
LmNhbGwodGhpcywgdHJlZSwgbm9kZSk7Ci0gICAgdGhpcy5faXNEZWxldGVkTm9kZSA9ICEhYmFz
ZVNuYXBzaG90OwotICAgIHRoaXMuX3Byb3ZpZGVyID0gdGhpcy5fY3JlYXRlUHJvdmlkZXIoYmFz
ZVNuYXBzaG90IHx8IHNuYXBzaG90LCBub2RlLm5vZGVJbmRleCk7Ci0gICAgdGhpcy51cGRhdGVI
YXNDaGlsZHJlbigpOwotfTsKLQotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEluc3RhbmNlTm9k
ZS5wcm90b3R5cGUgPSB7Ci0gICAgX2NyZWF0ZUNoaWxkTm9kZTogZnVuY3Rpb24oaXRlbSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5v
ZGUodGhpcy5kYXRhR3JpZCwgdGhpcy5faXNEZWxldGVkTm9kZSwgaXRlbSwgbnVsbCk7Ci0gICAg
fSwKLQotICAgIF9jcmVhdGVQcm92aWRlcjogZnVuY3Rpb24oc25hcHNob3QsIG5vZGVJbmRleCkK
LSAgICB7Ci0gICAgICAgIHZhciBzaG93SGlkZGVuRGF0YSA9IFdlYkluc3BlY3Rvci5zZXR0aW5n
cy5zaG93SGVhcFNuYXBzaG90T2JqZWN0c0hpZGRlblByb3BlcnRpZXMuZ2V0KCk7Ci0gICAgICAg
IHJldHVybiBzbmFwc2hvdC5jcmVhdGVFZGdlc1Byb3ZpZGVyKAotICAgICAgICAgICAgbm9kZUlu
ZGV4LAotICAgICAgICAgICAgImZ1bmN0aW9uKGVkZ2UpIHsiICsKLSAgICAgICAgICAgICIgICAg
cmV0dXJuICFlZGdlLmlzSW52aXNpYmxlIiArCi0gICAgICAgICAgICAiICAgICAgICAmJiAoIiAr
IHNob3dIaWRkZW5EYXRhICsgIiB8fCAoIWVkZ2UuaXNIaWRkZW4gJiYgIWVkZ2Uubm9kZS5pc0hp
ZGRlbikpOyIgKwotICAgICAgICAgICAgIn0iKTsKLSAgICB9LAotCi0gICAgX2NoaWxkSGFzaEZv
ckVudGl0eTogZnVuY3Rpb24oZWRnZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlZGdlLnR5cGUg
KyAiIyIgKyBlZGdlLm5hbWU7Ci0gICAgfSwKLQotICAgIF9jaGlsZEhhc2hGb3JOb2RlOiBmdW5j
dGlvbihjaGlsZE5vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gY2hpbGROb2RlLl9yZWZlcmVu
Y2VUeXBlICsgIiMiICsgY2hpbGROb2RlLl9yZWZlcmVuY2VOYW1lOwotICAgIH0sCi0KLSAgICBj
b21wYXJhdG9yOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgc29ydEFzY2VuZGluZyA9
IHRoaXMuZGF0YUdyaWQuc29ydE9yZGVyID09PSAiYXNjZW5kaW5nIjsKLSAgICAgICAgdmFyIHNv
cnRDb2x1bW5JZGVudGlmaWVyID0gdGhpcy5kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllcjsK
LSAgICAgICAgdmFyIHNvcnRGaWVsZHMgPSB7Ci0gICAgICAgICAgICBvYmplY3Q6IFsiIWVkZ2VO
YW1lIiwgc29ydEFzY2VuZGluZywgInJldGFpbmVkU2l6ZSIsIGZhbHNlXSwKLSAgICAgICAgICAg
IGRpc3RhbmNlVG9XaW5kb3c6IFsiZGlzdGFuY2VUb1dpbmRvdyIsIHNvcnRBc2NlbmRpbmcsICJy
ZXRhaW5lZFNpemUiLCBmYWxzZV0sCi0gICAgICAgICAgICBjb3VudDogWyIhZWRnZU5hbWUiLCB0
cnVlLCAicmV0YWluZWRTaXplIiwgZmFsc2VdLAotICAgICAgICAgICAgYWRkZWRTaXplOiBbInNl
bGZTaXplIiwgc29ydEFzY2VuZGluZywgIiFlZGdlTmFtZSIsIHRydWVdLAotICAgICAgICAgICAg
cmVtb3ZlZFNpemU6IFsic2VsZlNpemUiLCBzb3J0QXNjZW5kaW5nLCAiIWVkZ2VOYW1lIiwgdHJ1
ZV0sCi0gICAgICAgICAgICBzaGFsbG93U2l6ZTogWyJzZWxmU2l6ZSIsIHNvcnRBc2NlbmRpbmcs
ICIhZWRnZU5hbWUiLCB0cnVlXSwKLSAgICAgICAgICAgIHJldGFpbmVkU2l6ZTogWyJyZXRhaW5l
ZFNpemUiLCBzb3J0QXNjZW5kaW5nLCAiIWVkZ2VOYW1lIiwgdHJ1ZV0KLSAgICAgICAgfVtzb3J0
Q29sdW1uSWRlbnRpZmllcl0gfHwgWyIhZWRnZU5hbWUiLCB0cnVlLCAicmV0YWluZWRTaXplIiwg
ZmFsc2VdOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVk
T3JkZXJlZEl0ZXJhdG9yLnByb3RvdHlwZS5jcmVhdGVDb21wYXJhdG9yKHNvcnRGaWVsZHMpOwot
ICAgIH0sCi0KLSAgICBfZW1wdHlEYXRhOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1
cm4ge2NvdW50OiIiLCBjb3VudERlbHRhOiIiLCBzaXplRGVsdGE6ICIifTsKLSAgICB9LAotCi0g
ICAgX2VuaGFuY2VEYXRhOiBmdW5jdGlvbihkYXRhKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
X2lzRGVsZXRlZE5vZGUpIHsKLSAgICAgICAgICAgIGRhdGFbImFkZGVkQ291bnQiXSA9ICIiOwot
ICAgICAgICAgICAgZGF0YVsiYWRkZWRTaXplIl0gPSAiIjsKLSAgICAgICAgICAgIGRhdGFbInJl
bW92ZWRDb3VudCJdID0gIlx1MjAyMiI7Ci0gICAgICAgICAgICBkYXRhWyJyZW1vdmVkU2l6ZSJd
ID0gTnVtYmVyLndpdGhUaG91c2FuZHNTZXBhcmF0b3IodGhpcy5fc2hhbGxvd1NpemUpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgZGF0YVsiYWRkZWRDb3VudCJdID0gIlx1MjAyMiI7
Ci0gICAgICAgICAgICBkYXRhWyJhZGRlZFNpemUiXSA9IE51bWJlci53aXRoVGhvdXNhbmRzU2Vw
YXJhdG9yKHRoaXMuX3NoYWxsb3dTaXplKTsKLSAgICAgICAgICAgIGRhdGFbInJlbW92ZWRDb3Vu
dCJdID0gIiI7Ci0gICAgICAgICAgICBkYXRhWyJyZW1vdmVkU2l6ZSJdID0gIiI7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgfSwKLQotICAgIGdldCBpc0RlbGV0ZWROb2Rl
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9pc0RlbGV0ZWROb2RlOwotICAgIH0KLX0K
LQotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEluc3RhbmNlTm9kZS5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLnByb3RvdHlw
ZTsKLQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90TGF6eUdyaWROb2RlfQotICovCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29u
c3RydWN0b3JOb2RlID0gZnVuY3Rpb24odHJlZSwgY2xhc3NOYW1lLCBhZ2dyZWdhdGUsIGFnZ3Jl
Z2F0ZXNLZXkpCi17Ci0gICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExhenlHcmlkTm9kZS5j
YWxsKHRoaXMsIHRyZWUsIGFnZ3JlZ2F0ZS5jb3VudCA+IDApOwotICAgIHRoaXMuX25hbWUgPSBj
bGFzc05hbWU7Ci0gICAgdGhpcy5fZGlzdGFuY2VUb1dpbmRvdyA9IGFnZ3JlZ2F0ZS5kaXN0YW5j
ZVRvV2luZG93OwotICAgIHRoaXMuX2NvdW50ID0gYWdncmVnYXRlLmNvdW50OwotICAgIHRoaXMu
X3NoYWxsb3dTaXplID0gYWdncmVnYXRlLnNlbGY7Ci0gICAgdGhpcy5fcmV0YWluZWRTaXplID0g
YWdncmVnYXRlLm1heFJldDsKLSAgICB0aGlzLl9wcm92aWRlciA9IHRoaXMuX2NyZWF0ZU5vZGVz
UHJvdmlkZXIodHJlZS5zbmFwc2hvdCwgY2xhc3NOYW1lLCBhZ2dyZWdhdGVzS2V5KTsKLX0KLQot
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yTm9kZS5wcm90b3R5cGUgPSB7Ci0g
ICAgY3JlYXRlQ2VsbDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAg
IHZhciBjZWxsID0gY29sdW1uSWRlbnRpZmllciAhPT0gIm9iamVjdCIgPyB0aGlzLl9jcmVhdGVW
YWx1ZUNlbGwoY29sdW1uSWRlbnRpZmllcikgOiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3Jp
ZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGwuY2FsbCh0aGlzLCBjb2x1bW5JZGVudGlmaWVyKTsK
LSAgICAgICAgaWYgKHRoaXMuX3NlYXJjaE1hdGNoZWQpCi0gICAgICAgICAgICBjZWxsLmFkZFN0
eWxlQ2xhc3MoImhpZ2hsaWdodCIpOwotICAgICAgICByZXR1cm4gY2VsbDsKLSAgICB9LAotCi0g
ICAgX2NyZWF0ZUNoaWxkTm9kZTogZnVuY3Rpb24oaXRlbSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEluc3RhbmNlTm9kZSh0aGlzLmRhdGFHcmlk
LCBudWxsLCB0aGlzLmRhdGFHcmlkLnNuYXBzaG90LCBpdGVtKTsKLSAgICB9LAotCi0gICAgX2Ny
ZWF0ZU5vZGVzUHJvdmlkZXI6IGZ1bmN0aW9uKHNuYXBzaG90LCBjbGFzc05hbWUsIGFnZ3JlZ2F0
ZXNLZXkpCi0gICAgewotICAgICAgICByZXR1cm4gc25hcHNob3QuY3JlYXRlTm9kZXNQcm92aWRl
ckZvckNsYXNzKGNsYXNzTmFtZSwgYWdncmVnYXRlc0tleSk7Ci0gICAgfSwKLQotICAgIGNvbXBh
cmF0b3I6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBzb3J0QXNjZW5kaW5nID0gdGhp
cy5kYXRhR3JpZC5zb3J0T3JkZXIgPT09ICJhc2NlbmRpbmciOwotICAgICAgICB2YXIgc29ydENv
bHVtbklkZW50aWZpZXIgPSB0aGlzLmRhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyOwotICAg
ICAgICB2YXIgc29ydEZpZWxkcyA9IHsKLSAgICAgICAgICAgIG9iamVjdDogWyJpZCIsIHNvcnRB
c2NlbmRpbmcsICJyZXRhaW5lZFNpemUiLCBmYWxzZV0sCi0gICAgICAgICAgICBkaXN0YW5jZVRv
V2luZG93OiBbImRpc3RhbmNlVG9XaW5kb3ciLCB0cnVlLCAicmV0YWluZWRTaXplIiwgZmFsc2Vd
LAotICAgICAgICAgICAgY291bnQ6IFsiaWQiLCB0cnVlLCAicmV0YWluZWRTaXplIiwgZmFsc2Vd
LAotICAgICAgICAgICAgc2hhbGxvd1NpemU6IFsic2VsZlNpemUiLCBzb3J0QXNjZW5kaW5nLCAi
aWQiLCB0cnVlXSwKLSAgICAgICAgICAgIHJldGFpbmVkU2l6ZTogWyJyZXRhaW5lZFNpemUiLCBz
b3J0QXNjZW5kaW5nLCAiaWQiLCB0cnVlXQotICAgICAgICB9W3NvcnRDb2x1bW5JZGVudGlmaWVy
XTsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVy
ZWRJdGVyYXRvci5wcm90b3R5cGUuY3JlYXRlQ29tcGFyYXRvcihzb3J0RmllbGRzKTsKLSAgICB9
LAotCi0gICAgX2NoaWxkSGFzaEZvckVudGl0eTogZnVuY3Rpb24obm9kZSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBub2RlLmlkOwotICAgIH0sCi0KLSAgICBfY2hpbGRIYXNoRm9yTm9kZTogZnVu
Y3Rpb24oY2hpbGROb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNoaWxkTm9kZS5zbmFwc2hv
dE5vZGVJZDsKLSAgICB9LAotCi0gICAgZ2V0IGRhdGEoKQotICAgIHsKLSAgICAgICAgdmFyIGRh
dGEgPSB7IG9iamVjdDogdGhpcy5fbmFtZSB9OwotICAgICAgICB2YXIgdmlldyA9IHRoaXMuZGF0
YUdyaWQuc25hcHNob3RWaWV3OwotICAgICAgICBkYXRhWyJjb3VudCJdID0gIE51bWJlci53aXRo
VGhvdXNhbmRzU2VwYXJhdG9yKHRoaXMuX2NvdW50KTsKLSAgICAgICAgZGF0YVsiZGlzdGFuY2VU
b1dpbmRvdyJdID0gIHRoaXMuX2Rpc3RhbmNlVG9XaW5kb3c7Ci0gICAgICAgIGRhdGFbInNoYWxs
b3dTaXplIl0gPSBOdW1iZXIud2l0aFRob3VzYW5kc1NlcGFyYXRvcih0aGlzLl9zaGFsbG93U2l6
ZSk7Ci0gICAgICAgIGRhdGFbInJldGFpbmVkU2l6ZSJdID0gTnVtYmVyLndpdGhUaG91c2FuZHNT
ZXBhcmF0b3IodGhpcy5fcmV0YWluZWRTaXplKTsKLSAgICAgICAgZGF0YVsiY291bnQtcGVyY2Vu
dCJdID0gIHRoaXMuX3RvUGVyY2VudFN0cmluZyh0aGlzLl9jb3VudFBlcmNlbnQpOwotICAgICAg
ICBkYXRhWyJzaGFsbG93U2l6ZS1wZXJjZW50Il0gPSB0aGlzLl90b1BlcmNlbnRTdHJpbmcodGhp
cy5fc2hhbGxvd1NpemVQZXJjZW50KTsKLSAgICAgICAgZGF0YVsicmV0YWluZWRTaXplLXBlcmNl
bnQiXSA9IHRoaXMuX3RvUGVyY2VudFN0cmluZyh0aGlzLl9yZXRhaW5lZFNpemVQZXJjZW50KTsK
LSAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgfSwKLQotICAgIGdldCBfY291bnRQZXJjZW50KCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jb3VudCAvIHRoaXMuZGF0YUdyaWQuc25hcHNo
b3Qubm9kZUNvdW50ICogMTAwLjA7Ci0gICAgfSwKLQotICAgIGdldCBfcmV0YWluZWRTaXplUGVy
Y2VudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmV0YWluZWRTaXplIC8gdGhpcy5k
YXRhR3JpZC5zbmFwc2hvdC50b3RhbFNpemUgKiAxMDAuMDsKLSAgICB9LAotCi0gICAgZ2V0IF9z
aGFsbG93U2l6ZVBlcmNlbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NoYWxsb3dT
aXplIC8gdGhpcy5kYXRhR3JpZC5zbmFwc2hvdC50b3RhbFNpemUgKiAxMDAuMDsKLSAgICB9Ci19
OwotCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlLnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TGF6eUdyaWROb2RlLnByb3RvdHlw
ZTsKLQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqLwotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dEl0ZXJhdG9yc1R1cGxlID0gZnVuY3Rpb24oaXQxLCBpdDIpCi17Ci0gICAgdGhpcy5faXQxID0g
aXQxOwotICAgIHRoaXMuX2l0MiA9IGl0MjsKLX0KLQotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dEl0ZXJhdG9yc1R1cGxlLnByb3RvdHlwZSA9IHsKLSAgICBkaXNwb3NlOiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICB0aGlzLl9pdDEuZGlzcG9zZSgpOwotICAgICAgICB0aGlzLl9pdDIuZGlz
cG9zZSgpOwotICAgIH0sCi0KLSAgICBzb3J0QW5kUmV3aW5kOiBmdW5jdGlvbihjb21wYXJhdG9y
LCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGFmdGVyU29ydChpZ25vcmVkKQot
ICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9pdDIuc29ydEFuZFJld2luZChjb21wYXJhdG9y
LCBjYWxsYmFjayk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5faXQxLnNvcnRBbmRSZXdpbmQo
Y29tcGFyYXRvciwgYWZ0ZXJTb3J0LmJpbmQodGhpcykpOwotICAgIH0KLX07Ci0KLS8qKgotICog
QGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExhenlH
cmlkTm9kZX0KLSAqLwotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlID0gZnVuY3Rp
b24odHJlZSwgY2xhc3NOYW1lLCBiYXNlQWdncmVnYXRlLCBhZ2dyZWdhdGUpCi17Ci0gICAgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdExhenlHcmlkTm9kZS5jYWxsKHRoaXMsIHRyZWUsIHRydWUp
OwotICAgIHRoaXMuX25hbWUgPSBjbGFzc05hbWU7Ci0gICAgdGhpcy5fYmFzZUluZGV4ZXMgPSBi
YXNlQWdncmVnYXRlID8gYmFzZUFnZ3JlZ2F0ZS5pZHhzIDogW107Ci0gICAgdGhpcy5faW5kZXhl
cyA9IGFnZ3JlZ2F0ZSA/IGFnZ3JlZ2F0ZS5pZHhzIDogW107Ci0gICAgdGhpcy5fcHJvdmlkZXIg
PSB0aGlzLl9jcmVhdGVOb2Rlc1Byb3ZpZGVyKHRyZWUuYmFzZVNuYXBzaG90LCB0cmVlLnNuYXBz
aG90LCBhZ2dyZWdhdGUgPyBhZ2dyZWdhdGUudHlwZSA6IGJhc2VBZ2dyZWdhdGUudHlwZSwgY2xh
c3NOYW1lKTsKLX0KLQotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlLnByb3RvdHlw
ZSA9IHsKLSAgICBjYWxjdWxhdGVEaWZmOiBmdW5jdGlvbihkYXRhR3JpZCwgY2FsbGJhY2spCi0g
ICAgewotICAgICAgICB2YXIgZGlmZiA9IGRhdGFHcmlkLnNuYXBzaG90LmNyZWF0ZURpZmYodGhp
cy5fbmFtZSk7Ci0KLSAgICAgICAgZnVuY3Rpb24gZGlmZkNhbGN1bGF0ZWQoZGlmZlJlc3VsdCkK
LSAgICAgICAgewotICAgICAgICAgICAgZGlmZi5kaXNwb3NlKCk7Ci0gICAgICAgICAgICB0aGlz
Ll9hZGRlZENvdW50ID0gZGlmZlJlc3VsdC5hZGRlZENvdW50OwotICAgICAgICAgICAgdGhpcy5f
cmVtb3ZlZENvdW50ID0gZGlmZlJlc3VsdC5yZW1vdmVkQ291bnQ7Ci0gICAgICAgICAgICB0aGlz
Ll9jb3VudERlbHRhID0gZGlmZlJlc3VsdC5jb3VudERlbHRhOwotICAgICAgICAgICAgdGhpcy5f
YWRkZWRTaXplID0gZGlmZlJlc3VsdC5hZGRlZFNpemU7Ci0gICAgICAgICAgICB0aGlzLl9yZW1v
dmVkU2l6ZSA9IGRpZmZSZXN1bHQucmVtb3ZlZFNpemU7Ci0gICAgICAgICAgICB0aGlzLl9zaXpl
RGVsdGEgPSBkaWZmUmVzdWx0LnNpemVEZWx0YTsKLSAgICAgICAgICAgIHRoaXMuX2Jhc2VJbmRl
eGVzID0gbnVsbDsKLSAgICAgICAgICAgIHRoaXMuX2luZGV4ZXMgPSBudWxsOwotICAgICAgICAg
ICAgY2FsbGJhY2sodGhpcy5fYWRkZWRTaXplID09PSAwICYmIHRoaXMuX3JlbW92ZWRTaXplID09
PSAwKTsKLSAgICAgICAgfQotICAgICAgICBmdW5jdGlvbiBiYXNlU2VsZlNpemVzUmVjZWl2ZWQo
YmFzZVNlbGZTaXplcykKLSAgICAgICAgewotICAgICAgICAgICAgZGlmZi5wdXNoQmFzZVNlbGZT
aXplcyhiYXNlU2VsZlNpemVzKTsKLSAgICAgICAgICAgIGRpZmYuY2FsY3VsYXRlKGRpZmZDYWxj
dWxhdGVkLmJpbmQodGhpcykpOwotICAgICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uIGJhc2VJZHNS
ZWNlaXZlZChiYXNlSWRzKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaWZmLnB1c2hCYXNlSWRz
KGJhc2VJZHMpOwotICAgICAgICAgICAgZGF0YUdyaWQuc25hcHNob3QucHVzaEJhc2VJZHMoZGF0
YUdyaWQuYmFzZVNuYXBzaG90LnVpZCwgdGhpcy5fbmFtZSwgYmFzZUlkcyk7Ci0gICAgICAgICAg
ICBkYXRhR3JpZC5iYXNlU25hcHNob3Qubm9kZUZpZWxkVmFsdWVzQnlJbmRleCgic2VsZlNpemUi
LCB0aGlzLl9iYXNlSW5kZXhlcywgYmFzZVNlbGZTaXplc1JlY2VpdmVkLmJpbmQodGhpcykpOwot
ICAgICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uIGlkc1JlY2VpdmVkKGlkcykKLSAgICAgICAgewot
ICAgICAgICAgICAgZGF0YUdyaWQuYmFzZVNuYXBzaG90LnB1c2hCYXNlSWRzKGRhdGFHcmlkLnNu
YXBzaG90LnVpZCwgdGhpcy5fbmFtZSwgaWRzKTsKLSAgICAgICAgfQotICAgICAgICBkYXRhR3Jp
ZC5iYXNlU25hcHNob3Qubm9kZUZpZWxkVmFsdWVzQnlJbmRleCgiaWQiLCB0aGlzLl9iYXNlSW5k
ZXhlcywgYmFzZUlkc1JlY2VpdmVkLmJpbmQodGhpcykpOwotICAgICAgICBkYXRhR3JpZC5zbmFw
c2hvdC5ub2RlRmllbGRWYWx1ZXNCeUluZGV4KCJpZCIsIHRoaXMuX2luZGV4ZXMsIGlkc1JlY2Vp
dmVkLmJpbmQodGhpcykpOwotICAgIH0sCi0KLSAgICBfY3JlYXRlQ2hpbGROb2RlOiBmdW5jdGlv
bihpdGVtLCBwcm92aWRlcikKLSAgICB7Ci0gICAgICAgIGlmIChwcm92aWRlciA9PT0gdGhpcy5f
cHJvdmlkZXIuX2l0MSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdEluc3RhbmNlTm9kZSh0aGlzLmRhdGFHcmlkLCBudWxsLCBwcm92aWRlci5zbmFwc2hv
dCwgaXRlbSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdEluc3RhbmNlTm9kZSh0aGlzLmRhdGFHcmlkLCBwcm92aWRlci5zbmFw
c2hvdCwgbnVsbCwgaXRlbSk7Ci0gICAgfSwKLQotICAgIF9jcmVhdGVOb2Rlc1Byb3ZpZGVyOiBm
dW5jdGlvbihiYXNlU25hcHNob3QsIHNuYXBzaG90LCBub2RlVHlwZSwgbm9kZUNsYXNzTmFtZSkK
LSAgICB7Ci0gICAgICAgIHZhciBjbGFzc05hbWUgPSB0aGlzLl9uYW1lOwotICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJdGVyYXRvcnNUdXBsZSgKLSAgICAgICAg
ICAgIGNyZWF0ZVByb3ZpZGVyKHNuYXBzaG90LCBiYXNlU25hcHNob3QpLCBjcmVhdGVQcm92aWRl
cihiYXNlU25hcHNob3QsIHNuYXBzaG90KSk7Ci0KLSAgICAgICAgZnVuY3Rpb24gY3JlYXRlUHJv
dmlkZXIoc25hcHNob3QsIG90aGVyU25hcHNob3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZh
ciBvdGhlclNuYXBzaG90SWQgPSBvdGhlclNuYXBzaG90LnVpZDsKLSAgICAgICAgICAgIHZhciBw
cm92aWRlciA9IHNuYXBzaG90LmNyZWF0ZU5vZGVzUHJvdmlkZXIoCi0gICAgICAgICAgICAgICAg
ImZ1bmN0aW9uIChub2RlKSB7IiArCi0gICAgICAgICAgICAgICAgIiAgICAgcmV0dXJuIG5vZGUu
dHlwZSA9PT0gXCIiICsgbm9kZVR5cGUgKyAiXCIgIiArCi0gICAgICAgICAgICAgICAgKG5vZGVD
bGFzc05hbWUgIT09IG51bGwgPyAiJiYgbm9kZS5jbGFzc05hbWUgPT09IFwiIiArIG5vZGVDbGFz
c05hbWUgKyAiXCIiIDogIiIpICsKLSAgICAgICAgICAgICAgICAiICAgICAgICAgJiYgIXRoaXMu
YmFzZVNuYXBzaG90SGFzTm9kZSgiICsgb3RoZXJTbmFwc2hvdElkICsgIiwgXCIiICsgY2xhc3NO
YW1lICsgIlwiLCBub2RlLmlkKTsiICsKLSAgICAgICAgICAgICAgICAifSIpOwotICAgICAgICAg
ICAgcHJvdmlkZXIuc25hcHNob3QgPSBzbmFwc2hvdDsKLSAgICAgICAgICAgIHJldHVybiBwcm92
aWRlcjsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBfY2hpbGRIYXNoRm9yRW50aXR5OiBmdW5j
dGlvbihub2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5vZGUuaWQ7Ci0gICAgfSwKLQotICAg
IF9jaGlsZEhhc2hGb3JOb2RlOiBmdW5jdGlvbihjaGlsZE5vZGUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gY2hpbGROb2RlLnNuYXBzaG90Tm9kZUlkOwotICAgIH0sCi0KLSAgICBjb21wYXJhdG9y
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgc29ydEFzY2VuZGluZyA9IHRoaXMuZGF0
YUdyaWQuc29ydE9yZGVyID09PSAiYXNjZW5kaW5nIjsKLSAgICAgICAgdmFyIHNvcnRDb2x1bW5J
ZGVudGlmaWVyID0gdGhpcy5kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllcjsKLSAgICAgICAg
dmFyIHNvcnRGaWVsZHMgPSB7Ci0gICAgICAgICAgICBvYmplY3Q6IFsiaWQiLCBzb3J0QXNjZW5k
aW5nLCAic2VsZlNpemUiLCBmYWxzZV0sCi0gICAgICAgICAgICBhZGRlZENvdW50OiBbInNlbGZT
aXplIiwgc29ydEFzY2VuZGluZywgImlkIiwgdHJ1ZV0sCi0gICAgICAgICAgICByZW1vdmVkQ291
bnQ6IFsic2VsZlNpemUiLCBzb3J0QXNjZW5kaW5nLCAiaWQiLCB0cnVlXSwKLSAgICAgICAgICAg
IGNvdW50RGVsdGE6IFsic2VsZlNpemUiLCBzb3J0QXNjZW5kaW5nLCAiaWQiLCB0cnVlXSwKLSAg
ICAgICAgICAgIGFkZGVkU2l6ZTogWyJzZWxmU2l6ZSIsIHNvcnRBc2NlbmRpbmcsICJpZCIsIHRy
dWVdLAotICAgICAgICAgICAgcmVtb3ZlZFNpemU6IFsic2VsZlNpemUiLCBzb3J0QXNjZW5kaW5n
LCAiaWQiLCB0cnVlXSwKLSAgICAgICAgICAgIHNpemVEZWx0YTogWyJzZWxmU2l6ZSIsIHNvcnRB
c2NlbmRpbmcsICJpZCIsIHRydWVdCi0gICAgICAgIH1bc29ydENvbHVtbklkZW50aWZpZXJdOwot
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0
ZXJhdG9yLnByb3RvdHlwZS5jcmVhdGVDb21wYXJhdG9yKHNvcnRGaWVsZHMpOwotICAgIH0sCi0K
LSAgICBwb3B1bGF0ZUNoaWxkcmVuOiBmdW5jdGlvbihwcm92aWRlciwgaG93TWFueSwgYXRJbmRl
eCwgYWZ0ZXJQb3B1bGF0ZSkKLSAgICB7Ci0gICAgICAgIGlmICghcHJvdmlkZXIgJiYgIWhvd01h
bnkpIHsKLSAgICAgICAgICAgIHZhciBmaXJzdFByb3ZpZGVyUG9wdWxhdGVkID0gZnVuY3Rpb24o
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RHcmlkTm9kZS5wcm90b3R5cGUucG9wdWxhdGVDaGlsZHJlbi5jYWxsKHRoaXMsIHRoaXMuX3By
b3ZpZGVyLl9pdDIsIHRoaXMuX2RlZmF1bHRQb3B1bGF0ZUNvdW50LCBhdEluZGV4LCBhZnRlclBv
cHVsYXRlLCBmYWxzZSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuLmNhbGwodGhp
cywgdGhpcy5fcHJvdmlkZXIuX2l0MSwgdGhpcy5fZGVmYXVsdFBvcHVsYXRlQ291bnQsIGF0SW5k
ZXgsIGZpcnN0UHJvdmlkZXJQb3B1bGF0ZWQuYmluZCh0aGlzKSwgdHJ1ZSk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoIWhvd01hbnkpIHsKLSAgICAgICAgICAgIHZhciBmaXJzdFByb3ZpZGVyUG9wdWxh
dGVkID0gZnVuY3Rpb24oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUucG9wdWxhdGVDaGlsZHJlbi5jYWxs
KHRoaXMsIHRoaXMuX3Byb3ZpZGVyLl9pdDIsIG51bGwsIGF0SW5kZXgsIGFmdGVyUG9wdWxhdGUs
IGZhbHNlKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90R3JpZE5vZGUucHJvdG90eXBlLnBvcHVsYXRlQ2hpbGRyZW4uY2FsbCh0aGlzLCB0aGlz
Ll9wcm92aWRlci5faXQxLCBudWxsLCBhdEluZGV4LCBmaXJzdFByb3ZpZGVyUG9wdWxhdGVkLmJp
bmQodGhpcyksIHRydWUpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUucG9wdWxhdGVDaGlsZHJlbi5jYWxsKHRo
aXMsIHByb3ZpZGVyLCBob3dNYW55LCBhdEluZGV4LCBhZnRlclBvcHVsYXRlLCBmYWxzZSk7Ci0g
ICAgfSwKLQotICAgIF9zaWduRm9yRGVsdGE6IGZ1bmN0aW9uKGRlbHRhKQotICAgIHsKLSAgICAg
ICAgaWYgKGRlbHRhID09PSAwKQotICAgICAgICAgICAgcmV0dXJuICIiOwotICAgICAgICBpZiAo
ZGVsdGEgPiAwKQotICAgICAgICAgICAgcmV0dXJuICIrIjsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcmV0dXJuICJcdTIyMTIiOyAgLy8gTWF0aCBtaW51cyBzaWduLCBzYW1lIHdpZHRoIGFz
IHBsdXMuCi0gICAgfSwKLQotICAgIGdldCBkYXRhKCkKLSAgICB7Ci0gICAgICAgIHZhciBkYXRh
ID0ge29iamVjdDogdGhpcy5fbmFtZX07Ci0KLSAgICAgICAgZGF0YVsiYWRkZWRDb3VudCJdID0g
TnVtYmVyLndpdGhUaG91c2FuZHNTZXBhcmF0b3IodGhpcy5fYWRkZWRDb3VudCk7Ci0gICAgICAg
IGRhdGFbInJlbW92ZWRDb3VudCJdID0gTnVtYmVyLndpdGhUaG91c2FuZHNTZXBhcmF0b3IodGhp
cy5fcmVtb3ZlZENvdW50KTsKLSAgICAgICAgZGF0YVsiY291bnREZWx0YSJdID0gdGhpcy5fc2ln
bkZvckRlbHRhKHRoaXMuX2NvdW50RGVsdGEpICsgTnVtYmVyLndpdGhUaG91c2FuZHNTZXBhcmF0
b3IoTWF0aC5hYnModGhpcy5fY291bnREZWx0YSkpOwotICAgICAgICBkYXRhWyJhZGRlZFNpemUi
XSA9IE51bWJlci53aXRoVGhvdXNhbmRzU2VwYXJhdG9yKHRoaXMuX2FkZGVkU2l6ZSk7Ci0gICAg
ICAgIGRhdGFbInJlbW92ZWRTaXplIl0gPSBOdW1iZXIud2l0aFRob3VzYW5kc1NlcGFyYXRvcih0
aGlzLl9yZW1vdmVkU2l6ZSk7Ci0gICAgICAgIGRhdGFbInNpemVEZWx0YSJdID0gdGhpcy5fc2ln
bkZvckRlbHRhKHRoaXMuX3NpemVEZWx0YSkgKyBOdW1iZXIud2l0aFRob3VzYW5kc1NlcGFyYXRv
cihNYXRoLmFicyh0aGlzLl9zaXplRGVsdGEpKTsKLQotICAgICAgICByZXR1cm4gZGF0YTsKLSAg
ICB9Ci19OwotCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMYXp5R3JpZE5vZGUucHJvdG90eXBl
OwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZX0KLSAqLwotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dERvbWluYXRvck9iamVjdE5vZGUgPSBmdW5jdGlvbih0cmVlLCBub2RlKQotewotICAgIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5jYWxsKHRoaXMsIHRyZWUsIG5v
ZGUpOwotICAgIHRoaXMuX3Byb3ZpZGVyID0gdGhpcy5fY3JlYXRlUHJvdmlkZXIodHJlZS5zbmFw
c2hvdCwgbm9kZS5ub2RlSW5kZXgpOwotICAgIHRoaXMudXBkYXRlSGFzQ2hpbGRyZW4oKTsKLX07
Ci0KLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JPYmplY3ROb2RlLnByb3RvdHlw
ZSA9IHsKLSAgICBfY3JlYXRlQ2hpbGROb2RlOiBmdW5jdGlvbihpdGVtKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RG9taW5hdG9yT2JqZWN0Tm9k
ZSh0aGlzLmRhdGFHcmlkLCBpdGVtKTsKLSAgICB9LAotCi0gICAgX2NyZWF0ZVByb3ZpZGVyOiBm
dW5jdGlvbihzbmFwc2hvdCwgbm9kZUluZGV4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHNuYXBz
aG90LmNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JEb21pbmF0b3Iobm9kZUluZGV4LAotICAgICAgICAg
ICAgImZ1bmN0aW9uIChub2RlKSB7IHJldHVybiB0cnVlOyB9Iik7Ci0gICAgfSwKLQotICAgIF9j
aGlsZEhhc2hGb3JFbnRpdHk6IGZ1bmN0aW9uKG5vZGUpCi0gICAgewotICAgICAgICByZXR1cm4g
bm9kZS5pZDsKLSAgICB9LAotCi0gICAgX2NoaWxkSGFzaEZvck5vZGU6IGZ1bmN0aW9uKGNoaWxk
Tm9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjaGlsZE5vZGUuc25hcHNob3ROb2RlSWQ7Ci0g
ICAgfSwKLQotICAgIGNvbXBhcmF0b3I6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBz
b3J0QXNjZW5kaW5nID0gdGhpcy5kYXRhR3JpZC5zb3J0T3JkZXIgPT09ICJhc2NlbmRpbmciOwot
ICAgICAgICB2YXIgc29ydENvbHVtbklkZW50aWZpZXIgPSB0aGlzLmRhdGFHcmlkLnNvcnRDb2x1
bW5JZGVudGlmaWVyOwotICAgICAgICB2YXIgc29ydEZpZWxkcyA9IHsKLSAgICAgICAgICAgIG9i
amVjdDogWyJpZCIsIHNvcnRBc2NlbmRpbmcsICJyZXRhaW5lZFNpemUiLCBmYWxzZV0sCi0gICAg
ICAgICAgICBzaGFsbG93U2l6ZTogWyJzZWxmU2l6ZSIsIHNvcnRBc2NlbmRpbmcsICJpZCIsIHRy
dWVdLAotICAgICAgICAgICAgcmV0YWluZWRTaXplOiBbInJldGFpbmVkU2l6ZSIsIHNvcnRBc2Nl
bmRpbmcsICJpZCIsIHRydWVdCi0gICAgICAgIH1bc29ydENvbHVtbklkZW50aWZpZXJdOwotICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJh
dG9yLnByb3RvdHlwZS5jcmVhdGVDb21wYXJhdG9yKHNvcnRGaWVsZHMpOwotICAgIH0sCi0KLSAg
ICBfZW1wdHlEYXRhOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4ge307Ci0gICAg
fQotfTsKLQotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvck9iamVjdE5vZGUucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0
Tm9kZS5wcm90b3R5cGU7Ci0KLWZ1bmN0aW9uIE1peEluU25hcHNob3ROb2RlRnVuY3Rpb25zKHNv
dXJjZVByb3RvdHlwZSwgdGFyZ2V0UHJvdG90eXBlKQotewotICAgIHRhcmdldFByb3RvdHlwZS5f
Y2hpbGRIYXNoRm9yRW50aXR5ID0gc291cmNlUHJvdG90eXBlLl9jaGlsZEhhc2hGb3JFbnRpdHk7
Ci0gICAgdGFyZ2V0UHJvdG90eXBlLl9jaGlsZEhhc2hGb3JOb2RlID0gc291cmNlUHJvdG90eXBl
Ll9jaGlsZEhhc2hGb3JOb2RlOwotICAgIHRhcmdldFByb3RvdHlwZS5jb21wYXJhdG9yID0gc291
cmNlUHJvdG90eXBlLmNvbXBhcmF0b3I7Ci0gICAgdGFyZ2V0UHJvdG90eXBlLl9jcmVhdGVDaGls
ZE5vZGUgPSBzb3VyY2VQcm90b3R5cGUuX2NyZWF0ZUNoaWxkTm9kZTsKLSAgICB0YXJnZXRQcm90
b3R5cGUuX2NyZWF0ZVByb3ZpZGVyID0gc291cmNlUHJvdG90eXBlLl9jcmVhdGVQcm92aWRlcjsK
LSAgICB0YXJnZXRQcm90b3R5cGUuZGlzcG9zZSA9IHNvdXJjZVByb3RvdHlwZS5kaXNwb3NlOwot
ICAgIHRhcmdldFByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuID0gc291cmNlUHJvdG90eXBlLnBv
cHVsYXRlQ2hpbGRyZW47Ci0gICAgdGFyZ2V0UHJvdG90eXBlLl9zYXZlQ2hpbGRyZW4gPSBzb3Vy
Y2VQcm90b3R5cGUuX3NhdmVDaGlsZHJlbjsKLSAgICB0YXJnZXRQcm90b3R5cGUuc29ydCA9IHNv
dXJjZVByb3RvdHlwZS5zb3J0OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDE3NjM2MjZkNWExZmRiY2FhOTJlNzYxYmI2YjczNTBmNGFlNDVhNTAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcworKysgL2Rl
di9udWxsCkBAIC0xLDEyMTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5k
cyB7V2ViSW5zcGVjdG9yLkRhdGFHcmlkfQotICogQHBhcmFtIHtib29sZWFuPX0gZGVmZXJOb2Rl
Q29udGVudENyZWF0aW9uCi0gKi8KLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURh
dGFHcmlkID0gZnVuY3Rpb24oY29sdW1ucywgZGVmZXJOb2RlQ29udGVudENyZWF0aW9uKQotewot
ICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5jYWxsKHRoaXMsIGNvbHVtbnMpOwotICAgIHRoaXMu
YWRkRXZlbnRMaXN0ZW5lcigic29ydGluZyBjaGFuZ2VkIiwgdGhpcy5zb3J0aW5nQ2hhbmdlZCwg
dGhpcyk7Ci0KLSAgICB0aGlzLl9kZWZlck5vZGVDb250ZW50Q3JlYXRpb24gPSBkZWZlck5vZGVD
b250ZW50Q3JlYXRpb247Ci0gICAgaWYgKGRlZmVyTm9kZUNvbnRlbnRDcmVhdGlvbikKLSAgICAg
ICAgdGhpcy5zY3JvbGxDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5f
b25TY3JvbGwuYmluZCh0aGlzKSwgdHJ1ZSk7Ci19Ci0KLVdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RTb3J0YWJsZURhdGFHcmlkLnByb3RvdHlwZSA9IHsKLSAgICBkaXNwb3NlOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHRoaXMuY2hpbGRyZW4ubGVuZ3Ro
OyBpIDwgbDsgKytpKQotICAgICAgICAgICAgdGhpcy5jaGlsZHJlbltpXS5kaXNwb3NlKCk7Ci0g
ICAgfSwKLQotICAgIHJlc2V0U29ydGluZ0NhY2hlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICBkZWxldGUgdGhpcy5fbGFzdFNvcnRDb2x1bW5JZGVudGlmaWVyOwotICAgICAgICBkZWxldGUg
dGhpcy5fbGFzdFNvcnRBc2NlbmRpbmc7Ci0gICAgfSwKLQotICAgIHNvcnRpbmdDaGFuZ2VkOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgc29ydEFzY2VuZGluZyA9IHRoaXMuc29ydE9y
ZGVyID09PSAiYXNjZW5kaW5nIjsKLSAgICAgICAgdmFyIHNvcnRDb2x1bW5JZGVudGlmaWVyID0g
dGhpcy5zb3J0Q29sdW1uSWRlbnRpZmllcjsKLSAgICAgICAgaWYgKHRoaXMuX2xhc3RTb3J0Q29s
dW1uSWRlbnRpZmllciA9PT0gc29ydENvbHVtbklkZW50aWZpZXIgJiYgdGhpcy5fbGFzdFNvcnRB
c2NlbmRpbmcgPT09IHNvcnRBc2NlbmRpbmcpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IHRoaXMuX2xhc3RTb3J0Q29sdW1uSWRlbnRpZmllciA9IHNvcnRDb2x1bW5JZGVudGlmaWVyOwot
ICAgICAgICB0aGlzLl9sYXN0U29ydEFzY2VuZGluZyA9IHNvcnRBc2NlbmRpbmc7Ci0gICAgICAg
IHZhciBzb3J0RmllbGRzID0gdGhpcy5fc29ydEZpZWxkcyhzb3J0Q29sdW1uSWRlbnRpZmllciwg
c29ydEFzY2VuZGluZyk7Ci0KLSAgICAgICAgZnVuY3Rpb24gU29ydEJ5VHdvRmllbGRzKG5vZGVB
LCBub2RlQikKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGZpZWxkMSA9IG5vZGVBW3NvcnRG
aWVsZHNbMF1dOwotICAgICAgICAgICAgdmFyIGZpZWxkMiA9IG5vZGVCW3NvcnRGaWVsZHNbMF1d
OwotICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGZpZWxkMSA8IGZpZWxkMiA/IC0xIDogKGZpZWxk
MSA+IGZpZWxkMiA/IDEgOiAwKTsKLSAgICAgICAgICAgIGlmICghc29ydEZpZWxkc1sxXSkKLSAg
ICAgICAgICAgICAgICByZXN1bHQgPSAtcmVzdWx0OwotICAgICAgICAgICAgaWYgKHJlc3VsdCAh
PT0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgZmllbGQx
ID0gbm9kZUFbc29ydEZpZWxkc1syXV07Ci0gICAgICAgICAgICBmaWVsZDIgPSBub2RlQltzb3J0
RmllbGRzWzJdXTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGZpZWxkMSA8IGZpZWxkMiA/IC0xIDog
KGZpZWxkMSA+IGZpZWxkMiA/IDEgOiAwKTsKLSAgICAgICAgICAgIGlmICghc29ydEZpZWxkc1sz
XSkKLSAgICAgICAgICAgICAgICByZXN1bHQgPSAtcmVzdWx0OwotICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9wZXJmb3JtU29ydGluZyhTb3J0QnlU
d29GaWVsZHMpOwotICAgIH0sCi0KLSAgICB1cGRhdGVWaXNpYmxlTm9kZXM6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fZGVmZXJOb2RlQ29udGVudENyZWF0aW9uKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgc2Nyb2xsVG9wID0gdGhpcy5zY3JvbGxDb250
YWluZXIuc2Nyb2xsVG9wOwotICAgICAgICB2YXIgcm93SGVpZ2h0ID0gMTY7Ci0KLSAgICAgICAg
dmFyIGhlaWdodCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm9mZnNldEhlaWdodDsKLSAgICAgICAg
dmFyIHZpc2libGVSb3dzQ291bnQgPSBNYXRoLnJvdW5kKGhlaWdodCAvIHJvd0hlaWdodCkgKyAx
OwotCi0gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47Ci0KLSAgICAgICAgdmFy
IGkgPSAwOwotICAgICAgICB3aGlsZSAoaSA8IGNoaWxkcmVuLmxlbmd0aCkgewotICAgICAgICAg
ICAgaWYgKGNoaWxkcmVuW2ldLnJldmVhbGVkKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRvcCA9
IGNoaWxkcmVuW2ldLmVsZW1lbnQub2Zmc2V0VG9wOwotICAgICAgICAgICAgICAgIGlmICh0b3Ag
Pj0gc2Nyb2xsVG9wKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICsraTsKLSAgICAgICAgfQotCi0gICAgICAgIHdoaWxlIChpIDwgY2hpbGRy
ZW4ubGVuZ3RoICYmIHZpc2libGVSb3dzQ291bnQpIHsKLSAgICAgICAgICAgIGlmIChjaGlsZHJl
bltpXS5yZXZlYWxlZCkgewotICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldLmVuc3VyZUNvbnRl
bnRDcmVhdGVkKCk7Ci0gICAgICAgICAgICAgICAgLS12aXNpYmxlUm93c0NvdW50OwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgKytpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIG9uUmVz
aXplOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVOb2Rlcygp
OwotICAgIH0sCi0KLSAgICBfb25TY3JvbGw6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgdGhpcy51cGRhdGVWaXNpYmxlTm9kZXMoKTsKLSAgICB9LAotCi0gICAgX3BlcmZvcm1Tb3J0
aW5nOiBmdW5jdGlvbihzb3J0RnVuY3Rpb24pCi0gICAgewotICAgICAgICB0aGlzLnJlY3Vyc2l2
ZVNvcnRpbmdFbnRlcigpOwotICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuOwot
ICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgICAgIGNoaWxkcmVuLnNvcnQoc29y
dEZ1bmN0aW9uKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7
IGkgPCBsOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldOwotICAg
ICAgICAgICAgdmFyIHJldmVhbGVkID0gY2hpbGQucmV2ZWFsZWQ7Ci0gICAgICAgICAgICB0aGlz
LmFwcGVuZENoaWxkKGNoaWxkKTsKLSAgICAgICAgICAgIGNoaWxkLnJldmVhbGVkID0gcmV2ZWFs
ZWQ7Ci0gICAgICAgICAgICBpZiAoY2hpbGQuZXhwYW5kZWQpCi0gICAgICAgICAgICAgICAgY2hp
bGQuc29ydCgpOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMucmVjdXJzaXZlU29ydGluZ0xlYXZl
KCk7Ci0gICAgICAgIHRoaXMudXBkYXRlVmlzaWJsZU5vZGVzKCk7Ci0gICAgfSwKLQotICAgIHJl
Y3Vyc2l2ZVNvcnRpbmdFbnRlcjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCEoIl9y
ZWN1cnNpdmVTb3J0aW5nRGVwdGgiIGluIHRoaXMpKQotICAgICAgICAgICAgdGhpcy5fcmVjdXJz
aXZlU29ydGluZ0RlcHRoID0gMTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKyt0aGlzLl9y
ZWN1cnNpdmVTb3J0aW5nRGVwdGg7Ci0gICAgfSwKLQotICAgIHJlY3Vyc2l2ZVNvcnRpbmdMZWF2
ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCEoIl9yZWN1cnNpdmVTb3J0aW5nRGVw
dGgiIGluIHRoaXMpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoIS0tdGhpcy5f
cmVjdXJzaXZlU29ydGluZ0RlcHRoKSB7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fcmVjdXJz
aXZlU29ydGluZ0RlcHRoOwotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoInNvcnRpbmcgY29tcGxldGUiKTsKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLVdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlOwotCi0vKioKLSAqIEBjb25zdHJ1Y3Rvcgot
ICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkfQot
ICogQHBhcmFtIHtPYmplY3Q9fSBjb2x1bW5zCi0gKi8KLVdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RDb250YWlubWVudERhdGFHcmlkID0gZnVuY3Rpb24oY29sdW1ucykKLXsKLSAgICBjb2x1bW5z
ID0gY29sdW1ucyB8fCB7Ci0gICAgICAgIG9iamVjdDogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJPYmplY3QiKSwgZGlzY2xvc3VyZTogdHJ1ZSwgc29ydGFibGU6IHRydWUgfSwKLSAg
ICAgICAgc2hhbGxvd1NpemU6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hhbGxv
dyBTaXplIiksIHdpZHRoOiAiMTIwcHgiLCBzb3J0YWJsZTogdHJ1ZSB9LAotICAgICAgICByZXRh
aW5lZFNpemU6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmV0YWluZWQgU2l6ZSIp
LCB3aWR0aDogIjEyMHB4Iiwgc29ydGFibGU6IHRydWUsIHNvcnQ6ICJkZXNjZW5kaW5nIiB9Ci0g
ICAgfTsKLSAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3JpZC5jYWxs
KHRoaXMsIGNvbHVtbnMpOwotfQotCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFpbm1l
bnREYXRhR3JpZC5wcm90b3R5cGUgPSB7Ci0gICAgX2RlZmF1bHRQb3B1bGF0ZUNvdW50OiAxMDAs
Ci0KLSAgICBleHBhbmRSb3V0ZTogZnVuY3Rpb24ocm91dGUpCi0gICAgewotICAgICAgICBmdW5j
dGlvbiBuZXh0U3RlcChwYXJlbnQsIGhvcEluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoaG9wSW5kZXggPj0gcm91dGUubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgcGFyZW50LmVs
ZW1lbnQuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCh0cnVlKTsKLSAgICAgICAgICAgICAgICBwYXJl
bnQuc2VsZWN0KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdmFyIG5vZGVJbmRleCA9IHJvdXRlW2hvcEluZGV4XTsKLSAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwLCBsID0gcGFyZW50LmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7ICsraSkgewot
ICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IHBhcmVudC5jaGlsZHJlbltpXTsKLSAgICAgICAg
ICAgICAgICBpZiAoY2hpbGQuc25hcHNob3ROb2RlSW5kZXggPT09IG5vZGVJbmRleCkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZXhwYW5kZWQpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBuZXh0U3RlcChjaGlsZCwgaG9wSW5kZXggKyAxKTsKLSAgICAgICAgICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhZnRlckV4cGFuZCgpCi0g
ICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hp
bGQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9wdWxhdGUgY29tcGxldGUiLCBhZnRlckV4cGFuZCwg
bnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhc3RDaGlsZCA9IGNoaWxk
LmNoaWxkcmVuW2NoaWxkLmNoaWxkcmVuLmxlbmd0aCAtIDFdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghbGFzdENoaWxkLnNob3dBbGwpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5leHRTdGVwKGNoaWxkLCBob3BJbmRleCArIDEpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGls
ZC5hZGRFdmVudExpc3RlbmVyKCJwb3B1bGF0ZSBjb21wbGV0ZSIsIGFmdGVyRXhwYW5kLCBudWxs
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENoaWxkLnNob3dBbGwuY2xp
Y2soKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5hZGRFdmVudExpc3RlbmVyKCJw
b3B1bGF0ZSBjb21wbGV0ZSIsIGFmdGVyRXhwYW5kLCBudWxsKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNoaWxkLmV4cGFuZCgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICBuZXh0U3RlcCh0aGlzLCAwKTsKLSAgICB9LAotCi0gICAgc2V0RGF0YVNv
dXJjZTogZnVuY3Rpb24oc25hcHNob3RWaWV3LCBzbmFwc2hvdCwgbm9kZUluZGV4KQotICAgIHsK
LSAgICAgICAgdGhpcy5zbmFwc2hvdFZpZXcgPSBzbmFwc2hvdFZpZXc7Ci0gICAgICAgIHRoaXMu
c25hcHNob3QgPSBzbmFwc2hvdDsKLSAgICAgICAgdGhpcy5zbmFwc2hvdE5vZGVJbmRleCA9IG5v
ZGVJbmRleCB8fCB0aGlzLnNuYXBzaG90LnJvb3ROb2RlSW5kZXg7Ci0gICAgICAgIHRoaXMuX3By
b3ZpZGVyID0gdGhpcy5fY3JlYXRlUHJvdmlkZXIoc25hcHNob3QsIHRoaXMuc25hcHNob3ROb2Rl
SW5kZXgsIHRoaXMpOwotICAgICAgICB0aGlzLnNvcnQoKTsKLSAgICB9LAotCi0gICAgc29ydGlu
Z0NoYW5nZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuc29ydCgpOwotICAgIH0K
LX07Ci0KLU1peEluU25hcHNob3ROb2RlRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RPYmplY3ROb2RlLnByb3RvdHlwZSwgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnRhaW5t
ZW50RGF0YUdyaWQucHJvdG90eXBlKTsKLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb250YWlu
bWVudERhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90U29ydGFibGVEYXRhR3JpZC5wcm90b3R5cGU7Ci0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0g
KiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnRhaW5tZW50RGF0YUdyaWR9
Ci0gKi8KLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5tZW50RGF0YUdyaWQgPSBmdW5j
dGlvbigpCi17Ci0gICAgdGhpcy5zaG93UmV0YWluaW5nRWRnZXMgPSB0cnVlOwotICAgIHZhciBj
b2x1bW5zID0gewotICAgICAgICBvYmplY3Q6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiT2JqZWN0IiksIGRpc2Nsb3N1cmU6IHRydWUsIHNvcnRhYmxlOiB0cnVlIH0sCi0gICAgICAg
IHNoYWxsb3dTaXplOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNoYWxsb3cgU2l6
ZSIpLCB3aWR0aDogIjEyMHB4Iiwgc29ydGFibGU6IHRydWUgfSwKLSAgICAgICAgcmV0YWluZWRT
aXplOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJldGFpbmVkIFNpemUiKSwgd2lk
dGg6ICIxMjBweCIsIHNvcnRhYmxlOiB0cnVlIH0sCi0gICAgICAgIGRpc3RhbmNlVG9XaW5kb3c6
IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGlzdGFuY2UiKSwgd2lkdGg6ICI4MHB4
Iiwgc29ydGFibGU6IHRydWUsIHNvcnQ6ICJhc2NlbmRpbmciIH0KLSAgICB9OwotICAgIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RDb250YWlubWVudERhdGFHcmlkLmNhbGwodGhpcywgY29sdW1u
cyk7Ci19Ci0KLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5tZW50RGF0YUdyaWQucHJv
dG90eXBlID0gewotICAgIF9zb3J0RmllbGRzOiBmdW5jdGlvbihzb3J0Q29sdW1uLCBzb3J0QXNj
ZW5kaW5nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIG9iamVjdDogWyJf
bmFtZSIsIHNvcnRBc2NlbmRpbmcsICJfY291bnQiLCBmYWxzZV0sCi0gICAgICAgICAgICBjb3Vu
dDogWyJfY291bnQiLCBzb3J0QXNjZW5kaW5nLCAiX25hbWUiLCB0cnVlXSwKLSAgICAgICAgICAg
IHNoYWxsb3dTaXplOiBbIl9zaGFsbG93U2l6ZSIsIHNvcnRBc2NlbmRpbmcsICJfbmFtZSIsIHRy
dWVdLAotICAgICAgICAgICAgcmV0YWluZWRTaXplOiBbIl9yZXRhaW5lZFNpemUiLCBzb3J0QXNj
ZW5kaW5nLCAiX25hbWUiLCB0cnVlXSwKLSAgICAgICAgICAgIGRpc3RhbmNlVG9XaW5kb3c6IFsi
X2Rpc3RhbmNlVG9XaW5kb3ciLCBzb3J0QXNjZW5kaW5nLCAiX25hbWUiLCB0cnVlXQotICAgICAg
ICB9W3NvcnRDb2x1bW5dOwotICAgIH0sCi0KLSAgICByZXNldDogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICB0aGlzLnJlc2V0U29ydGlu
Z0NhY2hlKCk7Ci0gICAgfSwKLX0KLQotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbm1l
bnREYXRhR3JpZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dENvbnRhaW5tZW50RGF0YUdyaWQucHJvdG90eXBlOwotCi0vKioKLSAqIEBjb25zdHJ1Y3Rvcgot
ICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkfQot
ICovCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JzRGF0YUdyaWQgPSBmdW5j
dGlvbigpCi17Ci0gICAgdmFyIGNvbHVtbnMgPSB7Ci0gICAgICAgIG9iamVjdDogeyB0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb25zdHJ1Y3RvciIpLCBkaXNjbG9zdXJlOiB0cnVlLCBz
b3J0YWJsZTogdHJ1ZSB9LAotICAgICAgICBkaXN0YW5jZVRvV2luZG93OiB7IHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkRpc3RhbmNlIiksIHdpZHRoOiAiOTBweCIsIHNvcnRhYmxlOiB0
cnVlIH0sCi0gICAgICAgIGNvdW50OiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9i
amVjdHMgQ291bnQiKSwgd2lkdGg6ICI5MHB4Iiwgc29ydGFibGU6IHRydWUgfSwKLSAgICAgICAg
c2hhbGxvd1NpemU6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hhbGxvdyBTaXpl
IiksIHdpZHRoOiAiMTIwcHgiLCBzb3J0YWJsZTogdHJ1ZSB9LAotICAgICAgICByZXRhaW5lZFNp
emU6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmV0YWluZWQgU2l6ZSIpLCB3aWR0
aDogIjEyMHB4Iiwgc29ydDogImRlc2NlbmRpbmciLCBzb3J0YWJsZTogdHJ1ZSB9Ci0gICAgfTsK
LSAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3JpZC5jYWxsKHRoaXMs
IGNvbHVtbnMsIHRydWUpOwotICAgIHRoaXMuX3Byb2ZpbGVJbmRleCA9IC0xOwotfQotCi1XZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JzRGF0YUdyaWQucHJvdG90eXBlID0gewot
ICAgIF9kZWZhdWx0UG9wdWxhdGVDb3VudDogMTAwLAotCi0gICAgX3NvcnRGaWVsZHM6IGZ1bmN0
aW9uKHNvcnRDb2x1bW4sIHNvcnRBc2NlbmRpbmcpCi0gICAgewotICAgICAgICByZXR1cm4gewot
ICAgICAgICAgICAgb2JqZWN0OiBbIl9uYW1lIiwgc29ydEFzY2VuZGluZywgIl9jb3VudCIsIGZh
bHNlXSwKLSAgICAgICAgICAgIGRpc3RhbmNlVG9XaW5kb3c6IFsiX2Rpc3RhbmNlVG9XaW5kb3ci
LCBzb3J0QXNjZW5kaW5nLCAiX3JldGFpbmVkU2l6ZSIsIHRydWVdLAotICAgICAgICAgICAgY291
bnQ6IFsiX2NvdW50Iiwgc29ydEFzY2VuZGluZywgIl9uYW1lIiwgdHJ1ZV0sCi0gICAgICAgICAg
ICBzaGFsbG93U2l6ZTogWyJfc2hhbGxvd1NpemUiLCBzb3J0QXNjZW5kaW5nLCAiX25hbWUiLCB0
cnVlXSwKLSAgICAgICAgICAgIHJldGFpbmVkU2l6ZTogWyJfcmV0YWluZWRTaXplIiwgc29ydEFz
Y2VuZGluZywgIl9uYW1lIiwgdHJ1ZV0KLSAgICAgICAgfVtzb3J0Q29sdW1uXTsKLSAgICB9LAot
Ci0gICAgc2V0RGF0YVNvdXJjZTogZnVuY3Rpb24oc25hcHNob3RWaWV3LCBzbmFwc2hvdCkKLSAg
ICB7Ci0gICAgICAgIHRoaXMuc25hcHNob3RWaWV3ID0gc25hcHNob3RWaWV3OwotICAgICAgICB0
aGlzLnNuYXBzaG90ID0gc25hcHNob3Q7Ci0gICAgICAgIGlmICh0aGlzLl9wcm9maWxlSW5kZXgg
PT09IC0xKQotICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZUNoaWxkcmVuKCk7Ci0gICAgfSwKLQot
ICAgIHBvcHVsYXRlQ2hpbGRyZW46IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGZ1bmN0aW9u
IGFnZ3JlZ2F0ZXNSZWNlaXZlZChrZXksIGFnZ3JlZ2F0ZXMpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGZvciAodmFyIGNvbnN0cnVjdG9yIGluIGFnZ3JlZ2F0ZXMpCi0gICAgICAgICAgICAgICAg
dGhpcy5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9y
Tm9kZSh0aGlzLCBjb25zdHJ1Y3RvciwgYWdncmVnYXRlc1tjb25zdHJ1Y3Rvcl0sIGtleSkpOwot
ICAgICAgICAgICAgdGhpcy5zb3J0aW5nQ2hhbmdlZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
dGhpcy5kaXNwb3NlKCk7Ci0gICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAg
dGhpcy5yZXNldFNvcnRpbmdDYWNoZSgpOwotCi0gICAgICAgIHZhciBrZXkgPSB0aGlzLl9wcm9m
aWxlSW5kZXggPT09IC0xID8gImFsbE9iamVjdHMiIDogdGhpcy5fbWluTm9kZUlkICsgIi4uIiAr
IHRoaXMuX21heE5vZGVJZDsKLSAgICAgICAgdmFyIGZpbHRlciA9IHRoaXMuX3Byb2ZpbGVJbmRl
eCA9PT0gLTEgPyBudWxsIDogImZ1bmN0aW9uKG5vZGUpIHsgdmFyIGlkID0gbm9kZS5pZDsgcmV0
dXJuIGlkID4gIiArIHRoaXMuX21pbk5vZGVJZCArICIgJiYgaWQgPD0gIiArIHRoaXMuX21heE5v
ZGVJZCArICI7IH0iOwotCi0gICAgICAgIHRoaXMuc25hcHNob3QuYWdncmVnYXRlcyhmYWxzZSwg
a2V5LCBmaWx0ZXIsIGFnZ3JlZ2F0ZXNSZWNlaXZlZC5iaW5kKHRoaXMsIGtleSkpOwotICAgIH0s
Ci0KLSAgICBfZmlsdGVyU2VsZWN0SW5kZXhDaGFuZ2VkOiBmdW5jdGlvbihwcm9maWxlcywgcHJv
ZmlsZUluZGV4KQotICAgIHsKLSAgICAgICAgdGhpcy5fcHJvZmlsZUluZGV4ID0gcHJvZmlsZUlu
ZGV4OwotCi0gICAgICAgIGRlbGV0ZSB0aGlzLl9tYXhOb2RlSWQ7Ci0gICAgICAgIGRlbGV0ZSB0
aGlzLl9taW5Ob2RlSWQ7Ci0KLSAgICAgICAgaWYgKHRoaXMuX3Byb2ZpbGVJbmRleCAhPT0gLTEp
IHsKLSAgICAgICAgICAgIHRoaXMuX21pbk5vZGVJZCA9IHByb2ZpbGVJbmRleCA+IDAgPyBwcm9m
aWxlc1twcm9maWxlSW5kZXggLSAxXS5tYXhKU09iamVjdElkIDogMDsKLSAgICAgICAgICAgIHRo
aXMuX21heE5vZGVJZCA9IHByb2ZpbGVzW3Byb2ZpbGVJbmRleF0ubWF4SlNPYmplY3RJZDsKLSAg
ICAgICAgfQotCi0gICAgICAgIHRoaXMucG9wdWxhdGVDaGlsZHJlbigpOwotICAgIH0sCi0KLX07
Ci0KLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3RvcnNEYXRhR3JpZC5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQu
cHJvdG90eXBlOwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkfQotICovCi1XZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90RGlmZkRhdGFHcmlkID0gZnVuY3Rpb24oKQotewotICAgIHZhciBjb2x1bW5zID0g
ewotICAgICAgICBvYmplY3Q6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29uc3Ry
dWN0b3IiKSwgZGlzY2xvc3VyZTogdHJ1ZSwgc29ydGFibGU6IHRydWUgfSwKLSAgICAgICAgYWRk
ZWRDb3VudDogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIjIE5ldyIpLCB3aWR0aDog
IjcycHgiLCBzb3J0YWJsZTogdHJ1ZSB9LAotICAgICAgICByZW1vdmVkQ291bnQ6IHsgdGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiIyBEZWxldGVkIiksIHdpZHRoOiAiNzJweCIsIHNvcnRh
YmxlOiB0cnVlIH0sCi0gICAgICAgIGNvdW50RGVsdGE6IHsgdGl0bGU6ICIjIERlbHRhIiwgd2lk
dGg6ICI2NHB4Iiwgc29ydGFibGU6IHRydWUgfSwKLSAgICAgICAgYWRkZWRTaXplOiB7IHRpdGxl
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFsbG9jLiBTaXplIiksIHdpZHRoOiAiNzJweCIsIHNv
cnRhYmxlOiB0cnVlLCBzb3J0OiAiZGVzY2VuZGluZyIgfSwKLSAgICAgICAgcmVtb3ZlZFNpemU6
IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRnJlZWQgU2l6ZSIpLCB3aWR0aDogIjcy
cHgiLCBzb3J0YWJsZTogdHJ1ZSB9LAotICAgICAgICBzaXplRGVsdGE6IHsgdGl0bGU6ICJTaXpl
IERlbHRhIiwgd2lkdGg6ICI3MnB4Iiwgc29ydGFibGU6IHRydWUgfQotICAgIH07Ci0gICAgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5z
LCB0cnVlKTsKLX0KLQotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZEYXRhR3JpZC5wcm90
b3R5cGUgPSB7Ci0gICAgX2RlZmF1bHRQb3B1bGF0ZUNvdW50OiA1MCwKLQotICAgIF9zb3J0Rmll
bGRzOiBmdW5jdGlvbihzb3J0Q29sdW1uLCBzb3J0QXNjZW5kaW5nKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgICAgIG9iamVjdDogWyJfbmFtZSIsIHNvcnRBc2NlbmRpbmcsICJf
Y291bnQiLCBmYWxzZV0sCi0gICAgICAgICAgICBhZGRlZENvdW50OiBbIl9hZGRlZENvdW50Iiwg
c29ydEFzY2VuZGluZywgIl9uYW1lIiwgdHJ1ZV0sCi0gICAgICAgICAgICByZW1vdmVkQ291bnQ6
IFsiX3JlbW92ZWRDb3VudCIsIHNvcnRBc2NlbmRpbmcsICJfbmFtZSIsIHRydWVdLAotICAgICAg
ICAgICAgY291bnREZWx0YTogWyJfY291bnREZWx0YSIsIHNvcnRBc2NlbmRpbmcsICJfbmFtZSIs
IHRydWVdLAotICAgICAgICAgICAgYWRkZWRTaXplOiBbIl9hZGRlZFNpemUiLCBzb3J0QXNjZW5k
aW5nLCAiX25hbWUiLCB0cnVlXSwKLSAgICAgICAgICAgIHJlbW92ZWRTaXplOiBbIl9yZW1vdmVk
U2l6ZSIsIHNvcnRBc2NlbmRpbmcsICJfbmFtZSIsIHRydWVdLAotICAgICAgICAgICAgc2l6ZURl
bHRhOiBbIl9zaXplRGVsdGEiLCBzb3J0QXNjZW5kaW5nLCAiX25hbWUiLCB0cnVlXQotICAgICAg
ICB9W3NvcnRDb2x1bW5dOwotICAgIH0sCi0KLSAgICBzZXREYXRhU291cmNlOiBmdW5jdGlvbihz
bmFwc2hvdFZpZXcsIHNuYXBzaG90KQotICAgIHsKLSAgICAgICAgdGhpcy5zbmFwc2hvdFZpZXcg
PSBzbmFwc2hvdFZpZXc7Ci0gICAgICAgIHRoaXMuc25hcHNob3QgPSBzbmFwc2hvdDsKLSAgICB9
LAotCi0gICAgX2Jhc2VQcm9maWxlSW5kZXhDaGFuZ2VkOiBmdW5jdGlvbihsb2FkZXIsIHByb2Zp
bGVJbmRleCkKLSAgICB7Ci0gICAgICAgIGxvYWRlcihwcm9maWxlSW5kZXgsIHRoaXMuc2V0QmFz
ZURhdGFTb3VyY2UuYmluZCh0aGlzKSk7Ci0gICAgfSwKLQotICAgIHNldEJhc2VEYXRhU291cmNl
OiBmdW5jdGlvbihiYXNlU25hcHNob3QpCi0gICAgewotICAgICAgICB0aGlzLmJhc2VTbmFwc2hv
dCA9IGJhc2VTbmFwc2hvdDsKLSAgICAgICAgdGhpcy5kaXNwb3NlKCk7Ci0gICAgICAgIHRoaXMu
cmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgdGhpcy5yZXNldFNvcnRpbmdDYWNoZSgpOwotICAg
ICAgICBpZiAodGhpcy5iYXNlU25hcHNob3QgPT09IHRoaXMuc25hcHNob3QpIHsKLSAgICAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJzb3J0aW5nIGNvbXBsZXRlIik7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5wb3B1bGF0ZUNoaWxk
cmVuKCk7Ci0gICAgfSwKLQotICAgIHBvcHVsYXRlQ2hpbGRyZW46IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIGZ1bmN0aW9uIGJhc2VBZ2dyZWdhdGVzUmVjZWl2ZWQoYmFzZUNsYXNzZXMpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGZ1bmN0aW9uIGFnZ3JlZ2F0ZXNSZWNlaXZlZChjbGFzc2Vz
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhciBub2RlQ291bnQgPSAwOwotICAg
ICAgICAgICAgICAgIHZhciBub2RlcyA9IFtdOwotICAgICAgICAgICAgICAgIGZvciAodmFyIGNs
c3MgaW4gYmFzZUNsYXNzZXMpCi0gICAgICAgICAgICAgICAgICAgIG5vZGVzLnB1c2gobmV3IFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZSh0aGlzLCBjbHNzLCBiYXNlQ2xhc3Nlc1tj
bHNzXSwgY2xhc3Nlc1tjbHNzXSkpOwotICAgICAgICAgICAgICAgIGZvciAoY2xzcyBpbiBjbGFz
c2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghKGNsc3MgaW4gYmFzZUNsYXNzZXMpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChuZXcgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdERpZmZOb2RlKHRoaXMsIGNsc3MsIG51bGwsIGNsYXNzZXNbY2xzc10pKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbm9kZUNvdW50ID0gbm9kZXMubGVuZ3RoOwot
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFkZE5vZGVJZk5vblplcm9EaWZmKGJvdW5kTm9kZSwg
emVyb0RpZmYpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXpl
cm9EaWZmKQotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChib3VuZE5v
ZGUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIS0tbm9kZUNvdW50KQotICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5zb3J0aW5nQ2hhbmdlZCgpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IG5vZGVzLmxlbmd0aDsgaSA8IGw7ICsr
aSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldOwotICAgICAgICAg
ICAgICAgICAgICBub2RlLmNhbGN1bGF0ZURpZmYodGhpcywgYWRkTm9kZUlmTm9uWmVyb0RpZmYu
YmluZCh0aGlzLCBub2RlKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdGhpcy5zbmFwc2hvdC5hZ2dyZWdhdGVzKHRydWUsICJhbGxPYmplY3RzIiwgbnVs
bCwgYWdncmVnYXRlc1JlY2VpdmVkLmJpbmQodGhpcykpOwotICAgICAgICB9Ci0gICAgICAgIHRo
aXMuYmFzZVNuYXBzaG90LmFnZ3JlZ2F0ZXModHJ1ZSwgImFsbE9iamVjdHMiLCBudWxsLCBiYXNl
QWdncmVnYXRlc1JlY2VpdmVkLmJpbmQodGhpcykpOwotICAgIH0KLX07Ci0KLVdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3RvdHlwZTsKLQotLyoqCi0gKiBA
Y29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFi
bGVEYXRhR3JpZH0KLSAqLwotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvcnNEYXRh
R3JpZCA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgY29sdW1ucyA9IHsKLSAgICAgICAgb2JqZWN0
OiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9iamVjdCIpLCBkaXNjbG9zdXJlOiB0
cnVlLCBzb3J0YWJsZTogdHJ1ZSB9LAotICAgICAgICBzaGFsbG93U2l6ZTogeyB0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJTaGFsbG93IFNpemUiKSwgd2lkdGg6ICIxMjBweCIsIHNvcnRh
YmxlOiB0cnVlIH0sCi0gICAgICAgIHJldGFpbmVkU2l6ZTogeyB0aXRsZTogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSZXRhaW5lZCBTaXplIiksIHdpZHRoOiAiMTIwcHgiLCBzb3J0OiAiZGVzY2Vu
ZGluZyIsIHNvcnRhYmxlOiB0cnVlIH0KLSAgICB9OwotICAgIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RTb3J0YWJsZURhdGFHcmlkLmNhbGwodGhpcywgY29sdW1ucyk7Ci19Ci0KLVdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JzRGF0YUdyaWQucHJvdG90eXBlID0gewotICAgIF9k
ZWZhdWx0UG9wdWxhdGVDb3VudDogMjUsCi0KLSAgICBzZXREYXRhU291cmNlOiBmdW5jdGlvbihz
bmFwc2hvdFZpZXcsIHNuYXBzaG90KQotICAgIHsKLSAgICAgICAgdGhpcy5zbmFwc2hvdFZpZXcg
PSBzbmFwc2hvdFZpZXc7Ci0gICAgICAgIHRoaXMuc25hcHNob3QgPSBzbmFwc2hvdDsKLSAgICAg
ICAgdGhpcy5zbmFwc2hvdE5vZGVJbmRleCA9IHRoaXMuc25hcHNob3Qucm9vdE5vZGVJbmRleDsK
LSAgICAgICAgdGhpcy5fcHJvdmlkZXIgPSB0aGlzLl9jcmVhdGVQcm92aWRlcihzbmFwc2hvdCwg
dGhpcy5zbmFwc2hvdE5vZGVJbmRleCk7Ci0gICAgICAgIHRoaXMuc29ydCgpOwotICAgIH0sCi0K
LSAgICBzb3J0aW5nQ2hhbmdlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5zb3J0
KCk7Ci0gICAgfQotfTsKLQotTWl4SW5TbmFwc2hvdE5vZGVGdW5jdGlvbnMoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdERvbWluYXRvck9iamVjdE5vZGUucHJvdG90eXBlLCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RG9taW5hdG9yc0RhdGFHcmlkLnByb3RvdHlwZSk7Ci1XZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RG9taW5hdG9yc0RhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3JpZC5wcm90b3R5cGU7Ci0KLS8qKgot
ICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9Ci0gKi8KLVdl
Ykluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90VmlldyA9IGZ1bmN0aW9uKHBhcmVudCwgcHJvZmls
ZSkKLXsKLSAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5lbGVt
ZW50LmFkZFN0eWxlQ2xhc3MoImRldGFpbGVkLWhlYXBzaG90LXZpZXciKTsKLQotICAgIHRoaXMu
cGFyZW50ID0gcGFyZW50OwotICAgIHRoaXMucGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoInByb2Zp
bGUgYWRkZWQiLCB0aGlzLl91cGRhdGVCYXNlT3B0aW9ucywgdGhpcyk7Ci0gICAgdGhpcy5wYXJl
bnQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZmlsZSBhZGRlZCIsIHRoaXMuX3VwZGF0ZUZpbHRlck9w
dGlvbnMsIHRoaXMpOwotCi0gICAgdGhpcy52aWV3c0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMudmlld3NDb250YWluZXIuYWRkU3R5bGVDbGFzcygi
dmlld3MtY29udGFpbmVyIik7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudmll
d3NDb250YWluZXIpOwotCi0gICAgdGhpcy5jb250YWlubWVudFZpZXcgPSBuZXcgV2ViSW5zcGVj
dG9yLlZpZXcoKTsKLSAgICB0aGlzLmNvbnRhaW5tZW50Vmlldy5lbGVtZW50LmFkZFN0eWxlQ2xh
c3MoInZpZXciKTsKLSAgICB0aGlzLmNvbnRhaW5tZW50RGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdENvbnRhaW5tZW50RGF0YUdyaWQoKTsKLSAgICB0aGlzLmNvbnRhaW5t
ZW50RGF0YUdyaWQuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9t
b3VzZURvd25JbkNvbnRlbnRzR3JpZC5iaW5kKHRoaXMpLCB0cnVlKTsKLSAgICB0aGlzLmNvbnRh
aW5tZW50RGF0YUdyaWQuc2hvdyh0aGlzLmNvbnRhaW5tZW50Vmlldy5lbGVtZW50KTsKLSAgICB0
aGlzLmNvbnRhaW5tZW50RGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0
YUdyaWQuRXZlbnRzLlNlbGVjdGVkTm9kZSwgdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZCwgdGhpcyk7
Ci0KLSAgICB0aGlzLmNvbnN0cnVjdG9yc1ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlZpZXcoKTsK
LSAgICB0aGlzLmNvbnN0cnVjdG9yc1ZpZXcuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJ2aWV3Iik7
Ci0gICAgdGhpcy5jb25zdHJ1Y3RvcnNWaWV3LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY3Jl
YXRlVG9vbGJhcldpdGhDbGFzc05hbWVGaWx0ZXIoKSk7Ci0KLSAgICB0aGlzLmNvbnN0cnVjdG9y
c0RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3RvcnNEYXRh
R3JpZCgpOwotICAgIHRoaXMuY29uc3RydWN0b3JzRGF0YUdyaWQuZWxlbWVudC5hZGRTdHlsZUNs
YXNzKCJjbGFzcy12aWV3LWdyaWQiKTsKLSAgICB0aGlzLmNvbnN0cnVjdG9yc0RhdGFHcmlkLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duSW5Db250
ZW50c0dyaWQuYmluZCh0aGlzKSwgdHJ1ZSk7Ci0gICAgdGhpcy5jb25zdHJ1Y3RvcnNEYXRhR3Jp
ZC5zaG93KHRoaXMuY29uc3RydWN0b3JzVmlldy5lbGVtZW50KTsKLSAgICB0aGlzLmNvbnN0cnVj
dG9yc0RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50
cy5TZWxlY3RlZE5vZGUsIHRoaXMuX3NlbGVjdGlvbkNoYW5nZWQsIHRoaXMpOwotCi0gICAgdGhp
cy5kaWZmVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlldygpOwotICAgIHRoaXMuZGlmZlZpZXcu
ZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJ2aWV3Iik7Ci0gICAgdGhpcy5kaWZmVmlldy5lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVRvb2xiYXJXaXRoQ2xhc3NOYW1lRmlsdGVyKCkpOwot
Ci0gICAgdGhpcy5kaWZmRGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERp
ZmZEYXRhR3JpZCgpOwotICAgIHRoaXMuZGlmZkRhdGFHcmlkLmVsZW1lbnQuYWRkU3R5bGVDbGFz
cygiY2xhc3Mtdmlldy1ncmlkIik7Ci0gICAgdGhpcy5kaWZmRGF0YUdyaWQuc2hvdyh0aGlzLmRp
ZmZWaWV3LmVsZW1lbnQpOwotICAgIHRoaXMuZGlmZkRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50cy5TZWxlY3RlZE5vZGUsIHRoaXMuX3NlbGVjdGlv
bkNoYW5nZWQsIHRoaXMpOwotCi0gICAgdGhpcy5kb21pbmF0b3JWaWV3ID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaWV3KCk7Ci0gICAgdGhpcy5kb21pbmF0b3JWaWV3LmVsZW1lbnQuYWRkU3R5bGVDbGFz
cygidmlldyIpOwotICAgIHRoaXMuZG9taW5hdG9yRGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdERvbWluYXRvcnNEYXRhR3JpZCgpOwotICAgIHRoaXMuZG9taW5hdG9yRGF0
YUdyaWQuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3VzZURv
d25JbkNvbnRlbnRzR3JpZC5iaW5kKHRoaXMpLCB0cnVlKTsKLSAgICB0aGlzLmRvbWluYXRvckRh
dGFHcmlkLnNob3codGhpcy5kb21pbmF0b3JWaWV3LmVsZW1lbnQpOwotICAgIHRoaXMuZG9taW5h
dG9yRGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnRz
LlNlbGVjdGVkTm9kZSwgdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZCwgdGhpcyk7Ci0KLSAgICB0aGlz
LnJldGFpbm1lbnRWaWV3SGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0g
ICAgdGhpcy5yZXRhaW5tZW50Vmlld0hlYWRlci5hZGRTdHlsZUNsYXNzKCJyZXRhaW5lcnMtdmll
dy1oZWFkZXIiKTsKLSAgICB0aGlzLnJldGFpbm1lbnRWaWV3SGVhZGVyLmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlZG93biIsIHRoaXMuX3N0YXJ0UmV0YWluZXJzSGVhZGVyRHJhZ2dpbmcuYmluZCh0
aGlzKSwgdHJ1ZSk7Ci0gICAgdmFyIHJldGFpbmluZ1BhdGhzVGl0bGVEaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICByZXRhaW5pbmdQYXRoc1RpdGxlRGl2LmNsYXNzTmFt
ZSA9ICJ0aXRsZSI7Ci0gICAgdmFyIHJldGFpbmluZ1BhdGhzVGl0bGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7Ci0gICAgcmV0YWluaW5nUGF0aHNUaXRsZS50ZXh0Q29udGVudCA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiT2JqZWN0J3MgcmV0YWluaW5nIHRyZWUiKTsKLSAgICBy
ZXRhaW5pbmdQYXRoc1RpdGxlRGl2LmFwcGVuZENoaWxkKHJldGFpbmluZ1BhdGhzVGl0bGUpOwot
ICAgIHRoaXMucmV0YWlubWVudFZpZXdIZWFkZXIuYXBwZW5kQ2hpbGQocmV0YWluaW5nUGF0aHNU
aXRsZURpdik7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucmV0YWlubWVudFZp
ZXdIZWFkZXIpOwotCi0gICAgdGhpcy5yZXRhaW5tZW50VmlldyA9IG5ldyBXZWJJbnNwZWN0b3Iu
VmlldygpOwotICAgIHRoaXMucmV0YWlubWVudFZpZXcuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJ2
aWV3Iik7Ci0gICAgdGhpcy5yZXRhaW5tZW50Vmlldy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInJl
dGFpbmluZy1wYXRocy12aWV3Iik7Ci0gICAgdGhpcy5yZXRhaW5tZW50RGF0YUdyaWQgPSBuZXcg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbm1lbnREYXRhR3JpZCgpOwotICAgIHRoaXMu
cmV0YWlubWVudERhdGFHcmlkLnNob3codGhpcy5yZXRhaW5tZW50Vmlldy5lbGVtZW50KTsKLSAg
ICB0aGlzLnJldGFpbm1lbnREYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5FdmVudHMuU2VsZWN0ZWROb2RlLCB0aGlzLl9pbnNwZWN0ZWRPYmplY3RDaGFuZ2Vk
LCB0aGlzKTsKLSAgICB0aGlzLnJldGFpbm1lbnRWaWV3LnNob3codGhpcy5lbGVtZW50KTsKLSAg
ICB0aGlzLnJldGFpbm1lbnREYXRhR3JpZC5yZXNldCgpOwotCi0gICAgdGhpcy5kYXRhR3JpZCA9
IHRoaXMuY29uc3RydWN0b3JzRGF0YUdyaWQ7Ci0gICAgdGhpcy5jdXJyZW50VmlldyA9IHRoaXMu
Y29uc3RydWN0b3JzVmlldzsKLQotICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKTsKLSAgICB0aGlzLnZpZXdTZWxlY3RFbGVtZW50LmNs
YXNzTmFtZSA9ICJzdGF0dXMtYmFyLWl0ZW0iOwotICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fY2hhbmdlVmlldy5iaW5kKHRoaXMpLCBm
YWxzZSk7Ci0KLSAgICB0aGlzLnZpZXdzID0gW3t0aXRsZTogIlN1bW1hcnkiLCB2aWV3OiB0aGlz
LmNvbnN0cnVjdG9yc1ZpZXcsIGdyaWQ6IHRoaXMuY29uc3RydWN0b3JzRGF0YUdyaWR9LAotICAg
ICAgICAgICAgICAgICAge3RpdGxlOiAiQ29tcGFyaXNvbiIsIHZpZXc6IHRoaXMuZGlmZlZpZXcs
IGdyaWQ6IHRoaXMuZGlmZkRhdGFHcmlkfSwKLSAgICAgICAgICAgICAgICAgIHt0aXRsZTogIkNv
bnRhaW5tZW50IiwgdmlldzogdGhpcy5jb250YWlubWVudFZpZXcsIGdyaWQ6IHRoaXMuY29udGFp
bm1lbnREYXRhR3JpZH0sCi0gICAgICAgICAgICAgICAgICB7dGl0bGU6ICJEb21pbmF0b3JzIiwg
dmlldzogdGhpcy5kb21pbmF0b3JWaWV3LCBncmlkOiB0aGlzLmRvbWluYXRvckRhdGFHcmlkfV07
Ci0gICAgdGhpcy52aWV3cy5jdXJyZW50ID0gMDsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRo
aXMudmlld3MubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIHZpZXcgPSB0aGlzLnZpZXdzW2ld
OwotICAgICAgICB2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7
Ci0gICAgICAgIG9wdGlvbi5sYWJlbCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZyh2aWV3LnRpdGxl
KTsKLSAgICAgICAgdGhpcy52aWV3U2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChvcHRpb24pOwot
ICAgIH0KLQotICAgIHRoaXMuX3Byb2ZpbGVVaWQgPSBwcm9maWxlLnVpZDsKLQotICAgIHRoaXMu
YmFzZVNlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKTsKLSAg
ICB0aGlzLmJhc2VTZWxlY3RFbGVtZW50LmNsYXNzTmFtZSA9ICJzdGF0dXMtYmFyLWl0ZW0gaGlk
ZGVuIjsKLSAgICB0aGlzLmJhc2VTZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5n
ZSIsIHRoaXMuX2NoYW5nZUJhc2UuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMuX3VwZGF0
ZUJhc2VPcHRpb25zKCk7Ci0KLSAgICB0aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKTsKLSAgICB0aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQu
Y2xhc3NOYW1lID0gInN0YXR1cy1iYXItaXRlbSI7Ci0gICAgdGhpcy5maWx0ZXJTZWxlY3RFbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX2NoYW5nZUZpbHRlci5iaW5kKHRo
aXMpLCBmYWxzZSk7Ci0gICAgdGhpcy5fdXBkYXRlRmlsdGVyT3B0aW9ucygpOwotCi0gICAgdGhp
cy5oZWxwQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oIiIsICJoZWFw
c2hvdC1oZWxwLXN0YXR1cy1iYXItaXRlbSBzdGF0dXMtYmFyLWl0ZW0iKTsKLSAgICB0aGlzLmhl
bHBCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9oZWxwQ2xpY2tlZCwgdGhp
cyk7Ci0KLSAgICB0aGlzLl9wb3BvdmVySGVscGVyID0gbmV3IFdlYkluc3BlY3Rvci5PYmplY3RQ
b3BvdmVySGVscGVyKHRoaXMuZWxlbWVudCwgdGhpcy5fZ2V0SG92ZXJBbmNob3IuYmluZCh0aGlz
KSwgdGhpcy5fcmVzb2x2ZU9iamVjdEZvclBvcG92ZXIuYmluZCh0aGlzKSwgdW5kZWZpbmVkLCB0
cnVlKTsKLQotICAgIHRoaXMuX2xvYWRQcm9maWxlKHRoaXMuX3Byb2ZpbGVVaWQsIHByb2ZpbGVD
YWxsYmFjay5iaW5kKHRoaXMpKTsKLQotICAgIGZ1bmN0aW9uIHByb2ZpbGVDYWxsYmFjaygpCi0g
ICAgewotICAgICAgICB2YXIgbGlzdCA9IHRoaXMuX3Byb2ZpbGVzKCk7Ci0gICAgICAgIHZhciBw
cm9maWxlSW5kZXg7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgaWYgKGxpc3RbaV0udWlkID09PSB0aGlzLl9wcm9maWxlVWlkKSB7
Ci0gICAgICAgICAgICAgICAgcHJvZmlsZUluZGV4ID0gaTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChwcm9maWxlSW5kZXgg
PiAwKQotICAgICAgICAgICAgdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID0g
cHJvZmlsZUluZGV4IC0gMTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5iYXNlU2Vs
ZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID0gcHJvZmlsZUluZGV4OwotICAgICAgICB0aGlzLmRh
dGFHcmlkLnNldERhdGFTb3VyY2UodGhpcywgdGhpcy5wcm9maWxlV3JhcHBlcik7Ci0gICAgfQot
fQotCi1XZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlID0gewotICAg
IGRpc3Bvc2U6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMucHJvZmlsZVdyYXBwZXIu
ZGlzcG9zZSgpOwotICAgICAgICBpZiAodGhpcy5iYXNlUHJvZmlsZSkKLSAgICAgICAgICAgIHRo
aXMuYmFzZVByb2ZpbGVXcmFwcGVyLmRpc3Bvc2UoKTsKLSAgICAgICAgdGhpcy5jb250YWlubWVu
dERhdGFHcmlkLmRpc3Bvc2UoKTsKLSAgICAgICAgdGhpcy5jb25zdHJ1Y3RvcnNEYXRhR3JpZC5k
aXNwb3NlKCk7Ci0gICAgICAgIHRoaXMuZGlmZkRhdGFHcmlkLmRpc3Bvc2UoKTsKLSAgICAgICAg
dGhpcy5kb21pbmF0b3JEYXRhR3JpZC5kaXNwb3NlKCk7Ci0gICAgICAgIHRoaXMucmV0YWlubWVu
dERhdGFHcmlkLmRpc3Bvc2UoKTsKLSAgICB9LAotCi0gICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBbdGhpcy52aWV3U2VsZWN0RWxlbWVudCwgdGhpcy5iYXNl
U2VsZWN0RWxlbWVudCwgdGhpcy5maWx0ZXJTZWxlY3RFbGVtZW50LCB0aGlzLmhlbHBCdXR0b24u
ZWxlbWVudF07Ci0gICAgfSwKLQotICAgIGdldCBwcm9maWxlKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLnBhcmVudC5nZXRQcm9maWxlKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90
UHJvZmlsZVR5cGUuVHlwZUlkLCB0aGlzLl9wcm9maWxlVWlkKTsKLSAgICB9LAotCi0gICAgZ2V0
IHByb2ZpbGVXcmFwcGVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnByb2ZpbGUucHJv
eHk7Ci0gICAgfSwKLQotICAgIGdldCBiYXNlUHJvZmlsZSgpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5wYXJlbnQuZ2V0UHJvZmlsZShXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFBy
b2ZpbGVUeXBlLlR5cGVJZCwgdGhpcy5fYmFzZVByb2ZpbGVVaWQpOwotICAgIH0sCi0KLSAgICBn
ZXQgYmFzZVByb2ZpbGVXcmFwcGVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJhc2VQ
cm9maWxlLnByb3h5OwotICAgIH0sCi0KLSAgICB3YXNTaG93bjogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgaWYgKCF0aGlzLnByb2ZpbGVXcmFwcGVyLmxvYWRlZCkKLSAgICAgICAgICAgIHRo
aXMuX2xvYWRQcm9maWxlKHRoaXMuX3Byb2ZpbGVVaWQsIHByb2ZpbGVDYWxsYmFjazEuYmluZCh0
aGlzKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByb2ZpbGVDYWxsYmFjazEuY2FsbCh0
aGlzKTsKLQotICAgICAgICBmdW5jdGlvbiBwcm9maWxlQ2FsbGJhY2sxKCkgewotICAgICAgICAg
ICAgaWYgKHRoaXMuYmFzZVByb2ZpbGUgJiYgIXRoaXMuYmFzZVByb2ZpbGVXcmFwcGVyLmxvYWRl
ZCkKLSAgICAgICAgICAgICAgICB0aGlzLl9sb2FkUHJvZmlsZSh0aGlzLl9iYXNlUHJvZmlsZVVp
ZCwgcHJvZmlsZUNhbGxiYWNrMi5iaW5kKHRoaXMpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBwcm9maWxlQ2FsbGJhY2syLmNhbGwodGhpcyk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBmdW5jdGlvbiBwcm9maWxlQ2FsbGJhY2syKCkgewotICAgICAgICAgICAgdGhpcy5jdXJy
ZW50Vmlldy5zaG93KHRoaXMudmlld3NDb250YWluZXIpOwotICAgICAgICB9Ci0gICAgfSwKLQot
ICAgIHdpbGxIaWRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9jdXJyZW50U2Vh
cmNoUmVzdWx0SW5kZXggPSAtMTsKLSAgICAgICAgdGhpcy5fcG9wb3ZlckhlbHBlci5oaWRlUG9w
b3ZlcigpOwotICAgICAgICBpZiAodGhpcy5oZWxwUG9wb3ZlciAmJiB0aGlzLmhlbHBQb3BvdmVy
LnZpc2libGUpCi0gICAgICAgICAgICB0aGlzLmhlbHBQb3BvdmVyLmhpZGUoKTsKLSAgICB9LAot
Ci0gICAgb25SZXNpemU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBoZWlnaHQgPSB0
aGlzLnJldGFpbm1lbnRWaWV3LmVsZW1lbnQuY2xpZW50SGVpZ2h0OwotICAgICAgICB0aGlzLl91
cGRhdGVSZXRhaW5tZW50Vmlld0hlaWdodChoZWlnaHQpOwotICAgIH0sCi0KLSAgICBzZWFyY2hD
YW5jZWxlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3NlYXJjaFJlc3Vs
dHMpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VhcmNoUmVzdWx0
cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5fc2VhcmNo
UmVzdWx0c1tpXS5ub2RlOwotICAgICAgICAgICAgICAgIGRlbGV0ZSBub2RlLl9zZWFyY2hNYXRj
aGVkOwotICAgICAgICAgICAgICAgIG5vZGUucmVmcmVzaCgpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgZGVsZXRlIHRoaXMuX3NlYXJjaEZpbmlzaGVkQ2FsbGJhY2s7Ci0g
ICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IC0xOwotICAgICAgICB0aGlz
Ll9zZWFyY2hSZXN1bHRzID0gW107Ci0gICAgfSwKLQotICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0
aW9uKHF1ZXJ5LCBmaW5pc2hlZENhbGxiYWNrKQotICAgIHsKLSAgICAgICAgLy8gQ2FsbCBzZWFy
Y2hDYW5jZWxlZCBzaW5jZSBpdCB3aWxsIHJlc2V0IGV2ZXJ5dGhpbmcgd2UgbmVlZCBiZWZvcmUg
ZG9pbmcgYSBuZXcgc2VhcmNoLgotICAgICAgICB0aGlzLnNlYXJjaENhbmNlbGVkKCk7Ci0KLSAg
ICAgICAgcXVlcnkgPSBxdWVyeS50cmltKCk7Ci0KLSAgICAgICAgaWYgKCFxdWVyeS5sZW5ndGgp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh0aGlzLmN1cnJlbnRWaWV3ICE9PSB0
aGlzLmNvbnN0cnVjdG9yc1ZpZXcgJiYgdGhpcy5jdXJyZW50VmlldyAhPT0gdGhpcy5kaWZmVmll
dykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9zZWFyY2hGaW5pc2hlZENh
bGxiYWNrID0gZmluaXNoZWRDYWxsYmFjazsKLQotICAgICAgICBmdW5jdGlvbiBtYXRjaGVzQnlO
YW1lKGdyaWROb2RlKSB7Ci0gICAgICAgICAgICByZXR1cm4gKCJuYW1lIiBpbiBncmlkTm9kZSkg
JiYgZ3JpZE5vZGUubmFtZS5oYXNTdWJzdHJpbmcocXVlcnksIHRydWUpOwotICAgICAgICB9Ci0K
LSAgICAgICAgZnVuY3Rpb24gbWF0Y2hlc0J5SWQoZ3JpZE5vZGUpIHsKLSAgICAgICAgICAgIHJl
dHVybiAoInNuYXBzaG90Tm9kZUlkIiBpbiBncmlkTm9kZSkgJiYgZ3JpZE5vZGUuc25hcHNob3RO
b2RlSWQgPT09IHF1ZXJ5OwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIG1hdGNoUHJlZGljYXRl
OwotICAgICAgICBpZiAocXVlcnkuY2hhckF0KDApICE9PSAiQCIpCi0gICAgICAgICAgICBtYXRj
aFByZWRpY2F0ZSA9IG1hdGNoZXNCeU5hbWU7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
cXVlcnkgPSBwYXJzZUludChxdWVyeS5zdWJzdHJpbmcoMSksIDEwKTsKLSAgICAgICAgICAgIG1h
dGNoUHJlZGljYXRlID0gbWF0Y2hlc0J5SWQ7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlv
biBtYXRjaGVzUXVlcnkoZ3JpZE5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlbGV0ZSBn
cmlkTm9kZS5fc2VhcmNoTWF0Y2hlZDsKLSAgICAgICAgICAgIGlmIChtYXRjaFByZWRpY2F0ZShn
cmlkTm9kZSkpIHsKLSAgICAgICAgICAgICAgICBncmlkTm9kZS5fc2VhcmNoTWF0Y2hlZCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgZ3JpZE5vZGUucmVmcmVzaCgpOwotICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLmRhdGFHcmlkLmNoaWxkcmVu
WzBdOwotICAgICAgICB2YXIgZGVwdGggPSAwOwotICAgICAgICB2YXIgaW5mbyA9IHt9OwotCi0g
ICAgICAgIC8vIFJlc3RyaWN0IHRvIHR5cGUgbm9kZXMgYW5kIGluc3RhbmNlcy4KLSAgICAgICAg
Y29uc3QgbWF4RGVwdGggPSAxOwotCi0gICAgICAgIHdoaWxlIChjdXJyZW50KSB7Ci0gICAgICAg
ICAgICBpZiAobWF0Y2hlc1F1ZXJ5KGN1cnJlbnQpKQotICAgICAgICAgICAgICAgIHRoaXMuX3Nl
YXJjaFJlc3VsdHMucHVzaCh7IG5vZGU6IGN1cnJlbnQgfSk7Ci0gICAgICAgICAgICBjdXJyZW50
ID0gY3VycmVudC50cmF2ZXJzZU5leHROb2RlKGZhbHNlLCBudWxsLCAoZGVwdGggPj0gbWF4RGVw
dGgpLCBpbmZvKTsKLSAgICAgICAgICAgIGRlcHRoICs9IGluZm8uZGVwdGhDaGFuZ2U7Ci0gICAg
ICAgIH0KLQotICAgICAgICBmaW5pc2hlZENhbGxiYWNrKHRoaXMsIHRoaXMuX3NlYXJjaFJlc3Vs
dHMubGVuZ3RoKTsKLSAgICB9LAotCi0gICAganVtcFRvRmlyc3RTZWFyY2hSZXN1bHQ6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fc2VhcmNoUmVzdWx0cyB8fCAhdGhpcy5f
c2VhcmNoUmVzdWx0cy5sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMu
X2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IDA7Ci0gICAgICAgIHRoaXMuX2p1bXBUb1NlYXJj
aFJlc3VsdCh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgpOwotICAgIH0sCi0KLSAgICBq
dW1wVG9MYXN0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoIXRo
aXMuX3NlYXJjaFJlc3VsdHMgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAo
dGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGggLSAxKTsKLSAgICAgICAgdGhpcy5fanVtcFRvU2Vh
cmNoUmVzdWx0KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCk7Ci0gICAgfSwKLQotICAg
IGp1bXBUb05leHRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICgh
dGhpcy5fc2VhcmNoUmVzdWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICgrK3RoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJ
bmRleCA+PSB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkKLSAgICAgICAgICAgIHRoaXMuX2N1
cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IDA7Ci0gICAgICAgIHRoaXMuX2p1bXBUb1NlYXJjaFJl
c3VsdCh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgpOwotICAgIH0sCi0KLSAgICBqdW1w
VG9QcmV2aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCF0
aGlzLl9zZWFyY2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKC0tdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdElu
ZGV4IDwgMCkKLSAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9ICh0
aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCAtIDEpOwotICAgICAgICB0aGlzLl9qdW1wVG9TZWFy
Y2hSZXN1bHQodGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4KTsKLSAgICB9LAotCi0gICAg
c2hvd2luZ0ZpcnN0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1
cm4gKHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9PT0gMCk7Ci0gICAgfSwKLQotICAg
IHNob3dpbmdMYXN0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1
cm4gKHRoaXMuX3NlYXJjaFJlc3VsdHMgJiYgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4
ID09PSAodGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGggLSAxKSk7Ci0gICAgfSwKLQotICAgIF9q
dW1wVG9TZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGluZGV4KQotICAgIHsKLSAgICAgICAgdmFyIHNl
YXJjaFJlc3VsdCA9IHRoaXMuX3NlYXJjaFJlc3VsdHNbaW5kZXhdOwotICAgICAgICBpZiAoIXNl
YXJjaFJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgbm9kZSA9IHNl
YXJjaFJlc3VsdC5ub2RlOwotICAgICAgICBub2RlLnJldmVhbEFuZFNlbGVjdCgpOwotICAgIH0s
Ci0KLSAgICByZWZyZXNoVmlzaWJsZURhdGE6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZh
ciBjaGlsZCA9IHRoaXMuZGF0YUdyaWQuY2hpbGRyZW5bMF07Ci0gICAgICAgIHdoaWxlIChjaGls
ZCkgewotICAgICAgICAgICAgY2hpbGQucmVmcmVzaCgpOwotICAgICAgICAgICAgY2hpbGQgPSBj
aGlsZC50cmF2ZXJzZU5leHROb2RlKGZhbHNlLCBudWxsLCB0cnVlKTsKLSAgICAgICAgfQotICAg
IH0sCi0KLSAgICBfY2hhbmdlQmFzZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRo
aXMuX2Jhc2VQcm9maWxlVWlkID09PSB0aGlzLl9wcm9maWxlcygpW3RoaXMuYmFzZVNlbGVjdEVs
ZW1lbnQuc2VsZWN0ZWRJbmRleF0udWlkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IHRoaXMuX2Jhc2VQcm9maWxlVWlkID0gdGhpcy5fcHJvZmlsZXMoKVt0aGlzLmJhc2VTZWxlY3RF
bGVtZW50LnNlbGVjdGVkSW5kZXhdLnVpZDsKLSAgICAgICAgdmFyIGRhdGFHcmlkID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZkRhdGFHcmlkfSAqLyB0aGlzLmRhdGFH
cmlkOwotICAgICAgICBkYXRhR3JpZC5fYmFzZVByb2ZpbGVJbmRleENoYW5nZWQodGhpcy5fbG9h
ZFByb2ZpbGVCeUluZGV4LmJpbmQodGhpcyksIHRoaXMuYmFzZVNlbGVjdEVsZW1lbnQuc2VsZWN0
ZWRJbmRleCk7Ci0KLSAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRRdWVyeSB8fCAhdGhpcy5fc2Vh
cmNoRmluaXNoZWRDYWxsYmFjayB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cykKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAvLyBUaGUgY3VycmVudCBzZWFyY2ggbmVlZHMgdG8gYmUgcGVy
Zm9ybWVkIGFnYWluLiBGaXJzdCBuZWdhdGUgb3V0IHByZXZpb3VzIG1hdGNoCi0gICAgICAgIC8v
IGNvdW50IGJ5IGNhbGxpbmcgdGhlIHNlYXJjaCBmaW5pc2hlZCBjYWxsYmFjayB3aXRoIGEgbmVn
YXRpdmUgbnVtYmVyIG9mIG1hdGNoZXMuCi0gICAgICAgIC8vIFRoZW4gcGVyZm9ybSB0aGUgc2Vh
cmNoIGFnYWluIHdpdGggdGhlIHNhbWUgcXVlcnkgYW5kIGNhbGxiYWNrLgotICAgICAgICB0aGlz
Ll9zZWFyY2hGaW5pc2hlZENhbGxiYWNrKHRoaXMsIC10aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0
aCk7Ci0gICAgICAgIHRoaXMucGVyZm9ybVNlYXJjaCh0aGlzLmN1cnJlbnRRdWVyeSwgdGhpcy5f
c2VhcmNoRmluaXNoZWRDYWxsYmFjayk7Ci0gICAgfSwKLQotICAgIF9jaGFuZ2VGaWx0ZXI6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBwcm9maWxlSW5kZXggPSB0aGlzLmZpbHRlclNl
bGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleCAtIDE7Ci0gICAgICAgIHRoaXMuZGF0YUdyaWQuX2Zp
bHRlclNlbGVjdEluZGV4Q2hhbmdlZCh0aGlzLl9wcm9maWxlcygpLCBwcm9maWxlSW5kZXgpOwot
Ci0gICAgICAgIGlmICghdGhpcy5jdXJyZW50UXVlcnkgfHwgIXRoaXMuX3NlYXJjaEZpbmlzaGVk
Q2FsbGJhY2sgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgLy8gVGhlIGN1cnJlbnQgc2VhcmNoIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCBhZ2Fp
bi4gRmlyc3QgbmVnYXRlIG91dCBwcmV2aW91cyBtYXRjaAotICAgICAgICAvLyBjb3VudCBieSBj
YWxsaW5nIHRoZSBzZWFyY2ggZmluaXNoZWQgY2FsbGJhY2sgd2l0aCBhIG5lZ2F0aXZlIG51bWJl
ciBvZiBtYXRjaGVzLgotICAgICAgICAvLyBUaGVuIHBlcmZvcm0gdGhlIHNlYXJjaCBhZ2FpbiB3
aXRoIHRoZSBzYW1lIHF1ZXJ5IGFuZCBjYWxsYmFjay4KLSAgICAgICAgdGhpcy5fc2VhcmNoRmlu
aXNoZWRDYWxsYmFjayh0aGlzLCAtdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpOwotICAgICAg
ICB0aGlzLnBlcmZvcm1TZWFyY2godGhpcy5jdXJyZW50UXVlcnksIHRoaXMuX3NlYXJjaEZpbmlz
aGVkQ2FsbGJhY2spOwotICAgIH0sCi0KLSAgICBfY3JlYXRlVG9vbGJhcldpdGhDbGFzc05hbWVG
aWx0ZXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciB0b29sYmFyID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRvb2xiYXIuYWRkU3R5bGVDbGFzcygiY2xh
c3Mtdmlldy10b29sYmFyIik7Ci0gICAgICAgIHZhciBjbGFzc05hbWVGaWx0ZXIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgICAgICBjbGFzc05hbWVGaWx0ZXIuYWRkU3R5
bGVDbGFzcygiY2xhc3MtbmFtZS1maWx0ZXIiKTsKLSAgICAgICAgY2xhc3NOYW1lRmlsdGVyLnNl
dEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsYXNzIGZp
bHRlciIpKTsKLSAgICAgICAgY2xhc3NOYW1lRmlsdGVyLmFkZEV2ZW50TGlzdGVuZXIoImtleXVw
IiwgdGhpcy5fY2hhbmdlTmFtZUZpbHRlci5iaW5kKHRoaXMsIGNsYXNzTmFtZUZpbHRlciksIGZh
bHNlKTsKLSAgICAgICAgdG9vbGJhci5hcHBlbmRDaGlsZChjbGFzc05hbWVGaWx0ZXIpOwotICAg
ICAgICByZXR1cm4gdG9vbGJhcjsKLSAgICB9LAotCi0gICAgX2NoYW5nZU5hbWVGaWx0ZXI6IGZ1
bmN0aW9uKGNsYXNzTmFtZUlucHV0RWxlbWVudCkKLSAgICB7Ci0gICAgICAgIHZhciBmaWx0ZXIg
PSBjbGFzc05hbWVJbnB1dEVsZW1lbnQudmFsdWUudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgdmFy
IGNoaWxkcmVuID0gdGhpcy5kYXRhR3JpZC5jaGlsZHJlbjsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBu
b2RlID0gY2hpbGRyZW5baV07Ci0gICAgICAgICAgICBpZiAobm9kZS5kZXB0aCA9PT0gMCkKLSAg
ICAgICAgICAgICAgICBub2RlLnJldmVhbGVkID0gbm9kZS5fbmFtZS50b0xvd2VyQ2FzZSgpLmlu
ZGV4T2YoZmlsdGVyKSAhPT0gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5kYXRhR3JpZC51
cGRhdGVWaXNpYmxlTm9kZXMoKTsKLSAgICB9LAotCi0gICAgX3Byb2ZpbGVzOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5nZXRQ
cm9maWxlcyhXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCk7
Ci0gICAgfSwKLQotICAgIF9sb2FkUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZVVpZCwgY2FsbGJh
Y2spCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLmxvYWRIZWFw
U25hcHNob3QocHJvZmlsZVVpZCwgY2FsbGJhY2spOwotICAgIH0sCi0KLSAgICBfbG9hZFByb2Zp
bGVCeUluZGV4OiBmdW5jdGlvbihwcm9maWxlSW5kZXgsIGNhbGxiYWNrKQotICAgIHsKLSAgICAg
ICAgdmFyIHByb2ZpbGVVaWQgPSB0aGlzLl9wcm9maWxlcygpW3Byb2ZpbGVJbmRleF0udWlkOwot
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLmxvYWRIZWFwU25hcHNob3QocHJv
ZmlsZVVpZCwgY2FsbGJhY2spOwotICAgIH0sCi0KLSAgICBpc0RldGFpbGVkU25hcHNob3Q6IGZ1
bmN0aW9uKHNuYXBzaG90KQotICAgIHsKLSAgICAgICAgdmFyIHMgPSBuZXcgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdChzbmFwc2hvdCk7Ci0gICAgICAgIGZvciAodmFyIGl0ZXIgPSBzLnJvb3RO
b2RlLmVkZ2VzOyBpdGVyLmhhc05leHQoKTsgaXRlci5uZXh0KCkpCi0gICAgICAgICAgICBpZiAo
aXRlci5lZGdlLm5vZGUubmFtZSA9PT0gIihHQyByb290cykiKQotICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQotICAgIHByb2Nlc3NM
b2FkZWRTbmFwc2hvdDogZnVuY3Rpb24ocHJvZmlsZSwgc25hcHNob3QpCi0gICAgewotICAgICAg
ICBwcm9maWxlLm5vZGVzID0gc25hcHNob3Qubm9kZXM7Ci0gICAgICAgIHByb2ZpbGUuc3RyaW5n
cyA9IHNuYXBzaG90LnN0cmluZ3M7Ci0gICAgICAgIHZhciBzID0gbmV3IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QocHJvZmlsZSk7Ci0gICAgICAgIHByb2ZpbGUuc2lkZWJhckVsZW1lbnQuc3Vi
dGl0bGUgPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyhzLnRvdGFsU2l6ZSk7Ci0gICAgfSwKLQotICAg
IF9zZWxlY3Rpb25DaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBz
ZWxlY3RlZE5vZGUgPSBldmVudC50YXJnZXQuc2VsZWN0ZWROb2RlOwotICAgICAgICB0aGlzLl9z
ZXRSZXRhaW5tZW50RGF0YUdyaWRTb3VyY2Uoc2VsZWN0ZWROb2RlKTsKLSAgICAgICAgdGhpcy5f
aW5zcGVjdGVkT2JqZWN0Q2hhbmdlZChldmVudCk7Ci0gICAgfSwKLQotICAgIF9pbnNwZWN0ZWRP
YmplY3RDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBzZWxlY3Rl
ZE5vZGUgPSBldmVudC50YXJnZXQuc2VsZWN0ZWROb2RlOwotICAgICAgICBpZiAoc2VsZWN0ZWRO
b2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2Rl
KQotICAgICAgICAgICAgQ29uc29sZUFnZW50LmFkZEluc3BlY3RlZEhlYXBPYmplY3Qoc2VsZWN0
ZWROb2RlLnNuYXBzaG90Tm9kZUlkKTsKLSAgICB9LAotCi0gICAgX3NldFJldGFpbm1lbnREYXRh
R3JpZFNvdXJjZTogZnVuY3Rpb24obm9kZUl0ZW0pCi0gICAgewotICAgICAgICBpZiAobm9kZUl0
ZW0gJiYgbm9kZUl0ZW0uc25hcHNob3ROb2RlSW5kZXgpCi0gICAgICAgICAgICB0aGlzLnJldGFp
bm1lbnREYXRhR3JpZC5zZXREYXRhU291cmNlKHRoaXMsIG5vZGVJdGVtLmlzRGVsZXRlZE5vZGUg
PyBub2RlSXRlbS5kYXRhR3JpZC5iYXNlU25hcHNob3QgOiBub2RlSXRlbS5kYXRhR3JpZC5zbmFw
c2hvdCwgbm9kZUl0ZW0uc25hcHNob3ROb2RlSW5kZXgpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB0aGlzLnJldGFpbm1lbnREYXRhR3JpZC5yZXNldCgpOwotICAgIH0sCi0KLSAgICBfbW91
c2VEb3duSW5Db250ZW50c0dyaWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYg
KGV2ZW50LmRldGFpbCA8IDIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIGNl
bGwgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhOb2RlTmFtZSgidGQiKTsK
LSAgICAgICAgaWYgKCFjZWxsIHx8ICghY2VsbC5oYXNTdHlsZUNsYXNzKCJjb3VudC1jb2x1bW4i
KSAmJiAhY2VsbC5oYXNTdHlsZUNsYXNzKCJzaGFsbG93U2l6ZS1jb2x1bW4iKSAmJiAhY2VsbC5o
YXNTdHlsZUNsYXNzKCJyZXRhaW5lZFNpemUtY29sdW1uIikpKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIGV2ZW50LmNvbnN1bWUodHJ1ZSk7Ci0gICAgfSwKLQotICAgIGNoYW5nZVZp
ZXc6IGZ1bmN0aW9uKHZpZXdUaXRsZSwgY2FsbGJhY2spCi0gICAgewotICAgICAgICB2YXIgdmll
d0luZGV4ID0gbnVsbDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnZpZXdzLmxl
bmd0aDsgKytpKQotICAgICAgICAgICAgaWYgKHRoaXMudmlld3NbaV0udGl0bGUgPT09IHZpZXdU
aXRsZSkgewotICAgICAgICAgICAgICAgIHZpZXdJbmRleCA9IGk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGlmICh0aGlzLnZpZXdzLmN1cnJlbnQgPT09
IHZpZXdJbmRleCkgewotICAgICAgICAgICAgc2V0VGltZW91dChjYWxsYmFjaywgMCk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIGdyaWQgPSB0aGlzLnZpZXdz
W3ZpZXdJbmRleF0uZ3JpZDsKLSAgICAgICAgZnVuY3Rpb24gc29ydGluZ0NvbXBsZXRlKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgZ3JpZC5yZW1vdmVFdmVudExpc3RlbmVyKCJzb3J0aW5nIGNv
bXBsZXRlIiwgc29ydGluZ0NvbXBsZXRlLCB0aGlzKTsKLSAgICAgICAgICAgIHNldFRpbWVvdXQo
Y2FsbGJhY2ssIDApOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMudmlld3Nbdmlld0luZGV4XS5n
cmlkLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY29tcGxldGUiLCBzb3J0aW5nQ29tcGxldGUs
IHRoaXMpOwotICAgICAgICB0aGlzLnZpZXdTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggPSB2
aWV3SW5kZXg7Ci0gICAgICAgIHRoaXMuX2NoYW5nZVZpZXcoe3RhcmdldDoge3NlbGVjdGVkSW5k
ZXg6IHZpZXdJbmRleH19KTsKLSAgICB9LAotCi0gICAgX2NoYW5nZVZpZXc6IGZ1bmN0aW9uKGV2
ZW50KQotICAgIHsKLSAgICAgICAgaWYgKCFldmVudCB8fCAhdGhpcy5fcHJvZmlsZVVpZCkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5zZWxlY3RlZEluZGV4
ID09PSB0aGlzLnZpZXdzLmN1cnJlbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
dGhpcy52aWV3cy5jdXJyZW50ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGVkSW5kZXg7Ci0gICAgICAg
IHRoaXMuY3VycmVudFZpZXcuZGV0YWNoKCk7Ci0gICAgICAgIHZhciB2aWV3ID0gdGhpcy52aWV3
c1t0aGlzLnZpZXdzLmN1cnJlbnRdOwotICAgICAgICB0aGlzLmN1cnJlbnRWaWV3ID0gdmlldy52
aWV3OwotICAgICAgICB0aGlzLmRhdGFHcmlkID0gdmlldy5ncmlkOwotICAgICAgICB0aGlzLmN1
cnJlbnRWaWV3LnNob3codGhpcy52aWV3c0NvbnRhaW5lcik7Ci0gICAgICAgIHRoaXMucmVmcmVz
aFZpc2libGVEYXRhKCk7Ci0gICAgICAgIHRoaXMuZGF0YUdyaWQudXBkYXRlV2lkdGhzKCk7Ci0K
LSAgICAgICAgaWYgKHRoaXMuY3VycmVudFZpZXcgPT09IHRoaXMuZGlmZlZpZXcpIHsKLSAgICAg
ICAgICAgIHRoaXMuYmFzZVNlbGVjdEVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7
Ci0gICAgICAgICAgICBpZiAoIXRoaXMuZGF0YUdyaWQuc25hcHNob3RWaWV3KSB7Ci0gICAgICAg
ICAgICAgICAgdGhpcy5fY2hhbmdlQmFzZSgpOwotICAgICAgICAgICAgICAgIHRoaXMuZGF0YUdy
aWQuc2V0RGF0YVNvdXJjZSh0aGlzLCB0aGlzLnByb2ZpbGVXcmFwcGVyKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuYmFzZVNlbGVjdEVsZW1lbnQu
YWRkU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuZGF0YUdyaWQu
c25hcHNob3RWaWV3KQotICAgICAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQuc2V0RGF0YVNvdXJj
ZSh0aGlzLCB0aGlzLnByb2ZpbGVXcmFwcGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0
aGlzLmN1cnJlbnRWaWV3ID09PSB0aGlzLmNvbnN0cnVjdG9yc1ZpZXcpCi0gICAgICAgICAgICB0
aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VsZWN0RWxlbWVudC5hZGRTdHlsZUNs
YXNzKCJoaWRkZW4iKTsKLQotICAgICAgICBpZiAoIXRoaXMuY3VycmVudFF1ZXJ5IHx8ICF0aGlz
Ll9zZWFyY2hGaW5pc2hlZENhbGxiYWNrIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRzKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIFRoZSBjdXJyZW50IHNlYXJjaCBuZWVkcyB0byBi
ZSBwZXJmb3JtZWQgYWdhaW4uIEZpcnN0IG5lZ2F0ZSBvdXQgcHJldmlvdXMgbWF0Y2gKLSAgICAg
ICAgLy8gY291bnQgYnkgY2FsbGluZyB0aGUgc2VhcmNoIGZpbmlzaGVkIGNhbGxiYWNrIHdpdGgg
YSBuZWdhdGl2ZSBudW1iZXIgb2YgbWF0Y2hlcy4KLSAgICAgICAgLy8gVGhlbiBwZXJmb3JtIHRo
ZSBzZWFyY2ggYWdhaW4gdGhlIHdpdGggc2FtZSBxdWVyeSBhbmQgY2FsbGJhY2suCi0gICAgICAg
IHRoaXMuX3NlYXJjaEZpbmlzaGVkQ2FsbGJhY2sodGhpcywgLXRoaXMuX3NlYXJjaFJlc3VsdHMu
bGVuZ3RoKTsKLSAgICAgICAgdGhpcy5wZXJmb3JtU2VhcmNoKHRoaXMuY3VycmVudFF1ZXJ5LCB0
aGlzLl9zZWFyY2hGaW5pc2hlZENhbGxiYWNrKTsKLSAgICB9LAotCi0gICAgX2dldEhvdmVyQW5j
aG9yOiBmdW5jdGlvbih0YXJnZXQpCi0gICAgewotICAgICAgICB2YXIgc3BhbiA9IHRhcmdldC5l
bmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJzcGFuIik7Ci0gICAgICAgIGlmICghc3Bh
bikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIHJvdyA9IHRhcmdldC5lbmNsb3Np
bmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJ0ciIpOwotICAgICAgICBpZiAoIXJvdykKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIGdyaWROb2RlID0gcm93Ll9kYXRhR3JpZE5vZGU7
Ci0gICAgICAgIGlmICghZ3JpZE5vZGUuaGFzSG92ZXJNZXNzYWdlKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBzcGFuLm5vZGUgPSBncmlkTm9kZTsKLSAgICAgICAgcmV0dXJuIHNwYW47
Ci0gICAgfSwKLQotICAgIF9yZXNvbHZlT2JqZWN0Rm9yUG9wb3ZlcjogZnVuY3Rpb24oZWxlbWVu
dCwgc2hvd0NhbGxiYWNrLCBvYmplY3RHcm91cE5hbWUpCi0gICAgewotICAgICAgICBlbGVtZW50
Lm5vZGUucXVlcnlPYmplY3RDb250ZW50KHNob3dDYWxsYmFjaywgb2JqZWN0R3JvdXBOYW1lKTsK
LSAgICB9LAotCi0gICAgX2hlbHBDbGlja2VkOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAg
ICAgIGlmICghdGhpcy5faGVscFBvcG92ZXJDb250ZW50RWxlbWVudCkgewotICAgICAgICAgICAg
dmFyIHJlZlR5cGVzID0gWyJhOiIsICJjb25zb2xlLWZvcm1hdHRlZC1uYW1lIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJwcm9wZXJ0eSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIw
OiIsICJjb25zb2xlLWZvcm1hdHRlZC1uYW1lIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJlbGVt
ZW50IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImE6IiwgImNvbnNvbGUtZm9ybWF0
dGVkLW51bWJlciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiY29udGV4dCB2YXIiKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiYToiLCAiY29uc29sZS1mb3JtYXR0ZWQtbnVsbCIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygic3lzdGVtIHByb3AiKV07Ci0gICAgICAgICAgICB2YXIgb2Jq
VHlwZXMgPSBbIiBhICIsICJjb25zb2xlLWZvcm1hdHRlZC1vYmplY3QiLCAiT2JqZWN0IiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXCJhXCIiLCAiY29uc29sZS1mb3JtYXR0ZWQtc3Ry
aW5nIiwgIlN0cmluZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9hLyIsICJjb25z
b2xlLWZvcm1hdHRlZC1zdHJpbmciLCAiUmVnRXhwIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiYSgpIiwgImNvbnNvbGUtZm9ybWF0dGVkLWZ1bmN0aW9uIiwgIkZ1bmN0aW9uIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiYVtdIiwgImNvbnNvbGUtZm9ybWF0dGVkLW9iamVj
dCIsICJBcnJheSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm51bSIsICJjb25zb2xl
LWZvcm1hdHRlZC1udW1iZXIiLCAiTnVtYmVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiIGEgIiwgImNvbnNvbGUtZm9ybWF0dGVkLW51bGwiLCAiU3lzdGVtIl07Ci0KLSAgICAgICAg
ICAgIHZhciBjb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7
Ci0gICAgICAgICAgICBjb250ZW50RWxlbWVudC5jbGFzc05hbWUgPSAiaGVhcHNob3QtaGVscCI7
Ci0gICAgICAgICAgICB2YXIgaGVhZGVyUm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIi
KTsKLSAgICAgICAgICAgIHZhciBwcm9wc0hlYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InRoIik7Ci0gICAgICAgICAgICBwcm9wc0hlYWRlci50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUHJvcGVydHkgdHlwZXM6Iik7Ci0gICAgICAgICAgICBoZWFkZXJSb3cuYXBw
ZW5kQ2hpbGQocHJvcHNIZWFkZXIpOwotICAgICAgICAgICAgdmFyIG9ianNIZWFkZXIgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpOwotICAgICAgICAgICAgb2Jqc0hlYWRlci50ZXh0Q29u
dGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiT2JqZWN0IHR5cGVzOiIpOwotICAgICAgICAg
ICAgaGVhZGVyUm93LmFwcGVuZENoaWxkKG9ianNIZWFkZXIpOwotICAgICAgICAgICAgY29udGVu
dEVsZW1lbnQuYXBwZW5kQ2hpbGQoaGVhZGVyUm93KTsKLQotICAgICAgICAgICAgZnVuY3Rpb24g
YXBwZW5kSGVscChoZWxwLCBpbmRleCwgY2VsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAg
ICAgICAgZGl2LmNsYXNzTmFtZSA9ICJzb3VyY2UtY29kZSBldmVudC1wcm9wZXJ0aWVzIjsKLSAg
ICAgICAgICAgICAgICB2YXIgbmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK
LSAgICAgICAgICAgICAgICBuYW1lLnRleHRDb250ZW50ID0gaGVscFtpbmRleF07Ci0gICAgICAg
ICAgICAgICAgbmFtZS5jbGFzc05hbWUgPSBoZWxwW2luZGV4ICsgMV07Ci0gICAgICAgICAgICAg
ICAgZGl2LmFwcGVuZENoaWxkKG5hbWUpOwotICAgICAgICAgICAgICAgIHZhciBkZXNjID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAgICAgIGRlc2MudGV4dENv
bnRlbnQgPSAiICIgKyBoZWxwW2luZGV4ICsgMl07Ci0gICAgICAgICAgICAgICAgZGl2LmFwcGVu
ZENoaWxkKGRlc2MpOwotICAgICAgICAgICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQoZGl2KTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIGxlbiA9IE1hdGgubWF4KHJlZlR5cGVzLmxl
bmd0aCwgb2JqVHlwZXMubGVuZ3RoKTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bGVuOyBpICs9IDMpIHsKLSAgICAgICAgICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidHIiKTsKLSAgICAgICAgICAgICAgICB2YXIgcmVmQ2VsbCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgICAgICAgICAgaWYgKHJlZlR5cGVzW2ldKQotICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRIZWxwKHJlZlR5cGVzLCBpLCByZWZDZWxsKTsKLSAgICAg
ICAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQocmVmQ2VsbCk7Ci0gICAgICAgICAgICAgICAgdmFy
IG9iakNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgICAgICAgICAgICAg
IGlmIChvYmpUeXBlc1tpXSkKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kSGVscChvYmpUeXBl
cywgaSwgb2JqQ2VsbCk7Ci0gICAgICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKG9iakNlbGwp
OwotICAgICAgICAgICAgICAgIGNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHJvdyk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLl9oZWxwUG9wb3ZlckNvbnRlbnRFbGVtZW50ID0g
Y29udGVudEVsZW1lbnQ7Ci0gICAgICAgICAgICB0aGlzLmhlbHBQb3BvdmVyID0gbmV3IFdlYklu
c3BlY3Rvci5Qb3BvdmVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRoaXMuaGVscFBvcG92
ZXIudmlzaWJsZSkKLSAgICAgICAgICAgIHRoaXMuaGVscFBvcG92ZXIuaGlkZSgpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB0aGlzLmhlbHBQb3BvdmVyLnNob3codGhpcy5faGVscFBvcG92
ZXJDb250ZW50RWxlbWVudCwgdGhpcy5oZWxwQnV0dG9uLmVsZW1lbnQpOwotICAgIH0sCi0KLSAg
ICBfc3RhcnRSZXRhaW5lcnNIZWFkZXJEcmFnZ2luZzogZnVuY3Rpb24oZXZlbnQpCi0gICAgewot
ICAgICAgICBpZiAoIXRoaXMuaXNTaG93aW5nKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgV2ViSW5zcGVjdG9yLmVsZW1lbnREcmFnU3RhcnQodGhpcy5yZXRhaW5tZW50Vmlld0hl
YWRlciwgdGhpcy5fcmV0YWluZXJzSGVhZGVyRHJhZ2dpbmcuYmluZCh0aGlzKSwgdGhpcy5fZW5k
UmV0YWluZXJzSGVhZGVyRHJhZ2dpbmcuYmluZCh0aGlzKSwgZXZlbnQsICJyb3ctcmVzaXplIik7
Ci0gICAgICAgIHRoaXMuX3ByZXZpb3VzRHJhZ1Bvc2l0aW9uID0gZXZlbnQucGFnZVk7Ci0gICAg
ICAgIGV2ZW50LmNvbnN1bWUoKTsKLSAgICB9LAotCi0gICAgX3JldGFpbmVyc0hlYWRlckRyYWdn
aW5nOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLnJl
dGFpbm1lbnRWaWV3LmVsZW1lbnQuY2xpZW50SGVpZ2h0OwotICAgICAgICBoZWlnaHQgKz0gdGhp
cy5fcHJldmlvdXNEcmFnUG9zaXRpb24gLSBldmVudC5wYWdlWTsKLSAgICAgICAgdGhpcy5fcHJl
dmlvdXNEcmFnUG9zaXRpb24gPSBldmVudC5wYWdlWTsKLSAgICAgICAgdGhpcy5fdXBkYXRlUmV0
YWlubWVudFZpZXdIZWlnaHQoaGVpZ2h0KTsKLSAgICAgICAgZXZlbnQuY29uc3VtZSh0cnVlKTsK
LSAgICB9LAotCi0gICAgX2VuZFJldGFpbmVyc0hlYWRlckRyYWdnaW5nOiBmdW5jdGlvbihldmVu
dCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5lbGVtZW50RHJhZ0VuZChldmVudCk7Ci0g
ICAgICAgIGRlbGV0ZSB0aGlzLl9wcmV2aW91c0RyYWdQb3NpdGlvbjsKLSAgICAgICAgZXZlbnQu
Y29uc3VtZSgpOwotICAgIH0sCi0KLSAgICBfdXBkYXRlUmV0YWlubWVudFZpZXdIZWlnaHQ6IGZ1
bmN0aW9uKGhlaWdodCkKLSAgICB7Ci0gICAgICAgIGhlaWdodCA9IE51bWJlci5jb25zdHJhaW4o
aGVpZ2h0LCBQcmVmZXJlbmNlcy5taW5Db25zb2xlSGVpZ2h0LCB0aGlzLmVsZW1lbnQuY2xpZW50
SGVpZ2h0IC0gUHJlZmVyZW5jZXMubWluQ29uc29sZUhlaWdodCk7Ci0gICAgICAgIHRoaXMudmll
d3NDb250YWluZXIuc3R5bGUuYm90dG9tID0gKGhlaWdodCArIHRoaXMucmV0YWlubWVudFZpZXdI
ZWFkZXIuY2xpZW50SGVpZ2h0KSArICJweCI7Ci0gICAgICAgIHRoaXMucmV0YWlubWVudFZpZXcu
ZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAicHgiOwotICAgICAgICB0aGlzLnJldGFp
bm1lbnRWaWV3SGVhZGVyLnN0eWxlLmJvdHRvbSA9IGhlaWdodCArICJweCI7Ci0gICAgfSwKLQot
ICAgIF91cGRhdGVCYXNlT3B0aW9uczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGxp
c3QgPSB0aGlzLl9wcm9maWxlcygpOwotICAgICAgICAvLyBXZSdyZSBhc3N1bWluZyB0aGF0IHNu
YXBzaG90cyBjYW4gb25seSBiZSBhZGRlZC4KLSAgICAgICAgaWYgKHRoaXMuYmFzZVNlbGVjdEVs
ZW1lbnQubGVuZ3RoID09PSBsaXN0Lmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBmb3IgKHZhciBpID0gdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5sZW5ndGgsIG4gPSBsaXN0
Lmxlbmd0aDsgaSA8IG47ICsraSkgewotICAgICAgICAgICAgdmFyIGJhc2VPcHRpb24gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKLSAgICAgICAgICAgIHZhciB0aXRsZSA9IGxp
c3RbaV0udGl0bGU7Ci0gICAgICAgICAgICBpZiAoIXRpdGxlLmluZGV4T2YoVXNlckluaXRpYXRl
ZFByb2ZpbGVOYW1lKSkKLSAgICAgICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU25hcHNob3QgJWQiLCB0aXRsZS5zdWJzdHJpbmcoVXNlckluaXRpYXRlZFByb2ZpbGVO
YW1lLmxlbmd0aCArIDEpKTsKLSAgICAgICAgICAgIGJhc2VPcHRpb24ubGFiZWwgPSB0aXRsZTsK
LSAgICAgICAgICAgIHRoaXMuYmFzZVNlbGVjdEVsZW1lbnQuYXBwZW5kQ2hpbGQoYmFzZU9wdGlv
bik7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgX3VwZGF0ZUZpbHRlck9wdGlvbnM6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBsaXN0ID0gdGhpcy5fcHJvZmlsZXMoKTsKLSAgICAg
ICAgLy8gV2UncmUgYXNzdW1pbmcgdGhhdCBzbmFwc2hvdHMgY2FuIG9ubHkgYmUgYWRkZWQuCi0g
ICAgICAgIGlmICh0aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQubGVuZ3RoIC0gMSA9PT0gbGlzdC5s
ZW5ndGgpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCF0aGlzLmZpbHRlclNl
bGVjdEVsZW1lbnQubGVuZ3RoKSB7Ci0gICAgICAgICAgICB2YXIgZmlsdGVyT3B0aW9uID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7Ci0gICAgICAgICAgICBmaWx0ZXJPcHRpb24u
bGFiZWwgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFsbCBvYmplY3RzIik7Ci0gICAgICAgICAg
ICB0aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQuYXBwZW5kQ2hpbGQoZmlsdGVyT3B0aW9uKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGZvciAodmFyIGkgPSB0aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQu
bGVuZ3RoIC0gMSwgbiA9IGxpc3QubGVuZ3RoOyBpIDwgbjsgKytpKSB7Ci0gICAgICAgICAgICB2
YXIgZmlsdGVyT3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7Ci0gICAg
ICAgICAgICB2YXIgdGl0bGUgPSBsaXN0W2ldLnRpdGxlOwotICAgICAgICAgICAgaWYgKCF0aXRs
ZS5pbmRleE9mKFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoIWkpCi0gICAgICAgICAgICAgICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJPYmplY3RzIGFsbG9jYXRlZCBiZWZvcmUgU25hcHNob3QgJWQiLCB0aXRsZS5zdWJzdHJpbmco
VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lLmxlbmd0aCArIDEpKTsKLSAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJP
YmplY3RzIGFsbG9jYXRlZCBiZXR3ZWVuIFNuYXBzaG90cyAlZCBhbmQgJWQiLCB0aXRsZS5zdWJz
dHJpbmcoVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lLmxlbmd0aCArIDEpIC0gMSwgdGl0bGUuc3Vi
c3RyaW5nKFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZS5sZW5ndGggKyAxKSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBmaWx0ZXJPcHRpb24ubGFiZWwgPSB0aXRsZTsKLSAgICAgICAgICAg
IHRoaXMuZmlsdGVyU2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChmaWx0ZXJPcHRpb24pOwotICAg
ICAgICB9Ci0gICAgfQotfTsKLQotV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7Ci0KLVdlYklu
c3BlY3Rvci5zZXR0aW5ncy5zaG93SGVhcFNuYXBzaG90T2JqZWN0c0hpZGRlblByb3BlcnRpZXMg
PSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZygic2hvd0hlYVNuYXBzaG90T2Jq
ZWN0c0hpZGRlblByb3BlcnRpZXMiLCBmYWxzZSk7Ci0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0g
KiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlfQotICovCi1XZWJJbnNwZWN0b3Iu
RGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVUeXBlID0gZnVuY3Rpb24oKQotewotICAgIFdlYkluc3Bl
Y3Rvci5Qcm9maWxlVHlwZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90
UHJvZmlsZVR5cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRha2UgSGVhcCBTbmFw
c2hvdCIpKTsKLX0KLQotV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5U
eXBlSWQgPSAiSEVBUCI7Ci0KLVdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90UHJvZmlsZVR5
cGUucHJvdG90eXBlID0gewotICAgIGdldCBidXR0b25Ub29sdGlwKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRha2UgaGVhcCBzbmFwc2hvdC4iKTsKLSAg
ICB9LAotCi0gICAgYnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy50YWtlSGVhcFNuYXBzaG90KCk7Ci0gICAgfSwKLQot
ICAgIGdldCB0cmVlSXRlbVRpdGxlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkhFQVAgU05BUFNIT1RTIik7Ci0gICAgfSwKLQotICAgIGdldCBkZXNjcmlw
dGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWFw
IHNuYXBzaG90IHByb2ZpbGVzIHNob3cgbWVtb3J5IGRpc3RyaWJ1dGlvbiBhbW9uZyB5b3VyIHBh
Z2UncyBKYXZhU2NyaXB0IG9iamVjdHMgYW5kIHJlbGF0ZWQgRE9NIG5vZGVzLiIpOwotICAgIH0s
Ci0KLSAgICBjcmVhdGVTaWRlYmFyVHJlZUVsZW1lbnRGb3JQcm9maWxlOiBmdW5jdGlvbihwcm9m
aWxlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJvZmlsZVNpZGVi
YXJUcmVlRWxlbWVudChwcm9maWxlLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNuYXBzaG90ICVk
IiksICJoZWFwLXNuYXBzaG90LXNpZGViYXItdHJlZS1pdGVtIik7Ci0gICAgfSwKLQotICAgIGNy
ZWF0ZVZpZXc6IGZ1bmN0aW9uKHByb2ZpbGUpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90VmlldyhXZWJJbnNwZWN0b3IucGFuZWxzLnByb2Zp
bGVzLCBwcm9maWxlKTsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90
UHJvZmlsZVR5cGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Qcm9maWxlVHlw
ZS5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0hlYXBTbmFwc2hvdEdyaWROb2Rlcy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3M2Q1MGIxMDg5
NmI2NGVkOWM3ZDc5ZmQzNmYwZWE4NGM0ZjcxM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdEdyaWROb2Rlcy5qcwpAQCAt
MCwwICsxLDk0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVj
dG9yLkRhdGFHcmlkTm9kZX0KKyAqLworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2Rl
ID0gZnVuY3Rpb24odHJlZSwgaGFzQ2hpbGRyZW4pCit7CisgICAgV2ViSW5zcGVjdG9yLkRhdGFH
cmlkTm9kZS5jYWxsKHRoaXMsIG51bGwsIGhhc0NoaWxkcmVuKTsKKyAgICB0aGlzLl9kZWZhdWx0
UG9wdWxhdGVDb3VudCA9IHRyZWUuX2RlZmF1bHRQb3B1bGF0ZUNvdW50OworICAgIHRoaXMuX3By
b3ZpZGVyID0gbnVsbDsKKyAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInBvcHVsYXRlIiwgdGhp
cy5fcG9wdWxhdGUsIHRoaXMpOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5v
ZGUucHJvdG90eXBlID0geworICAgIGVuc3VyZUNvbnRlbnRDcmVhdGVkOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICAvLyBNYXkgYmUgb3ZlcnJpZGVuIGluIGRlc2NlbmRhbnRzIHdpdGggbGF6
eSBjb250ZW50LgorICAgIH0sCisKKyAgICBjcmVhdGVDZWxsOiBmdW5jdGlvbihjb2x1bW5JZGVu
dGlmaWVyKQorICAgIHsKKyAgICAgICAgdmFyIGNlbGwgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWRO
b2RlLnByb3RvdHlwZS5jcmVhdGVDZWxsLmNhbGwodGhpcywgY29sdW1uSWRlbnRpZmllcik7Cisg
ICAgICAgIGlmICh0aGlzLl9zZWFyY2hNYXRjaGVkKQorICAgICAgICAgICAgY2VsbC5hZGRTdHls
ZUNsYXNzKCJoaWdobGlnaHQiKTsKKyAgICAgICAgcmV0dXJuIGNlbGw7CisgICAgfSwKKworICAg
IGRpc3Bvc2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9wcm92aWRlcikK
KyAgICAgICAgICAgIHRoaXMuX3Byb3ZpZGVyLmRpc3Bvc2UoKTsKKyAgICAgICAgZm9yICh2YXIg
bm9kZSA9IHRoaXMuY2hpbGRyZW5bMF07IG5vZGU7IG5vZGUgPSBub2RlLnRyYXZlcnNlTmV4dE5v
ZGUodHJ1ZSwgdGhpcywgdHJ1ZSkpCisgICAgICAgICAgICBpZiAobm9kZS5kaXNwb3NlKQorICAg
ICAgICAgICAgICAgIG5vZGUuZGlzcG9zZSgpOworICAgIH0sCisKKyAgICBoYXNIb3Zlck1lc3Nh
Z2U6IGZhbHNlLAorCisgICAgcXVlcnlPYmplY3RDb250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykK
KyAgICB7CisgICAgfSwKKworICAgIF90b1BlcmNlbnRTdHJpbmc6IGZ1bmN0aW9uKG51bSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBudW0udG9GaXhlZCgwKSArICJcdTIwMDklIjsgLy8gXHUyMDA5
IGlzIGEgdGhpbiBzcGFjZS4KKyAgICB9LAorCisgICAgX2NyZWF0ZVZhbHVlQ2VsbDogZnVuY3Rp
b24oY29sdW1uSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgY2VsbC5jbGFzc05hbWUgPSBjb2x1bW5JZGVu
dGlmaWVyICsgIi1jb2x1bW4iOworICAgICAgICBpZiAodGhpcy5kYXRhR3JpZC5zbmFwc2hvdC50
b3RhbFNpemUgIT09IDApIHsKKyAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIHZhciB2YWx1ZVNwYW4gPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICB2YWx1ZVNwYW4udGV4dENvbnRlbnQgPSB0
aGlzLmRhdGFbY29sdW1uSWRlbnRpZmllcl07CisgICAgICAgICAgICBkaXYuYXBwZW5kQ2hpbGQo
dmFsdWVTcGFuKTsKKyAgICAgICAgICAgIHZhciBwZXJjZW50Q29sdW1uID0gY29sdW1uSWRlbnRp
ZmllciArICItcGVyY2VudCI7CisgICAgICAgICAgICBpZiAocGVyY2VudENvbHVtbiBpbiB0aGlz
LmRhdGEpIHsKKyAgICAgICAgICAgICAgICB2YXIgcGVyY2VudFNwYW4gPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICAgICAgcGVyY2VudFNwYW4uY2xhc3NOYW1l
ID0gInBlcmNlbnQtY29sdW1uIjsKKyAgICAgICAgICAgICAgICBwZXJjZW50U3Bhbi50ZXh0Q29u
dGVudCA9IHRoaXMuZGF0YVtwZXJjZW50Q29sdW1uXTsKKyAgICAgICAgICAgICAgICBkaXYuYXBw
ZW5kQ2hpbGQocGVyY2VudFNwYW4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2VsbC5h
cHBlbmRDaGlsZChkaXYpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjZWxsOworICAgIH0s
CisKKyAgICBfcG9wdWxhdGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5y
ZW1vdmVFdmVudExpc3RlbmVyKCJwb3B1bGF0ZSIsIHRoaXMuX3BvcHVsYXRlLCB0aGlzKTsKKyAg
ICAgICAgZnVuY3Rpb24gc29ydGVkKGlnbm9yZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRo
aXMucG9wdWxhdGVDaGlsZHJlbigpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3Byb3ZpZGVy
LnNvcnRBbmRSZXdpbmQodGhpcy5jb21wYXJhdG9yKCksIHNvcnRlZC5iaW5kKHRoaXMpKTsKKyAg
ICB9LAorCisgICAgcG9wdWxhdGVDaGlsZHJlbjogZnVuY3Rpb24ocHJvdmlkZXIsIGhvd01hbnks
IGF0SW5kZXgsIGFmdGVyUG9wdWxhdGUsIHN1cHByZXNzTm90aWZ5QWJvdXRDb21wbGV0aW9uKQor
ICAgIHsKKyAgICAgICAgaWYgKCFob3dNYW55ICYmIHByb3ZpZGVyKSB7CisgICAgICAgICAgICBo
b3dNYW55ID0gcHJvdmlkZXIuaW5zdGFuY2VDb3VudDsKKyAgICAgICAgICAgIHByb3ZpZGVyLmlu
c3RhbmNlQ291bnQgPSAwOworICAgICAgICB9CisgICAgICAgIHByb3ZpZGVyID0gcHJvdmlkZXIg
fHwgdGhpcy5fcHJvdmlkZXI7CisgICAgICAgIGlmICghKCJpbnN0YW5jZUNvdW50IiBpbiBwcm92
aWRlcikpCisgICAgICAgICAgICBwcm92aWRlci5pbnN0YW5jZUNvdW50ID0gMDsKKyAgICAgICAg
aG93TWFueSA9IGhvd01hbnkgfHwgdGhpcy5fZGVmYXVsdFBvcHVsYXRlQ291bnQ7CisgICAgICAg
IGF0SW5kZXggPSBhdEluZGV4IHx8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOworICAgICAgICB2YXIg
aGF2ZVNhdmVkQ2hpbGRyZW4gPSAhIXRoaXMuX3NhdmVkQ2hpbGRyZW47CisgICAgICAgIGlmICho
YXZlU2F2ZWRDaGlsZHJlbikgeworICAgICAgICAgICAgaGF2ZVNhdmVkQ2hpbGRyZW4gPSBmYWxz
ZTsKKyAgICAgICAgICAgIGZvciAodmFyIGMgaW4gdGhpcy5fc2F2ZWRDaGlsZHJlbikgeworICAg
ICAgICAgICAgICAgIGhhdmVTYXZlZENoaWxkcmVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZhciBwYXJ0ID0gMDsK
KyAgICAgICAgZnVuY3Rpb24gY2FsbFNlcmlhbGl6ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChwYXJ0ID49IGhvd01hbnkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgcGFydCArPSB0aGlzLl9kZWZhdWx0UG9wdWxhdGVDb3VudDsKKyAgICAgICAgICAgIHByb3Zp
ZGVyLnNlcmlhbGl6ZU5leHRJdGVtcyh0aGlzLl9kZWZhdWx0UG9wdWxhdGVDb3VudCwgY2hpbGRy
ZW5SZXRyaWV2ZWQuYmluZCh0aGlzKSk7CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gY2hp
bGRyZW5SZXRyaWV2ZWQoaXRlbXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBsZW5ndGgg
PSBpdGVtcy50b3RhbExlbmd0aDsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gaXRl
bXMubGVuZ3RoOyBpIDwgbDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBpdGVt
c1tpXTsKKyAgICAgICAgICAgICAgICBpZiAoaGF2ZVNhdmVkQ2hpbGRyZW4pIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIGhhc2ggPSB0aGlzLl9jaGlsZEhhc2hGb3JFbnRpdHkoaXRlbSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChoYXNoIGluIHRoaXMuX3NhdmVkQ2hpbGRyZW4pIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQodGhpcy5fc2F2ZWRDaGlsZHJl
bltoYXNoXSwgYXRJbmRleCsrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHRoaXMuaW5zZXJ0Q2hpbGQodGhpcy5fY3JlYXRlQ2hpbGROb2RlKGl0ZW0sIHByb3ZpZGVyLCB0
aGlzKSwgYXRJbmRleCsrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByb3ZpZGVyLmlu
c3RhbmNlQ291bnQgKz0gaXRlbXMubGVuZ3RoOworICAgICAgICAgICAgaWYgKHBhcnQgPCBob3dN
YW55KSB7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChjYWxsU2VyaWFsaXplLmJpbmQodGhp
cyksIDApOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKGl0ZW1zLmhhc05leHQpCisgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRDaGls
ZChuZXcgV2ViSW5zcGVjdG9yLlNob3dNb3JlRGF0YUdyaWROb2RlKHRoaXMucG9wdWxhdGVDaGls
ZHJlbi5iaW5kKHRoaXMsIHByb3ZpZGVyKSwgdGhpcy5fZGVmYXVsdFBvcHVsYXRlQ291bnQsIGxl
bmd0aCksIGF0SW5kZXgrKyk7CisgICAgICAgICAgICBpZiAoYWZ0ZXJQb3B1bGF0ZSkKKyAgICAg
ICAgICAgICAgICBhZnRlclBvcHVsYXRlKCk7CisgICAgICAgICAgICBpZiAoIXN1cHByZXNzTm90
aWZ5QWJvdXRDb21wbGV0aW9uKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gbm90aWZ5KCkK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKCJwb3B1bGF0ZSBjb21wbGV0ZSIpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KG5vdGlmeS5iaW5kKHRoaXMpLCAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXRUaW1lb3V0KGNhbGxTZXJpYWxpemUuYmluZCh0
aGlzKSwgMCk7CisgICAgfSwKKworICAgIF9zYXZlQ2hpbGRyZW46IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHRoaXMuX3NhdmVkQ2hpbGRyZW4gPSB7fTsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDAsIGNoaWxkcmVuQ291bnQgPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGNoaWxkcmVuQ291
bnQ7ICsraSkgeworICAgICAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlbltpXTsKKyAg
ICAgICAgICAgIGlmIChjaGlsZC5leHBhbmRlZCkKKyAgICAgICAgICAgICAgICB0aGlzLl9zYXZl
ZENoaWxkcmVuW3RoaXMuX2NoaWxkSGFzaEZvck5vZGUoY2hpbGQpXSA9IGNoaWxkOworICAgICAg
ICB9CisgICAgfSwKKworICAgIHNvcnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMu
ZGF0YUdyaWQucmVjdXJzaXZlU29ydGluZ0VudGVyKCk7CisgICAgICAgIGZ1bmN0aW9uIGFmdGVy
U29ydChzb3J0ZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghc29ydGVkKSB7CisgICAg
ICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5yZWN1cnNpdmVTb3J0aW5nTGVhdmUoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLl9zYXZl
Q2hpbGRyZW4oKTsKKyAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgICAg
ICAgICAgZnVuY3Rpb24gYWZ0ZXJQb3B1bGF0ZSgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7ICsr
aSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmNoaWxkcmVuW2ldOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZXhwYW5kZWQpCisgICAgICAgICAgICAgICAg
ICAgICAgICBjaGlsZC5zb3J0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHRoaXMuZGF0YUdyaWQucmVjdXJzaXZlU29ydGluZ0xlYXZlKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB0aGlzLnBvcHVsYXRlQ2hpbGRyZW4odGhpcy5fcHJvdmlkZXIsIG51bGwsIG51
bGwsIGFmdGVyUG9wdWxhdGUuYmluZCh0aGlzKSk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5f
cHJvdmlkZXIuc29ydEFuZFJld2luZCh0aGlzLmNvbXBhcmF0b3IoKSwgYWZ0ZXJTb3J0LmJpbmQo
dGhpcykpOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGU7
CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdEdyaWROb2RlfQorICovCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TGF6eUdyaWRO
b2RlID0gZnVuY3Rpb24odHJlZSwgaGFzQ2hpbGRyZW4pCit7CisgICAgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdEdyaWROb2RlLmNhbGwodGhpcywgdHJlZSwgaGFzQ2hpbGRyZW4pOworICAgIHRo
aXMuX2RlZmVyQ29udGVudENyZWF0aW9uID0gdHJ1ZTsKK30KKworV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdExhenlHcmlkTm9kZS5wcm90b3R5cGUgPSB7CisgICAgZW5zdXJlQ29udGVudENyZWF0
ZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZGVmZXJDb250ZW50Q3Jl
YXRpb24pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX2RlZmVyQ29udGVudENy
ZWF0aW9uID0gZmFsc2U7CisgICAgICAgIHRoaXMuY3JlYXRlQ2VsbHMoKTsKKyAgICB9LAorCisg
ICAgY3JlYXRlQ2VsbHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9kZWZl
ckNvbnRlbnRDcmVhdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVDZWxscy5jYWxsKHRoaXMp
OworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMYXp5R3JpZE5vZGUucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90
b3R5cGU7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdEdyaWROb2RlfQorICovCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R2Vu
ZXJpY09iamVjdE5vZGUgPSBmdW5jdGlvbih0cmVlLCBub2RlKQoreworICAgIFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RHcmlkTm9kZS5jYWxsKHRoaXMsIHRyZWUsIGZhbHNlKTsKKyAgICB0aGlz
Ll9uYW1lID0gbm9kZS5uYW1lOworICAgIHRoaXMuX3R5cGUgPSBub2RlLnR5cGU7CisgICAgdGhp
cy5fZGlzdGFuY2VUb1dpbmRvdyA9IG5vZGUuZGlzdGFuY2VUb1dpbmRvdzsKKyAgICB0aGlzLl9z
aGFsbG93U2l6ZSA9IG5vZGUuc2VsZlNpemU7CisgICAgdGhpcy5fcmV0YWluZWRTaXplID0gbm9k
ZS5yZXRhaW5lZFNpemU7CisgICAgdGhpcy5zbmFwc2hvdE5vZGVJZCA9IG5vZGUuaWQ7CisgICAg
dGhpcy5zbmFwc2hvdE5vZGVJbmRleCA9IG5vZGUubm9kZUluZGV4OworICAgIGlmICh0aGlzLl90
eXBlID09PSAic3RyaW5nIikKKyAgICAgICAgdGhpcy5oYXNIb3Zlck1lc3NhZ2UgPSB0cnVlOwor
ICAgIGVsc2UgaWYgKHRoaXMuX3R5cGUgPT09ICJvYmplY3QiICYmIHRoaXMuaXNXaW5kb3codGhp
cy5fbmFtZSkpIHsKKyAgICAgICAgdGhpcy5fbmFtZSA9IHRoaXMuc2hvcnRlbldpbmRvd1VSTCh0
aGlzLl9uYW1lLCBmYWxzZSk7CisgICAgICAgIHRoaXMuaGFzSG92ZXJNZXNzYWdlID0gdHJ1ZTsK
KyAgICB9IGVsc2UgaWYgKG5vZGUuZmxhZ3MgJiB0cmVlLnNuYXBzaG90Lm5vZGVGbGFncy5jYW5C
ZVF1ZXJpZWQpCisgICAgICAgIHRoaXMuaGFzSG92ZXJNZXNzYWdlID0gdHJ1ZTsKKyAgICBpZiAo
bm9kZS5mbGFncyAmIHRyZWUuc25hcHNob3Qubm9kZUZsYWdzLmRldGFjaGVkRE9NVHJlZU5vZGUp
CisgICAgICAgIHRoaXMuZGV0YWNoZWRET01UcmVlTm9kZSA9IHRydWU7Cit9OworCitXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90R2VuZXJpY09iamVjdE5vZGUucHJvdG90eXBlID0geworICAgIGNy
ZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIpCisgICAgeworICAgICAgICB2YXIg
Y2VsbCA9IGNvbHVtbklkZW50aWZpZXIgIT09ICJvYmplY3QiID8gdGhpcy5fY3JlYXRlVmFsdWVD
ZWxsKGNvbHVtbklkZW50aWZpZXIpIDogdGhpcy5fY3JlYXRlT2JqZWN0Q2VsbCgpOworICAgICAg
ICBpZiAodGhpcy5fc2VhcmNoTWF0Y2hlZCkKKyAgICAgICAgICAgIGNlbGwuYWRkU3R5bGVDbGFz
cygiaGlnaGxpZ2h0Iik7CisgICAgICAgIHJldHVybiBjZWxsOworICAgIH0sCisKKyAgICBfY3Jl
YXRlT2JqZWN0Q2VsbDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGNlbGwgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICBjZWxsLmNsYXNzTmFtZSA9ICJvYmpl
Y3QtY29sdW1uIjsKKyAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICBkaXYuY2xhc3NOYW1lID0gInNvdXJjZS1jb2RlIGV2ZW50LXByb3BlcnRp
ZXMiOworICAgICAgICBkaXYuc3R5bGUub3ZlcmZsb3cgPSAidmlzaWJsZSI7CisgICAgICAgIHZh
ciBkYXRhID0gdGhpcy5kYXRhWyJvYmplY3QiXTsKKyAgICAgICAgaWYgKHRoaXMuX3ByZWZpeE9i
amVjdENlbGwpCisgICAgICAgICAgICB0aGlzLl9wcmVmaXhPYmplY3RDZWxsKGRpdiwgZGF0YSk7
CisgICAgICAgIHZhciB2YWx1ZVNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7
CisgICAgICAgIHZhbHVlU3Bhbi5jbGFzc05hbWUgPSAidmFsdWUgY29uc29sZS1mb3JtYXR0ZWQt
IiArIGRhdGEudmFsdWVTdHlsZTsKKyAgICAgICAgdmFsdWVTcGFuLnRleHRDb250ZW50ID0gZGF0
YS52YWx1ZTsKKyAgICAgICAgZGl2LmFwcGVuZENoaWxkKHZhbHVlU3Bhbik7CisgICAgICAgIHZh
ciBpZFNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIGlkU3Bh
bi5jbGFzc05hbWUgPSAiY29uc29sZS1mb3JtYXR0ZWQtaWQiOworICAgICAgICBpZFNwYW4udGV4
dENvbnRlbnQgPSAiIEAiICsgZGF0YVsibm9kZUlkIl07CisgICAgICAgIGRpdi5hcHBlbmRDaGls
ZChpZFNwYW4pOworICAgICAgICBpZiAodGhpcy5fcG9zdGZpeE9iamVjdENlbGwpCisgICAgICAg
ICAgICB0aGlzLl9wb3N0Zml4T2JqZWN0Q2VsbChkaXYsIGRhdGEpOworICAgICAgICBjZWxsLmFw
cGVuZENoaWxkKGRpdik7CisgICAgICAgIGNlbGwuYWRkU3R5bGVDbGFzcygiZGlzY2xvc3VyZSIp
OworICAgICAgICBpZiAodGhpcy5kZXB0aCkKKyAgICAgICAgICAgIGNlbGwuc3R5bGUuc2V0UHJv
cGVydHkoInBhZGRpbmctbGVmdCIsICh0aGlzLmRlcHRoICogdGhpcy5kYXRhR3JpZC5pbmRlbnRX
aWR0aCkgKyAicHgiKTsKKyAgICAgICAgcmV0dXJuIGNlbGw7CisgICAgfSwKKworICAgIGdldCBk
YXRhKCkKKyAgICB7CisgICAgICAgIHZhciBkYXRhID0gdGhpcy5fZW1wdHlEYXRhKCk7CisKKyAg
ICAgICAgdmFyIHZhbHVlID0gdGhpcy5fbmFtZTsKKyAgICAgICAgdmFyIHZhbHVlU3R5bGUgPSAi
b2JqZWN0IjsKKyAgICAgICAgc3dpdGNoICh0aGlzLl90eXBlKSB7CisgICAgICAgIGNhc2UgInN0
cmluZyI6CisgICAgICAgICAgICB2YWx1ZSA9ICJcIiIgKyB2YWx1ZSArICJcIiI7CisgICAgICAg
ICAgICB2YWx1ZVN0eWxlID0gInN0cmluZyI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAicmVnZXhwIjoKKyAgICAgICAgICAgIHZhbHVlID0gIi8iICsgdmFsdWUgKyAiLyI7Cisg
ICAgICAgICAgICB2YWx1ZVN0eWxlID0gInN0cmluZyI7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSAiY2xvc3VyZSI6CisgICAgICAgICAgICB2YWx1ZSA9ICJmdW5jdGlvbiIgKyAo
dmFsdWUgPyAiICIgOiAiIikgKyB2YWx1ZSArICIoKSI7CisgICAgICAgICAgICB2YWx1ZVN0eWxl
ID0gImZ1bmN0aW9uIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJudW1iZXIi
OgorICAgICAgICAgICAgdmFsdWVTdHlsZSA9ICJudW1iZXIiOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgImhpZGRlbiI6CisgICAgICAgICAgICB2YWx1ZVN0eWxlID0gIm51bGwi
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgImFycmF5IjoKKyAgICAgICAgICAg
IGlmICghdmFsdWUpCisgICAgICAgICAgICAgICAgdmFsdWUgPSAiW10iOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHZhbHVlICs9ICJbXSI7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfTsKKyAgICAgICAgaWYgKHRoaXMuaGFzSG92ZXJNZXNzYWdlKQorICAgICAgICAg
ICAgdmFsdWVTdHlsZSArPSAiIGhpZ2hsaWdodCI7CisgICAgICAgIGlmICh2YWx1ZSA9PT0gIk9i
amVjdCIpCisgICAgICAgICAgICB2YWx1ZSA9ICIiOworICAgICAgICBpZiAodGhpcy5kZXRhY2hl
ZERPTVRyZWVOb2RlKQorICAgICAgICAgICAgdmFsdWVTdHlsZSArPSAiIGRldGFjaGVkLWRvbS10
cmVlLW5vZGUiOworICAgICAgICBkYXRhWyJvYmplY3QiXSA9IHsgdmFsdWVTdHlsZTogdmFsdWVT
dHlsZSwgdmFsdWU6IHZhbHVlLCBub2RlSWQ6IHRoaXMuc25hcHNob3ROb2RlSWQgfTsKKworICAg
ICAgICB2YXIgdmlldyA9IHRoaXMuZGF0YUdyaWQuc25hcHNob3RWaWV3OworICAgICAgICBkYXRh
WyJkaXN0YW5jZVRvV2luZG93Il0gPSAgdGhpcy5fZGlzdGFuY2VUb1dpbmRvdzsKKyAgICAgICAg
ZGF0YVsic2hhbGxvd1NpemUiXSA9IE51bWJlci53aXRoVGhvdXNhbmRzU2VwYXJhdG9yKHRoaXMu
X3NoYWxsb3dTaXplKTsKKyAgICAgICAgZGF0YVsicmV0YWluZWRTaXplIl0gPSBOdW1iZXIud2l0
aFRob3VzYW5kc1NlcGFyYXRvcih0aGlzLl9yZXRhaW5lZFNpemUpOworICAgICAgICBkYXRhWyJz
aGFsbG93U2l6ZS1wZXJjZW50Il0gPSB0aGlzLl90b1BlcmNlbnRTdHJpbmcodGhpcy5fc2hhbGxv
d1NpemVQZXJjZW50KTsKKyAgICAgICAgZGF0YVsicmV0YWluZWRTaXplLXBlcmNlbnQiXSA9IHRo
aXMuX3RvUGVyY2VudFN0cmluZyh0aGlzLl9yZXRhaW5lZFNpemVQZXJjZW50KTsKKworICAgICAg
ICByZXR1cm4gdGhpcy5fZW5oYW5jZURhdGEgPyB0aGlzLl9lbmhhbmNlRGF0YShkYXRhKSA6IGRh
dGE7CisgICAgfSwKKworICAgIHF1ZXJ5T2JqZWN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2ss
IG9iamVjdEdyb3VwTmFtZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl90eXBlID09PSAic3Ry
aW5nIikKKyAgICAgICAgICAgIGNhbGxiYWNrKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJv
bVByaW1pdGl2ZVZhbHVlKHRoaXMuX25hbWUpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBmdW5jdGlvbiBmb3JtYXRSZXN1bHQoZXJyb3IsIG9iamVjdCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIWVycm9yICYmIG9iamVjdC50eXBlKQorICAgICAgICAgICAgICAg
ICAgICBjYWxsYmFjayhXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKG9iamVj
dCksICEhZXJyb3IpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
Y2FsbGJhY2soV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUHJpbWl0aXZlVmFsdWUoV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJOb3QgYXZhaWxhYmxlIikpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIFByb2ZpbGVyQWdlbnQuZ2V0T2JqZWN0QnlIZWFwT2JqZWN0SWQodGhpcy5zbmFw
c2hvdE5vZGVJZCwgb2JqZWN0R3JvdXBOYW1lLCBmb3JtYXRSZXN1bHQpOworICAgICAgICB9Cisg
ICAgfSwKKworICAgIGdldCBfcmV0YWluZWRTaXplUGVyY2VudCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fcmV0YWluZWRTaXplIC8gdGhpcy5kYXRhR3JpZC5zbmFwc2hvdC50b3RhbFNp
emUgKiAxMDAuMDsKKyAgICB9LAorCisgICAgZ2V0IF9zaGFsbG93U2l6ZVBlcmNlbnQoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NoYWxsb3dTaXplIC8gdGhpcy5kYXRhR3JpZC5zbmFw
c2hvdC50b3RhbFNpemUgKiAxMDAuMDsKKyAgICB9LAorCisgICAgdXBkYXRlSGFzQ2hpbGRyZW46
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGlzRW1wdHlDYWxsYmFjayhpc0Vt
cHR5KQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gIWlzRW1wdHk7
CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fcHJvdmlkZXIuaXNFbXB0eShpc0VtcHR5Q2FsbGJh
Y2suYmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIGlzV2luZG93OiBmdW5jdGlvbihmdWxsTmFt
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmdWxsTmFtZS5zdWJzdHIoMCwgOSkgPT09ICJXaW5k
b3ciOworICAgIH0sCisKKyAgICBzaG9ydGVuV2luZG93VVJMOiBmdW5jdGlvbihmdWxsTmFtZSwg
aGFzT2JqZWN0SWQpCisgICAgeworICAgICAgICB2YXIgc3RhcnRQb3MgPSBmdWxsTmFtZS5pbmRl
eE9mKCIvIik7CisgICAgICAgIHZhciBlbmRQb3MgPSBoYXNPYmplY3RJZCA/IGZ1bGxOYW1lLmlu
ZGV4T2YoIkAiKSA6IGZ1bGxOYW1lLmxlbmd0aDsKKyAgICAgICAgaWYgKHN0YXJ0UG9zICE9PSAt
MSAmJiBlbmRQb3MgIT09IC0xKSB7CisgICAgICAgICAgICB2YXIgZnVsbFVSTCA9IGZ1bGxOYW1l
LnN1YnN0cmluZyhzdGFydFBvcyArIDEsIGVuZFBvcykudHJpbUxlZnQoKTsKKyAgICAgICAgICAg
IHZhciB1cmwgPSBmdWxsVVJMLnRyaW1VUkwoKTsKKyAgICAgICAgICAgIGlmICh1cmwubGVuZ3Ro
ID4gNDApCisgICAgICAgICAgICAgICAgdXJsID0gdXJsLnRyaW1NaWRkbGUoNDApOworICAgICAg
ICAgICAgcmV0dXJuIGZ1bGxOYW1lLnN1YnN0cigwLCBzdGFydFBvcyArIDIpICsgdXJsICsgZnVs
bE5hbWUuc3Vic3RyKGVuZFBvcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJu
IGZ1bGxOYW1lOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNP
YmplY3ROb2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
R3JpZE5vZGUucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMg
e1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZX0KKyAqLworV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUgPSBmdW5jdGlvbih0cmVlLCBpc0Zyb21CYXNl
U25hcHNob3QsIGVkZ2UsIHBhcmVudEdyaWROb2RlKQoreworICAgIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5jYWxsKHRoaXMsIHRyZWUsIGVkZ2Uubm9kZSk7Cisg
ICAgdGhpcy5fcmVmZXJlbmNlTmFtZSA9IGVkZ2UubmFtZTsKKyAgICB0aGlzLl9yZWZlcmVuY2VU
eXBlID0gZWRnZS50eXBlOworICAgIHRoaXMuX3Byb3BlcnR5QWNjZXNzb3IgPSBlZGdlLnByb3Bl
cnR5QWNjZXNzb3I7CisgICAgdGhpcy5fZGlzdGFuY2VUb1dpbmRvdyA9IGVkZ2UuZGlzdGFuY2VU
b1dpbmRvdzsKKyAgICB0aGlzLnNob3dSZXRhaW5pbmdFZGdlcyA9IHRyZWUuc2hvd1JldGFpbmlu
Z0VkZ2VzOworICAgIHRoaXMuX2lzRnJvbUJhc2VTbmFwc2hvdCA9IGlzRnJvbUJhc2VTbmFwc2hv
dDsKKyAgICB0aGlzLl9wcm92aWRlciA9IHRoaXMuX2NyZWF0ZVByb3ZpZGVyKCFpc0Zyb21CYXNl
U25hcHNob3QgPyB0cmVlLnNuYXBzaG90IDogdHJlZS5iYXNlU25hcHNob3QsIGVkZ2Uubm9kZUlu
ZGV4LCB0cmVlKTsKKyAgICB0aGlzLnVwZGF0ZUhhc0NoaWxkcmVuKHBhcmVudEdyaWROb2RlKTsK
K30KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUucHJvdG90eXBlID0gewor
ICAgIHVwZGF0ZUhhc0NoaWxkcmVuOiBmdW5jdGlvbihwYXJlbnRHcmlkTm9kZSkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX3BhcmVudEdyaWROb2RlID0gcGFyZW50R3JpZE5vZGU7CisgICAgICAgIHZh
ciBhbmNlc3RvciA9IHBhcmVudEdyaWROb2RlOworICAgICAgICB3aGlsZSAoYW5jZXN0b3IpIHsK
KyAgICAgICAgICAgIGlmIChhbmNlc3Rvci5zbmFwc2hvdE5vZGVJZCA9PT0gdGhpcy5zbmFwc2hv
dE5vZGVJZCkgeworICAgICAgICAgICAgICAgIHRoaXMuX2N5Y2xlZFdpdGhBbmNlc3RvckdyaWRO
b2RlID0gYW5jZXN0b3I7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5fcGFyZW50R3JpZE5vZGU7CisgICAgICAg
IH0KKyAgICAgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLnBy
b3RvdHlwZS51cGRhdGVIYXNDaGlsZHJlbi5jYWxsKHRoaXMpOworICAgIH0sCisKKyAgICBfY3Jl
YXRlQ2hpbGROb2RlOiBmdW5jdGlvbihpdGVtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZSh0aGlzLmRhdGFHcmlkLCB0aGlzLl9p
c0Zyb21CYXNlU25hcHNob3QsIGl0ZW0sIHRoaXMpOworICAgIH0sCisKKyAgICBfY3JlYXRlUHJv
dmlkZXI6IGZ1bmN0aW9uKHNuYXBzaG90LCBub2RlSW5kZXgsIHRyZWUpCisgICAgeworICAgICAg
ICB2YXIgc2hvd0hpZGRlbkRhdGEgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0hlYXBTbmFw
c2hvdE9iamVjdHNIaWRkZW5Qcm9wZXJ0aWVzLmdldCgpOworICAgICAgICB2YXIgZmlsdGVyID0g
ImZ1bmN0aW9uKGVkZ2UpIHtcbiIgKworICAgICAgICAgICAgIiAgICByZXR1cm4gIWVkZ2UuaXNJ
bnZpc2libGVcbiIgKworICAgICAgICAgICAgIiAgICAgICAgJiYgKCIgKyAhdGhpcy5zaG93UmV0
YWluaW5nRWRnZXMgKyAiIHx8IChlZGdlLm5vZGUuaWQgIT09IDEgJiYgIWVkZ2Uubm9kZS5pc1N5
bnRoZXRpYykpXG4iICsKKyAgICAgICAgICAgICIgICAgICAgICYmICgiICsgc2hvd0hpZGRlbkRh
dGEgKyAiIHx8ICghZWRnZS5pc0hpZGRlbiAmJiAhZWRnZS5ub2RlLmlzSGlkZGVuKSk7XG4iICsK
KyAgICAgICAgICAgICJ9XG4iOworICAgICAgICBpZiAodHJlZS5zaG93UmV0YWluaW5nRWRnZXMp
CisgICAgICAgICAgICByZXR1cm4gc25hcHNob3QuY3JlYXRlUmV0YWluaW5nRWRnZXNQcm92aWRl
cihub2RlSW5kZXgsIGZpbHRlcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBz
bmFwc2hvdC5jcmVhdGVFZGdlc1Byb3ZpZGVyKG5vZGVJbmRleCwgZmlsdGVyKTsKKyAgICB9LAor
CisgICAgX2NoaWxkSGFzaEZvckVudGl0eTogZnVuY3Rpb24oZWRnZSkKKyAgICB7CisgICAgICAg
IHZhciBwcmVmaXggPSB0aGlzLnNob3dSZXRhaW5pbmdFZGdlcyA/IGVkZ2Uubm9kZS5pZCArICIj
IiA6ICIiOworICAgICAgICByZXR1cm4gcHJlZml4ICsgZWRnZS50eXBlICsgIiMiICsgZWRnZS5u
YW1lOworICAgIH0sCisKKyAgICBfY2hpbGRIYXNoRm9yTm9kZTogZnVuY3Rpb24oY2hpbGROb2Rl
KQorICAgIHsKKyAgICAgICAgdmFyIHByZWZpeCA9IHRoaXMuc2hvd1JldGFpbmluZ0VkZ2VzID8g
Y2hpbGROb2RlLnNuYXBzaG90Tm9kZUlkICsgIiMiIDogIiI7CisgICAgICAgIHJldHVybiBwcmVm
aXggKyBjaGlsZE5vZGUuX3JlZmVyZW5jZVR5cGUgKyAiIyIgKyBjaGlsZE5vZGUuX3JlZmVyZW5j
ZU5hbWU7CisgICAgfSwKKworICAgIGNvbXBhcmF0b3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHZhciBzb3J0QXNjZW5kaW5nID0gdGhpcy5kYXRhR3JpZC5zb3J0T3JkZXIgPT09ICJhc2Nl
bmRpbmciOworICAgICAgICB2YXIgc29ydENvbHVtbklkZW50aWZpZXIgPSB0aGlzLmRhdGFHcmlk
LnNvcnRDb2x1bW5JZGVudGlmaWVyOworICAgICAgICB2YXIgc29ydEZpZWxkcyA9IHsKKyAgICAg
ICAgICAgIG9iamVjdDogWyIhZWRnZU5hbWUiLCBzb3J0QXNjZW5kaW5nLCAicmV0YWluZWRTaXpl
IiwgZmFsc2VdLAorICAgICAgICAgICAgY291bnQ6IFsiIWVkZ2VOYW1lIiwgdHJ1ZSwgInJldGFp
bmVkU2l6ZSIsIGZhbHNlXSwKKyAgICAgICAgICAgIHNoYWxsb3dTaXplOiBbInNlbGZTaXplIiwg
c29ydEFzY2VuZGluZywgIiFlZGdlTmFtZSIsIHRydWVdLAorICAgICAgICAgICAgcmV0YWluZWRT
aXplOiBbInJldGFpbmVkU2l6ZSIsIHNvcnRBc2NlbmRpbmcsICIhZWRnZU5hbWUiLCB0cnVlXSwK
KyAgICAgICAgICAgIGRpc3RhbmNlVG9XaW5kb3c6IFsiZGlzdGFuY2VUb1dpbmRvdyIsIHNvcnRB
c2NlbmRpbmcsICJfbmFtZSIsIHRydWVdCisgICAgICAgIH1bc29ydENvbHVtbklkZW50aWZpZXJd
IHx8IFsiIWVkZ2VOYW1lIiwgdHJ1ZSwgInJldGFpbmVkU2l6ZSIsIGZhbHNlXTsKKyAgICAgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5w
cm90b3R5cGUuY3JlYXRlQ29tcGFyYXRvcihzb3J0RmllbGRzKTsKKyAgICB9LAorCisgICAgX2Vt
cHR5RGF0YTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsgY291bnQ6ICIiLCBh
ZGRlZENvdW50OiAiIiwgcmVtb3ZlZENvdW50OiAiIiwgY291bnREZWx0YTogIiIsIGFkZGVkU2l6
ZTogIiIsIHJlbW92ZWRTaXplOiAiIiwgc2l6ZURlbHRhOiAiIiB9OworICAgIH0sCisKKyAgICBf
ZW5oYW5jZURhdGE6IGZ1bmN0aW9uKGRhdGEpCisgICAgeworICAgICAgICB2YXIgbmFtZSA9IHRo
aXMuX3JlZmVyZW5jZU5hbWU7CisgICAgICAgIGlmIChuYW1lID09PSAiIikgbmFtZSA9ICIoZW1w
dHkpIjsKKyAgICAgICAgdmFyIG5hbWVDbGFzcyA9ICJuYW1lIjsKKyAgICAgICAgc3dpdGNoICh0
aGlzLl9yZWZlcmVuY2VUeXBlKSB7CisgICAgICAgIGNhc2UgImNvbnRleHQiOgorICAgICAgICAg
ICAgbmFtZUNsYXNzID0gImNvbnNvbGUtZm9ybWF0dGVkLW51bWJlciI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAiaW50ZXJuYWwiOgorICAgICAgICBjYXNlICJoaWRkZW4iOgor
ICAgICAgICAgICAgbmFtZUNsYXNzID0gImNvbnNvbGUtZm9ybWF0dGVkLW51bGwiOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgImVsZW1lbnQiOgorICAgICAgICAgICAgbmFtZSA9
ICJbIiArIG5hbWUgKyAiXSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBkYXRhWyJvYmplY3QiXS5uYW1lQ2xhc3MgPSBuYW1lQ2xhc3M7CisgICAgICAgIGRhdGFbIm9i
amVjdCJdLm5hbWUgPSBuYW1lOworICAgICAgICBkYXRhWyJkaXN0YW5jZVRvV2luZG93Il0gPSB0
aGlzLl9kaXN0YW5jZVRvV2luZG93OworICAgICAgICByZXR1cm4gZGF0YTsKKyAgICB9LAorCisg
ICAgX3ByZWZpeE9iamVjdENlbGw6IGZ1bmN0aW9uKGRpdiwgZGF0YSkKKyAgICB7CisgICAgICAg
IGlmICh0aGlzLl9jeWNsZWRXaXRoQW5jZXN0b3JHcmlkTm9kZSkKKyAgICAgICAgICAgIGRpdi5j
bGFzc05hbWUgKz0gIiBjeWNsZWQtYW5jZXNzb3Itbm9kZSI7CisKKyAgICAgICAgdmFyIG5hbWVT
cGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICBuYW1lU3Bhbi5j
bGFzc05hbWUgPSBkYXRhLm5hbWVDbGFzczsKKyAgICAgICAgbmFtZVNwYW4udGV4dENvbnRlbnQg
PSBkYXRhLm5hbWU7CisgICAgICAgIGRpdi5hcHBlbmRDaGlsZChuYW1lU3Bhbik7CisKKyAgICAg
ICAgdmFyIHNlcGFyYXRvclNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Cisg
ICAgICAgIHNlcGFyYXRvclNwYW4uY2xhc3NOYW1lID0gImdyYXllZCI7CisgICAgICAgIHNlcGFy
YXRvclNwYW4udGV4dENvbnRlbnQgPSB0aGlzLnNob3dSZXRhaW5pbmdFZGdlcyA/ICIgaW4gIiA6
ICIgOjogIjsKKyAgICAgICAgZGl2LmFwcGVuZENoaWxkKHNlcGFyYXRvclNwYW4pOworICAgIH0K
K30KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5wcm90b3R5
cGU7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlfQorICovCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90SW5zdGFuY2VOb2RlID0gZnVuY3Rpb24odHJlZSwgYmFzZVNuYXBzaG90LCBzbmFwc2hvdCwg
bm9kZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R2VuZXJpY09iamVjdE5vZGUu
Y2FsbCh0aGlzLCB0cmVlLCBub2RlKTsKKyAgICB0aGlzLl9pc0RlbGV0ZWROb2RlID0gISFiYXNl
U25hcHNob3Q7CisgICAgdGhpcy5fcHJvdmlkZXIgPSB0aGlzLl9jcmVhdGVQcm92aWRlcihiYXNl
U25hcHNob3QgfHwgc25hcHNob3QsIG5vZGUubm9kZUluZGV4KTsKKyAgICB0aGlzLnVwZGF0ZUhh
c0NoaWxkcmVuKCk7Cit9OworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VOb2Rl
LnByb3RvdHlwZSA9IHsKKyAgICBfY3JlYXRlQ2hpbGROb2RlOiBmdW5jdGlvbihpdGVtKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9k
ZSh0aGlzLmRhdGFHcmlkLCB0aGlzLl9pc0RlbGV0ZWROb2RlLCBpdGVtLCBudWxsKTsKKyAgICB9
LAorCisgICAgX2NyZWF0ZVByb3ZpZGVyOiBmdW5jdGlvbihzbmFwc2hvdCwgbm9kZUluZGV4KQor
ICAgIHsKKyAgICAgICAgdmFyIHNob3dIaWRkZW5EYXRhID0gV2ViSW5zcGVjdG9yLnNldHRpbmdz
LnNob3dIZWFwU25hcHNob3RPYmplY3RzSGlkZGVuUHJvcGVydGllcy5nZXQoKTsKKyAgICAgICAg
cmV0dXJuIHNuYXBzaG90LmNyZWF0ZUVkZ2VzUHJvdmlkZXIoCisgICAgICAgICAgICBub2RlSW5k
ZXgsCisgICAgICAgICAgICAiZnVuY3Rpb24oZWRnZSkgeyIgKworICAgICAgICAgICAgIiAgICBy
ZXR1cm4gIWVkZ2UuaXNJbnZpc2libGUiICsKKyAgICAgICAgICAgICIgICAgICAgICYmICgiICsg
c2hvd0hpZGRlbkRhdGEgKyAiIHx8ICghZWRnZS5pc0hpZGRlbiAmJiAhZWRnZS5ub2RlLmlzSGlk
ZGVuKSk7IiArCisgICAgICAgICAgICAifSIpOworICAgIH0sCisKKyAgICBfY2hpbGRIYXNoRm9y
RW50aXR5OiBmdW5jdGlvbihlZGdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UudHlwZSAr
ICIjIiArIGVkZ2UubmFtZTsKKyAgICB9LAorCisgICAgX2NoaWxkSGFzaEZvck5vZGU6IGZ1bmN0
aW9uKGNoaWxkTm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjaGlsZE5vZGUuX3JlZmVyZW5j
ZVR5cGUgKyAiIyIgKyBjaGlsZE5vZGUuX3JlZmVyZW5jZU5hbWU7CisgICAgfSwKKworICAgIGNv
bXBhcmF0b3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBzb3J0QXNjZW5kaW5nID0g
dGhpcy5kYXRhR3JpZC5zb3J0T3JkZXIgPT09ICJhc2NlbmRpbmciOworICAgICAgICB2YXIgc29y
dENvbHVtbklkZW50aWZpZXIgPSB0aGlzLmRhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyOwor
ICAgICAgICB2YXIgc29ydEZpZWxkcyA9IHsKKyAgICAgICAgICAgIG9iamVjdDogWyIhZWRnZU5h
bWUiLCBzb3J0QXNjZW5kaW5nLCAicmV0YWluZWRTaXplIiwgZmFsc2VdLAorICAgICAgICAgICAg
ZGlzdGFuY2VUb1dpbmRvdzogWyJkaXN0YW5jZVRvV2luZG93Iiwgc29ydEFzY2VuZGluZywgInJl
dGFpbmVkU2l6ZSIsIGZhbHNlXSwKKyAgICAgICAgICAgIGNvdW50OiBbIiFlZGdlTmFtZSIsIHRy
dWUsICJyZXRhaW5lZFNpemUiLCBmYWxzZV0sCisgICAgICAgICAgICBhZGRlZFNpemU6IFsic2Vs
ZlNpemUiLCBzb3J0QXNjZW5kaW5nLCAiIWVkZ2VOYW1lIiwgdHJ1ZV0sCisgICAgICAgICAgICBy
ZW1vdmVkU2l6ZTogWyJzZWxmU2l6ZSIsIHNvcnRBc2NlbmRpbmcsICIhZWRnZU5hbWUiLCB0cnVl
XSwKKyAgICAgICAgICAgIHNoYWxsb3dTaXplOiBbInNlbGZTaXplIiwgc29ydEFzY2VuZGluZywg
IiFlZGdlTmFtZSIsIHRydWVdLAorICAgICAgICAgICAgcmV0YWluZWRTaXplOiBbInJldGFpbmVk
U2l6ZSIsIHNvcnRBc2NlbmRpbmcsICIhZWRnZU5hbWUiLCB0cnVlXQorICAgICAgICB9W3NvcnRD
b2x1bW5JZGVudGlmaWVyXSB8fCBbIiFlZGdlTmFtZSIsIHRydWUsICJyZXRhaW5lZFNpemUiLCBm
YWxzZV07CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRP
cmRlcmVkSXRlcmF0b3IucHJvdG90eXBlLmNyZWF0ZUNvbXBhcmF0b3Ioc29ydEZpZWxkcyk7Cisg
ICAgfSwKKworICAgIF9lbXB0eURhdGE6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB7Y291bnQ6IiIsIGNvdW50RGVsdGE6IiIsIHNpemVEZWx0YTogIiJ9OworICAgIH0sCisKKyAg
ICBfZW5oYW5jZURhdGE6IGZ1bmN0aW9uKGRhdGEpCisgICAgeworICAgICAgICBpZiAodGhpcy5f
aXNEZWxldGVkTm9kZSkgeworICAgICAgICAgICAgZGF0YVsiYWRkZWRDb3VudCJdID0gIiI7Cisg
ICAgICAgICAgICBkYXRhWyJhZGRlZFNpemUiXSA9ICIiOworICAgICAgICAgICAgZGF0YVsicmVt
b3ZlZENvdW50Il0gPSAiXHUyMDIyIjsKKyAgICAgICAgICAgIGRhdGFbInJlbW92ZWRTaXplIl0g
PSBOdW1iZXIud2l0aFRob3VzYW5kc1NlcGFyYXRvcih0aGlzLl9zaGFsbG93U2l6ZSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkYXRhWyJhZGRlZENvdW50Il0gPSAiXHUyMDIyIjsK
KyAgICAgICAgICAgIGRhdGFbImFkZGVkU2l6ZSJdID0gTnVtYmVyLndpdGhUaG91c2FuZHNTZXBh
cmF0b3IodGhpcy5fc2hhbGxvd1NpemUpOworICAgICAgICAgICAgZGF0YVsicmVtb3ZlZENvdW50
Il0gPSAiIjsKKyAgICAgICAgICAgIGRhdGFbInJlbW92ZWRTaXplIl0gPSAiIjsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gZGF0YTsKKyAgICB9LAorCisgICAgZ2V0IGlzRGVsZXRlZE5vZGUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lzRGVsZXRlZE5vZGU7CisgICAgfQorfQor
CitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R2VuZXJpY09iamVjdE5vZGUucHJvdG90eXBl
OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RMYXp5R3JpZE5vZGV9CisgKi8KK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25z
dHJ1Y3Rvck5vZGUgPSBmdW5jdGlvbih0cmVlLCBjbGFzc05hbWUsIGFnZ3JlZ2F0ZSwgYWdncmVn
YXRlc0tleSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TGF6eUdyaWROb2RlLmNh
bGwodGhpcywgdHJlZSwgYWdncmVnYXRlLmNvdW50ID4gMCk7CisgICAgdGhpcy5fbmFtZSA9IGNs
YXNzTmFtZTsKKyAgICB0aGlzLl9kaXN0YW5jZVRvV2luZG93ID0gYWdncmVnYXRlLmRpc3RhbmNl
VG9XaW5kb3c7CisgICAgdGhpcy5fY291bnQgPSBhZ2dyZWdhdGUuY291bnQ7CisgICAgdGhpcy5f
c2hhbGxvd1NpemUgPSBhZ2dyZWdhdGUuc2VsZjsKKyAgICB0aGlzLl9yZXRhaW5lZFNpemUgPSBh
Z2dyZWdhdGUubWF4UmV0OworICAgIHRoaXMuX3Byb3ZpZGVyID0gdGhpcy5fY3JlYXRlTm9kZXNQ
cm92aWRlcih0cmVlLnNuYXBzaG90LCBjbGFzc05hbWUsIGFnZ3JlZ2F0ZXNLZXkpOworfQorCitX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlLnByb3RvdHlwZSA9IHsKKyAg
ICBjcmVhdGVDZWxsOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAg
dmFyIGNlbGwgPSBjb2x1bW5JZGVudGlmaWVyICE9PSAib2JqZWN0IiA/IHRoaXMuX2NyZWF0ZVZh
bHVlQ2VsbChjb2x1bW5JZGVudGlmaWVyKSA6IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlk
Tm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbC5jYWxsKHRoaXMsIGNvbHVtbklkZW50aWZpZXIpOwor
ICAgICAgICBpZiAodGhpcy5fc2VhcmNoTWF0Y2hlZCkKKyAgICAgICAgICAgIGNlbGwuYWRkU3R5
bGVDbGFzcygiaGlnaGxpZ2h0Iik7CisgICAgICAgIHJldHVybiBjZWxsOworICAgIH0sCisKKyAg
ICBfY3JlYXRlQ2hpbGROb2RlOiBmdW5jdGlvbihpdGVtKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlKHRoaXMuZGF0YUdyaWQs
IG51bGwsIHRoaXMuZGF0YUdyaWQuc25hcHNob3QsIGl0ZW0pOworICAgIH0sCisKKyAgICBfY3Jl
YXRlTm9kZXNQcm92aWRlcjogZnVuY3Rpb24oc25hcHNob3QsIGNsYXNzTmFtZSwgYWdncmVnYXRl
c0tleSkKKyAgICB7CisgICAgICAgIHJldHVybiBzbmFwc2hvdC5jcmVhdGVOb2Rlc1Byb3ZpZGVy
Rm9yQ2xhc3MoY2xhc3NOYW1lLCBhZ2dyZWdhdGVzS2V5KTsKKyAgICB9LAorCisgICAgY29tcGFy
YXRvcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHNvcnRBc2NlbmRpbmcgPSB0aGlz
LmRhdGFHcmlkLnNvcnRPcmRlciA9PT0gImFzY2VuZGluZyI7CisgICAgICAgIHZhciBzb3J0Q29s
dW1uSWRlbnRpZmllciA9IHRoaXMuZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXI7CisgICAg
ICAgIHZhciBzb3J0RmllbGRzID0geworICAgICAgICAgICAgb2JqZWN0OiBbImlkIiwgc29ydEFz
Y2VuZGluZywgInJldGFpbmVkU2l6ZSIsIGZhbHNlXSwKKyAgICAgICAgICAgIGRpc3RhbmNlVG9X
aW5kb3c6IFsiZGlzdGFuY2VUb1dpbmRvdyIsIHRydWUsICJyZXRhaW5lZFNpemUiLCBmYWxzZV0s
CisgICAgICAgICAgICBjb3VudDogWyJpZCIsIHRydWUsICJyZXRhaW5lZFNpemUiLCBmYWxzZV0s
CisgICAgICAgICAgICBzaGFsbG93U2l6ZTogWyJzZWxmU2l6ZSIsIHNvcnRBc2NlbmRpbmcsICJp
ZCIsIHRydWVdLAorICAgICAgICAgICAgcmV0YWluZWRTaXplOiBbInJldGFpbmVkU2l6ZSIsIHNv
cnRBc2NlbmRpbmcsICJpZCIsIHRydWVdCisgICAgICAgIH1bc29ydENvbHVtbklkZW50aWZpZXJd
OworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJl
ZEl0ZXJhdG9yLnByb3RvdHlwZS5jcmVhdGVDb21wYXJhdG9yKHNvcnRGaWVsZHMpOworICAgIH0s
CisKKyAgICBfY2hpbGRIYXNoRm9yRW50aXR5OiBmdW5jdGlvbihub2RlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG5vZGUuaWQ7CisgICAgfSwKKworICAgIF9jaGlsZEhhc2hGb3JOb2RlOiBmdW5j
dGlvbihjaGlsZE5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gY2hpbGROb2RlLnNuYXBzaG90
Tm9kZUlkOworICAgIH0sCisKKyAgICBnZXQgZGF0YSgpCisgICAgeworICAgICAgICB2YXIgZGF0
YSA9IHsgb2JqZWN0OiB0aGlzLl9uYW1lIH07CisgICAgICAgIHZhciB2aWV3ID0gdGhpcy5kYXRh
R3JpZC5zbmFwc2hvdFZpZXc7CisgICAgICAgIGRhdGFbImNvdW50Il0gPSAgTnVtYmVyLndpdGhU
aG91c2FuZHNTZXBhcmF0b3IodGhpcy5fY291bnQpOworICAgICAgICBkYXRhWyJkaXN0YW5jZVRv
V2luZG93Il0gPSAgdGhpcy5fZGlzdGFuY2VUb1dpbmRvdzsKKyAgICAgICAgZGF0YVsic2hhbGxv
d1NpemUiXSA9IE51bWJlci53aXRoVGhvdXNhbmRzU2VwYXJhdG9yKHRoaXMuX3NoYWxsb3dTaXpl
KTsKKyAgICAgICAgZGF0YVsicmV0YWluZWRTaXplIl0gPSBOdW1iZXIud2l0aFRob3VzYW5kc1Nl
cGFyYXRvcih0aGlzLl9yZXRhaW5lZFNpemUpOworICAgICAgICBkYXRhWyJjb3VudC1wZXJjZW50
Il0gPSAgdGhpcy5fdG9QZXJjZW50U3RyaW5nKHRoaXMuX2NvdW50UGVyY2VudCk7CisgICAgICAg
IGRhdGFbInNoYWxsb3dTaXplLXBlcmNlbnQiXSA9IHRoaXMuX3RvUGVyY2VudFN0cmluZyh0aGlz
Ll9zaGFsbG93U2l6ZVBlcmNlbnQpOworICAgICAgICBkYXRhWyJyZXRhaW5lZFNpemUtcGVyY2Vu
dCJdID0gdGhpcy5fdG9QZXJjZW50U3RyaW5nKHRoaXMuX3JldGFpbmVkU2l6ZVBlcmNlbnQpOwor
ICAgICAgICByZXR1cm4gZGF0YTsKKyAgICB9LAorCisgICAgZ2V0IF9jb3VudFBlcmNlbnQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvdW50IC8gdGhpcy5kYXRhR3JpZC5zbmFwc2hv
dC5ub2RlQ291bnQgKiAxMDAuMDsKKyAgICB9LAorCisgICAgZ2V0IF9yZXRhaW5lZFNpemVQZXJj
ZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXRhaW5lZFNpemUgLyB0aGlzLmRh
dGFHcmlkLnNuYXBzaG90LnRvdGFsU2l6ZSAqIDEwMC4wOworICAgIH0sCisKKyAgICBnZXQgX3No
YWxsb3dTaXplUGVyY2VudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc2hhbGxvd1Np
emUgLyB0aGlzLmRhdGFHcmlkLnNuYXBzaG90LnRvdGFsU2l6ZSAqIDEwMC4wOworICAgIH0KK307
CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rvck5vZGUucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMYXp5R3JpZE5vZGUucHJvdG90eXBl
OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
SXRlcmF0b3JzVHVwbGUgPSBmdW5jdGlvbihpdDEsIGl0MikKK3sKKyAgICB0aGlzLl9pdDEgPSBp
dDE7CisgICAgdGhpcy5faXQyID0gaXQyOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
SXRlcmF0b3JzVHVwbGUucHJvdG90eXBlID0geworICAgIGRpc3Bvc2U6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX2l0MS5kaXNwb3NlKCk7CisgICAgICAgIHRoaXMuX2l0Mi5kaXNw
b3NlKCk7CisgICAgfSwKKworICAgIHNvcnRBbmRSZXdpbmQ6IGZ1bmN0aW9uKGNvbXBhcmF0b3Is
IGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gYWZ0ZXJTb3J0KGlnbm9yZWQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX2l0Mi5zb3J0QW5kUmV3aW5kKGNvbXBhcmF0b3Is
IGNhbGxiYWNrKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9pdDEuc29ydEFuZFJld2luZChj
b21wYXJhdG9yLCBhZnRlclNvcnQuYmluZCh0aGlzKSk7CisgICAgfQorfTsKKworLyoqCisgKiBA
Y29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TGF6eUdy
aWROb2RlfQorICovCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUgPSBmdW5jdGlv
bih0cmVlLCBjbGFzc05hbWUsIGJhc2VBZ2dyZWdhdGUsIGFnZ3JlZ2F0ZSkKK3sKKyAgICBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90TGF6eUdyaWROb2RlLmNhbGwodGhpcywgdHJlZSwgdHJ1ZSk7
CisgICAgdGhpcy5fbmFtZSA9IGNsYXNzTmFtZTsKKyAgICB0aGlzLl9iYXNlSW5kZXhlcyA9IGJh
c2VBZ2dyZWdhdGUgPyBiYXNlQWdncmVnYXRlLmlkeHMgOiBbXTsKKyAgICB0aGlzLl9pbmRleGVz
ID0gYWdncmVnYXRlID8gYWdncmVnYXRlLmlkeHMgOiBbXTsKKyAgICB0aGlzLl9wcm92aWRlciA9
IHRoaXMuX2NyZWF0ZU5vZGVzUHJvdmlkZXIodHJlZS5iYXNlU25hcHNob3QsIHRyZWUuc25hcHNo
b3QsIGFnZ3JlZ2F0ZSA/IGFnZ3JlZ2F0ZS50eXBlIDogYmFzZUFnZ3JlZ2F0ZS50eXBlLCBjbGFz
c05hbWUpOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUucHJvdG90eXBl
ID0geworICAgIGNhbGN1bGF0ZURpZmY6IGZ1bmN0aW9uKGRhdGFHcmlkLCBjYWxsYmFjaykKKyAg
ICB7CisgICAgICAgIHZhciBkaWZmID0gZGF0YUdyaWQuc25hcHNob3QuY3JlYXRlRGlmZih0aGlz
Ll9uYW1lKTsKKworICAgICAgICBmdW5jdGlvbiBkaWZmQ2FsY3VsYXRlZChkaWZmUmVzdWx0KQor
ICAgICAgICB7CisgICAgICAgICAgICBkaWZmLmRpc3Bvc2UoKTsKKyAgICAgICAgICAgIHRoaXMu
X2FkZGVkQ291bnQgPSBkaWZmUmVzdWx0LmFkZGVkQ291bnQ7CisgICAgICAgICAgICB0aGlzLl9y
ZW1vdmVkQ291bnQgPSBkaWZmUmVzdWx0LnJlbW92ZWRDb3VudDsKKyAgICAgICAgICAgIHRoaXMu
X2NvdW50RGVsdGEgPSBkaWZmUmVzdWx0LmNvdW50RGVsdGE7CisgICAgICAgICAgICB0aGlzLl9h
ZGRlZFNpemUgPSBkaWZmUmVzdWx0LmFkZGVkU2l6ZTsKKyAgICAgICAgICAgIHRoaXMuX3JlbW92
ZWRTaXplID0gZGlmZlJlc3VsdC5yZW1vdmVkU2l6ZTsKKyAgICAgICAgICAgIHRoaXMuX3NpemVE
ZWx0YSA9IGRpZmZSZXN1bHQuc2l6ZURlbHRhOworICAgICAgICAgICAgdGhpcy5fYmFzZUluZGV4
ZXMgPSBudWxsOworICAgICAgICAgICAgdGhpcy5faW5kZXhlcyA9IG51bGw7CisgICAgICAgICAg
ICBjYWxsYmFjayh0aGlzLl9hZGRlZFNpemUgPT09IDAgJiYgdGhpcy5fcmVtb3ZlZFNpemUgPT09
IDApOworICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uIGJhc2VTZWxmU2l6ZXNSZWNlaXZlZChi
YXNlU2VsZlNpemVzKQorICAgICAgICB7CisgICAgICAgICAgICBkaWZmLnB1c2hCYXNlU2VsZlNp
emVzKGJhc2VTZWxmU2l6ZXMpOworICAgICAgICAgICAgZGlmZi5jYWxjdWxhdGUoZGlmZkNhbGN1
bGF0ZWQuYmluZCh0aGlzKSk7CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gYmFzZUlkc1Jl
Y2VpdmVkKGJhc2VJZHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRpZmYucHVzaEJhc2VJZHMo
YmFzZUlkcyk7CisgICAgICAgICAgICBkYXRhR3JpZC5zbmFwc2hvdC5wdXNoQmFzZUlkcyhkYXRh
R3JpZC5iYXNlU25hcHNob3QudWlkLCB0aGlzLl9uYW1lLCBiYXNlSWRzKTsKKyAgICAgICAgICAg
IGRhdGFHcmlkLmJhc2VTbmFwc2hvdC5ub2RlRmllbGRWYWx1ZXNCeUluZGV4KCJzZWxmU2l6ZSIs
IHRoaXMuX2Jhc2VJbmRleGVzLCBiYXNlU2VsZlNpemVzUmVjZWl2ZWQuYmluZCh0aGlzKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gaWRzUmVjZWl2ZWQoaWRzKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkYXRhR3JpZC5iYXNlU25hcHNob3QucHVzaEJhc2VJZHMoZGF0YUdyaWQuc25h
cHNob3QudWlkLCB0aGlzLl9uYW1lLCBpZHMpOworICAgICAgICB9CisgICAgICAgIGRhdGFHcmlk
LmJhc2VTbmFwc2hvdC5ub2RlRmllbGRWYWx1ZXNCeUluZGV4KCJpZCIsIHRoaXMuX2Jhc2VJbmRl
eGVzLCBiYXNlSWRzUmVjZWl2ZWQuYmluZCh0aGlzKSk7CisgICAgICAgIGRhdGFHcmlkLnNuYXBz
aG90Lm5vZGVGaWVsZFZhbHVlc0J5SW5kZXgoImlkIiwgdGhpcy5faW5kZXhlcywgaWRzUmVjZWl2
ZWQuYmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIF9jcmVhdGVDaGlsZE5vZGU6IGZ1bmN0aW9u
KGl0ZW0sIHByb3ZpZGVyKQorICAgIHsKKyAgICAgICAgaWYgKHByb3ZpZGVyID09PSB0aGlzLl9w
cm92aWRlci5faXQxKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90SW5zdGFuY2VOb2RlKHRoaXMuZGF0YUdyaWQsIG51bGwsIHByb3ZpZGVyLnNuYXBzaG90
LCBpdGVtKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlKHRoaXMuZGF0YUdyaWQsIHByb3ZpZGVyLnNuYXBz
aG90LCBudWxsLCBpdGVtKTsKKyAgICB9LAorCisgICAgX2NyZWF0ZU5vZGVzUHJvdmlkZXI6IGZ1
bmN0aW9uKGJhc2VTbmFwc2hvdCwgc25hcHNob3QsIG5vZGVUeXBlLCBub2RlQ2xhc3NOYW1lKQor
ICAgIHsKKyAgICAgICAgdmFyIGNsYXNzTmFtZSA9IHRoaXMuX25hbWU7CisgICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEl0ZXJhdG9yc1R1cGxlKAorICAgICAgICAg
ICAgY3JlYXRlUHJvdmlkZXIoc25hcHNob3QsIGJhc2VTbmFwc2hvdCksIGNyZWF0ZVByb3ZpZGVy
KGJhc2VTbmFwc2hvdCwgc25hcHNob3QpKTsKKworICAgICAgICBmdW5jdGlvbiBjcmVhdGVQcm92
aWRlcihzbmFwc2hvdCwgb3RoZXJTbmFwc2hvdCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IG90aGVyU25hcHNob3RJZCA9IG90aGVyU25hcHNob3QudWlkOworICAgICAgICAgICAgdmFyIHBy
b3ZpZGVyID0gc25hcHNob3QuY3JlYXRlTm9kZXNQcm92aWRlcigKKyAgICAgICAgICAgICAgICAi
ZnVuY3Rpb24gKG5vZGUpIHsiICsKKyAgICAgICAgICAgICAgICAiICAgICByZXR1cm4gbm9kZS50
eXBlID09PSBcIiIgKyBub2RlVHlwZSArICJcIiAiICsKKyAgICAgICAgICAgICAgICAobm9kZUNs
YXNzTmFtZSAhPT0gbnVsbCA/ICImJiBub2RlLmNsYXNzTmFtZSA9PT0gXCIiICsgbm9kZUNsYXNz
TmFtZSArICJcIiIgOiAiIikgKworICAgICAgICAgICAgICAgICIgICAgICAgICAmJiAhdGhpcy5i
YXNlU25hcHNob3RIYXNOb2RlKCIgKyBvdGhlclNuYXBzaG90SWQgKyAiLCBcIiIgKyBjbGFzc05h
bWUgKyAiXCIsIG5vZGUuaWQpOyIgKworICAgICAgICAgICAgICAgICJ9Iik7CisgICAgICAgICAg
ICBwcm92aWRlci5zbmFwc2hvdCA9IHNuYXBzaG90OworICAgICAgICAgICAgcmV0dXJuIHByb3Zp
ZGVyOworICAgICAgICB9CisgICAgfSwKKworICAgIF9jaGlsZEhhc2hGb3JFbnRpdHk6IGZ1bmN0
aW9uKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbm9kZS5pZDsKKyAgICB9LAorCisgICAg
X2NoaWxkSGFzaEZvck5vZGU6IGZ1bmN0aW9uKGNoaWxkTm9kZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBjaGlsZE5vZGUuc25hcHNob3ROb2RlSWQ7CisgICAgfSwKKworICAgIGNvbXBhcmF0b3I6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBzb3J0QXNjZW5kaW5nID0gdGhpcy5kYXRh
R3JpZC5zb3J0T3JkZXIgPT09ICJhc2NlbmRpbmciOworICAgICAgICB2YXIgc29ydENvbHVtbklk
ZW50aWZpZXIgPSB0aGlzLmRhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyOworICAgICAgICB2
YXIgc29ydEZpZWxkcyA9IHsKKyAgICAgICAgICAgIG9iamVjdDogWyJpZCIsIHNvcnRBc2NlbmRp
bmcsICJzZWxmU2l6ZSIsIGZhbHNlXSwKKyAgICAgICAgICAgIGFkZGVkQ291bnQ6IFsic2VsZlNp
emUiLCBzb3J0QXNjZW5kaW5nLCAiaWQiLCB0cnVlXSwKKyAgICAgICAgICAgIHJlbW92ZWRDb3Vu
dDogWyJzZWxmU2l6ZSIsIHNvcnRBc2NlbmRpbmcsICJpZCIsIHRydWVdLAorICAgICAgICAgICAg
Y291bnREZWx0YTogWyJzZWxmU2l6ZSIsIHNvcnRBc2NlbmRpbmcsICJpZCIsIHRydWVdLAorICAg
ICAgICAgICAgYWRkZWRTaXplOiBbInNlbGZTaXplIiwgc29ydEFzY2VuZGluZywgImlkIiwgdHJ1
ZV0sCisgICAgICAgICAgICByZW1vdmVkU2l6ZTogWyJzZWxmU2l6ZSIsIHNvcnRBc2NlbmRpbmcs
ICJpZCIsIHRydWVdLAorICAgICAgICAgICAgc2l6ZURlbHRhOiBbInNlbGZTaXplIiwgc29ydEFz
Y2VuZGluZywgImlkIiwgdHJ1ZV0KKyAgICAgICAgfVtzb3J0Q29sdW1uSWRlbnRpZmllcl07Cisg
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRl
cmF0b3IucHJvdG90eXBlLmNyZWF0ZUNvbXBhcmF0b3Ioc29ydEZpZWxkcyk7CisgICAgfSwKKwor
ICAgIHBvcHVsYXRlQ2hpbGRyZW46IGZ1bmN0aW9uKHByb3ZpZGVyLCBob3dNYW55LCBhdEluZGV4
LCBhZnRlclBvcHVsYXRlKQorICAgIHsKKyAgICAgICAgaWYgKCFwcm92aWRlciAmJiAhaG93TWFu
eSkgeworICAgICAgICAgICAgdmFyIGZpcnN0UHJvdmlkZXJQb3B1bGF0ZWQgPSBmdW5jdGlvbigp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dEdyaWROb2RlLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuLmNhbGwodGhpcywgdGhpcy5fcHJv
dmlkZXIuX2l0MiwgdGhpcy5fZGVmYXVsdFBvcHVsYXRlQ291bnQsIGF0SW5kZXgsIGFmdGVyUG9w
dWxhdGUsIGZhbHNlKTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90R3JpZE5vZGUucHJvdG90eXBlLnBvcHVsYXRlQ2hpbGRyZW4uY2FsbCh0aGlz
LCB0aGlzLl9wcm92aWRlci5faXQxLCB0aGlzLl9kZWZhdWx0UG9wdWxhdGVDb3VudCwgYXRJbmRl
eCwgZmlyc3RQcm92aWRlclBvcHVsYXRlZC5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICAgICAgfSBl
bHNlIGlmICghaG93TWFueSkgeworICAgICAgICAgICAgdmFyIGZpcnN0UHJvdmlkZXJQb3B1bGF0
ZWQgPSBmdW5jdGlvbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuLmNhbGwo
dGhpcywgdGhpcy5fcHJvdmlkZXIuX2l0MiwgbnVsbCwgYXRJbmRleCwgYWZ0ZXJQb3B1bGF0ZSwg
ZmFsc2UpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RHcmlkTm9kZS5wcm90b3R5cGUucG9wdWxhdGVDaGlsZHJlbi5jYWxsKHRoaXMsIHRoaXMu
X3Byb3ZpZGVyLl9pdDEsIG51bGwsIGF0SW5kZXgsIGZpcnN0UHJvdmlkZXJQb3B1bGF0ZWQuYmlu
ZCh0aGlzKSwgdHJ1ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuLmNhbGwodGhp
cywgcHJvdmlkZXIsIGhvd01hbnksIGF0SW5kZXgsIGFmdGVyUG9wdWxhdGUsIGZhbHNlKTsKKyAg
ICB9LAorCisgICAgX3NpZ25Gb3JEZWx0YTogZnVuY3Rpb24oZGVsdGEpCisgICAgeworICAgICAg
ICBpZiAoZGVsdGEgPT09IDApCisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIGlmIChk
ZWx0YSA+IDApCisgICAgICAgICAgICByZXR1cm4gIisiOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICByZXR1cm4gIlx1MjIxMiI7ICAvLyBNYXRoIG1pbnVzIHNpZ24sIHNhbWUgd2lkdGggYXMg
cGx1cy4KKyAgICB9LAorCisgICAgZ2V0IGRhdGEoKQorICAgIHsKKyAgICAgICAgdmFyIGRhdGEg
PSB7b2JqZWN0OiB0aGlzLl9uYW1lfTsKKworICAgICAgICBkYXRhWyJhZGRlZENvdW50Il0gPSBO
dW1iZXIud2l0aFRob3VzYW5kc1NlcGFyYXRvcih0aGlzLl9hZGRlZENvdW50KTsKKyAgICAgICAg
ZGF0YVsicmVtb3ZlZENvdW50Il0gPSBOdW1iZXIud2l0aFRob3VzYW5kc1NlcGFyYXRvcih0aGlz
Ll9yZW1vdmVkQ291bnQpOworICAgICAgICBkYXRhWyJjb3VudERlbHRhIl0gPSB0aGlzLl9zaWdu
Rm9yRGVsdGEodGhpcy5fY291bnREZWx0YSkgKyBOdW1iZXIud2l0aFRob3VzYW5kc1NlcGFyYXRv
cihNYXRoLmFicyh0aGlzLl9jb3VudERlbHRhKSk7CisgICAgICAgIGRhdGFbImFkZGVkU2l6ZSJd
ID0gTnVtYmVyLndpdGhUaG91c2FuZHNTZXBhcmF0b3IodGhpcy5fYWRkZWRTaXplKTsKKyAgICAg
ICAgZGF0YVsicmVtb3ZlZFNpemUiXSA9IE51bWJlci53aXRoVGhvdXNhbmRzU2VwYXJhdG9yKHRo
aXMuX3JlbW92ZWRTaXplKTsKKyAgICAgICAgZGF0YVsic2l6ZURlbHRhIl0gPSB0aGlzLl9zaWdu
Rm9yRGVsdGEodGhpcy5fc2l6ZURlbHRhKSArIE51bWJlci53aXRoVGhvdXNhbmRzU2VwYXJhdG9y
KE1hdGguYWJzKHRoaXMuX3NpemVEZWx0YSkpOworCisgICAgICAgIHJldHVybiBkYXRhOworICAg
IH0KK307CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExhenlHcmlkTm9kZS5wcm90b3R5cGU7
CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlfQorICovCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
RG9taW5hdG9yT2JqZWN0Tm9kZSA9IGZ1bmN0aW9uKHRyZWUsIG5vZGUpCit7CisgICAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLmNhbGwodGhpcywgdHJlZSwgbm9k
ZSk7CisgICAgdGhpcy5fcHJvdmlkZXIgPSB0aGlzLl9jcmVhdGVQcm92aWRlcih0cmVlLnNuYXBz
aG90LCBub2RlLm5vZGVJbmRleCk7CisgICAgdGhpcy51cGRhdGVIYXNDaGlsZHJlbigpOworfTsK
KworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvck9iamVjdE5vZGUucHJvdG90eXBl
ID0geworICAgIF9jcmVhdGVDaGlsZE5vZGU6IGZ1bmN0aW9uKGl0ZW0pCisgICAgeworICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JPYmplY3ROb2Rl
KHRoaXMuZGF0YUdyaWQsIGl0ZW0pOworICAgIH0sCisKKyAgICBfY3JlYXRlUHJvdmlkZXI6IGZ1
bmN0aW9uKHNuYXBzaG90LCBub2RlSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gc25hcHNo
b3QuY3JlYXRlTm9kZXNQcm92aWRlckZvckRvbWluYXRvcihub2RlSW5kZXgsCisgICAgICAgICAg
ICAiZnVuY3Rpb24gKG5vZGUpIHsgcmV0dXJuIHRydWU7IH0iKTsKKyAgICB9LAorCisgICAgX2No
aWxkSGFzaEZvckVudGl0eTogZnVuY3Rpb24obm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBu
b2RlLmlkOworICAgIH0sCisKKyAgICBfY2hpbGRIYXNoRm9yTm9kZTogZnVuY3Rpb24oY2hpbGRO
b2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoaWxkTm9kZS5zbmFwc2hvdE5vZGVJZDsKKyAg
ICB9LAorCisgICAgY29tcGFyYXRvcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHNv
cnRBc2NlbmRpbmcgPSB0aGlzLmRhdGFHcmlkLnNvcnRPcmRlciA9PT0gImFzY2VuZGluZyI7Cisg
ICAgICAgIHZhciBzb3J0Q29sdW1uSWRlbnRpZmllciA9IHRoaXMuZGF0YUdyaWQuc29ydENvbHVt
bklkZW50aWZpZXI7CisgICAgICAgIHZhciBzb3J0RmllbGRzID0geworICAgICAgICAgICAgb2Jq
ZWN0OiBbImlkIiwgc29ydEFzY2VuZGluZywgInJldGFpbmVkU2l6ZSIsIGZhbHNlXSwKKyAgICAg
ICAgICAgIHNoYWxsb3dTaXplOiBbInNlbGZTaXplIiwgc29ydEFzY2VuZGluZywgImlkIiwgdHJ1
ZV0sCisgICAgICAgICAgICByZXRhaW5lZFNpemU6IFsicmV0YWluZWRTaXplIiwgc29ydEFzY2Vu
ZGluZywgImlkIiwgdHJ1ZV0KKyAgICAgICAgfVtzb3J0Q29sdW1uSWRlbnRpZmllcl07CisgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0
b3IucHJvdG90eXBlLmNyZWF0ZUNvbXBhcmF0b3Ioc29ydEZpZWxkcyk7CisgICAgfSwKKworICAg
IF9lbXB0eURhdGE6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7fTsKKyAgICB9
Cit9OworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RG9taW5hdG9yT2JqZWN0Tm9kZS5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3RO
b2RlLnByb3RvdHlwZTsKKworZnVuY3Rpb24gTWl4SW5TbmFwc2hvdE5vZGVGdW5jdGlvbnMoc291
cmNlUHJvdG90eXBlLCB0YXJnZXRQcm90b3R5cGUpCit7CisgICAgdGFyZ2V0UHJvdG90eXBlLl9j
aGlsZEhhc2hGb3JFbnRpdHkgPSBzb3VyY2VQcm90b3R5cGUuX2NoaWxkSGFzaEZvckVudGl0eTsK
KyAgICB0YXJnZXRQcm90b3R5cGUuX2NoaWxkSGFzaEZvck5vZGUgPSBzb3VyY2VQcm90b3R5cGUu
X2NoaWxkSGFzaEZvck5vZGU7CisgICAgdGFyZ2V0UHJvdG90eXBlLmNvbXBhcmF0b3IgPSBzb3Vy
Y2VQcm90b3R5cGUuY29tcGFyYXRvcjsKKyAgICB0YXJnZXRQcm90b3R5cGUuX2NyZWF0ZUNoaWxk
Tm9kZSA9IHNvdXJjZVByb3RvdHlwZS5fY3JlYXRlQ2hpbGROb2RlOworICAgIHRhcmdldFByb3Rv
dHlwZS5fY3JlYXRlUHJvdmlkZXIgPSBzb3VyY2VQcm90b3R5cGUuX2NyZWF0ZVByb3ZpZGVyOwor
ICAgIHRhcmdldFByb3RvdHlwZS5kaXNwb3NlID0gc291cmNlUHJvdG90eXBlLmRpc3Bvc2U7Cisg
ICAgdGFyZ2V0UHJvdG90eXBlLnBvcHVsYXRlQ2hpbGRyZW4gPSBzb3VyY2VQcm90b3R5cGUucG9w
dWxhdGVDaGlsZHJlbjsKKyAgICB0YXJnZXRQcm90b3R5cGUuX3NhdmVDaGlsZHJlbiA9IHNvdXJj
ZVByb3RvdHlwZS5fc2F2ZUNoaWxkcmVuOworICAgIHRhcmdldFByb3RvdHlwZS5zb3J0ID0gc291
cmNlUHJvdG90eXBlLnNvcnQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc1OWI5YTM2YmIx
N2QxZmMyNTg0MGNhZjEyNDJhMTlmMTk3YWQ2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcwpAQCAtMCwwICsx
LDEyMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5E
YXRhR3JpZH0KKyAqIEBwYXJhbSB7Ym9vbGVhbj19IGRlZmVyTm9kZUNvbnRlbnRDcmVhdGlvbgor
ICovCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3JpZCA9IGZ1bmN0aW9u
KGNvbHVtbnMsIGRlZmVyTm9kZUNvbnRlbnRDcmVhdGlvbikKK3sKKyAgICBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5zKTsKKyAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIo
InNvcnRpbmcgY2hhbmdlZCIsIHRoaXMuc29ydGluZ0NoYW5nZWQsIHRoaXMpOworCisgICAgdGhp
cy5fZGVmZXJOb2RlQ29udGVudENyZWF0aW9uID0gZGVmZXJOb2RlQ29udGVudENyZWF0aW9uOwor
ICAgIGlmIChkZWZlck5vZGVDb250ZW50Q3JlYXRpb24pCisgICAgICAgIHRoaXMuc2Nyb2xsQ29u
dGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMuX29uU2Nyb2xsLmJpbmQodGhp
cyksIHRydWUpOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3Jp
ZC5wcm90b3R5cGUgPSB7CisgICAgZGlzcG9zZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDAsIGwgPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7ICsraSkKKyAg
ICAgICAgICAgIHRoaXMuY2hpbGRyZW5baV0uZGlzcG9zZSgpOworICAgIH0sCisKKyAgICByZXNl
dFNvcnRpbmdDYWNoZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2xh
c3RTb3J0Q29sdW1uSWRlbnRpZmllcjsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2xhc3RTb3J0QXNj
ZW5kaW5nOworICAgIH0sCisKKyAgICBzb3J0aW5nQ2hhbmdlZDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdmFyIHNvcnRBc2NlbmRpbmcgPSB0aGlzLnNvcnRPcmRlciA9PT0gImFzY2VuZGlu
ZyI7CisgICAgICAgIHZhciBzb3J0Q29sdW1uSWRlbnRpZmllciA9IHRoaXMuc29ydENvbHVtbklk
ZW50aWZpZXI7CisgICAgICAgIGlmICh0aGlzLl9sYXN0U29ydENvbHVtbklkZW50aWZpZXIgPT09
IHNvcnRDb2x1bW5JZGVudGlmaWVyICYmIHRoaXMuX2xhc3RTb3J0QXNjZW5kaW5nID09PSBzb3J0
QXNjZW5kaW5nKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9sYXN0U29ydENv
bHVtbklkZW50aWZpZXIgPSBzb3J0Q29sdW1uSWRlbnRpZmllcjsKKyAgICAgICAgdGhpcy5fbGFz
dFNvcnRBc2NlbmRpbmcgPSBzb3J0QXNjZW5kaW5nOworICAgICAgICB2YXIgc29ydEZpZWxkcyA9
IHRoaXMuX3NvcnRGaWVsZHMoc29ydENvbHVtbklkZW50aWZpZXIsIHNvcnRBc2NlbmRpbmcpOwor
CisgICAgICAgIGZ1bmN0aW9uIFNvcnRCeVR3b0ZpZWxkcyhub2RlQSwgbm9kZUIpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBmaWVsZDEgPSBub2RlQVtzb3J0RmllbGRzWzBdXTsKKyAgICAg
ICAgICAgIHZhciBmaWVsZDIgPSBub2RlQltzb3J0RmllbGRzWzBdXTsKKyAgICAgICAgICAgIHZh
ciByZXN1bHQgPSBmaWVsZDEgPCBmaWVsZDIgPyAtMSA6IChmaWVsZDEgPiBmaWVsZDIgPyAxIDog
MCk7CisgICAgICAgICAgICBpZiAoIXNvcnRGaWVsZHNbMV0pCisgICAgICAgICAgICAgICAgcmVz
dWx0ID0gLXJlc3VsdDsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IDApCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIGZpZWxkMSA9IG5vZGVBW3NvcnRGaWVs
ZHNbMl1dOworICAgICAgICAgICAgZmllbGQyID0gbm9kZUJbc29ydEZpZWxkc1syXV07CisgICAg
ICAgICAgICByZXN1bHQgPSBmaWVsZDEgPCBmaWVsZDIgPyAtMSA6IChmaWVsZDEgPiBmaWVsZDIg
PyAxIDogMCk7CisgICAgICAgICAgICBpZiAoIXNvcnRGaWVsZHNbM10pCisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gLXJlc3VsdDsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
IH0KKyAgICAgICAgdGhpcy5fcGVyZm9ybVNvcnRpbmcoU29ydEJ5VHdvRmllbGRzKTsKKyAgICB9
LAorCisgICAgdXBkYXRlVmlzaWJsZU5vZGVzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMuX2RlZmVyTm9kZUNvbnRlbnRDcmVhdGlvbikKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgdmFyIHNjcm9sbFRvcCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcDsK
KyAgICAgICAgdmFyIHJvd0hlaWdodCA9IDE2OworCisgICAgICAgIHZhciBoZWlnaHQgPSB0aGlz
LnNjcm9sbENvbnRhaW5lci5vZmZzZXRIZWlnaHQ7CisgICAgICAgIHZhciB2aXNpYmxlUm93c0Nv
dW50ID0gTWF0aC5yb3VuZChoZWlnaHQgLyByb3dIZWlnaHQpICsgMTsKKworICAgICAgICB2YXIg
Y2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuOworCisgICAgICAgIHZhciBpID0gMDsKKyAgICAgICAg
d2hpbGUgKGkgPCBjaGlsZHJlbi5sZW5ndGgpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZHJlbltp
XS5yZXZlYWxlZCkgeworICAgICAgICAgICAgICAgIHZhciB0b3AgPSBjaGlsZHJlbltpXS5lbGVt
ZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAodG9wID49IHNjcm9sbFRvcCkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2k7
CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAoaSA8IGNoaWxkcmVuLmxlbmd0aCAmJiB2aXNp
YmxlUm93c0NvdW50KSB7CisgICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0ucmV2ZWFsZWQpIHsK
KyAgICAgICAgICAgICAgICBjaGlsZHJlbltpXS5lbnN1cmVDb250ZW50Q3JlYXRlZCgpOworICAg
ICAgICAgICAgICAgIC0tdmlzaWJsZVJvd3NDb3VudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICsraTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBvblJlc2l6ZTogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdGhpcy51cGRhdGVWaXNpYmxlTm9kZXMoKTsKKyAgICB9LAorCisgICAg
X29uU2Nyb2xsOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMudXBkYXRlVmlz
aWJsZU5vZGVzKCk7CisgICAgfSwKKworICAgIF9wZXJmb3JtU29ydGluZzogZnVuY3Rpb24oc29y
dEZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgdGhpcy5yZWN1cnNpdmVTb3J0aW5nRW50ZXIoKTsK
KyAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjsKKyAgICAgICAgdGhpcy5yZW1v
dmVDaGlsZHJlbigpOworICAgICAgICBjaGlsZHJlbi5zb3J0KHNvcnRGdW5jdGlvbik7CisgICAg
ICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgKytpKSB7Cisg
ICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTsKKyAgICAgICAgICAgIHZhciByZXZl
YWxlZCA9IGNoaWxkLnJldmVhbGVkOworICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChjaGls
ZCk7CisgICAgICAgICAgICBjaGlsZC5yZXZlYWxlZCA9IHJldmVhbGVkOworICAgICAgICAgICAg
aWYgKGNoaWxkLmV4cGFuZGVkKQorICAgICAgICAgICAgICAgIGNoaWxkLnNvcnQoKTsKKyAgICAg
ICAgfQorICAgICAgICB0aGlzLnJlY3Vyc2l2ZVNvcnRpbmdMZWF2ZSgpOworICAgICAgICB0aGlz
LnVwZGF0ZVZpc2libGVOb2RlcygpOworICAgIH0sCisKKyAgICByZWN1cnNpdmVTb3J0aW5nRW50
ZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghKCJfcmVjdXJzaXZlU29ydGluZ0Rl
cHRoIiBpbiB0aGlzKSkKKyAgICAgICAgICAgIHRoaXMuX3JlY3Vyc2l2ZVNvcnRpbmdEZXB0aCA9
IDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICsrdGhpcy5fcmVjdXJzaXZlU29ydGluZ0Rl
cHRoOworICAgIH0sCisKKyAgICByZWN1cnNpdmVTb3J0aW5nTGVhdmU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIGlmICghKCJfcmVjdXJzaXZlU29ydGluZ0RlcHRoIiBpbiB0aGlzKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCEtLXRoaXMuX3JlY3Vyc2l2ZVNvcnRpbmdE
ZXB0aCkgeworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3JlY3Vyc2l2ZVNvcnRpbmdEZXB0aDsK
KyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJzb3J0aW5nIGNvbXBs
ZXRlIik7CisgICAgICAgIH0KKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
U29ydGFibGVEYXRhR3JpZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkRhdGFH
cmlkLnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3JpZH0KKyAqIEBwYXJhbSB7T2JqZWN0
PX0gY29sdW1ucworICovCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFpbm1lbnREYXRh
R3JpZCA9IGZ1bmN0aW9uKGNvbHVtbnMpCit7CisgICAgY29sdW1ucyA9IGNvbHVtbnMgfHwgewor
ICAgICAgICBvYmplY3Q6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiT2JqZWN0Iiks
IGRpc2Nsb3N1cmU6IHRydWUsIHNvcnRhYmxlOiB0cnVlIH0sCisgICAgICAgIHNoYWxsb3dTaXpl
OiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNoYWxsb3cgU2l6ZSIpLCB3aWR0aDog
IjEyMHB4Iiwgc29ydGFibGU6IHRydWUgfSwKKyAgICAgICAgcmV0YWluZWRTaXplOiB7IHRpdGxl
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJldGFpbmVkIFNpemUiKSwgd2lkdGg6ICIxMjBweCIs
IHNvcnRhYmxlOiB0cnVlLCBzb3J0OiAiZGVzY2VuZGluZyIgfQorICAgIH07CisgICAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5zKTsK
K30KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnRhaW5tZW50RGF0YUdyaWQucHJvdG90
eXBlID0geworICAgIF9kZWZhdWx0UG9wdWxhdGVDb3VudDogMTAwLAorCisgICAgZXhwYW5kUm91
dGU6IGZ1bmN0aW9uKHJvdXRlKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gbmV4dFN0ZXAocGFy
ZW50LCBob3BJbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGhvcEluZGV4ID49IHJv
dXRlLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIHBhcmVudC5lbGVtZW50LnNjcm9sbEludG9W
aWV3SWZOZWVkZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgcGFyZW50LnNlbGVjdCgpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBub2Rl
SW5kZXggPSByb3V0ZVtob3BJbmRleF07CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9
IHBhcmVudC5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2
YXIgY2hpbGQgPSBwYXJlbnQuY2hpbGRyZW5baV07CisgICAgICAgICAgICAgICAgaWYgKGNoaWxk
LnNuYXBzaG90Tm9kZUluZGV4ID09PSBub2RlSW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGNoaWxkLmV4cGFuZGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFN0ZXAoY2hp
bGQsIGhvcEluZGV4ICsgMSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gYWZ0ZXJFeHBhbmQoKQorICAgICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLnJlbW92ZUV2ZW50TGlz
dGVuZXIoInBvcHVsYXRlIGNvbXBsZXRlIiwgYWZ0ZXJFeHBhbmQsIG51bGwpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBsYXN0Q2hpbGQgPSBjaGlsZC5jaGlsZHJlbltjaGlsZC5j
aGlsZHJlbi5sZW5ndGggLSAxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxh
c3RDaGlsZC5zaG93QWxsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0U3Rl
cChjaGlsZCwgaG9wSW5kZXggKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuYWRkRXZlbnRMaXN0ZW5l
cigicG9wdWxhdGUgY29tcGxldGUiLCBhZnRlckV4cGFuZCwgbnVsbCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxhc3RDaGlsZC5zaG93QWxsLmNsaWNrKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgY2hpbGQuYWRkRXZlbnRMaXN0ZW5lcigicG9wdWxhdGUgY29tcGxldGUi
LCBhZnRlckV4cGFuZCwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5leHBh
bmQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbmV4
dFN0ZXAodGhpcywgMCk7CisgICAgfSwKKworICAgIHNldERhdGFTb3VyY2U6IGZ1bmN0aW9uKHNu
YXBzaG90Vmlldywgc25hcHNob3QsIG5vZGVJbmRleCkKKyAgICB7CisgICAgICAgIHRoaXMuc25h
cHNob3RWaWV3ID0gc25hcHNob3RWaWV3OworICAgICAgICB0aGlzLnNuYXBzaG90ID0gc25hcHNo
b3Q7CisgICAgICAgIHRoaXMuc25hcHNob3ROb2RlSW5kZXggPSBub2RlSW5kZXggfHwgdGhpcy5z
bmFwc2hvdC5yb290Tm9kZUluZGV4OworICAgICAgICB0aGlzLl9wcm92aWRlciA9IHRoaXMuX2Ny
ZWF0ZVByb3ZpZGVyKHNuYXBzaG90LCB0aGlzLnNuYXBzaG90Tm9kZUluZGV4LCB0aGlzKTsKKyAg
ICAgICAgdGhpcy5zb3J0KCk7CisgICAgfSwKKworICAgIHNvcnRpbmdDaGFuZ2VkOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICB0aGlzLnNvcnQoKTsKKyAgICB9Cit9OworCitNaXhJblNuYXBz
aG90Tm9kZUZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZS5wcm90
b3R5cGUsIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb250YWlubWVudERhdGFHcmlkLnByb3Rv
dHlwZSk7CitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFpbm1lbnREYXRhR3JpZC5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdy
aWQucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RDb250YWlubWVudERhdGFHcmlkfQorICovCitXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90UmV0YWlubWVudERhdGFHcmlkID0gZnVuY3Rpb24oKQoreworICAgIHRo
aXMuc2hvd1JldGFpbmluZ0VkZ2VzID0gdHJ1ZTsKKyAgICB2YXIgY29sdW1ucyA9IHsKKyAgICAg
ICAgb2JqZWN0OiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9iamVjdCIpLCBkaXNj
bG9zdXJlOiB0cnVlLCBzb3J0YWJsZTogdHJ1ZSB9LAorICAgICAgICBzaGFsbG93U2l6ZTogeyB0
aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaGFsbG93IFNpemUiKSwgd2lkdGg6ICIxMjBw
eCIsIHNvcnRhYmxlOiB0cnVlIH0sCisgICAgICAgIHJldGFpbmVkU2l6ZTogeyB0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSZXRhaW5lZCBTaXplIiksIHdpZHRoOiAiMTIwcHgiLCBzb3J0
YWJsZTogdHJ1ZSB9LAorICAgICAgICBkaXN0YW5jZVRvV2luZG93OiB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkRpc3RhbmNlIiksIHdpZHRoOiAiODBweCIsIHNvcnRhYmxlOiB0cnVl
LCBzb3J0OiAiYXNjZW5kaW5nIiB9CisgICAgfTsKKyAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Q29udGFpbm1lbnREYXRhR3JpZC5jYWxsKHRoaXMsIGNvbHVtbnMpOworfQorCitXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UmV0YWlubWVudERhdGFHcmlkLnByb3RvdHlwZSA9IHsKKyAgICBf
c29ydEZpZWxkczogZnVuY3Rpb24oc29ydENvbHVtbiwgc29ydEFzY2VuZGluZykKKyAgICB7Cisg
ICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBvYmplY3Q6IFsiX25hbWUiLCBzb3J0QXNjZW5k
aW5nLCAiX2NvdW50IiwgZmFsc2VdLAorICAgICAgICAgICAgY291bnQ6IFsiX2NvdW50Iiwgc29y
dEFzY2VuZGluZywgIl9uYW1lIiwgdHJ1ZV0sCisgICAgICAgICAgICBzaGFsbG93U2l6ZTogWyJf
c2hhbGxvd1NpemUiLCBzb3J0QXNjZW5kaW5nLCAiX25hbWUiLCB0cnVlXSwKKyAgICAgICAgICAg
IHJldGFpbmVkU2l6ZTogWyJfcmV0YWluZWRTaXplIiwgc29ydEFzY2VuZGluZywgIl9uYW1lIiwg
dHJ1ZV0sCisgICAgICAgICAgICBkaXN0YW5jZVRvV2luZG93OiBbIl9kaXN0YW5jZVRvV2luZG93
Iiwgc29ydEFzY2VuZGluZywgIl9uYW1lIiwgdHJ1ZV0KKyAgICAgICAgfVtzb3J0Q29sdW1uXTsK
KyAgICB9LAorCisgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVt
b3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgdGhpcy5yZXNldFNvcnRpbmdDYWNoZSgpOworICAgIH0s
Cit9CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5tZW50RGF0YUdyaWQucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb250YWlubWVudERhdGFH
cmlkLnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3JpZH0KKyAqLworV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yc0RhdGFHcmlkID0gZnVuY3Rpb24oKQoreworICAgIHZh
ciBjb2x1bW5zID0geworICAgICAgICBvYmplY3Q6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ29uc3RydWN0b3IiKSwgZGlzY2xvc3VyZTogdHJ1ZSwgc29ydGFibGU6IHRydWUgfSwK
KyAgICAgICAgZGlzdGFuY2VUb1dpbmRvdzogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJEaXN0YW5jZSIpLCB3aWR0aDogIjkwcHgiLCBzb3J0YWJsZTogdHJ1ZSB9LAorICAgICAgICBj
b3VudDogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPYmplY3RzIENvdW50IiksIHdp
ZHRoOiAiOTBweCIsIHNvcnRhYmxlOiB0cnVlIH0sCisgICAgICAgIHNoYWxsb3dTaXplOiB7IHRp
dGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNoYWxsb3cgU2l6ZSIpLCB3aWR0aDogIjEyMHB4
Iiwgc29ydGFibGU6IHRydWUgfSwKKyAgICAgICAgcmV0YWluZWRTaXplOiB7IHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlJldGFpbmVkIFNpemUiKSwgd2lkdGg6ICIxMjBweCIsIHNvcnQ6
ICJkZXNjZW5kaW5nIiwgc29ydGFibGU6IHRydWUgfQorICAgIH07CisgICAgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5zLCB0cnVlKTsK
KyAgICB0aGlzLl9wcm9maWxlSW5kZXggPSAtMTsKK30KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdENvbnN0cnVjdG9yc0RhdGFHcmlkLnByb3RvdHlwZSA9IHsKKyAgICBfZGVmYXVsdFBvcHVs
YXRlQ291bnQ6IDEwMCwKKworICAgIF9zb3J0RmllbGRzOiBmdW5jdGlvbihzb3J0Q29sdW1uLCBz
b3J0QXNjZW5kaW5nKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIG9iamVj
dDogWyJfbmFtZSIsIHNvcnRBc2NlbmRpbmcsICJfY291bnQiLCBmYWxzZV0sCisgICAgICAgICAg
ICBkaXN0YW5jZVRvV2luZG93OiBbIl9kaXN0YW5jZVRvV2luZG93Iiwgc29ydEFzY2VuZGluZywg
Il9yZXRhaW5lZFNpemUiLCB0cnVlXSwKKyAgICAgICAgICAgIGNvdW50OiBbIl9jb3VudCIsIHNv
cnRBc2NlbmRpbmcsICJfbmFtZSIsIHRydWVdLAorICAgICAgICAgICAgc2hhbGxvd1NpemU6IFsi
X3NoYWxsb3dTaXplIiwgc29ydEFzY2VuZGluZywgIl9uYW1lIiwgdHJ1ZV0sCisgICAgICAgICAg
ICByZXRhaW5lZFNpemU6IFsiX3JldGFpbmVkU2l6ZSIsIHNvcnRBc2NlbmRpbmcsICJfbmFtZSIs
IHRydWVdCisgICAgICAgIH1bc29ydENvbHVtbl07CisgICAgfSwKKworICAgIHNldERhdGFTb3Vy
Y2U6IGZ1bmN0aW9uKHNuYXBzaG90Vmlldywgc25hcHNob3QpCisgICAgeworICAgICAgICB0aGlz
LnNuYXBzaG90VmlldyA9IHNuYXBzaG90VmlldzsKKyAgICAgICAgdGhpcy5zbmFwc2hvdCA9IHNu
YXBzaG90OworICAgICAgICBpZiAodGhpcy5fcHJvZmlsZUluZGV4ID09PSAtMSkKKyAgICAgICAg
ICAgIHRoaXMucG9wdWxhdGVDaGlsZHJlbigpOworICAgIH0sCisKKyAgICBwb3B1bGF0ZUNoaWxk
cmVuOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmdW5jdGlvbiBhZ2dyZWdhdGVzUmVjZWl2
ZWQoa2V5LCBhZ2dyZWdhdGVzKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHZhciBjb25z
dHJ1Y3RvciBpbiBhZ2dyZWdhdGVzKQorICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQo
bmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rvck5vZGUodGhpcywgY29uc3Ry
dWN0b3IsIGFnZ3JlZ2F0ZXNbY29uc3RydWN0b3JdLCBrZXkpKTsKKyAgICAgICAgICAgIHRoaXMu
c29ydGluZ0NoYW5nZWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuZGlzcG9zZSgpOwor
ICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIHRoaXMucmVzZXRTb3J0aW5n
Q2FjaGUoKTsKKworICAgICAgICB2YXIga2V5ID0gdGhpcy5fcHJvZmlsZUluZGV4ID09PSAtMSA/
ICJhbGxPYmplY3RzIiA6IHRoaXMuX21pbk5vZGVJZCArICIuLiIgKyB0aGlzLl9tYXhOb2RlSWQ7
CisgICAgICAgIHZhciBmaWx0ZXIgPSB0aGlzLl9wcm9maWxlSW5kZXggPT09IC0xID8gbnVsbCA6
ICJmdW5jdGlvbihub2RlKSB7IHZhciBpZCA9IG5vZGUuaWQ7IHJldHVybiBpZCA+ICIgKyB0aGlz
Ll9taW5Ob2RlSWQgKyAiICYmIGlkIDw9ICIgKyB0aGlzLl9tYXhOb2RlSWQgKyAiOyB9IjsKKwor
ICAgICAgICB0aGlzLnNuYXBzaG90LmFnZ3JlZ2F0ZXMoZmFsc2UsIGtleSwgZmlsdGVyLCBhZ2dy
ZWdhdGVzUmVjZWl2ZWQuYmluZCh0aGlzLCBrZXkpKTsKKyAgICB9LAorCisgICAgX2ZpbHRlclNl
bGVjdEluZGV4Q2hhbmdlZDogZnVuY3Rpb24ocHJvZmlsZXMsIHByb2ZpbGVJbmRleCkKKyAgICB7
CisgICAgICAgIHRoaXMuX3Byb2ZpbGVJbmRleCA9IHByb2ZpbGVJbmRleDsKKworICAgICAgICBk
ZWxldGUgdGhpcy5fbWF4Tm9kZUlkOworICAgICAgICBkZWxldGUgdGhpcy5fbWluTm9kZUlkOwor
CisgICAgICAgIGlmICh0aGlzLl9wcm9maWxlSW5kZXggIT09IC0xKSB7CisgICAgICAgICAgICB0
aGlzLl9taW5Ob2RlSWQgPSBwcm9maWxlSW5kZXggPiAwID8gcHJvZmlsZXNbcHJvZmlsZUluZGV4
IC0gMV0ubWF4SlNPYmplY3RJZCA6IDA7CisgICAgICAgICAgICB0aGlzLl9tYXhOb2RlSWQgPSBw
cm9maWxlc1twcm9maWxlSW5kZXhdLm1heEpTT2JqZWN0SWQ7CisgICAgICAgIH0KKworICAgICAg
ICB0aGlzLnBvcHVsYXRlQ2hpbGRyZW4oKTsKKyAgICB9LAorCit9OworCitXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90Q29uc3RydWN0b3JzRGF0YUdyaWQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3RvdHlwZTsKKworLyoq
CisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
U29ydGFibGVEYXRhR3JpZH0KKyAqLworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZEYXRh
R3JpZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgY29sdW1ucyA9IHsKKyAgICAgICAgb2JqZWN0
OiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnN0cnVjdG9yIiksIGRpc2Nsb3N1
cmU6IHRydWUsIHNvcnRhYmxlOiB0cnVlIH0sCisgICAgICAgIGFkZGVkQ291bnQ6IHsgdGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiIyBOZXciKSwgd2lkdGg6ICI3MnB4Iiwgc29ydGFibGU6
IHRydWUgfSwKKyAgICAgICAgcmVtb3ZlZENvdW50OiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIiMgRGVsZXRlZCIpLCB3aWR0aDogIjcycHgiLCBzb3J0YWJsZTogdHJ1ZSB9LAorICAg
ICAgICBjb3VudERlbHRhOiB7IHRpdGxlOiAiIyBEZWx0YSIsIHdpZHRoOiAiNjRweCIsIHNvcnRh
YmxlOiB0cnVlIH0sCisgICAgICAgIGFkZGVkU2l6ZTogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJBbGxvYy4gU2l6ZSIpLCB3aWR0aDogIjcycHgiLCBzb3J0YWJsZTogdHJ1ZSwgc29y
dDogImRlc2NlbmRpbmciIH0sCisgICAgICAgIHJlbW92ZWRTaXplOiB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkZyZWVkIFNpemUiKSwgd2lkdGg6ICI3MnB4Iiwgc29ydGFibGU6IHRy
dWUgfSwKKyAgICAgICAgc2l6ZURlbHRhOiB7IHRpdGxlOiAiU2l6ZSBEZWx0YSIsIHdpZHRoOiAi
NzJweCIsIHNvcnRhYmxlOiB0cnVlIH0KKyAgICB9OworICAgIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RTb3J0YWJsZURhdGFHcmlkLmNhbGwodGhpcywgY29sdW1ucywgdHJ1ZSk7Cit9CisKK1dl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQucHJvdG90eXBlID0geworICAgIF9k
ZWZhdWx0UG9wdWxhdGVDb3VudDogNTAsCisKKyAgICBfc29ydEZpZWxkczogZnVuY3Rpb24oc29y
dENvbHVtbiwgc29ydEFzY2VuZGluZykKKyAgICB7CisgICAgICAgIHJldHVybiB7CisgICAgICAg
ICAgICBvYmplY3Q6IFsiX25hbWUiLCBzb3J0QXNjZW5kaW5nLCAiX2NvdW50IiwgZmFsc2VdLAor
ICAgICAgICAgICAgYWRkZWRDb3VudDogWyJfYWRkZWRDb3VudCIsIHNvcnRBc2NlbmRpbmcsICJf
bmFtZSIsIHRydWVdLAorICAgICAgICAgICAgcmVtb3ZlZENvdW50OiBbIl9yZW1vdmVkQ291bnQi
LCBzb3J0QXNjZW5kaW5nLCAiX25hbWUiLCB0cnVlXSwKKyAgICAgICAgICAgIGNvdW50RGVsdGE6
IFsiX2NvdW50RGVsdGEiLCBzb3J0QXNjZW5kaW5nLCAiX25hbWUiLCB0cnVlXSwKKyAgICAgICAg
ICAgIGFkZGVkU2l6ZTogWyJfYWRkZWRTaXplIiwgc29ydEFzY2VuZGluZywgIl9uYW1lIiwgdHJ1
ZV0sCisgICAgICAgICAgICByZW1vdmVkU2l6ZTogWyJfcmVtb3ZlZFNpemUiLCBzb3J0QXNjZW5k
aW5nLCAiX25hbWUiLCB0cnVlXSwKKyAgICAgICAgICAgIHNpemVEZWx0YTogWyJfc2l6ZURlbHRh
Iiwgc29ydEFzY2VuZGluZywgIl9uYW1lIiwgdHJ1ZV0KKyAgICAgICAgfVtzb3J0Q29sdW1uXTsK
KyAgICB9LAorCisgICAgc2V0RGF0YVNvdXJjZTogZnVuY3Rpb24oc25hcHNob3RWaWV3LCBzbmFw
c2hvdCkKKyAgICB7CisgICAgICAgIHRoaXMuc25hcHNob3RWaWV3ID0gc25hcHNob3RWaWV3Owor
ICAgICAgICB0aGlzLnNuYXBzaG90ID0gc25hcHNob3Q7CisgICAgfSwKKworICAgIF9iYXNlUHJv
ZmlsZUluZGV4Q2hhbmdlZDogZnVuY3Rpb24obG9hZGVyLCBwcm9maWxlSW5kZXgpCisgICAgewor
ICAgICAgICBsb2FkZXIocHJvZmlsZUluZGV4LCB0aGlzLnNldEJhc2VEYXRhU291cmNlLmJpbmQo
dGhpcykpOworICAgIH0sCisKKyAgICBzZXRCYXNlRGF0YVNvdXJjZTogZnVuY3Rpb24oYmFzZVNu
YXBzaG90KQorICAgIHsKKyAgICAgICAgdGhpcy5iYXNlU25hcHNob3QgPSBiYXNlU25hcHNob3Q7
CisgICAgICAgIHRoaXMuZGlzcG9zZSgpOworICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7
CisgICAgICAgIHRoaXMucmVzZXRTb3J0aW5nQ2FjaGUoKTsKKyAgICAgICAgaWYgKHRoaXMuYmFz
ZVNuYXBzaG90ID09PSB0aGlzLnNuYXBzaG90KSB7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycygic29ydGluZyBjb21wbGV0ZSIpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIHRoaXMucG9wdWxhdGVDaGlsZHJlbigpOworICAgIH0sCisK
KyAgICBwb3B1bGF0ZUNoaWxkcmVuOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmdW5jdGlv
biBiYXNlQWdncmVnYXRlc1JlY2VpdmVkKGJhc2VDbGFzc2VzKQorICAgICAgICB7CisgICAgICAg
ICAgICBmdW5jdGlvbiBhZ2dyZWdhdGVzUmVjZWl2ZWQoY2xhc3NlcykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB2YXIgbm9kZUNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICB2YXIg
bm9kZXMgPSBbXTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBjbHNzIGluIGJhc2VDbGFzc2Vz
KQorICAgICAgICAgICAgICAgICAgICBub2Rlcy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RGlmZk5vZGUodGhpcywgY2xzcywgYmFzZUNsYXNzZXNbY2xzc10sIGNsYXNzZXNbY2xz
c10pKTsKKyAgICAgICAgICAgICAgICBmb3IgKGNsc3MgaW4gY2xhc3NlcykgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoIShjbHNzIGluIGJhc2VDbGFzc2VzKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGVzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZSh0
aGlzLCBjbHNzLCBudWxsLCBjbGFzc2VzW2Nsc3NdKSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIG5vZGVDb3VudCA9IG5vZGVzLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiBhZGROb2RlSWZOb25aZXJvRGlmZihib3VuZE5vZGUsIHplcm9EaWZmKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF6ZXJvRGlmZikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoYm91bmROb2RlKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCEtLW5vZGVDb3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
c29ydGluZ0NoYW5nZWQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDAsIGwgPSBub2Rlcy5sZW5ndGg7IGkgPCBsOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5j
YWxjdWxhdGVEaWZmKHRoaXMsIGFkZE5vZGVJZk5vblplcm9EaWZmLmJpbmQodGhpcywgbm9kZSkp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuc25h
cHNob3QuYWdncmVnYXRlcyh0cnVlLCAiYWxsT2JqZWN0cyIsIG51bGwsIGFnZ3JlZ2F0ZXNSZWNl
aXZlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLmJhc2VTbmFwc2hvdC5h
Z2dyZWdhdGVzKHRydWUsICJhbGxPYmplY3RzIiwgbnVsbCwgYmFzZUFnZ3JlZ2F0ZXNSZWNlaXZl
ZC5iaW5kKHRoaXMpKTsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlm
ZkRhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
U29ydGFibGVEYXRhR3JpZC5wcm90b3R5cGU7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBA
ZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWR9CisgKi8K
K1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JzRGF0YUdyaWQgPSBmdW5jdGlvbigp
Cit7CisgICAgdmFyIGNvbHVtbnMgPSB7CisgICAgICAgIG9iamVjdDogeyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJPYmplY3QiKSwgZGlzY2xvc3VyZTogdHJ1ZSwgc29ydGFibGU6IHRy
dWUgfSwKKyAgICAgICAgc2hhbGxvd1NpemU6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2hhbGxvdyBTaXplIiksIHdpZHRoOiAiMTIwcHgiLCBzb3J0YWJsZTogdHJ1ZSB9LAorICAg
ICAgICByZXRhaW5lZFNpemU6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmV0YWlu
ZWQgU2l6ZSIpLCB3aWR0aDogIjEyMHB4Iiwgc29ydDogImRlc2NlbmRpbmciLCBzb3J0YWJsZTog
dHJ1ZSB9CisgICAgfTsKKyAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRh
R3JpZC5jYWxsKHRoaXMsIGNvbHVtbnMpOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
RG9taW5hdG9yc0RhdGFHcmlkLnByb3RvdHlwZSA9IHsKKyAgICBfZGVmYXVsdFBvcHVsYXRlQ291
bnQ6IDI1LAorCisgICAgc2V0RGF0YVNvdXJjZTogZnVuY3Rpb24oc25hcHNob3RWaWV3LCBzbmFw
c2hvdCkKKyAgICB7CisgICAgICAgIHRoaXMuc25hcHNob3RWaWV3ID0gc25hcHNob3RWaWV3Owor
ICAgICAgICB0aGlzLnNuYXBzaG90ID0gc25hcHNob3Q7CisgICAgICAgIHRoaXMuc25hcHNob3RO
b2RlSW5kZXggPSB0aGlzLnNuYXBzaG90LnJvb3ROb2RlSW5kZXg7CisgICAgICAgIHRoaXMuX3By
b3ZpZGVyID0gdGhpcy5fY3JlYXRlUHJvdmlkZXIoc25hcHNob3QsIHRoaXMuc25hcHNob3ROb2Rl
SW5kZXgpOworICAgICAgICB0aGlzLnNvcnQoKTsKKyAgICB9LAorCisgICAgc29ydGluZ0NoYW5n
ZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuc29ydCgpOworICAgIH0KK307CisK
K01peEluU25hcHNob3ROb2RlRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21p
bmF0b3JPYmplY3ROb2RlLnByb3RvdHlwZSwgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWlu
YXRvcnNEYXRhR3JpZC5wcm90b3R5cGUpOworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWlu
YXRvcnNEYXRhR3JpZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQorICovCitXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90VmlldyA9IGZ1bmN0aW9uKHBhcmVudCwgcHJvZmlsZSkKK3sKKyAgICBXZWJJbnNwZWN0
b3IuVmlldy5jYWxsKHRoaXMpOworCisgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhl
YXAtc25hcHNob3QtdmlldyIpOworCisgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7CisgICAgdGhp
cy5wYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZmlsZSBhZGRlZCIsIHRoaXMuX3VwZGF0ZUJh
c2VPcHRpb25zLCB0aGlzKTsKKyAgICB0aGlzLnBhcmVudC5hZGRFdmVudExpc3RlbmVyKCJwcm9m
aWxlIGFkZGVkIiwgdGhpcy5fdXBkYXRlRmlsdGVyT3B0aW9ucywgdGhpcyk7CisKKyAgICB0aGlz
LnZpZXdzQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhp
cy52aWV3c0NvbnRhaW5lci5hZGRTdHlsZUNsYXNzKCJ2aWV3cy1jb250YWluZXIiKTsKKyAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy52aWV3c0NvbnRhaW5lcik7CisKKyAgICB0aGlz
LmNvbnRhaW5tZW50VmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlldygpOworICAgIHRoaXMuY29u
dGFpbm1lbnRWaWV3LmVsZW1lbnQuYWRkU3R5bGVDbGFzcygidmlldyIpOworICAgIHRoaXMuY29u
dGFpbm1lbnREYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFpbm1l
bnREYXRhR3JpZCgpOworICAgIHRoaXMuY29udGFpbm1lbnREYXRhR3JpZC5lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21vdXNlRG93bkluQ29udGVudHNHcmlkLmJp
bmQodGhpcyksIHRydWUpOworICAgIHRoaXMuY29udGFpbm1lbnREYXRhR3JpZC5zaG93KHRoaXMu
Y29udGFpbm1lbnRWaWV3LmVsZW1lbnQpOworICAgIHRoaXMuY29udGFpbm1lbnREYXRhR3JpZC5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudHMuU2VsZWN0ZWROb2Rl
LCB0aGlzLl9zZWxlY3Rpb25DaGFuZ2VkLCB0aGlzKTsKKworICAgIHRoaXMuY29uc3RydWN0b3Jz
VmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlldygpOworICAgIHRoaXMuY29uc3RydWN0b3JzVmll
dy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInZpZXciKTsKKyAgICB0aGlzLmNvbnN0cnVjdG9yc1Zp
ZXcuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVUb29sYmFyV2l0aENsYXNzTmFtZUZp
bHRlcigpKTsKKworICAgIHRoaXMuY29uc3RydWN0b3JzRGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yc0RhdGFHcmlkKCk7CisgICAgdGhpcy5jb25zdHJ1
Y3RvcnNEYXRhR3JpZC5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImNsYXNzLXZpZXctZ3JpZCIpOwor
ICAgIHRoaXMuY29uc3RydWN0b3JzRGF0YUdyaWQuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZWRvd24iLCB0aGlzLl9tb3VzZURvd25JbkNvbnRlbnRzR3JpZC5iaW5kKHRoaXMpLCB0cnVl
KTsKKyAgICB0aGlzLmNvbnN0cnVjdG9yc0RhdGFHcmlkLnNob3codGhpcy5jb25zdHJ1Y3RvcnNW
aWV3LmVsZW1lbnQpOworICAgIHRoaXMuY29uc3RydWN0b3JzRGF0YUdyaWQuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnRzLlNlbGVjdGVkTm9kZSwgdGhpcy5fc2Vs
ZWN0aW9uQ2hhbmdlZCwgdGhpcyk7CisKKyAgICB0aGlzLmRpZmZWaWV3ID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaWV3KCk7CisgICAgdGhpcy5kaWZmVmlldy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInZp
ZXciKTsKKyAgICB0aGlzLmRpZmZWaWV3LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRl
VG9vbGJhcldpdGhDbGFzc05hbWVGaWx0ZXIoKSk7CisKKyAgICB0aGlzLmRpZmZEYXRhR3JpZCA9
IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZkRhdGFHcmlkKCk7CisgICAgdGhpcy5k
aWZmRGF0YUdyaWQuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJjbGFzcy12aWV3LWdyaWQiKTsKKyAg
ICB0aGlzLmRpZmZEYXRhR3JpZC5zaG93KHRoaXMuZGlmZlZpZXcuZWxlbWVudCk7CisgICAgdGhp
cy5kaWZmRGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZl
bnRzLlNlbGVjdGVkTm9kZSwgdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZCwgdGhpcyk7CisKKyAgICB0
aGlzLmRvbWluYXRvclZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlZpZXcoKTsKKyAgICB0aGlzLmRv
bWluYXRvclZpZXcuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJ2aWV3Iik7CisgICAgdGhpcy5kb21p
bmF0b3JEYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RG9taW5hdG9yc0Rh
dGFHcmlkKCk7CisgICAgdGhpcy5kb21pbmF0b3JEYXRhR3JpZC5lbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21vdXNlRG93bkluQ29udGVudHNHcmlkLmJpbmQodGhp
cyksIHRydWUpOworICAgIHRoaXMuZG9taW5hdG9yRGF0YUdyaWQuc2hvdyh0aGlzLmRvbWluYXRv
clZpZXcuZWxlbWVudCk7CisgICAgdGhpcy5kb21pbmF0b3JEYXRhR3JpZC5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudHMuU2VsZWN0ZWROb2RlLCB0aGlzLl9zZWxl
Y3Rpb25DaGFuZ2VkLCB0aGlzKTsKKworICAgIHRoaXMucmV0YWlubWVudFZpZXdIZWFkZXIgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB0aGlzLnJldGFpbm1lbnRWaWV3SGVh
ZGVyLmFkZFN0eWxlQ2xhc3MoInJldGFpbmVycy12aWV3LWhlYWRlciIpOworICAgIHRoaXMucmV0
YWlubWVudFZpZXdIZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fc3Rh
cnRSZXRhaW5lcnNIZWFkZXJEcmFnZ2luZy5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICB2YXIgcmV0
YWluaW5nUGF0aHNUaXRsZURpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
IHJldGFpbmluZ1BhdGhzVGl0bGVEaXYuY2xhc3NOYW1lID0gInRpdGxlIjsKKyAgICB2YXIgcmV0
YWluaW5nUGF0aHNUaXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBy
ZXRhaW5pbmdQYXRoc1RpdGxlLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJP
YmplY3QncyByZXRhaW5pbmcgdHJlZSIpOworICAgIHJldGFpbmluZ1BhdGhzVGl0bGVEaXYuYXBw
ZW5kQ2hpbGQocmV0YWluaW5nUGF0aHNUaXRsZSk7CisgICAgdGhpcy5yZXRhaW5tZW50Vmlld0hl
YWRlci5hcHBlbmRDaGlsZChyZXRhaW5pbmdQYXRoc1RpdGxlRGl2KTsKKyAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5yZXRhaW5tZW50Vmlld0hlYWRlcik7CisKKyAgICB0aGlzLnJl
dGFpbm1lbnRWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5WaWV3KCk7CisgICAgdGhpcy5yZXRhaW5t
ZW50Vmlldy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInZpZXciKTsKKyAgICB0aGlzLnJldGFpbm1l
bnRWaWV3LmVsZW1lbnQuYWRkU3R5bGVDbGFzcygicmV0YWluaW5nLXBhdGhzLXZpZXciKTsKKyAg
ICB0aGlzLnJldGFpbm1lbnREYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
UmV0YWlubWVudERhdGFHcmlkKCk7CisgICAgdGhpcy5yZXRhaW5tZW50RGF0YUdyaWQuc2hvdyh0
aGlzLnJldGFpbm1lbnRWaWV3LmVsZW1lbnQpOworICAgIHRoaXMucmV0YWlubWVudERhdGFHcmlk
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50cy5TZWxlY3RlZE5v
ZGUsIHRoaXMuX2luc3BlY3RlZE9iamVjdENoYW5nZWQsIHRoaXMpOworICAgIHRoaXMucmV0YWlu
bWVudFZpZXcuc2hvdyh0aGlzLmVsZW1lbnQpOworICAgIHRoaXMucmV0YWlubWVudERhdGFHcmlk
LnJlc2V0KCk7CisKKyAgICB0aGlzLmRhdGFHcmlkID0gdGhpcy5jb25zdHJ1Y3RvcnNEYXRhR3Jp
ZDsKKyAgICB0aGlzLmN1cnJlbnRWaWV3ID0gdGhpcy5jb25zdHJ1Y3RvcnNWaWV3OworCisgICAg
dGhpcy52aWV3U2VsZWN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIp
OworICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQuY2xhc3NOYW1lID0gInN0YXR1cy1iYXItaXRl
bSI7CisgICAgdGhpcy52aWV3U2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2Ui
LCB0aGlzLl9jaGFuZ2VWaWV3LmJpbmQodGhpcyksIGZhbHNlKTsKKworICAgIHRoaXMudmlld3Mg
PSBbe3RpdGxlOiAiU3VtbWFyeSIsIHZpZXc6IHRoaXMuY29uc3RydWN0b3JzVmlldywgZ3JpZDog
dGhpcy5jb25zdHJ1Y3RvcnNEYXRhR3JpZH0sCisgICAgICAgICAgICAgICAgICB7dGl0bGU6ICJD
b21wYXJpc29uIiwgdmlldzogdGhpcy5kaWZmVmlldywgZ3JpZDogdGhpcy5kaWZmRGF0YUdyaWR9
LAorICAgICAgICAgICAgICAgICAge3RpdGxlOiAiQ29udGFpbm1lbnQiLCB2aWV3OiB0aGlzLmNv
bnRhaW5tZW50VmlldywgZ3JpZDogdGhpcy5jb250YWlubWVudERhdGFHcmlkfSwKKyAgICAgICAg
ICAgICAgICAgIHt0aXRsZTogIkRvbWluYXRvcnMiLCB2aWV3OiB0aGlzLmRvbWluYXRvclZpZXcs
IGdyaWQ6IHRoaXMuZG9taW5hdG9yRGF0YUdyaWR9XTsKKyAgICB0aGlzLnZpZXdzLmN1cnJlbnQg
PSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy52aWV3cy5sZW5ndGg7ICsraSkgewor
ICAgICAgICB2YXIgdmlldyA9IHRoaXMudmlld3NbaV07CisgICAgICAgIHZhciBvcHRpb24gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgb3B0aW9uLmxhYmVsID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKHZpZXcudGl0bGUpOworICAgICAgICB0aGlzLnZpZXdTZWxl
Y3RFbGVtZW50LmFwcGVuZENoaWxkKG9wdGlvbik7CisgICAgfQorCisgICAgdGhpcy5fcHJvZmls
ZVVpZCA9IHByb2ZpbGUudWlkOworCisgICAgdGhpcy5iYXNlU2VsZWN0RWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOworICAgIHRoaXMuYmFzZVNlbGVjdEVsZW1lbnQu
Y2xhc3NOYW1lID0gInN0YXR1cy1iYXItaXRlbSBoaWRkZW4iOworICAgIHRoaXMuYmFzZVNlbGVj
dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fY2hhbmdlQmFzZS5iaW5k
KHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5fdXBkYXRlQmFzZU9wdGlvbnMoKTsKKworICAgIHRo
aXMuZmlsdGVyU2VsZWN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIp
OworICAgIHRoaXMuZmlsdGVyU2VsZWN0RWxlbWVudC5jbGFzc05hbWUgPSAic3RhdHVzLWJhci1p
dGVtIjsKKyAgICB0aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hh
bmdlIiwgdGhpcy5fY2hhbmdlRmlsdGVyLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlzLl91
cGRhdGVGaWx0ZXJPcHRpb25zKCk7CisKKyAgICB0aGlzLmhlbHBCdXR0b24gPSBuZXcgV2ViSW5z
cGVjdG9yLlN0YXR1c0JhckJ1dHRvbigiIiwgImhlYXAtc25hcHNob3QtaGVscC1zdGF0dXMtYmFy
LWl0ZW0gc3RhdHVzLWJhci1pdGVtIik7CisgICAgdGhpcy5oZWxwQnV0dG9uLmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgdGhpcy5faGVscENsaWNrZWQsIHRoaXMpOworCisgICAgdGhpcy5fcG9w
b3ZlckhlbHBlciA9IG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0UG9wb3ZlckhlbHBlcih0aGlzLmVs
ZW1lbnQsIHRoaXMuX2dldEhvdmVyQW5jaG9yLmJpbmQodGhpcyksIHRoaXMuX3Jlc29sdmVPYmpl
Y3RGb3JQb3BvdmVyLmJpbmQodGhpcyksIHVuZGVmaW5lZCwgdHJ1ZSk7CisKKyAgICB0aGlzLl9s
b2FkUHJvZmlsZSh0aGlzLl9wcm9maWxlVWlkLCBwcm9maWxlQ2FsbGJhY2suYmluZCh0aGlzKSk7
CisKKyAgICBmdW5jdGlvbiBwcm9maWxlQ2FsbGJhY2soKQorICAgIHsKKyAgICAgICAgdmFyIGxp
c3QgPSB0aGlzLl9wcm9maWxlcygpOworICAgICAgICB2YXIgcHJvZmlsZUluZGV4OworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlm
IChsaXN0W2ldLnVpZCA9PT0gdGhpcy5fcHJvZmlsZVVpZCkgeworICAgICAgICAgICAgICAgIHBy
b2ZpbGVJbmRleCA9IGk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAocHJvZmlsZUluZGV4ID4gMCkKKyAgICAgICAgICAgIHRo
aXMuYmFzZVNlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9IHByb2ZpbGVJbmRleCAtIDE7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuYmFzZVNlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJ
bmRleCA9IHByb2ZpbGVJbmRleDsKKyAgICAgICAgdGhpcy5kYXRhR3JpZC5zZXREYXRhU291cmNl
KHRoaXMsIHRoaXMucHJvZmlsZVdyYXBwZXIpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFZpZXcucHJvdG90eXBlID0geworICAgIGRpc3Bvc2U6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHRoaXMucHJvZmlsZVdyYXBwZXIuZGlzcG9zZSgpOworICAgICAgICBpZiAo
dGhpcy5iYXNlUHJvZmlsZSkKKyAgICAgICAgICAgIHRoaXMuYmFzZVByb2ZpbGVXcmFwcGVyLmRp
c3Bvc2UoKTsKKyAgICAgICAgdGhpcy5jb250YWlubWVudERhdGFHcmlkLmRpc3Bvc2UoKTsKKyAg
ICAgICAgdGhpcy5jb25zdHJ1Y3RvcnNEYXRhR3JpZC5kaXNwb3NlKCk7CisgICAgICAgIHRoaXMu
ZGlmZkRhdGFHcmlkLmRpc3Bvc2UoKTsKKyAgICAgICAgdGhpcy5kb21pbmF0b3JEYXRhR3JpZC5k
aXNwb3NlKCk7CisgICAgICAgIHRoaXMucmV0YWlubWVudERhdGFHcmlkLmRpc3Bvc2UoKTsKKyAg
ICB9LAorCisgICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBb
dGhpcy52aWV3U2VsZWN0RWxlbWVudCwgdGhpcy5iYXNlU2VsZWN0RWxlbWVudCwgdGhpcy5maWx0
ZXJTZWxlY3RFbGVtZW50LCB0aGlzLmhlbHBCdXR0b24uZWxlbWVudF07CisgICAgfSwKKworICAg
IGdldCBwcm9maWxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXRQcm9m
aWxlKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQsIHRoaXMuX3By
b2ZpbGVVaWQpOworICAgIH0sCisKKyAgICBnZXQgcHJvZmlsZVdyYXBwZXIoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMucHJvZmlsZS5wcm94eTsKKyAgICB9LAorCisgICAgZ2V0IGJhc2VQ
cm9maWxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXRQcm9maWxlKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQsIHRoaXMuX2Jhc2VQcm9m
aWxlVWlkKTsKKyAgICB9LAorCisgICAgZ2V0IGJhc2VQcm9maWxlV3JhcHBlcigpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5iYXNlUHJvZmlsZS5wcm94eTsKKyAgICB9LAorCisgICAgd2Fz
U2hvd246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5wcm9maWxlV3JhcHBl
ci5sb2FkZWQpCisgICAgICAgICAgICB0aGlzLl9sb2FkUHJvZmlsZSh0aGlzLl9wcm9maWxlVWlk
LCBwcm9maWxlQ2FsbGJhY2sxLmJpbmQodGhpcykpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBwcm9maWxlQ2FsbGJhY2sxLmNhbGwodGhpcyk7CisKKyAgICAgICAgZnVuY3Rpb24gcHJvZmls
ZUNhbGxiYWNrMSgpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmJhc2VQcm9maWxlICYmICF0aGlz
LmJhc2VQcm9maWxlV3JhcHBlci5sb2FkZWQpCisgICAgICAgICAgICAgICAgdGhpcy5fbG9hZFBy
b2ZpbGUodGhpcy5fYmFzZVByb2ZpbGVVaWQsIHByb2ZpbGVDYWxsYmFjazIuYmluZCh0aGlzKSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcHJvZmlsZUNhbGxiYWNrMi5jYWxs
KHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcHJvZmlsZUNhbGxiYWNrMigp
IHsKKyAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXcuc2hvdyh0aGlzLnZpZXdzQ29udGFpbmVy
KTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICB3aWxsSGlkZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gLTE7CisgICAgICAgIHRo
aXMuX3BvcG92ZXJIZWxwZXIuaGlkZVBvcG92ZXIoKTsKKyAgICAgICAgaWYgKHRoaXMuaGVscFBv
cG92ZXIgJiYgdGhpcy5oZWxwUG9wb3Zlci52aXNpYmxlKQorICAgICAgICAgICAgdGhpcy5oZWxw
UG9wb3Zlci5oaWRlKCk7CisgICAgfSwKKworICAgIG9uUmVzaXplOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5yZXRhaW5tZW50Vmlldy5lbGVtZW50LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgdGhpcy5fdXBkYXRlUmV0YWlubWVudFZpZXdIZWlnaHQoaGVpZ2h0
KTsKKyAgICB9LAorCisgICAgc2VhcmNoQ2FuY2VsZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLl9zZWFyY2hSZXN1bHRzKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICB2YXIgbm9kZSA9IHRoaXMuX3NlYXJjaFJlc3VsdHNbaV0ubm9kZTsKKyAgICAgICAgICAgICAg
ICBkZWxldGUgbm9kZS5fc2VhcmNoTWF0Y2hlZDsKKyAgICAgICAgICAgICAgICBub2RlLnJlZnJl
c2goKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGRlbGV0ZSB0aGlzLl9z
ZWFyY2hGaW5pc2hlZENhbGxiYWNrOworICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0
SW5kZXggPSAtMTsKKyAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IFtdOworICAgIH0sCisK
KyAgICBwZXJmb3JtU2VhcmNoOiBmdW5jdGlvbihxdWVyeSwgZmluaXNoZWRDYWxsYmFjaykKKyAg
ICB7CisgICAgICAgIC8vIENhbGwgc2VhcmNoQ2FuY2VsZWQgc2luY2UgaXQgd2lsbCByZXNldCBl
dmVyeXRoaW5nIHdlIG5lZWQgYmVmb3JlIGRvaW5nIGEgbmV3IHNlYXJjaC4KKyAgICAgICAgdGhp
cy5zZWFyY2hDYW5jZWxlZCgpOworCisgICAgICAgIHF1ZXJ5ID0gcXVlcnkudHJpbSgpOworCisg
ICAgICAgIGlmICghcXVlcnkubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBp
ZiAodGhpcy5jdXJyZW50VmlldyAhPT0gdGhpcy5jb25zdHJ1Y3RvcnNWaWV3ICYmIHRoaXMuY3Vy
cmVudFZpZXcgIT09IHRoaXMuZGlmZlZpZXcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjayA9IGZpbmlzaGVkQ2FsbGJhY2s7CisKKyAg
ICAgICAgZnVuY3Rpb24gbWF0Y2hlc0J5TmFtZShncmlkTm9kZSkgeworICAgICAgICAgICAgcmV0
dXJuICgibmFtZSIgaW4gZ3JpZE5vZGUpICYmIGdyaWROb2RlLm5hbWUuaGFzU3Vic3RyaW5nKHF1
ZXJ5LCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG1hdGNoZXNCeUlkKGdy
aWROb2RlKSB7CisgICAgICAgICAgICByZXR1cm4gKCJzbmFwc2hvdE5vZGVJZCIgaW4gZ3JpZE5v
ZGUpICYmIGdyaWROb2RlLnNuYXBzaG90Tm9kZUlkID09PSBxdWVyeTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZhciBtYXRjaFByZWRpY2F0ZTsKKyAgICAgICAgaWYgKHF1ZXJ5LmNoYXJBdCgwKSAh
PT0gIkAiKQorICAgICAgICAgICAgbWF0Y2hQcmVkaWNhdGUgPSBtYXRjaGVzQnlOYW1lOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHF1ZXJ5ID0gcGFyc2VJbnQocXVlcnkuc3Vic3RyaW5n
KDEpLCAxMCk7CisgICAgICAgICAgICBtYXRjaFByZWRpY2F0ZSA9IG1hdGNoZXNCeUlkOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbWF0Y2hlc1F1ZXJ5KGdyaWROb2RlKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWxldGUgZ3JpZE5vZGUuX3NlYXJjaE1hdGNoZWQ7CisgICAgICAg
ICAgICBpZiAobWF0Y2hQcmVkaWNhdGUoZ3JpZE5vZGUpKSB7CisgICAgICAgICAgICAgICAgZ3Jp
ZE5vZGUuX3NlYXJjaE1hdGNoZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGdyaWROb2RlLnJl
ZnJlc2goKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBjdXJyZW50
ID0gdGhpcy5kYXRhR3JpZC5jaGlsZHJlblswXTsKKyAgICAgICAgdmFyIGRlcHRoID0gMDsKKyAg
ICAgICAgdmFyIGluZm8gPSB7fTsKKworICAgICAgICAvLyBSZXN0cmljdCB0byB0eXBlIG5vZGVz
IGFuZCBpbnN0YW5jZXMuCisgICAgICAgIGNvbnN0IG1heERlcHRoID0gMTsKKworICAgICAgICB3
aGlsZSAoY3VycmVudCkgeworICAgICAgICAgICAgaWYgKG1hdGNoZXNRdWVyeShjdXJyZW50KSkK
KyAgICAgICAgICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzLnB1c2goeyBub2RlOiBjdXJyZW50
IH0pOworICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQudHJhdmVyc2VOZXh0Tm9kZShmYWxz
ZSwgbnVsbCwgKGRlcHRoID49IG1heERlcHRoKSwgaW5mbyk7CisgICAgICAgICAgICBkZXB0aCAr
PSBpbmZvLmRlcHRoQ2hhbmdlOworICAgICAgICB9CisKKyAgICAgICAgZmluaXNoZWRDYWxsYmFj
ayh0aGlzLCB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCk7CisgICAgfSwKKworICAgIGp1bXBU
b0ZpcnN0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMu
X3NlYXJjaFJlc3VsdHMgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAwOwor
ICAgICAgICB0aGlzLl9qdW1wVG9TZWFyY2hSZXN1bHQodGhpcy5fY3VycmVudFNlYXJjaFJlc3Vs
dEluZGV4KTsKKyAgICB9LAorCisgICAganVtcFRvTGFzdFNlYXJjaFJlc3VsdDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9zZWFyY2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFy
Y2hSZXN1bHRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fY3Vy
cmVudFNlYXJjaFJlc3VsdEluZGV4ID0gKHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoIC0gMSk7
CisgICAgICAgIHRoaXMuX2p1bXBUb1NlYXJjaFJlc3VsdCh0aGlzLl9jdXJyZW50U2VhcmNoUmVz
dWx0SW5kZXgpOworICAgIH0sCisKKyAgICBqdW1wVG9OZXh0U2VhcmNoUmVzdWx0OiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMgfHwgIXRoaXMuX3Nl
YXJjaFJlc3VsdHMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoKyt0
aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPj0gdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5n
dGgpCisgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAwOworICAg
ICAgICB0aGlzLl9qdW1wVG9TZWFyY2hSZXN1bHQodGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdElu
ZGV4KTsKKyAgICB9LAorCisgICAganVtcFRvUHJldmlvdXNTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fc2VhcmNoUmVzdWx0cyB8fCAhdGhpcy5fc2Vh
cmNoUmVzdWx0cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICgtLXRo
aXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA8IDApCisgICAgICAgICAgICB0aGlzLl9jdXJy
ZW50U2VhcmNoUmVzdWx0SW5kZXggPSAodGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGggLSAxKTsK
KyAgICAgICAgdGhpcy5fanVtcFRvU2VhcmNoUmVzdWx0KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1
bHRJbmRleCk7CisgICAgfSwKKworICAgIHNob3dpbmdGaXJzdFNlYXJjaFJlc3VsdDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuICh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5k
ZXggPT09IDApOworICAgIH0sCisKKyAgICBzaG93aW5nTGFzdFNlYXJjaFJlc3VsdDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuICh0aGlzLl9zZWFyY2hSZXN1bHRzICYmIHRoaXMu
X2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9PT0gKHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3Ro
IC0gMSkpOworICAgIH0sCisKKyAgICBfanVtcFRvU2VhcmNoUmVzdWx0OiBmdW5jdGlvbihpbmRl
eCkKKyAgICB7CisgICAgICAgIHZhciBzZWFyY2hSZXN1bHQgPSB0aGlzLl9zZWFyY2hSZXN1bHRz
W2luZGV4XTsKKyAgICAgICAgaWYgKCFzZWFyY2hSZXN1bHQpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgdmFyIG5vZGUgPSBzZWFyY2hSZXN1bHQubm9kZTsKKyAgICAgICAgbm9kZS5y
ZXZlYWxBbmRTZWxlY3QoKTsKKyAgICB9LAorCisgICAgcmVmcmVzaFZpc2libGVEYXRhOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmRhdGFHcmlkLmNoaWxkcmVu
WzBdOworICAgICAgICB3aGlsZSAoY2hpbGQpIHsKKyAgICAgICAgICAgIGNoaWxkLnJlZnJlc2go
KTsKKyAgICAgICAgICAgIGNoaWxkID0gY2hpbGQudHJhdmVyc2VOZXh0Tm9kZShmYWxzZSwgbnVs
bCwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX2NoYW5nZUJhc2U6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9iYXNlUHJvZmlsZVVpZCA9PT0gdGhpcy5fcHJv
ZmlsZXMoKVt0aGlzLmJhc2VTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXhdLnVpZCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9iYXNlUHJvZmlsZVVpZCA9IHRoaXMuX3By
b2ZpbGVzKClbdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4XS51aWQ7CisgICAg
ICAgIHZhciBkYXRhR3JpZCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERp
ZmZEYXRhR3JpZH0gKi8gdGhpcy5kYXRhR3JpZDsKKyAgICAgICAgZGF0YUdyaWQuX2Jhc2VQcm9m
aWxlSW5kZXhDaGFuZ2VkKHRoaXMuX2xvYWRQcm9maWxlQnlJbmRleC5iaW5kKHRoaXMpLCB0aGlz
LmJhc2VTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXgpOworCisgICAgICAgIGlmICghdGhpcy5j
dXJyZW50UXVlcnkgfHwgIXRoaXMuX3NlYXJjaEZpbmlzaGVkQ2FsbGJhY2sgfHwgIXRoaXMuX3Nl
YXJjaFJlc3VsdHMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gVGhlIGN1cnJl
bnQgc2VhcmNoIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCBhZ2Fpbi4gRmlyc3QgbmVnYXRlIG91dCBw
cmV2aW91cyBtYXRjaAorICAgICAgICAvLyBjb3VudCBieSBjYWxsaW5nIHRoZSBzZWFyY2ggZmlu
aXNoZWQgY2FsbGJhY2sgd2l0aCBhIG5lZ2F0aXZlIG51bWJlciBvZiBtYXRjaGVzLgorICAgICAg
ICAvLyBUaGVuIHBlcmZvcm0gdGhlIHNlYXJjaCBhZ2FpbiB3aXRoIHRoZSBzYW1lIHF1ZXJ5IGFu
ZCBjYWxsYmFjay4KKyAgICAgICAgdGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjayh0aGlzLCAt
dGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpOworICAgICAgICB0aGlzLnBlcmZvcm1TZWFyY2go
dGhpcy5jdXJyZW50UXVlcnksIHRoaXMuX3NlYXJjaEZpbmlzaGVkQ2FsbGJhY2spOworICAgIH0s
CisKKyAgICBfY2hhbmdlRmlsdGVyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgcHJv
ZmlsZUluZGV4ID0gdGhpcy5maWx0ZXJTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggLSAxOwor
ICAgICAgICB0aGlzLmRhdGFHcmlkLl9maWx0ZXJTZWxlY3RJbmRleENoYW5nZWQodGhpcy5fcHJv
ZmlsZXMoKSwgcHJvZmlsZUluZGV4KTsKKworICAgICAgICBpZiAoIXRoaXMuY3VycmVudFF1ZXJ5
IHx8ICF0aGlzLl9zZWFyY2hGaW5pc2hlZENhbGxiYWNrIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRz
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIFRoZSBjdXJyZW50IHNlYXJjaCBu
ZWVkcyB0byBiZSBwZXJmb3JtZWQgYWdhaW4uIEZpcnN0IG5lZ2F0ZSBvdXQgcHJldmlvdXMgbWF0
Y2gKKyAgICAgICAgLy8gY291bnQgYnkgY2FsbGluZyB0aGUgc2VhcmNoIGZpbmlzaGVkIGNhbGxi
YWNrIHdpdGggYSBuZWdhdGl2ZSBudW1iZXIgb2YgbWF0Y2hlcy4KKyAgICAgICAgLy8gVGhlbiBw
ZXJmb3JtIHRoZSBzZWFyY2ggYWdhaW4gd2l0aCB0aGUgc2FtZSBxdWVyeSBhbmQgY2FsbGJhY2su
CisgICAgICAgIHRoaXMuX3NlYXJjaEZpbmlzaGVkQ2FsbGJhY2sodGhpcywgLXRoaXMuX3NlYXJj
aFJlc3VsdHMubGVuZ3RoKTsKKyAgICAgICAgdGhpcy5wZXJmb3JtU2VhcmNoKHRoaXMuY3VycmVu
dFF1ZXJ5LCB0aGlzLl9zZWFyY2hGaW5pc2hlZENhbGxiYWNrKTsKKyAgICB9LAorCisgICAgX2Ny
ZWF0ZVRvb2xiYXJXaXRoQ2xhc3NOYW1lRmlsdGVyOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB2YXIgdG9vbGJhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0
b29sYmFyLmFkZFN0eWxlQ2xhc3MoImNsYXNzLXZpZXctdG9vbGJhciIpOworICAgICAgICB2YXIg
Y2xhc3NOYW1lRmlsdGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAg
ICAgY2xhc3NOYW1lRmlsdGVyLmFkZFN0eWxlQ2xhc3MoImNsYXNzLW5hbWUtZmlsdGVyIik7Cisg
ICAgICAgIGNsYXNzTmFtZUZpbHRlci5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDbGFzcyBmaWx0ZXIiKSk7CisgICAgICAgIGNsYXNzTmFtZUZpbHRl
ci5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX2NoYW5nZU5hbWVGaWx0ZXIuYmluZCh0
aGlzLCBjbGFzc05hbWVGaWx0ZXIpLCBmYWxzZSk7CisgICAgICAgIHRvb2xiYXIuYXBwZW5kQ2hp
bGQoY2xhc3NOYW1lRmlsdGVyKTsKKyAgICAgICAgcmV0dXJuIHRvb2xiYXI7CisgICAgfSwKKwor
ICAgIF9jaGFuZ2VOYW1lRmlsdGVyOiBmdW5jdGlvbihjbGFzc05hbWVJbnB1dEVsZW1lbnQpCisg
ICAgeworICAgICAgICB2YXIgZmlsdGVyID0gY2xhc3NOYW1lSW5wdXRFbGVtZW50LnZhbHVlLnRv
TG93ZXJDYXNlKCk7CisgICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZGF0YUdyaWQuY2hpbGRy
ZW47CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsg
KytpKSB7CisgICAgICAgICAgICB2YXIgbm9kZSA9IGNoaWxkcmVuW2ldOworICAgICAgICAgICAg
aWYgKG5vZGUuZGVwdGggPT09IDApCisgICAgICAgICAgICAgICAgbm9kZS5yZXZlYWxlZCA9IG5v
ZGUuX25hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlcikgIT09IC0xOworICAgICAgICB9
CisgICAgICAgIHRoaXMuZGF0YUdyaWQudXBkYXRlVmlzaWJsZU5vZGVzKCk7CisgICAgfSwKKwor
ICAgIF9wcm9maWxlczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5wYW5lbHMucHJvZmlsZXMuZ2V0UHJvZmlsZXMoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFByb2ZpbGVUeXBlLlR5cGVJZCk7CisgICAgfSwKKworICAgIF9sb2FkUHJvZmlsZTogZnVuY3Rp
b24ocHJvZmlsZVVpZCwgY2FsbGJhY2spCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLnByb2ZpbGVzLmxvYWRIZWFwU25hcHNob3QocHJvZmlsZVVpZCwgY2FsbGJhY2spOworICAg
IH0sCisKKyAgICBfbG9hZFByb2ZpbGVCeUluZGV4OiBmdW5jdGlvbihwcm9maWxlSW5kZXgsIGNh
bGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIHByb2ZpbGVVaWQgPSB0aGlzLl9wcm9maWxlcygp
W3Byb2ZpbGVJbmRleF0udWlkOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVz
LmxvYWRIZWFwU25hcHNob3QocHJvZmlsZVVpZCwgY2FsbGJhY2spOworICAgIH0sCisKKyAgICBp
c0RldGFpbGVkU25hcHNob3Q6IGZ1bmN0aW9uKHNuYXBzaG90KQorICAgIHsKKyAgICAgICAgdmFy
IHMgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdChzbmFwc2hvdCk7CisgICAgICAgIGZv
ciAodmFyIGl0ZXIgPSBzLnJvb3ROb2RlLmVkZ2VzOyBpdGVyLmhhc05leHQoKTsgaXRlci5uZXh0
KCkpCisgICAgICAgICAgICBpZiAoaXRlci5lZGdlLm5vZGUubmFtZSA9PT0gIihHQyByb290cyki
KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfSwKKworICAgIHByb2Nlc3NMb2FkZWRTbmFwc2hvdDogZnVuY3Rpb24ocHJvZmlsZSwgc25h
cHNob3QpCisgICAgeworICAgICAgICBwcm9maWxlLm5vZGVzID0gc25hcHNob3Qubm9kZXM7Cisg
ICAgICAgIHByb2ZpbGUuc3RyaW5ncyA9IHNuYXBzaG90LnN0cmluZ3M7CisgICAgICAgIHZhciBz
ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QocHJvZmlsZSk7CisgICAgICAgIHByb2Zp
bGUuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyhzLnRvdGFs
U2l6ZSk7CisgICAgfSwKKworICAgIF9zZWxlY3Rpb25DaGFuZ2VkOiBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIHZhciBzZWxlY3RlZE5vZGUgPSBldmVudC50YXJnZXQuc2VsZWN0ZWRO
b2RlOworICAgICAgICB0aGlzLl9zZXRSZXRhaW5tZW50RGF0YUdyaWRTb3VyY2Uoc2VsZWN0ZWRO
b2RlKTsKKyAgICAgICAgdGhpcy5faW5zcGVjdGVkT2JqZWN0Q2hhbmdlZChldmVudCk7CisgICAg
fSwKKworICAgIF9pbnNwZWN0ZWRPYmplY3RDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIHZhciBzZWxlY3RlZE5vZGUgPSBldmVudC50YXJnZXQuc2VsZWN0ZWROb2RlOwor
ICAgICAgICBpZiAoc2VsZWN0ZWROb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdEdlbmVyaWNPYmplY3ROb2RlKQorICAgICAgICAgICAgQ29uc29sZUFnZW50LmFkZEluc3Bl
Y3RlZEhlYXBPYmplY3Qoc2VsZWN0ZWROb2RlLnNuYXBzaG90Tm9kZUlkKTsKKyAgICB9LAorCisg
ICAgX3NldFJldGFpbm1lbnREYXRhR3JpZFNvdXJjZTogZnVuY3Rpb24obm9kZUl0ZW0pCisgICAg
eworICAgICAgICBpZiAobm9kZUl0ZW0gJiYgbm9kZUl0ZW0uc25hcHNob3ROb2RlSW5kZXgpCisg
ICAgICAgICAgICB0aGlzLnJldGFpbm1lbnREYXRhR3JpZC5zZXREYXRhU291cmNlKHRoaXMsIG5v
ZGVJdGVtLmlzRGVsZXRlZE5vZGUgPyBub2RlSXRlbS5kYXRhR3JpZC5iYXNlU25hcHNob3QgOiBu
b2RlSXRlbS5kYXRhR3JpZC5zbmFwc2hvdCwgbm9kZUl0ZW0uc25hcHNob3ROb2RlSW5kZXgpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLnJldGFpbm1lbnREYXRhR3JpZC5yZXNldCgp
OworICAgIH0sCisKKyAgICBfbW91c2VEb3duSW5Db250ZW50c0dyaWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LmRldGFpbCA8IDIpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdmFyIGNlbGwgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2Vs
ZldpdGhOb2RlTmFtZSgidGQiKTsKKyAgICAgICAgaWYgKCFjZWxsIHx8ICghY2VsbC5oYXNTdHls
ZUNsYXNzKCJjb3VudC1jb2x1bW4iKSAmJiAhY2VsbC5oYXNTdHlsZUNsYXNzKCJzaGFsbG93U2l6
ZS1jb2x1bW4iKSAmJiAhY2VsbC5oYXNTdHlsZUNsYXNzKCJyZXRhaW5lZFNpemUtY29sdW1uIikp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGV2ZW50LmNvbnN1bWUodHJ1ZSk7Cisg
ICAgfSwKKworICAgIGNoYW5nZVZpZXc6IGZ1bmN0aW9uKHZpZXdUaXRsZSwgY2FsbGJhY2spCisg
ICAgeworICAgICAgICB2YXIgdmlld0luZGV4ID0gbnVsbDsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0aGlzLnZpZXdzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgaWYgKHRoaXMudmll
d3NbaV0udGl0bGUgPT09IHZpZXdUaXRsZSkgeworICAgICAgICAgICAgICAgIHZpZXdJbmRleCA9
IGk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIGlmICh0
aGlzLnZpZXdzLmN1cnJlbnQgPT09IHZpZXdJbmRleCkgeworICAgICAgICAgICAgc2V0VGltZW91
dChjYWxsYmFjaywgMCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
dmFyIGdyaWQgPSB0aGlzLnZpZXdzW3ZpZXdJbmRleF0uZ3JpZDsKKyAgICAgICAgZnVuY3Rpb24g
c29ydGluZ0NvbXBsZXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ3JpZC5yZW1vdmVFdmVu
dExpc3RlbmVyKCJzb3J0aW5nIGNvbXBsZXRlIiwgc29ydGluZ0NvbXBsZXRlLCB0aGlzKTsKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoY2FsbGJhY2ssIDApOworICAgICAgICB9CisgICAgICAgIHRo
aXMudmlld3Nbdmlld0luZGV4XS5ncmlkLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY29tcGxl
dGUiLCBzb3J0aW5nQ29tcGxldGUsIHRoaXMpOworICAgICAgICB0aGlzLnZpZXdTZWxlY3RFbGVt
ZW50LnNlbGVjdGVkSW5kZXggPSB2aWV3SW5kZXg7CisgICAgICAgIHRoaXMuX2NoYW5nZVZpZXco
e3RhcmdldDoge3NlbGVjdGVkSW5kZXg6IHZpZXdJbmRleH19KTsKKyAgICB9LAorCisgICAgX2No
YW5nZVZpZXc6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCFldmVudCB8fCAh
dGhpcy5fcHJvZmlsZVVpZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGV2ZW50
LnRhcmdldC5zZWxlY3RlZEluZGV4ID09PSB0aGlzLnZpZXdzLmN1cnJlbnQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdGhpcy52aWV3cy5jdXJyZW50ID0gZXZlbnQudGFyZ2V0LnNl
bGVjdGVkSW5kZXg7CisgICAgICAgIHRoaXMuY3VycmVudFZpZXcuZGV0YWNoKCk7CisgICAgICAg
IHZhciB2aWV3ID0gdGhpcy52aWV3c1t0aGlzLnZpZXdzLmN1cnJlbnRdOworICAgICAgICB0aGlz
LmN1cnJlbnRWaWV3ID0gdmlldy52aWV3OworICAgICAgICB0aGlzLmRhdGFHcmlkID0gdmlldy5n
cmlkOworICAgICAgICB0aGlzLmN1cnJlbnRWaWV3LnNob3codGhpcy52aWV3c0NvbnRhaW5lcik7
CisgICAgICAgIHRoaXMucmVmcmVzaFZpc2libGVEYXRhKCk7CisgICAgICAgIHRoaXMuZGF0YUdy
aWQudXBkYXRlV2lkdGhzKCk7CisKKyAgICAgICAgaWYgKHRoaXMuY3VycmVudFZpZXcgPT09IHRo
aXMuZGlmZlZpZXcpIHsKKyAgICAgICAgICAgIHRoaXMuYmFzZVNlbGVjdEVsZW1lbnQucmVtb3Zl
U3R5bGVDbGFzcygiaGlkZGVuIik7CisgICAgICAgICAgICBpZiAoIXRoaXMuZGF0YUdyaWQuc25h
cHNob3RWaWV3KSB7CisgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlQmFzZSgpOworICAgICAg
ICAgICAgICAgIHRoaXMuZGF0YUdyaWQuc2V0RGF0YVNvdXJjZSh0aGlzLCB0aGlzLnByb2ZpbGVX
cmFwcGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRo
aXMuYmFzZVNlbGVjdEVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CisgICAgICAgICAg
ICBpZiAoIXRoaXMuZGF0YUdyaWQuc25hcHNob3RWaWV3KQorICAgICAgICAgICAgICAgIHRoaXMu
ZGF0YUdyaWQuc2V0RGF0YVNvdXJjZSh0aGlzLCB0aGlzLnByb2ZpbGVXcmFwcGVyKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICh0aGlzLmN1cnJlbnRWaWV3ID09PSB0aGlzLmNvbnN0cnVjdG9y
c1ZpZXcpCisgICAgICAgICAgICB0aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQucmVtb3ZlU3R5bGVD
bGFzcygiaGlkZGVuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuZmlsdGVyU2Vs
ZWN0RWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKworICAgICAgICBpZiAoIXRoaXMu
Y3VycmVudFF1ZXJ5IHx8ICF0aGlzLl9zZWFyY2hGaW5pc2hlZENhbGxiYWNrIHx8ICF0aGlzLl9z
ZWFyY2hSZXN1bHRzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIFRoZSBjdXJy
ZW50IHNlYXJjaCBuZWVkcyB0byBiZSBwZXJmb3JtZWQgYWdhaW4uIEZpcnN0IG5lZ2F0ZSBvdXQg
cHJldmlvdXMgbWF0Y2gKKyAgICAgICAgLy8gY291bnQgYnkgY2FsbGluZyB0aGUgc2VhcmNoIGZp
bmlzaGVkIGNhbGxiYWNrIHdpdGggYSBuZWdhdGl2ZSBudW1iZXIgb2YgbWF0Y2hlcy4KKyAgICAg
ICAgLy8gVGhlbiBwZXJmb3JtIHRoZSBzZWFyY2ggYWdhaW4gdGhlIHdpdGggc2FtZSBxdWVyeSBh
bmQgY2FsbGJhY2suCisgICAgICAgIHRoaXMuX3NlYXJjaEZpbmlzaGVkQ2FsbGJhY2sodGhpcywg
LXRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKTsKKyAgICAgICAgdGhpcy5wZXJmb3JtU2VhcmNo
KHRoaXMuY3VycmVudFF1ZXJ5LCB0aGlzLl9zZWFyY2hGaW5pc2hlZENhbGxiYWNrKTsKKyAgICB9
LAorCisgICAgX2dldEhvdmVyQW5jaG9yOiBmdW5jdGlvbih0YXJnZXQpCisgICAgeworICAgICAg
ICB2YXIgc3BhbiA9IHRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJzcGFu
Iik7CisgICAgICAgIGlmICghc3BhbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFy
IHJvdyA9IHRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJ0ciIpOworICAg
ICAgICBpZiAoIXJvdykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIGdyaWROb2Rl
ID0gcm93Ll9kYXRhR3JpZE5vZGU7CisgICAgICAgIGlmICghZ3JpZE5vZGUuaGFzSG92ZXJNZXNz
YWdlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzcGFuLm5vZGUgPSBncmlkTm9kZTsK
KyAgICAgICAgcmV0dXJuIHNwYW47CisgICAgfSwKKworICAgIF9yZXNvbHZlT2JqZWN0Rm9yUG9w
b3ZlcjogZnVuY3Rpb24oZWxlbWVudCwgc2hvd0NhbGxiYWNrLCBvYmplY3RHcm91cE5hbWUpCisg
ICAgeworICAgICAgICBlbGVtZW50Lm5vZGUucXVlcnlPYmplY3RDb250ZW50KHNob3dDYWxsYmFj
aywgb2JqZWN0R3JvdXBOYW1lKTsKKyAgICB9LAorCisgICAgX2hlbHBDbGlja2VkOiBmdW5jdGlv
bihldmVudCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5faGVscFBvcG92ZXJDb250ZW50RWxl
bWVudCkgeworICAgICAgICAgICAgdmFyIHJlZlR5cGVzID0gWyJhOiIsICJjb25zb2xlLWZvcm1h
dHRlZC1uYW1lIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJwcm9wZXJ0eSIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIwOiIsICJjb25zb2xlLWZvcm1hdHRlZC1uYW1lIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJlbGVtZW50IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImE6IiwgImNvbnNvbGUtZm9ybWF0dGVkLW51bWJlciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Y29udGV4dCB2YXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYToiLCAiY29uc29s
ZS1mb3JtYXR0ZWQtbnVsbCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygic3lzdGVtIHByb3AiKV07
CisgICAgICAgICAgICB2YXIgb2JqVHlwZXMgPSBbIiBhICIsICJjb25zb2xlLWZvcm1hdHRlZC1v
YmplY3QiLCAiT2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXCJhXCIiLCAi
Y29uc29sZS1mb3JtYXR0ZWQtc3RyaW5nIiwgIlN0cmluZyIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIi9hLyIsICJjb25zb2xlLWZvcm1hdHRlZC1zdHJpbmciLCAiUmVnRXhwIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiYSgpIiwgImNvbnNvbGUtZm9ybWF0dGVkLWZ1bmN0
aW9uIiwgIkZ1bmN0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYVtdIiwgImNv
bnNvbGUtZm9ybWF0dGVkLW9iamVjdCIsICJBcnJheSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIm51bSIsICJjb25zb2xlLWZvcm1hdHRlZC1udW1iZXIiLCAiTnVtYmVyIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiIGEgIiwgImNvbnNvbGUtZm9ybWF0dGVkLW51bGwiLCAi
U3lzdGVtIl07CisKKyAgICAgICAgICAgIHZhciBjb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInRhYmxlIik7CisgICAgICAgICAgICBjb250ZW50RWxlbWVudC5jbGFzc05h
bWUgPSAiaGVhcC1zbmFwc2hvdC1oZWxwIjsKKyAgICAgICAgICAgIHZhciBoZWFkZXJSb3cgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworICAgICAgICAgICAgdmFyIHByb3BzSGVhZGVy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKTsKKyAgICAgICAgICAgIHByb3BzSGVhZGVy
LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9wZXJ0eSB0eXBlczoiKTsK
KyAgICAgICAgICAgIGhlYWRlclJvdy5hcHBlbmRDaGlsZChwcm9wc0hlYWRlcik7CisgICAgICAg
ICAgICB2YXIgb2Jqc0hlYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIik7CisgICAg
ICAgICAgICBvYmpzSGVhZGVyLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJP
YmplY3QgdHlwZXM6Iik7CisgICAgICAgICAgICBoZWFkZXJSb3cuYXBwZW5kQ2hpbGQob2Jqc0hl
YWRlcik7CisgICAgICAgICAgICBjb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJSb3cp
OworCisgICAgICAgICAgICBmdW5jdGlvbiBhcHBlbmRIZWxwKGhlbHAsIGluZGV4LCBjZWxsKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgICAgICBkaXYuY2xhc3NOYW1lID0gInNvdXJjZS1j
b2RlIGV2ZW50LXByb3BlcnRpZXMiOworICAgICAgICAgICAgICAgIHZhciBuYW1lID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgICAgIG5hbWUudGV4dENvbnRl
bnQgPSBoZWxwW2luZGV4XTsKKyAgICAgICAgICAgICAgICBuYW1lLmNsYXNzTmFtZSA9IGhlbHBb
aW5kZXggKyAxXTsKKyAgICAgICAgICAgICAgICBkaXYuYXBwZW5kQ2hpbGQobmFtZSk7CisgICAg
ICAgICAgICAgICAgdmFyIGRlc2MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Cisg
ICAgICAgICAgICAgICAgZGVzYy50ZXh0Q29udGVudCA9ICIgIiArIGhlbHBbaW5kZXggKyAyXTsK
KyAgICAgICAgICAgICAgICBkaXYuYXBwZW5kQ2hpbGQoZGVzYyk7CisgICAgICAgICAgICAgICAg
Y2VsbC5hcHBlbmRDaGlsZChkaXYpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
bGVuID0gTWF0aC5tYXgocmVmVHlwZXMubGVuZ3RoLCBvYmpUeXBlcy5sZW5ndGgpOworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgeworICAgICAgICAgICAgICAg
IHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworICAgICAgICAgICAgICAg
IHZhciByZWZDZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgICAg
ICAgICBpZiAocmVmVHlwZXNbaV0pCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEhlbHAocmVm
VHlwZXMsIGksIHJlZkNlbGwpOworICAgICAgICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChyZWZD
ZWxsKTsKKyAgICAgICAgICAgICAgICB2YXIgb2JqQ2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInRkIik7CisgICAgICAgICAgICAgICAgaWYgKG9ialR5cGVzW2ldKQorICAgICAgICAgICAg
ICAgICAgICBhcHBlbmRIZWxwKG9ialR5cGVzLCBpLCBvYmpDZWxsKTsKKyAgICAgICAgICAgICAg
ICByb3cuYXBwZW5kQ2hpbGQob2JqQ2VsbCk7CisgICAgICAgICAgICAgICAgY29udGVudEVsZW1l
bnQuYXBwZW5kQ2hpbGQocm93KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX2hl
bHBQb3BvdmVyQ29udGVudEVsZW1lbnQgPSBjb250ZW50RWxlbWVudDsKKyAgICAgICAgICAgIHRo
aXMuaGVscFBvcG92ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXIoKTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAodGhpcy5oZWxwUG9wb3Zlci52aXNpYmxlKQorICAgICAgICAgICAgdGhpcy5o
ZWxwUG9wb3Zlci5oaWRlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuaGVscFBv
cG92ZXIuc2hvdyh0aGlzLl9oZWxwUG9wb3ZlckNvbnRlbnRFbGVtZW50LCB0aGlzLmhlbHBCdXR0
b24uZWxlbWVudCk7CisgICAgfSwKKworICAgIF9zdGFydFJldGFpbmVyc0hlYWRlckRyYWdnaW5n
OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5pc1Nob3dpbmcoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBXZWJJbnNwZWN0b3IuZWxlbWVudERyYWdT
dGFydCh0aGlzLnJldGFpbm1lbnRWaWV3SGVhZGVyLCB0aGlzLl9yZXRhaW5lcnNIZWFkZXJEcmFn
Z2luZy5iaW5kKHRoaXMpLCB0aGlzLl9lbmRSZXRhaW5lcnNIZWFkZXJEcmFnZ2luZy5iaW5kKHRo
aXMpLCBldmVudCwgInJvdy1yZXNpemUiKTsKKyAgICAgICAgdGhpcy5fcHJldmlvdXNEcmFnUG9z
aXRpb24gPSBldmVudC5wYWdlWTsKKyAgICAgICAgZXZlbnQuY29uc3VtZSgpOworICAgIH0sCisK
KyAgICBfcmV0YWluZXJzSGVhZGVyRHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgdmFyIGhlaWdodCA9IHRoaXMucmV0YWlubWVudFZpZXcuZWxlbWVudC5jbGllbnRIZWln
aHQ7CisgICAgICAgIGhlaWdodCArPSB0aGlzLl9wcmV2aW91c0RyYWdQb3NpdGlvbiAtIGV2ZW50
LnBhZ2VZOworICAgICAgICB0aGlzLl9wcmV2aW91c0RyYWdQb3NpdGlvbiA9IGV2ZW50LnBhZ2VZ
OworICAgICAgICB0aGlzLl91cGRhdGVSZXRhaW5tZW50Vmlld0hlaWdodChoZWlnaHQpOworICAg
ICAgICBldmVudC5jb25zdW1lKHRydWUpOworICAgIH0sCisKKyAgICBfZW5kUmV0YWluZXJzSGVh
ZGVyRHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LmVsZW1lbnREcmFnRW5kKGV2ZW50KTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3ByZXZpb3VzRHJh
Z1Bvc2l0aW9uOworICAgICAgICBldmVudC5jb25zdW1lKCk7CisgICAgfSwKKworICAgIF91cGRh
dGVSZXRhaW5tZW50Vmlld0hlaWdodDogZnVuY3Rpb24oaGVpZ2h0KQorICAgIHsKKyAgICAgICAg
aGVpZ2h0ID0gTnVtYmVyLmNvbnN0cmFpbihoZWlnaHQsIFByZWZlcmVuY2VzLm1pbkNvbnNvbGVI
ZWlnaHQsIHRoaXMuZWxlbWVudC5jbGllbnRIZWlnaHQgLSBQcmVmZXJlbmNlcy5taW5Db25zb2xl
SGVpZ2h0KTsKKyAgICAgICAgdGhpcy52aWV3c0NvbnRhaW5lci5zdHlsZS5ib3R0b20gPSAoaGVp
Z2h0ICsgdGhpcy5yZXRhaW5tZW50Vmlld0hlYWRlci5jbGllbnRIZWlnaHQpICsgInB4IjsKKyAg
ICAgICAgdGhpcy5yZXRhaW5tZW50Vmlldy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IGhlaWdodCAr
ICJweCI7CisgICAgICAgIHRoaXMucmV0YWlubWVudFZpZXdIZWFkZXIuc3R5bGUuYm90dG9tID0g
aGVpZ2h0ICsgInB4IjsKKyAgICB9LAorCisgICAgX3VwZGF0ZUJhc2VPcHRpb25zOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICB2YXIgbGlzdCA9IHRoaXMuX3Byb2ZpbGVzKCk7CisgICAgICAg
IC8vIFdlJ3JlIGFzc3VtaW5nIHRoYXQgc25hcHNob3RzIGNhbiBvbmx5IGJlIGFkZGVkLgorICAg
ICAgICBpZiAodGhpcy5iYXNlU2VsZWN0RWxlbWVudC5sZW5ndGggPT09IGxpc3QubGVuZ3RoKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLmJhc2VTZWxl
Y3RFbGVtZW50Lmxlbmd0aCwgbiA9IGxpc3QubGVuZ3RoOyBpIDwgbjsgKytpKSB7CisgICAgICAg
ICAgICB2YXIgYmFzZU9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOwor
ICAgICAgICAgICAgdmFyIHRpdGxlID0gbGlzdFtpXS50aXRsZTsKKyAgICAgICAgICAgIGlmICgh
dGl0bGUuaW5kZXhPZihVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUpKQorICAgICAgICAgICAgICAg
IHRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTbmFwc2hvdCAlZCIsIHRpdGxlLnN1YnN0
cmluZyhVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUubGVuZ3RoICsgMSkpOworICAgICAgICAgICAg
YmFzZU9wdGlvbi5sYWJlbCA9IHRpdGxlOworICAgICAgICAgICAgdGhpcy5iYXNlU2VsZWN0RWxl
bWVudC5hcHBlbmRDaGlsZChiYXNlT3B0aW9uKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBf
dXBkYXRlRmlsdGVyT3B0aW9uczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGxpc3Qg
PSB0aGlzLl9wcm9maWxlcygpOworICAgICAgICAvLyBXZSdyZSBhc3N1bWluZyB0aGF0IHNuYXBz
aG90cyBjYW4gb25seSBiZSBhZGRlZC4KKyAgICAgICAgaWYgKHRoaXMuZmlsdGVyU2VsZWN0RWxl
bWVudC5sZW5ndGggLSAxID09PSBsaXN0Lmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpZiAoIXRoaXMuZmlsdGVyU2VsZWN0RWxlbWVudC5sZW5ndGgpIHsKKyAgICAgICAg
ICAgIHZhciBmaWx0ZXJPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsK
KyAgICAgICAgICAgIGZpbHRlck9wdGlvbi5sYWJlbCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
QWxsIG9iamVjdHMiKTsKKyAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VsZWN0RWxlbWVudC5hcHBl
bmRDaGlsZChmaWx0ZXJPcHRpb24pOworICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIgaSA9
IHRoaXMuZmlsdGVyU2VsZWN0RWxlbWVudC5sZW5ndGggLSAxLCBuID0gbGlzdC5sZW5ndGg7IGkg
PCBuOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBmaWx0ZXJPcHRpb24gPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgICAgIHZhciB0aXRsZSA9IGxpc3RbaV0udGl0
bGU7CisgICAgICAgICAgICBpZiAoIXRpdGxlLmluZGV4T2YoVXNlckluaXRpYXRlZFByb2ZpbGVO
YW1lKSkgeworICAgICAgICAgICAgICAgIGlmICghaSkKKyAgICAgICAgICAgICAgICAgICAgdGl0
bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9iamVjdHMgYWxsb2NhdGVkIGJlZm9yZSBTbmFw
c2hvdCAlZCIsIHRpdGxlLnN1YnN0cmluZyhVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUubGVuZ3Ro
ICsgMSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGl0bGUg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9iamVjdHMgYWxsb2NhdGVkIGJldHdlZW4gU25hcHNo
b3RzICVkIGFuZCAlZCIsIHRpdGxlLnN1YnN0cmluZyhVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUu
bGVuZ3RoICsgMSkgLSAxLCB0aXRsZS5zdWJzdHJpbmcoVXNlckluaXRpYXRlZFByb2ZpbGVOYW1l
Lmxlbmd0aCArIDEpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbHRlck9wdGlvbi5s
YWJlbCA9IHRpdGxlOworICAgICAgICAgICAgdGhpcy5maWx0ZXJTZWxlY3RFbGVtZW50LmFwcGVu
ZENoaWxkKGZpbHRlck9wdGlvbik7CisgICAgICAgIH0KKyAgICB9Cit9OworCitXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZp
ZXcucHJvdG90eXBlOworCitXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0hlYXBTbmFwc2hvdE9i
amVjdHNIaWRkZW5Qcm9wZXJ0aWVzID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNldHRp
bmcoInNob3dIZWFTbmFwc2hvdE9iamVjdHNIaWRkZW5Qcm9wZXJ0aWVzIiwgZmFsc2UpOworCisv
KioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Qcm9maWxlVHlw
ZX0KKyAqLworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlID0gZnVuY3Rpb24o
KQoreworICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
VGFrZSBIZWFwIFNuYXBzaG90IikpOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJv
ZmlsZVR5cGUuVHlwZUlkID0gIkhFQVAiOworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJv
ZmlsZVR5cGUucHJvdG90eXBlID0geworICAgIGdldCBidXR0b25Ub29sdGlwKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRha2UgaGVhcCBzbmFwc2hvdC4i
KTsKKyAgICB9LAorCisgICAgYnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy50YWtlSGVhcFNuYXBzaG90KCk7CisgICAg
fSwKKworICAgIGdldCB0cmVlSXRlbVRpdGxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkhFQVAgU05BUFNIT1RTIik7CisgICAgfSwKKworICAgIGdldCBk
ZXNjcmlwdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJIZWFwIHNuYXBzaG90IHByb2ZpbGVzIHNob3cgbWVtb3J5IGRpc3RyaWJ1dGlvbiBhbW9uZyB5
b3VyIHBhZ2UncyBKYXZhU2NyaXB0IG9iamVjdHMgYW5kIHJlbGF0ZWQgRE9NIG5vZGVzLiIpOwor
ICAgIH0sCisKKyAgICBjcmVhdGVTaWRlYmFyVHJlZUVsZW1lbnRGb3JQcm9maWxlOiBmdW5jdGlv
bihwcm9maWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJvZmls
ZVNpZGViYXJUcmVlRWxlbWVudChwcm9maWxlLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNuYXBz
aG90ICVkIiksICJoZWFwLXNuYXBzaG90LXNpZGViYXItdHJlZS1pdGVtIik7CisgICAgfSwKKwor
ICAgIGNyZWF0ZVZpZXc6IGZ1bmN0aW9uKHByb2ZpbGUpCisgICAgeworICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3KFdlYkluc3BlY3Rvci5wYW5lbHMucHJv
ZmlsZXMsIHByb2ZpbGUpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBy
b2ZpbGVUeXBlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUu
cHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Qcm9maWxlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Q
cm9maWxlc1BhbmVsLmpzCmluZGV4IDM1YTJkNjI3OGNmOTExZTE2M2M3Y2IwMDg5MzBkYzEyOTQx
NGIxOTcuLmQ4NDRiNDQ0Zjk1NWQ4MWRkZDM0ZGNiY2NhZDM1ZDE3YjBjMmQxNjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMK
QEAgLTE2OSw3ICsxNjksNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbCA9IGZ1bmN0aW9u
KCkKICAgICBpZiAoIVdlYkluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLmlzV29ya2VyRnJvbnRlbmQo
KSkKICAgICAgICAgdGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkNT
U1NlbGVjdG9yUHJvZmlsZVR5cGUoKSk7CiAgICAgaWYgKENhcGFiaWxpdGllcy5oZWFwUHJvZmls
ZXJQcmVzZW50KQotICAgICAgICB0aGlzLl9yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVUeXBlKCkpOworICAgICAgICB0aGlzLl9yZWdp
c3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUo
KSk7CiAKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyUHJvZmlsZXJEaXNwYXRjaGVyKG5l
dyBXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyKHRoaXMpKTsKIApAQCAtNDc3LDcgKzQ3
Nyw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIGxv
YWRIZWFwU25hcHNob3Q6IGZ1bmN0aW9uKHVpZCwgY2FsbGJhY2spCiAgICAgewotICAgICAgICB2
YXIgcHJvZmlsZSA9IHRoaXMuX3Byb2ZpbGVzSWRNYXBbdGhpcy5fbWFrZUtleSh1aWQsIFdlYklu
c3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkKV07CisgICAgICAgIHZh
ciBwcm9maWxlID0gdGhpcy5fcHJvZmlsZXNJZE1hcFt0aGlzLl9tYWtlS2V5KHVpZCwgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCldOwogICAgICAgICBpZiAoIXBy
b2ZpbGUpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTQ5OSw3ICs0OTksNyBAQCBXZWJJbnNw
ZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfYWRkSGVhcFNuYXBzaG90
Q2h1bms6IGZ1bmN0aW9uKHVpZCwgY2h1bmspCiAgICAgewotICAgICAgICB2YXIgcHJvZmlsZSA9
IHRoaXMuX3Byb2ZpbGVzSWRNYXBbdGhpcy5fbWFrZUtleSh1aWQsIFdlYkluc3BlY3Rvci5EZXRh
aWxlZEhlYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkKV07CisgICAgICAgIHZhciBwcm9maWxlID0g
dGhpcy5fcHJvZmlsZXNJZE1hcFt0aGlzLl9tYWtlS2V5KHVpZCwgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCldOwogICAgICAgICBpZiAoIXByb2ZpbGUgfHwgIXBy
b2ZpbGUucHJveHkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHByb2ZpbGUucHJveHku
cHVzaEpTT05DaHVuayhjaHVuayk7CkBAIC01MDcsNyArNTA3LDcgQEAgV2ViSW5zcGVjdG9yLlBy
b2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX2ZpbmlzaEhlYXBTbmFwc2hvdDogZnVu
Y3Rpb24odWlkKQogICAgIHsKLSAgICAgICAgdmFyIHByb2ZpbGUgPSB0aGlzLl9wcm9maWxlc0lk
TWFwW3RoaXMuX21ha2VLZXkodWlkLCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2Zp
bGVUeXBlLlR5cGVJZCldOworICAgICAgICB2YXIgcHJvZmlsZSA9IHRoaXMuX3Byb2ZpbGVzSWRN
YXBbdGhpcy5fbWFrZUtleSh1aWQsIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlw
ZS5UeXBlSWQpXTsKICAgICAgICAgaWYgKCFwcm9maWxlIHx8ICFwcm9maWxlLnByb3h5KQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB2YXIgcHJveHkgPSBwcm9maWxlLnByb3h5OwpAQCAt
ODU5LDEwICs4NTksMTAgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0g
ewogCiAgICAgdGFrZUhlYXBTbmFwc2hvdDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYg
KCF0aGlzLmhhc1RlbXBvcmFyeVByb2ZpbGUoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQ
cm9maWxlVHlwZS5UeXBlSWQpKSB7CisgICAgICAgIGlmICghdGhpcy5oYXNUZW1wb3JhcnlQcm9m
aWxlKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQpKSB7CiAgICAg
ICAgICAgICBpZiAoIXRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpIHsKICAgICAgICAg
ICAgICAgICB0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlID0gbmV3IFdlYkluc3BlY3Rv
ci5Qcm9maWxlSGVhZGVyKAotICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuRGV0YWls
ZWRIZWFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCwKKyAgICAgICAgICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCwKICAgICAgICAgICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTbmFwc2hvdHRpbmdcdTIwMjYiKSwKICAgICAgICAg
ICAgICAgICAgICAgLTEsCiAgICAgICAgICAgICAgICAgICAgIHRydWUpOwpAQCAtODc1LDcgKzg3
NSw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9y
ZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzczogZnVuY3Rpb24oZG9uZSwgdG90YWwpCiAgICAgewot
ICAgICAgICBpZiAodGhpcy5oYXNUZW1wb3JhcnlQcm9maWxlKFdlYkluc3BlY3Rvci5EZXRhaWxl
ZEhlYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkKSkgeworICAgICAgICBpZiAodGhpcy5oYXNUZW1w
b3JhcnlQcm9maWxlKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQp
KSB7CiAgICAgICAgICAgICB0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlLnNpZGViYXJF
bGVtZW50LnN1YnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlLjJmJSIsIChkb25lIC8g
dG90YWwpICogMTAwKTsKICAgICAgICAgICAgIHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2Zp
bGUuc2lkZWJhckVsZW1lbnQud2FpdCA9IHRydWU7CiAgICAgICAgICAgICBpZiAoZG9uZSA+PSB0
b3RhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2Vi
S2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpp
bmRleCBhNjFlY2I4OTc5OWEzODYyNjk2ZjhmN2MyMjk3ZWZkYTM1ZmU1NDBkLi4zYjM0ODVmZjNk
YzBjMmM1OTA4MGNlYzcyYzVjYmVlY2E3ODk4OTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0zMyw4ICszMyw2IEBACiAgICAgPGZpbGU+
RGF0YWJhc2UuanM8L2ZpbGU+CiAgICAgPGZpbGU+RGF0YWJhc2VRdWVyeVZpZXcuanM8L2ZpbGU+
CiAgICAgPGZpbGU+RGF0YWJhc2VUYWJsZVZpZXcuanM8L2ZpbGU+Ci0gICAgPGZpbGU+RGV0YWls
ZWRIZWFwc2hvdEdyaWROb2Rlcy5qczwvZmlsZT4KLSAgICA8ZmlsZT5EZXRhaWxlZEhlYXBzaG90
Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5EYXRhR3JpZC5qczwvZmlsZT4KICAgICA8ZmlsZT5E
ZWJ1Z2dlck1vZGVsLmpzPC9maWxlPgogICAgIDxmaWxlPkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwuanM8L2ZpbGU+CkBAIC02Miw3ICs2MCw5IEBACiAgICAgPGZpbGU+SEFSRW50cnkuanM8L2Zp
bGU+CiAgICAgPGZpbGU+SGFuZGxlclJlZ2lzdHJ5LmpzPC9maWxlPgogICAgIDxmaWxlPkhlYXBT
bmFwc2hvdC5qczwvZmlsZT4KKyAgICA8ZmlsZT5IZWFwU25hcHNob3RHcmlkTm9kZXMuanM8L2Zp
bGU+CiAgICAgPGZpbGU+SGVhcFNuYXBzaG90UHJveHkuanM8L2ZpbGU+CisgICAgPGZpbGU+SGVh
cFNuYXBzaG90Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5IZWFwU25hcHNob3RXb3JrZXIuanM8
L2ZpbGU+CiAgICAgPGZpbGU+SGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5qczwvZmlsZT4K
ICAgICA8ZmlsZT5IZWxwU2NyZWVuLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9oZWFwUHJvZmlsZXIuY3NzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9oZWFwUHJvZmlsZXIuY3NzCmluZGV4IDc5YzczOTlhN2FkMjVi
NDNmNmFmODIyMzUyZWViY2NhZTc1NjRjYTkuLjhhOGI0OTI4NGNjNTRiM2E2NzNiOTcwMjY2MTYy
ODQ5MjlmOWIzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaGVhcFByb2ZpbGVyLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2hlYXBQcm9maWxlci5jc3MKQEAgLTUzLDcgKzUzLDcgQEAgYm9keS5pbmFjdGl2ZSAuaGVh
cC1zbmFwc2hvdC1zaWRlYmFyLXRyZWUtaXRlbS53YWl0LnNlbGVjdGVkIC5pY29uIHsKICAgICBj
b250ZW50OiB1cmwoSW1hZ2VzL3Byb2ZpbGVTbWFsbEljb24ucG5nKTsKIH0KIAotLmRldGFpbGVk
LWhlYXBzaG90LXZpZXcgeworLmhlYXAtc25hcHNob3QtdmlldyB7CiAgICAgZGlzcGxheTogbm9u
ZTsKICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKQEAgLTYz
LDc0ICs2Myw3NCBAQCBib2R5LmluYWN0aXZlIC5oZWFwLXNuYXBzaG90LXNpZGViYXItdHJlZS1p
dGVtLndhaXQuc2VsZWN0ZWQgLmljb24gewogICAgIGJvdHRvbTogMDsKIH0KIAotLmRldGFpbGVk
LWhlYXBzaG90LXZpZXcudmlzaWJsZSB7CisuaGVhcC1zbmFwc2hvdC12aWV3LnZpc2libGUgewog
ICAgIGRpc3BsYXk6IGJsb2NrOwogfQogCi0uZGV0YWlsZWQtaGVhcHNob3QtdmlldyAudmlldyB7
CisuaGVhcC1zbmFwc2hvdC12aWV3IC52aWV3IHsKICAgICBkaXNwbGF5OiBub25lOwogfQogCi0u
ZGV0YWlsZWQtaGVhcHNob3QtdmlldyAudmlldy52aXNpYmxlIHsKKy5oZWFwLXNuYXBzaG90LXZp
ZXcgLnZpZXcudmlzaWJsZSB7CiAgICAgZGlzcGxheTogYmxvY2s7CiB9CiAKLS5kZXRhaWxlZC1o
ZWFwc2hvdC12aWV3IC5kYXRhLWdyaWQgdHI6ZW1wdHkgeworLmhlYXAtc25hcHNob3QtdmlldyAu
ZGF0YS1ncmlkIHRyOmVtcHR5IHsKICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgdmlzaWJpbGl0eTog
aGlkZGVuOwogfQogCi0uZGV0YWlsZWQtaGVhcHNob3QtdmlldyAuZGF0YS1ncmlkIHsKKy5oZWFw
LXNuYXBzaG90LXZpZXcgLmRhdGEtZ3JpZCB7CiAgICAgYm9yZGVyOiBub25lOwogfQogCi0uZGV0
YWlsZWQtaGVhcHNob3QtdmlldyAuZGF0YS1ncmlkIHRkLmNvdW50LWNvbHVtbiB7CisuaGVhcC1z
bmFwc2hvdC12aWV3IC5kYXRhLWdyaWQgdGQuY291bnQtY29sdW1uIHsKICAgICB0ZXh0LWFsaWdu
OiByaWdodDsKIH0KIAotLmRldGFpbGVkLWhlYXBzaG90LXZpZXcgLmRhdGEtZ3JpZCB0ZC5hZGRl
ZENvdW50LWNvbHVtbiB7CisuaGVhcC1zbmFwc2hvdC12aWV3IC5kYXRhLWdyaWQgdGQuYWRkZWRD
b3VudC1jb2x1bW4gewogICAgIHRleHQtYWxpZ246IHJpZ2h0OwogfQogCi0uZGV0YWlsZWQtaGVh
cHNob3QtdmlldyAuZGF0YS1ncmlkIHRkLnJlbW92ZWRDb3VudC1jb2x1bW4geworLmhlYXAtc25h
cHNob3QtdmlldyAuZGF0YS1ncmlkIHRkLnJlbW92ZWRDb3VudC1jb2x1bW4gewogICAgIHRleHQt
YWxpZ246IHJpZ2h0OwogfQogCi0uZGV0YWlsZWQtaGVhcHNob3QtdmlldyAuZGF0YS1ncmlkIHRk
LmNvdW50RGVsdGEtY29sdW1uIHsKKy5oZWFwLXNuYXBzaG90LXZpZXcgLmRhdGEtZ3JpZCB0ZC5j
b3VudERlbHRhLWNvbHVtbiB7CiAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiB9CiAKLS5kZXRhaWxl
ZC1oZWFwc2hvdC12aWV3IC5kYXRhLWdyaWQgdGQuYWRkZWRTaXplLWNvbHVtbiB7CisuaGVhcC1z
bmFwc2hvdC12aWV3IC5kYXRhLWdyaWQgdGQuYWRkZWRTaXplLWNvbHVtbiB7CiAgICAgdGV4dC1h
bGlnbjogcmlnaHQ7CiB9CiAKLS5kZXRhaWxlZC1oZWFwc2hvdC12aWV3IC5kYXRhLWdyaWQgdGQu
cmVtb3ZlZFNpemUtY29sdW1uIHsKKy5oZWFwLXNuYXBzaG90LXZpZXcgLmRhdGEtZ3JpZCB0ZC5y
ZW1vdmVkU2l6ZS1jb2x1bW4gewogICAgIHRleHQtYWxpZ246IHJpZ2h0OwogfQogCi0uZGV0YWls
ZWQtaGVhcHNob3QtdmlldyAuZGF0YS1ncmlkIHRkLnNpemVEZWx0YS1jb2x1bW4geworLmhlYXAt
c25hcHNob3QtdmlldyAuZGF0YS1ncmlkIHRkLnNpemVEZWx0YS1jb2x1bW4gewogICAgIHRleHQt
YWxpZ246IHJpZ2h0OwogfQogCi0uZGV0YWlsZWQtaGVhcHNob3QtdmlldyAuZGF0YS1ncmlkIHRk
LnNoYWxsb3dTaXplLWNvbHVtbiB7CisuaGVhcC1zbmFwc2hvdC12aWV3IC5kYXRhLWdyaWQgdGQu
c2hhbGxvd1NpemUtY29sdW1uIHsKICAgICB0ZXh0LWFsaWduOiByaWdodDsKIH0KIAotLmRldGFp
bGVkLWhlYXBzaG90LXZpZXcgLmRhdGEtZ3JpZCB0ZC5yZXRhaW5lZFNpemUtY29sdW1uIHsKKy5o
ZWFwLXNuYXBzaG90LXZpZXcgLmRhdGEtZ3JpZCB0ZC5yZXRhaW5lZFNpemUtY29sdW1uIHsKICAg
ICB0ZXh0LWFsaWduOiByaWdodDsKIH0KIAotLmRldGFpbGVkLWhlYXBzaG90LXZpZXcgLmRhdGEt
Z3JpZCB0ZC5kaXN0YW5jZVRvV2luZG93LWNvbHVtbiB7CisuaGVhcC1zbmFwc2hvdC12aWV3IC5k
YXRhLWdyaWQgdGQuZGlzdGFuY2VUb1dpbmRvdy1jb2x1bW4gewogICAgIHRleHQtYWxpZ246IHJp
Z2h0OwogfQogCi0uZGV0YWlsZWQtaGVhcHNob3QtdmlldyAuZGF0YS1ncmlkIHNwYW4ucGVyY2Vu
dC1jb2x1bW4geworLmhlYXAtc25hcHNob3QtdmlldyAuZGF0YS1ncmlkIHNwYW4ucGVyY2VudC1j
b2x1bW4gewogICAgIGNvbG9yOiBncmV5OwogICAgIHdpZHRoOiAzMnB4OwogICAgIGZsb2F0OiBy
aWdodDsKIH0KIAotLmRldGFpbGVkLWhlYXBzaG90LXZpZXcgLmNvbnNvbGUtZm9ybWF0dGVkLW9i
amVjdCwgLmNvbnNvbGUtZm9ybWF0dGVkLW5vZGUgeworLmhlYXAtc25hcHNob3QtdmlldyAuY29u
c29sZS1mb3JtYXR0ZWQtb2JqZWN0LCAuY29uc29sZS1mb3JtYXR0ZWQtbm9kZSB7CiAgICAgZGlz
cGxheTogaW5saW5lOwogICAgIHBvc2l0aW9uOiBzdGF0aWM7CiB9CkBAIC0xMzksMjggKzEzOSwy
OCBAQCBib2R5LmluYWN0aXZlIC5oZWFwLXNuYXBzaG90LXNpZGViYXItdHJlZS1pdGVtLndhaXQu
c2VsZWN0ZWQgLmljb24gewogICAgIGJhY2tncm91bmQtY29sb3I6ICNGRjk5OTk7CiB9CiAKLS5k
ZXRhaWxlZC1oZWFwc2hvdC12aWV3IC5jb25zb2xlLWZvcm1hdHRlZC1zdHJpbmcgeworLmhlYXAt
c25hcHNob3QtdmlldyAuY29uc29sZS1mb3JtYXR0ZWQtc3RyaW5nIHsKICAgICB3aGl0ZS1zcGFj
ZTogbm93cmFwOwogfQogCi0uZGV0YWlsZWQtaGVhcHNob3QtdmlldyAuY29uc29sZS1mb3JtYXR0
ZWQtaWQgeworLmhlYXAtc25hcHNob3QtdmlldyAuY29uc29sZS1mb3JtYXR0ZWQtaWQgewogICAg
IGNvbG9yOiBncmV5OwogfQogCi0uZGV0YWlsZWQtaGVhcHNob3QtdmlldyAuZGF0YS1ncmlkIHRy
LnNlbGVjdGVkICogeworLmhlYXAtc25hcHNob3QtdmlldyAuZGF0YS1ncmlkIHRyLnNlbGVjdGVk
ICogewogICAgIGNvbG9yOiBpbmhlcml0OwogfQogCi0uZGV0YWlsZWQtaGVhcHNob3QtdmlldyAu
ZGF0YS1ncmlkOmZvY3VzIHRyLnNlbGVjdGVkICogeworLmhlYXAtc25hcHNob3QtdmlldyAuZGF0
YS1ncmlkOmZvY3VzIHRyLnNlbGVjdGVkICogewogICAgIGNvbG9yOiB3aGl0ZTsKIH0KIAotLmRl
dGFpbGVkLWhlYXBzaG90LXZpZXcgLmRlbGltaXRlciB7CisuaGVhcC1zbmFwc2hvdC12aWV3IC5k
ZWxpbWl0ZXIgewogICAgIGhlaWdodDogMjRweDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDZk
ZGU1OwogfQogCi0uZGV0YWlsZWQtaGVhcHNob3QtdmlldyAuZGF0YS1ncmlkIHsKKy5oZWFwLXNu
YXBzaG90LXZpZXcgLmRhdGEtZ3JpZCB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgIHRv
cDogMDsKICAgICBsZWZ0OiAwOwpAQCAtMTY4LDcgKzE2OCw3IEBAIGJvZHkuaW5hY3RpdmUgLmhl
YXAtc25hcHNob3Qtc2lkZWJhci10cmVlLWl0ZW0ud2FpdC5zZWxlY3RlZCAuaWNvbiB7CiAgICAg
Ym90dG9tOiAwOwogfQogCi0uZGV0YWlsZWQtaGVhcHNob3QtdmlldyAudmlld3MtY29udGFpbmVy
IHsKKy5oZWFwLXNuYXBzaG90LXZpZXcgLnZpZXdzLWNvbnRhaW5lciB7CiAgICAgcG9zaXRpb246
IGFic29sdXRlOwogICAgIHRvcDogMDsKICAgICBsZWZ0OiAwOwpAQCAtMTc2LDcgKzE3Niw3IEBA
IGJvZHkuaW5hY3RpdmUgLmhlYXAtc25hcHNob3Qtc2lkZWJhci10cmVlLWl0ZW0ud2FpdC5zZWxl
Y3RlZCAuaWNvbiB7CiAgICAgYm90dG9tOiAxNzNweDsKIH0KIAotLmRldGFpbGVkLWhlYXBzaG90
LXZpZXcgLnZpZXdzLWNvbnRhaW5lciAudmlldyB7CisuaGVhcC1zbmFwc2hvdC12aWV3IC52aWV3
cy1jb250YWluZXIgLnZpZXcgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICB0b3A6IDA7
CiAgICAgbGVmdDogMDsKQEAgLTE4NCw3ICsxODQsNyBAQCBib2R5LmluYWN0aXZlIC5oZWFwLXNu
YXBzaG90LXNpZGViYXItdHJlZS1pdGVtLndhaXQuc2VsZWN0ZWQgLmljb24gewogICAgIGJvdHRv
bTogMDsKIH0KIAotLmRldGFpbGVkLWhlYXBzaG90LXZpZXcgLnJldGFpbmluZy1wYXRocy12aWV3
IHsKKy5oZWFwLXNuYXBzaG90LXZpZXcgLnJldGFpbmluZy1wYXRocy12aWV3IHsKICAgICBoZWln
aHQ6IDE1MHB4OwogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICBib3R0b206IDA7CkBAIC0x
OTIsMTEgKzE5MiwxMSBAQCBib2R5LmluYWN0aXZlIC5oZWFwLXNuYXBzaG90LXNpZGViYXItdHJl
ZS1pdGVtLndhaXQuc2VsZWN0ZWQgLmljb24gewogICAgIHJpZ2h0OiAwOwogfQogCi0uZGV0YWls
ZWQtaGVhcHNob3QtdmlldyAuY2xhc3Mtdmlldy1ncmlkIHsKKy5oZWFwLXNuYXBzaG90LXZpZXcg
LmNsYXNzLXZpZXctZ3JpZCB7CiAgICAgdG9wOiAyMnB4OwogfQogCi0uZGV0YWlsZWQtaGVhcHNo
b3QtdmlldyAuY2xhc3Mtdmlldy10b29sYmFyIHsKKy5oZWFwLXNuYXBzaG90LXZpZXcgLmNsYXNz
LXZpZXctdG9vbGJhciB7CiAgICAgaGVpZ2h0OiAyMnB4OwogICAgIGJhY2tncm91bmQtY29sb3I6
ICNEREQ7CiAgICAgZGlzcGxheTogYmxvY2s7CkBAIC0yMDYsNyArMjA2LDcgQEAgYm9keS5pbmFj
dGl2ZSAuaGVhcC1zbmFwc2hvdC1zaWRlYmFyLXRyZWUtaXRlbS53YWl0LnNlbGVjdGVkIC5pY29u
IHsKICAgICB0b3A6IDA7CiB9CiAKLS5kZXRhaWxlZC1oZWFwc2hvdC12aWV3IC5jbGFzcy12aWV3
LXRvb2xiYXIgaW5wdXQuY2xhc3MtbmFtZS1maWx0ZXIgeworLmhlYXAtc25hcHNob3QtdmlldyAu
Y2xhc3Mtdmlldy10b29sYmFyIGlucHV0LmNsYXNzLW5hbWUtZmlsdGVyIHsKICAgICB3aWR0aDog
MjAwcHg7CiAgICAgaGVpZ2h0OiAxOHB4OwogICAgIGZvbnQtc2l6ZTogMTFweDsKQEAgLTIxNiw3
ICsyMTYsNyBAQCBib2R5LmluYWN0aXZlIC5oZWFwLXNuYXBzaG90LXNpZGViYXItdHJlZS1pdGVt
LndhaXQuc2VsZWN0ZWQgLmljb24gewogICAgIGJvcmRlcjogc29saWQgMXB4ICNCQkI7CiB9CiAK
LS5kZXRhaWxlZC1oZWFwc2hvdC12aWV3IC5yZXRhaW5lcnMtdmlldy1oZWFkZXIgeworLmhlYXAt
c25hcHNob3QtdmlldyAucmV0YWluZXJzLXZpZXctaGVhZGVyIHsKICAgICBiYWNrZ3JvdW5kLWlt
YWdlOiB1cmwoSW1hZ2VzL3N0YXR1c2JhclJlc2l6ZXJWZXJ0aWNhbC5wbmcpLCB1cmwoSW1hZ2Vz
L3N0YXR1c2JhckJhY2tncm91bmQucG5nKTsKICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVw
ZWF0LCByZXBlYXQteDsKICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCBjZW50ZXIsIGNl
bnRlcjsKQEAgLTIzMyw3ICsyMzMsNyBAQCBib2R5LmluYWN0aXZlIC5oZWFwLXNuYXBzaG90LXNp
ZGViYXItdHJlZS1pdGVtLndhaXQuc2VsZWN0ZWQgLmljb24gewogICAgIGJvdHRvbTogMTUwcHg7
CiB9CiAKLS5kZXRhaWxlZC1oZWFwc2hvdC12aWV3IC5yZXRhaW5lcnMtdmlldy1oZWFkZXIgLnRp
dGxlID4gc3BhbiB7CisuaGVhcC1zbmFwc2hvdC12aWV3IC5yZXRhaW5lcnMtdmlldy1oZWFkZXIg
LnRpdGxlID4gc3BhbiB7CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgIHBhZGRpbmct
dG9wOiAzcHg7CiAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKQEAgLTI0MSwxOSArMjQxLDE5
IEBAIGJvZHkuaW5hY3RpdmUgLmhlYXAtc25hcHNob3Qtc2lkZWJhci10cmVlLWl0ZW0ud2FpdC5z
ZWxlY3RlZCAuaWNvbiB7CiAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7CiB9CiAKLS5kZXRhaWxlZC1o
ZWFwc2hvdC12aWV3IHRyOm5vdCguc2VsZWN0ZWQpIHRkLm9iamVjdC1jb2x1bW4gc3Bhbi5oaWdo
bGlnaHQgeworLmhlYXAtc25hcHNob3QtdmlldyB0cjpub3QoLnNlbGVjdGVkKSB0ZC5vYmplY3Qt
Y29sdW1uIHNwYW4uaGlnaGxpZ2h0IHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAy
NTUsIDIwMCk7CiB9CiAKLS5kZXRhaWxlZC1oZWFwc2hvdC12aWV3IHRkLm9iamVjdC1jb2x1bW4g
c3Bhbi5ncmF5ZWQgeworLmhlYXAtc25hcHNob3QtdmlldyB0ZC5vYmplY3QtY29sdW1uIHNwYW4u
Z3JheWVkIHsKICAgICBjb2xvcjogZ3JheTsKIH0KIAotLmhlYXBzaG90LWhlbHAtc3RhdHVzLWJh
ci1pdGVtIC5nbHlwaCB7CisuaGVhcC1zbmFwc2hvdC1oZWxwLXN0YXR1cy1iYXItaXRlbSAuZ2x5
cGggewogICAgIC13ZWJraXQtbWFzay1wb3NpdGlvbjogLTE2MHB4IDA7CiB9CiAKLXRhYmxlLmhl
YXBzaG90LWhlbHAgewordGFibGUuaGVhcC1zbmFwc2hvdC1oZWxwIHsKICAgICBib3JkZXItc3Bh
Y2luZzogMTJweCAycHg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDMyZTI4NTY3ZjYwM2YyZDEyYjNiOTZjNWVkYWQ3
MWFhZjBmYzkzOWIuLjliZDZmZTEyMWZlMDE5ZGE3MTQ3YWY0NzcxYzczMDdiY2Q0OTFmMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0
bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRt
bApAQCAtMTY3LDggKzE2Nyw4IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iSGVhcFNuYXBzaG90LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJIZWFwU25hcHNob3RQcm94eS5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSGVhcFNuYXBzaG90V29y
a2VyRGlzcGF0Y2hlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGV0YWlsZWRIZWFwc2hvdFZpZXcu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ikhl
YXBTbmFwc2hvdEdyaWROb2Rlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iSGVhcFNuYXBzaG90Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGVidWdnZXJNb2RlbC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2NyaXB0TWFwcGlu
Zy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
VUlTb3VyY2VDb2RlLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZGViYmQwYjVjODYyOTk5OTI5ZTQ0
ZmNiYzVhNGFjODJiM2I2MDE2Li4wNWNiNGNjOWE0YWVhNTU4NWNkMzVjNjRiNzJhNjRhYjY5ZjNk
MzFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMTItMDQtMTYgIFl1cnkgU2VtaWtoYXRza3kg
IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVuYW1lIGhl
YXAgcHJvZmlsZXIgZmlsZXMgYW5kIGNsYXNzZXMgRGV0YWlsZWRIZWFwc2hvdCogLT5IZWFwU25h
cHNob3QqCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NDAzOAorCisgICAgICAgIEEgYnVuY2ggb2YgcmVuYW1lcyAiZGV0YWlsZWQgaGVhcHNob3QiIC0+
ICJoZWFwIHNuYXBzaG90Ii4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtdGVzdC5q
czogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1j
b21wYXJpc29uLWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFw
c2hvdHMtY29tcGFyaXNvbi1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3Rl
ZC50eHQuCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFy
aXNvbi1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sOiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb21wYXJp
c29uLWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwuCisgICAgICAgICogaW5z
cGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1zaG93LWFsbC1leHBlY3Rl
ZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWls
ZWQtaGVhcHNob3RzLWNvbXBhcmlzb24tc2hvdy1hbGwtZXhwZWN0ZWQudHh0LgorICAgICAgICAq
IGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc2hvdy1hbGwuaHRt
bDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1o
ZWFwc2hvdHMtY29tcGFyaXNvbi1zaG93LWFsbC5odG1sLgorICAgICAgICAqIGluc3BlY3Rvci9w
cm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc2hvdy1uZXh0LWV4cGVjdGVkLnR4dDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFw
c2hvdHMtY29tcGFyaXNvbi1zaG93LW5leHQtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIGluc3Bl
Y3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc2hvdy1uZXh0Lmh0bWw6IFJl
bmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNo
b3RzLWNvbXBhcmlzb24tc2hvdy1uZXh0Lmh0bWwuCisgICAgICAgICogaW5zcGVjdG9yL3Byb2Zp
bGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZlZC13
aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb21wYXJpc29uLXNob3duLW5vZGUtY291
bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQuCisgICAgICAgICogaW5zcGVj
dG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1zaG93bi1ub2RlLWNvdW50LXBy
ZXNlcnZlZC13aGVuLXNvcnRpbmcuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2luc3Bl
Y3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFyaXNvbi1zaG93bi1ub2RlLWNv
dW50LXByZXNlcnZlZC13aGVuLXNvcnRpbmcuaHRtbC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21wYXJpc29uLXNvcnRpbmctZXhwZWN0ZWQudHh0OiBSZW5h
bWVkIGZyb20gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90
cy1jb21wYXJpc29uLXNvcnRpbmctZXhwZWN0ZWQudHh0LgorICAgICAgICAqIGluc3BlY3Rvci9w
cm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc29ydGluZy5odG1sOiBSZW5hbWVkIGZy
b20gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb21w
YXJpc29uLXNvcnRpbmcuaHRtbC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1z
bmFwc2hvdC1jb250YWlubWVudC1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBl
Y3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0
YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0
aW5nLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFw
c2hvdC1jb250YWlubWVudC1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sOiBS
ZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBz
aG90cy1jb250YWlubWVudC1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sLgor
ICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbnRhaW5tZW50LXNo
b3ctYWxsLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci9w
cm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc2hvdy1hbGwtZXhwZWN0ZWQu
dHh0LgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbnRhaW5t
ZW50LXNob3ctYWxsLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LXNob3ctYWxsLmh0bWwuCisgICAg
ICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29udGFpbm1lbnQtc2hvdy1u
ZXh0LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc2hvdy1uZXh0LWV4cGVjdGVkLnR4
dC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb250YWlubWVu
dC1zaG93LW5leHQuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc2hvdy1uZXh0Lmh0bWwuCisgICAg
ICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29udGFpbm1lbnQtc2hvd24t
bm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29u
dGFpbm1lbnQtc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVk
LnR4dC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb250YWlu
bWVudC1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRpbmcuaHRtbDogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMt
Y29udGFpbm1lbnQtc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwu
CisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29udGFpbm1lbnQt
c29ydGluZy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LXNvcnRpbmctZXhwZWN0ZWQu
dHh0LgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbnRhaW5t
ZW50LXNvcnRpbmcuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc29ydGluZy5odG1sLgorICAgICAg
ICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWRvbWluYXRvcnMtZXhwYW5zaW9u
LXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1kb21pbmF0b3JzLWV4
cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1kb21pbmF0b3JzLWV4cGFuc2lvbi1wcmVz
ZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWRvbWluYXRvcnMtZXhwYW5zaW9uLXByZXNl
cnZlZC13aGVuLXNvcnRpbmcuaHRtbC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVh
cC1zbmFwc2hvdC1kb21pbmF0b3JzLXNob3ctYWxsLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9t
IExheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5h
dG9ycy1zaG93LWFsbC1leHBlY3RlZC50eHQuCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVy
L2hlYXAtc25hcHNob3QtZG9taW5hdG9ycy1zaG93LWFsbC5odG1sOiBSZW5hbWVkIGZyb20gTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1kb21pbmF0b3Jz
LXNob3ctYWxsLmh0bWwuCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3QtZG9taW5hdG9ycy1zaG93LW5leHQtYWN0dWFsLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRl
c3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1zaG93
LW5leHQtYWN0dWFsLnR4dC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFw
c2hvdC1kb21pbmF0b3JzLXNob3ctbmV4dC1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWRvbWluYXRvcnMt
c2hvdy1uZXh0LWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVh
cC1zbmFwc2hvdC1kb21pbmF0b3JzLXNob3ctbmV4dC5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1kb21pbmF0b3JzLXNo
b3ctbmV4dC5odG1sLgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90
LWRvbWluYXRvcnMtc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVj
dGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRh
aWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVu
LXNvcnRpbmctZXhwZWN0ZWQudHh0LgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFw
LXNuYXBzaG90LWRvbWluYXRvcnMtc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0
aW5nLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0
YWlsZWQtaGVhcHNob3RzLWRvbWluYXRvcnMtc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hl
bi1zb3J0aW5nLmh0bWwuCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3QtZG9taW5hdG9ycy1zb3J0aW5nLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRl
c3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1zb3J0
aW5nLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFw
c2hvdC1kb21pbmF0b3JzLXNvcnRpbmcuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2lu
c3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1zb3J0aW5nLmh0
bWwuCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtaW5zcGVjdC1k
b20td3JhcHBlci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBz
aG90LXN1bW1hcnktZXhwYW5zaW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0
OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhl
YXBzaG90cy1zdW1tYXJ5LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVk
LnR4dC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5
LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktZXhw
YW5zaW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmcuaHRtbC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
cHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNob3ctYWxsLWV4cGVjdGVkLnR4dDogUmVu
YW1lZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hv
dHMtc3VtbWFyeS1zaG93LWFsbC1leHBlY3RlZC50eHQuCisgICAgICAgICogaW5zcGVjdG9yL3By
b2ZpbGVyL2hlYXAtc25hcHNob3Qtc3VtbWFyeS1zaG93LWFsbC5odG1sOiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5
LXNob3ctYWxsLmh0bWwuCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3Qtc3VtbWFyeS1zaG93LW5leHQtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNob3ctbmV4
dC1leHBlY3RlZC50eHQuCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3Qtc3VtbWFyeS1zaG93LW5leHQuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2luc3Bl
Y3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zaG93LW5leHQuaHRtbC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNob3du
LW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQ6IFJlbmFtZWQg
ZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1
bW1hcnktc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4
dC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNo
b3duLW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sOiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5
LXNob3duLW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sLgorICAgICAgICAq
IGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXN1bW1hcnktc29ydGluZy1leHBlY3Rl
ZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWls
ZWQtaGVhcHNob3RzLXN1bW1hcnktc29ydGluZy1leHBlY3RlZC50eHQuCisgICAgICAgICogaW5z
cGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3Qtc3VtbWFyeS1zb3J0aW5nLmh0bWw6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3Rz
LXN1bW1hcnktc29ydGluZy5odG1sLgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFw
LXNuYXBzaG90LXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0hlYXBTbmFwc2hvdFRlc3Qu
SW5zcGVjdG9yVGVzdC5zdGFydFByb2ZpbGVyVGVzdC5kZXRhaWxlZEhlYXBQcm9maWxlc0VuYWJs
ZWQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9IZWFwU25hcHNob3RUZXN0Lkluc3BlY3RvclRlc3Qu
Y29tcGxldGVQcm9maWxlclRlc3QpOgorICAgICAgICAoaW5pdGlhbGl6ZV9IZWFwU25hcHNob3RU
ZXN0Lkluc3BlY3RvclRlc3QucnVuSGVhcFNuYXBzaG90VGVzdFN1aXRlLnJ1bm5lcik6CisgICAg
ICAgIChpbml0aWFsaXplX0hlYXBTbmFwc2hvdFRlc3QuSW5zcGVjdG9yVGVzdC5ydW5IZWFwU25h
cHNob3RUZXN0U3VpdGUpOgorICAgICAgICAoaW5pdGlhbGl6ZV9IZWFwU25hcHNob3RUZXN0KToK
KyAgICAgICAgKGluaXRpYWxpemVfSGVhcFNuYXBzaG90VGVzdC4pOgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24t
ZXhwYW5zaW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZy
b20gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFp
bGVkLWhlYXBzaG90cy1jb21wYXJpc29uLWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5n
LWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21wYXJpc29uLXNob3ctYWxsLWV4cGVjdGVkLnR4dDogUmVu
YW1lZCBmcm9tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxl
ci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFyaXNvbi1zaG93LWFsbC1leHBlY3RlZC50eHQuCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3QtY29tcGFyaXNvbi1zaG93LW5leHQtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBz
aG90cy1jb21wYXJpc29uLXNob3ctbmV4dC1leHBlY3RlZC50eHQuCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1z
aG93bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0OiBSZW5h
bWVkIGZyb20gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVy
L2RldGFpbGVkLWhlYXBzaG90cy1jb21wYXJpc29uLXNob3duLW5vZGUtY291bnQtcHJlc2VydmVk
LXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
aW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1zb3J0aW5nLWV4cGVj
dGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3Bl
Y3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFyaXNvbi1zb3J0aW5nLWV4cGVj
dGVkLnR4dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIv
aGVhcC1zbmFwc2hvdC1jb250YWlubWVudC1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGlu
Zy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LWV4cGFu
c2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb250YWlubWVu
dC1zaG93LWFsbC1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5t
ZW50LXNob3ctYWxsLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9p
bnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb250YWlubWVudC1zaG93LW5leHQtZXhw
ZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5z
cGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1zaG93LW5leHQt
ZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9m
aWxlci9oZWFwLXNuYXBzaG90LWNvbnRhaW5tZW50LXNob3duLW5vZGUtY291bnQtcHJlc2VydmVk
LXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRh
aW5tZW50LXNob3duLW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50
eHQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAt
c25hcHNob3QtY29udGFpbm1lbnQtc29ydGluZy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQt
aGVhcHNob3RzLWNvbnRhaW5tZW50LXNvcnRpbmctZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWRvbWluYXRv
cnMtZXhwYW5zaW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0OiBSZW5hbWVk
IGZyb20gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2Rl
dGFpbGVkLWhlYXBzaG90cy1kb21pbmF0b3JzLWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0
aW5nLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3Iv
cHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1kb21pbmF0b3JzLXNob3ctYWxsLWV4cGVjdGVkLnR4dDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9m
aWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1zaG93LWFsbC1leHBlY3RlZC50eHQu
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25h
cHNob3QtZG9taW5hdG9ycy1zaG93LW5leHQtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhl
YXBzaG90cy1kb21pbmF0b3JzLXNob3ctbmV4dC1leHBlY3RlZC50eHQuCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZG9taW5hdG9y
cy1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0OiBS
ZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2Zp
bGVyL2RldGFpbGVkLWhlYXBzaG90cy1kb21pbmF0b3JzLXNob3duLW5vZGUtY291bnQtcHJlc2Vy
dmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZG9taW5hdG9ycy1zb3J0aW5nLWV4
cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2lu
c3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1zb3J0aW5nLWV4
cGVjdGVkLnR4dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmls
ZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5n
LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1leHBhbnNpb24t
cHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQuCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3Qtc3VtbWFyeS1zaG93LWFs
bC1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktc2hvdy1hbGwt
ZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9m
aWxlci9oZWFwLXNuYXBzaG90LXN1bW1hcnktc2hvdy1uZXh0LWV4cGVjdGVkLnR4dDogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9k
ZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zaG93LW5leHQtZXhwZWN0ZWQudHh0LgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXN1
bW1hcnktc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4
dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9w
cm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zaG93bi1ub2RlLWNvdW50LXByZXNl
cnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXN1bW1hcnktc29ydGluZy1leHBl
Y3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNw
ZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktc29ydGluZy1leHBlY3Rl
ZC50eHQuCisKIDIwMTItMDQtMTYgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLCBza2lwIGZhaWxpbmcgdGVz
dHMsIGJlY2F1c2UgbGVzcyB0ZXN0cyBtZWFucyBsZXNzIHByb2JsZW1zLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb21wYXJp
c29uLWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFyaXNvbi1l
eHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDI3ZTIwNzZmNzUwZGEzYzIzYjIyNzYwMjA2YTU2MjVkNzA0MDgz
NTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb21wYXJpc29uLWV4
cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDQgKzAsMCBAQAotVGVzdHMgQ29tcGFyaXNvbiB2aWV3IG9mIGRldGFpbGVkIGhlYXAg
c25hcHNob3RzLiBFeHBhbmRlZCBub2RlcyBtdXN0IGJlIHByZXNlcnZlZCBhZnRlciBzb3J0aW5n
LgotCi1IZWFwIHByb2ZpbGVyIGlzIGRpc2FibGVkCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFyaXNvbi1leHBhbnNp
b24tcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb21wYXJpc29uLWV4cGFuc2lvbi1wcmVzZXJ2ZWQt
d2hlbi1zb3J0aW5nLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjNjZkYWY4
YzJmYmE1MjYyZmI0YmI0YTNiNTU1YmUxYWJmZTNkNTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2Rl
dGFpbGVkLWhlYXBzaG90cy1jb21wYXJpc29uLWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0
aW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4K
LSAgPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9ImRldGFpbGVkLWhlYXBzaG90cy10ZXN0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciBpbnN0
YW5jZUNvdW50ID0gMjQ7Ci0gICAgZnVuY3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90QSgpCi0gICAg
ewotICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3QoaW5zdGFu
Y2VDb3VudCwgNSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdEIoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90KGlu
c3RhbmNlQ291bnQgKyAxLCA1ICsgaW5zdGFuY2VDb3VudCk7Ci0gICAgfQotCi0gICAgSW5zcGVj
dG9yVGVzdC5ydW5EZXRhaWxlZEhlYXBzaG90VGVzdFN1aXRlKFsKLSAgICAgICAgZnVuY3Rpb24g
dGVzdEV4cGFuc2lvblByZXNlcnZlZFdoZW5Tb3J0aW5nKG5leHQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNo
b3RBLCBjcmVhdGVTbmFwc2hvdEIpOwotICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlU25hcHNo
b3RCKCkgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hv
dChjcmVhdGVIZWFwU25hcHNob3RCLCBzdGVwMSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGZ1bmN0aW9uIHN0ZXAxKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29tcGFyaXNvbiIsIHN0ZXAyKTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHZhciByb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIsICJCIik7
Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFyb3cs
ICJcIkJcIiByb3ciKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZFJvdyhy
b3csIGV4cGFuZEIpOwotICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGV4cGFuZEIoKQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVj
dG9yVGVzdC5maW5kQnV0dG9uc05vZGUocm93KTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwgIm5vIGJ1dHRvbnMgbm9k
ZSBmb3VuZCEiKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja1Nob3dN
b3JlQnV0dG9uKCJzaG93QWxsIiwgYnV0dG9uc05vZGUsIHN0ZXAzKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgcm93ID0gSW5zcGVjdG9yVGVzdC5maW5kUm93
KCJvYmplY3QiLCAiQiIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKHRydWUsICEhcm93LCAiXCJCXCIgcm93Iik7Ci0gICAgICAgICAgICAgICAgdmFyIGJ1dHRv
bnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUocm93KTsKLSAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAibm8g
YnV0dG9ucyBub2RlIGZvdW5kISIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xp
Y2tTaG93TW9yZUJ1dHRvbigic2hvd0FsbCIsIGJ1dHRvbnNOb2RlLCBzdGVwNCk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBjb2x1bW5zOwotICAgICAgICAgICAgZnVuY3Rpb24g
c3RlcDQoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBJbnNwZWN0
b3JUZXN0LnZpZXdDb2x1bW5zKCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlj
a0NvbHVtbihjb2x1bW5zWzBdLCBzdGVwNSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGZ1bmN0aW9uIHN0ZXA1KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgcm93
ID0gSW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCAiQiIpOwotICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhcm93LCAiXCJCXCIgcm93Iik7Ci0g
ICAgICAgICAgICAgICAgdmFyIGJJbnN0YW5jZVJvdyA9IHJvdy5jaGlsZHJlblswXTsKLSAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJJbnN0YW5jZVJv
dywgIlwiQlwiIGluc3RhbmNlIHJvdyIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwYW5kUm93KGJJbnN0YW5jZVJvdywgZXhwYW5kQSk7Ci0gICAgICAgICAgICAgICAgZnVuY3Rp
b24gZXhwYW5kQShyb3cpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBm
dW5jdGlvbiBwcm9wZXJ0eU1hdGNoZXIoZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubmFtZSA9PT0gImEiICYmIGRhdGEudmFs
dWUuY2hhckF0KDApID09PSAiQSI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgdmFyIGFSb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIsIHByb3Bl
cnR5TWF0Y2hlciwgcm93KTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHModHJ1ZSwgISFhUm93LCAiXCJhOiBBXCIgcm93Iik7Ci0gICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93KGFSb3csIHN0ZXA2KTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA2KCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgcm93ID0gSW5zcGVjdG9yVGVzdC5maW5kUm93
KCJvYmplY3QiLCAiQiIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKHRydWUsICEhcm93LCAiXCJCXCIgcm93Iik7Ci0gICAgICAgICAgICAgICAgZnVuY3Rpb24g
ZGVsZXRlZE5vZGVNYXRjaGVyKGRhdGEpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZGF0YS5yZW1vdmVkQ291bnQgJiYgZGF0YS5vYmplY3QudmFsdWUuY2hh
ckF0KDApID09PSAiQiI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHZhciBi
SW5zdGFuY2VSb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3cyKGRlbGV0ZWROb2RlTWF0Y2hlciwg
cm93KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAh
IWJJbnN0YW5jZVJvdywgIlwiQlwiIGluc3RhbmNlIHJvdyIpOwotICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwYW5kUm93KGJJbnN0YW5jZVJvdywgZXhwYW5kQSk7Ci0gICAgICAgICAg
ICAgICAgZnVuY3Rpb24gZXhwYW5kQShyb3cpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBmdW5jdGlvbiBwcm9wZXJ0eU1hdGNoZXIoZGF0YSkKLSAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubmFtZSA9PT0gImEi
ICYmIGRhdGEudmFsdWUuY2hhckF0KDApID09PSAiQSI7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgdmFyIGFSb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9i
amVjdCIsIHByb3BlcnR5TWF0Y2hlciwgcm93KTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFhUm93LCAiXCJhOiBBXCIgcm93Iik7Ci0gICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93KGFSb3csIHN0ZXA3KTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBjb2x1bW5D
b250ZW50czsKLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA3KCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjb2x1bW5Db250ZW50cyA9IEluc3BlY3RvclRlc3QuY29sdW1uQ29udGVu
dHMoY29sdW1uc1swXSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVt
bihjb2x1bW5zWzBdLCBjbGlja1R3aWNlKTsKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiBjbGlj
a1R3aWNlKCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwgc3RlcDgpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDgoKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHZhciBuZXdDb2x1bW5Db250ZW50cyA9IEluc3BlY3RvclRl
c3QuY29sdW1uQ29udGVudHMoY29sdW1uc1swXSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnRDb2x1bW5Db250ZW50c0VxdWFsKGNvbHVtbkNvbnRlbnRzLCBuZXdDb2x1bW5D
b250ZW50cyk7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIF0pOwotfQotCi08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPgotVGVzdHMgQ29tcGFyaXNvbiB2aWV3IG9mIGRldGFp
bGVkIGhlYXAgc25hcHNob3RzLgotRXhwYW5kZWQgbm9kZXMgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0
ZXIgc29ydGluZy4KLTwvcD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFyaXNvbi1zaG93
LWFsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWls
ZWQtaGVhcHNob3RzLWNvbXBhcmlzb24tc2hvdy1hbGwtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkYWRkZmM1ZTJiMmMxODZiMzZkODg4NTM2MTQyOWI4ZTExODBl
YTE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFyaXNvbi1z
aG93LWFsbC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRlc3Rz
IENvbXBhcmlzb24gdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gVGhlICJTaG93IEFs
bCIgYnV0dG9uIG11c3Qgc2hvdyBhbGwgbm9kZXMuCi0KLUhlYXAgcHJvZmlsZXIgaXMgZGlzYWJs
ZWQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVk
LWhlYXBzaG90cy1jb21wYXJpc29uLXNob3ctYWxsLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbXBhcmlzb24tc2hvdy1hbGwuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjYyZjA3ODU2NmU0ZTc5ZTEyNTIwY2EzZmI1
YmYzYjlkYjAwMzk3MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNv
bXBhcmlzb24tc2hvdy1hbGwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLTxo
dG1sPgotPGhlYWQ+Ci0gIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9p
bnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3JjPSJkZXRhaWxlZC1oZWFw
c2hvdHMtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi1mdW5jdGlvbiB0ZXN0KCkKLXsK
LSAgICB2YXIgaW5zdGFuY2VDb3VudCA9IDI0OwotICAgIGZ1bmN0aW9uIGNyZWF0ZUhlYXBTbmFw
c2hvdEEoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNu
YXBzaG90KGluc3RhbmNlQ291bnQsIDUpOwotICAgIH0KLSAgICBmdW5jdGlvbiBjcmVhdGVIZWFw
U25hcHNob3RCKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhl
YXBTbmFwc2hvdChpbnN0YW5jZUNvdW50ICsgMSwgNSArIGluc3RhbmNlQ291bnQpOwotICAgIH0K
LQotICAgIEluc3BlY3RvclRlc3QucnVuRGV0YWlsZWRIZWFwc2hvdFRlc3RTdWl0ZShbCi0gICAg
ICAgIGZ1bmN0aW9uIHRlc3RTaG93QWxsKG5leHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3RBLCBjcmVh
dGVTbmFwc2hvdEIpOwotICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlU25hcHNob3RCKCkgewot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVI
ZWFwU25hcHNob3RCLCBzdGVwMSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0
aW9uIHN0ZXAxKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LnN3aXRjaFRvVmlldygiQ29tcGFyaXNvbiIsIHN0ZXAyKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHZhciByb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIsICJBIik7Ci0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFyb3csICJcIkFcIiBy
b3ciKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZFJvdyhyb3csIHN0ZXAz
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIGNvdW50QTsKLSAgICAgICAgICAg
IGZ1bmN0aW9uIHN0ZXAzKHJvdykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb3Vu
dEEgPSByb3cuZGF0YVsiYWRkZWRDb3VudCJdOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzKHRydWUsIGNvdW50QSA+IDAsICJjb3VudEEgPiAwIik7Ci0gICAgICAg
ICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUo
cm93KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAh
IWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIChhZGRlZCkiKTsKLSAgICAgICAgICAgICAgICB2
YXIgd29yZHMgPSBidXR0b25zTm9kZS5zaG93QWxsLnRleHRDb250ZW50LnNwbGl0KCIgIik7Ci0g
ICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3b3Jkcy5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgICAgICAgICB2YXIgbWF5YmVOdW1iZXIgPSBwYXJzZUludCh3b3Jkc1tpXSwg
MTApOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKG1heWJlTnVtYmVyKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGNvdW50QSwgd29y
ZHNbaV0sIGJ1dHRvbnNOb2RlLnNob3dBbGwudGV4dENvbnRlbnQpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrU2hvd01vcmVCdXR0b24oInNo
b3dBbGwiLCBidXR0b25zTm9kZSwgc3RlcDQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICB2YXIgY291bnRCOwotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDQocm93KQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHZhciByb3dzU2hvd24gPSBJbnNwZWN0b3JUZXN0LmNvdW50
RGF0YVJvd3Mocm93LCBmdW5jdGlvbihub2RlKSB7IHJldHVybiBub2RlLmRhdGEuYWRkZWRDb3Vu
dDsgfSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoY291bnRB
LCByb3dzU2hvd24udG9TdHJpbmcoKSwgImFmdGVyIHNob3dBbGwgY2xpY2sgMSIpOwotCi0gICAg
ICAgICAgICAgICAgY291bnRCID0gcm93LmRhdGFbInJlbW92ZWRDb3VudCJdOwotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIGNvdW50QiA+IDAsICJjb3Vu
dEIgPiAwIik7Ci0gICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVz
dC5maW5kQnV0dG9uc05vZGUocm93KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIChkZWxldGVkKSIp
OwotICAgICAgICAgICAgICAgIHZhciB3b3JkcyA9IGJ1dHRvbnNOb2RlLnNob3dBbGwudGV4dENv
bnRlbnQuc3BsaXQoIiAiKTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdv
cmRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBtYXliZU51bWJlciA9
IHBhcnNlSW50KHdvcmRzW2ldLCAxMCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghaXNOYU4o
bWF5YmVOdW1iZXIpKQotICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHMoY291bnRCLCB3b3Jkc1tpXSwgYnV0dG9uc05vZGUuc2hvd0FsbC50ZXh0Q29udGVu
dCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xp
Y2tTaG93TW9yZUJ1dHRvbigic2hvd0FsbCIsIGJ1dHRvbnNOb2RlLCBzdGVwNSk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA1KHJvdykKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICB2YXIgcm93c1Nob3duID0gSW5zcGVjdG9yVGVzdC5jb3VudERhdGFS
b3dzKHJvdywgZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gbm9kZS5kYXRhLnJlbW92ZWRDb3VudDsg
fSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoY291bnRCLCBy
b3dzU2hvd24udG9TdHJpbmcoKSwgImFmdGVyIHNob3dBbGwgY2xpY2sgMiIpOwotICAgICAgICAg
ICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJv
dyk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFsc2UsICEh
YnV0dG9uc05vZGUsICJidXR0b25zIG5vZGUgZm91bmQgYWZ0ZXIgYWxsIHJvd3Mgc2hvd24iKTsK
LSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KG5leHQsIDApOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgXSk7Ci19Ci0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgotPHA+Ci1UZXN0cyBDb21wYXJpc29uIHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBz
bmFwc2hvdHMuCi1UaGUgJnF1b3Q7U2hvdyBBbGwmcXVvdDsgYnV0dG9uIG11c3Qgc2hvdyBhbGwg
bm9kZXMuCi08L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbXBhcmlzb24tc2hvdy1uZXh0
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1o
ZWFwc2hvdHMtY29tcGFyaXNvbi1zaG93LW5leHQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmNTdlMWFiNDE5OTFmNGE4ZmVlODUxYzNlM2ZjNzIwYjBmY2M4NTIw
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFyaXNvbi1zaG93
LW5leHQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UZXN0cyBD
b21wYXJpc29uIHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIFJlcGVhdGVkIGNsaWNr
cyBvbiAiU2hvdyBOZXh0IiBidXR0b24gbXVzdCBzaG93IGFsbCBub2Rlcy4KLQotSGVhcCBwcm9m
aWxlciBpcyBkaXNhYmxlZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbXBhcmlzb24tc2hvdy1uZXh0Lmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbXBhcmlzb24t
c2hvdy1uZXh0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkNTA1N2ZkYzFm
MDA4OWMzYzU3NWRiYmE5NjI4ZGIxMDA3MTVmZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFp
bGVkLWhlYXBzaG90cy1jb21wYXJpc29uLXNob3ctbmV4dC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsNzkgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBz
cmM9ImRldGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1
bmN0aW9uIHRlc3QoKQotewotICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjQ7Ci0gICAgZnVuY3Rp
b24gY3JlYXRlSGVhcFNuYXBzaG90QSgpCi0gICAgewotICAgICAgICByZXR1cm4gSW5zcGVjdG9y
VGVzdC5jcmVhdGVIZWFwU25hcHNob3QoaW5zdGFuY2VDb3VudCwgNSk7Ci0gICAgfQotICAgIGZ1
bmN0aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdEIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEluc3Bl
Y3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90KGluc3RhbmNlQ291bnQgKyAxLCA1ICsgaW5zdGFu
Y2VDb3VudCk7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yVGVzdC5ydW5EZXRhaWxlZEhlYXBzaG90
VGVzdFN1aXRlKFsKLSAgICAgICAgZnVuY3Rpb24gdGVzdFNob3dOZXh0KG5leHQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVI
ZWFwU25hcHNob3RBLCBjcmVhdGVTbmFwc2hvdEIpOwotICAgICAgICAgICAgZnVuY3Rpb24gY3Jl
YXRlU25hcHNob3RCKCkgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9w
ZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3RCLCBzdGVwMSk7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29tcGFyaXNvbiIsIHN0ZXAyKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHZhciByb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVj
dCIsICJBIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1
ZSwgISFyb3csICJcIkFcIiByb3ciKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGFuZFJvdyhyb3csIHN0ZXAzKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rp
b24gc3RlcDMocm93KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFJvd0NvdW50QSA9IHBhcnNlSW50KHJvdy5kYXRhWyJhZGRlZENvdW50Il0pOwotICAgICAgICAg
ICAgICAgIHZhciByb3dzU2hvd24gPSBJbnNwZWN0b3JUZXN0LmNvdW50RGF0YVJvd3Mocm93LCBm
dW5jdGlvbihub2RlKSB7IHJldHVybiBub2RlLmRhdGEuYWRkZWRDb3VudDsgfSk7Ci0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgcm93c1Nob3duIDw9IGV4
cGVjdGVkUm93Q291bnRBLCAic2hvd24gbW9yZSBpbnN0YW5jZXMgdGhhbiBjcmVhdGVkOiAiICsg
cm93c1Nob3duICsgIiA+ICIgKyBleHBlY3RlZFJvd0NvdW50QSk7Ci0gICAgICAgICAgICAgICAg
aWYgKHJvd3NTaG93biA8IGV4cGVjdGVkUm93Q291bnRBKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7Ci0g
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYnV0
dG9uc05vZGUsICJidXR0b25zIG5vZGUiKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jbGlja1Nob3dNb3JlQnV0dG9uKCJzaG93TmV4dCIsIGJ1dHRvbnNOb2RlLCBzdGVwMyk7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyb3dzU2hvd24gPT09IGV4cGVjdGVkUm93Q291
bnRBKQotICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHN0ZXA0LmJpbmQobnVsbCwgcm93
KSwgMCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA0KHJvdykK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgZXhwZWN0ZWRSb3dDb3VudEIgPSBw
YXJzZUludChyb3cuZGF0YVsicmVtb3ZlZENvdW50Il0pOwotICAgICAgICAgICAgICAgIHZhciBy
b3dzU2hvd24gPSBJbnNwZWN0b3JUZXN0LmNvdW50RGF0YVJvd3Mocm93LCBmdW5jdGlvbihub2Rl
KSB7IHJldHVybiBub2RlLmRhdGEucmVtb3ZlZENvdW50OyB9KTsKLSAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCByb3dzU2hvd24gPD0gZXhwZWN0ZWRSb3dD
b3VudEIsICJzaG93biBtb3JlIGluc3RhbmNlcyB0aGFuIGNyZWF0ZWQ6ICIgKyByb3dzU2hvd24g
KyAiID4gIiArIGV4cGVjdGVkUm93Q291bnRCKTsKLSAgICAgICAgICAgICAgICBpZiAocm93c1No
b3duIDwgZXhwZWN0ZWRSb3dDb3VudEIpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGJ1dHRv
bnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUocm93KTsKLSAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwg
ImJ1dHRvbnMgbm9kZSIpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNr
U2hvd01vcmVCdXR0b24oInNob3dOZXh0IiwgYnV0dG9uc05vZGUsIHN0ZXA0KTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKHJvd3NTaG93biA9PT0gZXhwZWN0ZWRSb3dDb3VudEIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0
dG9uc05vZGUocm93KTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRF
cXVhbHMoZmFsc2UsICEhYnV0dG9uc05vZGUsICJidXR0b25zIG5vZGUgZm91bmQgYWZ0ZXIgYWxs
IHJvd3Mgc2hvd24iKTsKLSAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICBdKTsKLX0K
LQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD4KLVRl
c3RzIENvbXBhcmlzb24gdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KLVJlcGVhdGVk
IGNsaWNrcyBvbiAmcXVvdDtTaG93IE5leHQmcXVvdDsgYnV0dG9uIG11c3Qgc2hvdyBhbGwgbm9k
ZXMuCi08L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbXBhcmlzb24tc2hvd24tbm9kZS1j
b3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFyaXNvbi1zaG93bi1ub2Rl
LWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3NzkwOTc2NDEwNWFiZTRkOTkxNDFkMzhjMTZjODBkYWNhMjNkMGUx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFyaXNvbi1zaG93
bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNCArMCwwIEBACi1UZXN0cyBDb21wYXJpc29uIHZpZXcgb2YgZGV0YWlsZWQg
aGVhcCBzbmFwc2hvdHMuIFNob3duIG5vZGUgY291bnQgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIg
c29ydGluZy4KLQotSGVhcCBwcm9maWxlciBpcyBkaXNhYmxlZAotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbXBhcmlzb24t
c2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbXBhcmlzb24tc2hvd24t
bm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGY3ZjA3MjcyYTY0MDY2NWNiMWNjZDEzNWE1NDg4ODI1OWE0MDlmYTMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb21wYXJpc29uLXNob3duLW5v
ZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
OTggKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9
ImRldGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0
aW9uIHRlc3QoKQotewotICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjQ7Ci0gICAgZnVuY3Rpb24g
Y3JlYXRlSGVhcFNuYXBzaG90QSgpCi0gICAgewotICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVz
dC5jcmVhdGVIZWFwU25hcHNob3QoaW5zdGFuY2VDb3VudCwgNSk7Ci0gICAgfQotICAgIGZ1bmN0
aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdEIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rv
clRlc3QuY3JlYXRlSGVhcFNuYXBzaG90KGluc3RhbmNlQ291bnQgKyAxLCA1ICsgaW5zdGFuY2VD
b3VudCk7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yVGVzdC5ydW5EZXRhaWxlZEhlYXBzaG90VGVz
dFN1aXRlKFsKLSAgICAgICAgZnVuY3Rpb24gdGVzdEV4cGFuc2lvblByZXNlcnZlZFdoZW5Tb3J0
aW5nKG5leHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9w
ZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3RBLCBjcmVhdGVTbmFwc2hvdEIpOwotICAgICAg
ICAgICAgZnVuY3Rpb24gY3JlYXRlU25hcHNob3RCKCkgewotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3RCLCBzdGVwMSk7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29tcGFy
aXNvbiIsIHN0ZXAyKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIGNvbHVtbnM7
Ci0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY29sdW1ucyA9IEluc3BlY3RvclRlc3Qudmlld0NvbHVtbnMoKTsKLSAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrQ29sdW1uKGNvbHVtbnNbMF0sIHN0ZXAzKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMoKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHZhciByb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIs
ICJCIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwg
ISFyb3csICJcIkJcIiByb3ciKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFu
ZFJvdyhyb3csIHNob3dOZXh0KTsKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiBzaG93TmV4dChy
b3cpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05v
ZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOwotICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAibm8g
YnV0dG9ucyBub2RlIGZvdW5kISIpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmNsaWNrU2hvd01vcmVCdXR0b24oInNob3dOZXh0IiwgYnV0dG9uc05vZGUsIHN0ZXA0KTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0
ZXA0KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgcm93ID0gSW5zcGVjdG9y
VGVzdC5maW5kUm93KCJvYmplY3QiLCAiQiIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhcm93LCAiXCJCXCIgcm93Iik7Ci0gICAgICAgICAgICAg
ICAgZnVuY3Rpb24gZGVsZXRlZE5vZGVNYXRjaGVyKGRhdGEpCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5yZW1vdmVkQ291bnQgJiYgZGF0YS5vYmpl
Y3QudmFsdWUuY2hhckF0KDApID09PSAiQiI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHZhciBiSW5zdGFuY2VSb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3cyKGRlbGV0ZWRO
b2RlTWF0Y2hlciwgcm93KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyh0cnVlLCAhIWJJbnN0YW5jZVJvdywgIlwiQlwiIGluc3RhbmNlIHJvdyIpOwotICAgICAg
ICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2Rl
KHJvdywgYkluc3RhbmNlUm93KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAibm8gYnV0dG9ucyBub2RlIGZvdW5kISIpOwot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tTaG93TW9yZUJ1dHRvbigic2hvd05l
eHQiLCBidXR0b25zTm9kZSwgc3RlcDUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2
YXIgbm9kZUNvdW50OwotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDUocm93KQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIG5vZGVDb3VudCA9IEluc3BlY3RvclRlc3QuY29sdW1uQ29u
dGVudHMoY29sdW1uc1swXSkubGVuZ3RoOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0RXF1YWxzKHRydWUsIG5vZGVDb3VudCA+IDAsICJub2RlQ291bnQgPiAwIik7Ci0KLSAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrQ29sdW1uKGNvbHVtbnNbMF0sIGNsaWNr
VHdpY2UpOwotICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNsaWNrVHdpY2UoKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihj
b2x1bW5zWzBdLCBzdGVwNik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBmdW5jdGlvbiBzdGVwNigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgdmFyIG5ld05vZGVDb3VudCA9IEluc3BlY3RvclRlc3QuY29sdW1uQ29udGVudHMoY29sdW1u
c1swXSkubGVuZ3RoOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxz
KG5vZGVDb3VudCwgbmV3Tm9kZUNvdW50KTsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KG5l
eHQsIDApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgXSk7Ci19Ci0KLTwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPHA+Ci1UZXN0cyBDb21wYXJp
c29uIHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCi1TaG93biBub2RlIGNvdW50IG11
c3QgYmUgcHJlc2VydmVkIGFmdGVyIHNvcnRpbmcuCi08L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNo
b3RzLWNvbXBhcmlzb24tc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbXBhcmlzb24tc29ydGluZy1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNmQ2NTRkNjk2NTNhMWY0NDAz
OGUyNTIzMGM1ZWFlOTM4MzY3ZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBz
aG90cy1jb21wYXJpc29uLXNvcnRpbmctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
NCArMCwwIEBACi1UZXN0cyBzb3J0aW5nIGluIENvbXBhcmlzb24gdmlldyBvZiBkZXRhaWxlZCBo
ZWFwIHNuYXBzaG90cy4KLQotSGVhcCBwcm9maWxlciBpcyBkaXNhYmxlZAotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbXBh
cmlzb24tc29ydGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFp
bGVkLWhlYXBzaG90cy1jb21wYXJpc29uLXNvcnRpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYWYwZGQwZGViNDAzNjBlYWNmZDkwM2ZhNDZhMGNmZDZmNWYzMzI2Yy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbXBhcmlzb24tc29ydGluZy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgPHNj
cmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9ImRldGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciBpbnN0YW5jZUNv
dW50ID0gMjQ7Ci0gICAgZnVuY3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90QSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3QoaW5zdGFuY2VDb3Vu
dCwgNSk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdEIoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90KGluc3RhbmNl
Q291bnQgKyAxLCA1ICsgaW5zdGFuY2VDb3VudCk7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yVGVz
dC5ydW5EZXRhaWxlZEhlYXBzaG90VGVzdFN1aXRlKFsKLSAgICAgICAgZnVuY3Rpb24gdGVzdFNv
cnRpbmcobmV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC50YWtlQW5k
T3BlblNuYXBzaG90KGNyZWF0ZUhlYXBTbmFwc2hvdEEsIGNyZWF0ZVNuYXBzaG90Qik7Ci0gICAg
ICAgICAgICBmdW5jdGlvbiBjcmVhdGVTbmFwc2hvdEIoKSB7Ci0gICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC50YWtlQW5kT3BlblNuYXBzaG90KGNyZWF0ZUhlYXBTbmFwc2hvdEIsIHN0ZXAx
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgZnVuY3Rpb24gc3Rl
cDEoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc3dpdGNo
VG9WaWV3KCJDb21wYXJpc29uIiwgc3RlcDIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICB2YXIgY29sdW1uczsKLSAgICAgICAgICAgIHZhciBjdXJyZW50Q29sdW1uOwotICAgICAgICAg
ICAgdmFyIGN1cnJlbnRDb2x1bW5PcmRlcjsKLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIo
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBJbnNwZWN0b3JUZXN0
LnZpZXdDb2x1bW5zKCk7Ci0gICAgICAgICAgICAgICAgY3VycmVudENvbHVtbiA9IDA7Ci0gICAg
ICAgICAgICAgICAgY3VycmVudENvbHVtbk9yZGVyID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAg
c2V0VGltZW91dChzdGVwMywgMCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0
aW9uIHN0ZXAzKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudENv
bHVtbiA+PSBjb2x1bW5zLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KG5leHQsIDApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5zW2N1
cnJlbnRDb2x1bW5dLCBzdGVwNCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0
aW9uIHN0ZXA0KG5ld0NvbHVtblN0YXRlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNvbHVtbnNbY3VycmVudENvbHVtbl0gPSBuZXdDb2x1bW5TdGF0ZTsKLSAgICAgICAgICAgICAg
ICB2YXIgY29udGVudHMgPSBJbnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNbY3Vy
cmVudENvbHVtbl0pOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxz
KHRydWUsICEhY29udGVudHMubGVuZ3RoLCAiY29sdW1uIGNvbnRlbnRzIik7Ci0gICAgICAgICAg
ICAgICAgdmFyIHNvcnRUeXBlcyA9IHsgb2JqZWN0OiAidGV4dCIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkZWRDb3VudDogIm51bWJlciIsIHJlbW92ZWRDb3VudDogIm51
bWJlciIsIGNvdW50RGVsdGE6ICJudW1iZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFkZGVkU2l6ZTogInNpemUiLCByZW1vdmVkU2l6ZTogInNpemUiLCBzaXplRGVsdGE6
ICJzaXplIiB9OwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRy
dWUsICEhc29ydFR5cGVzW2NvbHVtbnNbY3VycmVudENvbHVtbl0uaWRlbnRpZmllcl0sICJzb3J0
IGJ5IGlkZW50aWZpZXIiKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrQXJy
YXlJc1NvcnRlZChjb250ZW50cywgc29ydFR5cGVzW2NvbHVtbnNbY3VycmVudENvbHVtbl0uaWRl
bnRpZmllcl0sIGNvbHVtbnNbY3VycmVudENvbHVtbl0uc29ydCk7Ci0KLSAgICAgICAgICAgICAg
ICBpZiAoIWN1cnJlbnRDb2x1bW5PcmRlcikKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudENv
bHVtbk9yZGVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgY3VycmVudENvbHVtbk9yZGVyID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICsr
Y3VycmVudENvbHVtbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChzdGVwMywgMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICBdKTsKLX0KLQot
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD4KLVRlc3Rz
IHNvcnRpbmcgaW4gQ29tcGFyaXNvbiB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLgot
PC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1leHBhbnNpb24tcHJlc2Vy
dmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LWV4cGFuc2lvbi1wcmVzZXJ2ZWQt
d2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGYxMjJkZWU3YmI3MDYyOTQ1MzE2ZDgzNTcxNzYwNzEyMzlkZWQ4Yi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LWV4cGFuc2lvbi1wcmVzZXJ2ZWQt
d2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAot
VGVzdHMgQ29udGFpbm1lbnQgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gRXhwYW5k
ZWQgbm9kZXMgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgc29ydGluZy4KLQotSGVhcCBwcm9maWxl
ciBpcyBkaXNhYmxlZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hl
bi1zb3J0aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQt
aGVhcHNob3RzLWNvbnRhaW5tZW50LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNzIxZDNkN2RiYjhjNDBjYzMzYjZj
OTRmZGY1Y2ExMzZkMjVlODQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90
cy1jb250YWlubWVudC1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgPHNjcmlwdCBzcmM9
Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
LSAgPHNjcmlwdCBzcmM9ImRldGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjU7
Ci0gICAgZnVuY3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90KCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNvdW50KTsKLSAgICB9
Ci0KLSAgICBJbnNwZWN0b3JUZXN0LnJ1bkRldGFpbGVkSGVhcHNob3RUZXN0U3VpdGUoWwotICAg
ICAgICBmdW5jdGlvbiB0ZXN0RXhwYW5zaW9uUHJlc2VydmVkV2hlblNvcnRpbmcobmV4dCkKLSAg
ICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC50YWtlQW5kT3BlblNuYXBzaG90KGNy
ZWF0ZUhlYXBTbmFwc2hvdCwgc3RlcDEpOwotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwMSgp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zd2l0Y2hUb1Zp
ZXcoIkNvbnRhaW5tZW50Iiwgc3RlcDIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2
YXIgY29sdW1uczsKLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBjb2x1bW5zID0gSW5zcGVjdG9yVGVzdC52aWV3Q29sdW1ucygpOwot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwgc3Rl
cDMpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwMygpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5maW5kQW5kRXhwYW5kR0NS
b290cyhzdGVwNCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA0
KHJvdykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJ
bnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOwotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYnV0dG9uc05vZGUsICJubyBidXR0b25zIG5v
ZGUgZm91bmQhIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja1Nob3dNb3Jl
QnV0dG9uKCJzaG93QWxsIiwgYnV0dG9uc05vZGUsIHN0ZXA1KTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDUocm93KQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHZhciByb3cgPSByb3cuY2hpbGRyZW5bMF07Ci0gICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFyb3csICJcIkJcIiBpbnN0YW5jZSByb3ciKTsK
LSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZFJvdyhyb3csIGV4cGFuZEEpOwot
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGV4cGFuZEEocm93KQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcHJvcGVydHlNYXRjaGVyKGRhdGEpCi0gICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm5h
bWUgPT09ICJhIiAmJiBkYXRhLnZhbHVlLmNoYXJBdCgwKSA9PT0gIkEiOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHZhciBhUm93ID0gSW5zcGVjdG9yVGVzdC5m
aW5kUm93KCJvYmplY3QiLCBwcm9wZXJ0eU1hdGNoZXIsIHJvdyk7Ci0gICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYVJvdywgIlwiYTogQVwiIHJv
dyIpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZFJvdyhhUm93LCBz
dGVwNik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2
YXIgY29sdW1uQ29udGVudHM7Ci0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwNigpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgY29sdW1uQ29udGVudHMgPSBJbnNwZWN0b3JUZXN0LmNv
bHVtbkNvbnRlbnRzKGNvbHVtbnNbMF0pOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
Y2xpY2tDb2x1bW4oY29sdW1uc1swXSwgY2xpY2tUd2ljZSk7Ci0gICAgICAgICAgICAgICAgZnVu
Y3Rpb24gY2xpY2tUd2ljZSgpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNsaWNrQ29sdW1uKGNvbHVtbnNbMF0sIHN0ZXA3KTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA3KCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgbmV3Q29sdW1uQ29udGVudHMgPSBJ
bnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNbMF0pOwotICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0Q29sdW1uQ29udGVudHNFcXVhbChjb2x1bW5Db250ZW50cywg
bmV3Q29sdW1uQ29udGVudHMpOwotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgMCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICBdKTsKLX0KLQotPC9zY3JpcHQ+Ci08L2hl
YWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD4KLVRlc3RzIENvbnRhaW5tZW50IHZp
ZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCi1FeHBhbmRlZCBub2RlcyBtdXN0IGJlIHBy
ZXNlcnZlZCBhZnRlciBzb3J0aW5nLgotPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250
YWlubWVudC1zaG93LWFsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LXNob3ctYWxsLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMwNmNlNTI0OWRhZTMyNmY3NDdhZDVh
NDE4NmNmOGQ5ZTQzOGQxNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3Rz
LWNvbnRhaW5tZW50LXNob3ctYWxsLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQg
KzAsMCBAQAotVGVzdHMgQ29udGFpbm1lbnQgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90
cy4gVGhlICJTaG93IEFsbCIgYnV0dG9uIG11c3Qgc2hvdyBhbGwgbm9kZXMuCi0KLUhlYXAgcHJv
ZmlsZXIgaXMgZGlzYWJsZWQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1zaG93LWFsbC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVu
dC1zaG93LWFsbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzViMDQyZTFj
NTg4MjhiZjcyODdlMjdmODA3YzIxNWIxNTIwNmNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRh
aWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc2hvdy1hbGwuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDYzICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci0gIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gIDxzY3JpcHQg
c3JjPSJkZXRhaWxlZC1oZWFwc2hvdHMtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgaW5zdGFuY2VDb3VudCA9IDI1OwotICAgIGZ1bmN0
aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdCgpCi0gICAgewotICAgICAgICByZXR1cm4gSW5zcGVjdG9y
VGVzdC5jcmVhdGVIZWFwU25hcHNob3QoaW5zdGFuY2VDb3VudCk7Ci0gICAgfQotCi0gICAgSW5z
cGVjdG9yVGVzdC5ydW5EZXRhaWxlZEhlYXBzaG90VGVzdFN1aXRlKFsKLSAgICAgICAgZnVuY3Rp
b24gdGVzdFNob3dBbGwobmV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC50YWtlQW5kT3BlblNuYXBzaG90KGNyZWF0ZUhlYXBTbmFwc2hvdCwgc3RlcDEpOwotCi0gICAg
ICAgICAgICBmdW5jdGlvbiBzdGVwMSgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5zd2l0Y2hUb1ZpZXcoIkNvbnRhaW5tZW50Iiwgc3RlcDIpOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5maW5kQW5kRXhwYW5kR0NSb290cyhzdGVwMyk7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKHJvdykKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0
LmZpbmRCdXR0b25zTm9kZShyb3cpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKHRydWUsICEhYnV0dG9uc05vZGUsICJidXR0b25zIG5vZGUiKTsKLSAgICAgICAg
ICAgICAgICB2YXIgd29yZHMgPSBidXR0b25zTm9kZS5zaG93QWxsLnRleHRDb250ZW50LnNwbGl0
KCIgIik7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3b3Jkcy5sZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbWF5YmVOdW1iZXIgPSBwYXJzZUludCh3
b3Jkc1tpXSwgMTApOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKG1heWJlTnVtYmVy
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGlu
c3RhbmNlQ291bnQsIG1heWJlTnVtYmVyLCBidXR0b25zTm9kZS5zaG93QWxsLnRleHRDb250ZW50
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlj
a1Nob3dNb3JlQnV0dG9uKCJzaG93QWxsIiwgYnV0dG9uc05vZGUsIHN0ZXA0KTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDQocm93KQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHZhciByb3dzU2hvd24gPSBJbnNwZWN0b3JUZXN0LmNvdW50RGF0YVJv
d3Mocm93KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhpbnN0
YW5jZUNvdW50LCByb3dzU2hvd24sICJhZnRlciBzaG93QWxsIGNsaWNrIik7Ci0gICAgICAgICAg
ICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUocm93
KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhmYWxzZSwgISFi
dXR0b25zTm9kZSwgImJ1dHRvbnMgbm9kZSBmb3VuZCB3aGVuIGFsbCBpbnN0YW5jZXMgYXJlIHNo
b3duISIpOwotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgMCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICBdKTsKLX0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+Ci08cD4KLVRlc3RzIENvbnRhaW5tZW50IHZpZXcgb2YgZGV0YWls
ZWQgaGVhcCBzbmFwc2hvdHMuCi1UaGUgJnF1b3Q7U2hvdyBBbGwmcXVvdDsgYnV0dG9uIG11c3Qg
c2hvdyBhbGwgbm9kZXMuCi08L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50
LXNob3ctbmV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIv
ZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LXNob3ctbmV4dC1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OThiMGFiMzUwZmFiMDBjYTUwODRlNjA3MzUw
YTY0ZDg3MmViZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250
YWlubWVudC1zaG93LW5leHQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCww
IEBACi1UZXN0cyBDb250YWlubWVudCB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLiBS
ZXBlYXRlZCBjbGlja3Mgb24gIlNob3cgTmV4dCIgYnV0dG9uIG11c3Qgc2hvdyBhbGwgbm9kZXMu
Ci0KLUhlYXAgcHJvZmlsZXIgaXMgZGlzYWJsZWQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1zaG93LW5l
eHQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hv
dHMtY29udGFpbm1lbnQtc2hvdy1uZXh0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDE1NjI2ZTRjNTBhNGNhZDRjM2VmYjg0NzE2MjUwMzVlNTgzNzEzOGQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1zaG93LW5leHQuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci0gIDxzY3JpcHQg
c3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+Ci0gIDxzY3JpcHQgc3JjPSJkZXRhaWxlZC1oZWFwc2hvdHMtdGVzdC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgaW5zdGFuY2VDb3VudCA9
IDI1OwotICAgIGZ1bmN0aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdCgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3QoaW5zdGFuY2VDb3VudCk7Ci0g
ICAgfQotCi0gICAgSW5zcGVjdG9yVGVzdC5ydW5EZXRhaWxlZEhlYXBzaG90VGVzdFN1aXRlKFsK
LSAgICAgICAgZnVuY3Rpb24gdGVzdFNob3dOZXh0KG5leHQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3Qs
IHN0ZXAxKTsKLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDEoKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc3dpdGNoVG9WaWV3KCJDb250YWlubWVudCIs
IHN0ZXAyKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmluZEFuZEV4cGFu
ZEdDUm9vdHMoc3RlcDMpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBz
dGVwMyhyb3cpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmFyIHJvd3NTaG93biA9
IEluc3BlY3RvclRlc3QuY291bnREYXRhUm93cyhyb3cpOwotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIHJvd3NTaG93biA8PSBpbnN0YW5jZUNvdW50LCAi
c2hvd24gbW9yZSBpbnN0YW5jZXMgdGhhbiBjcmVhdGVkOiAiICsgcm93c1Nob3duICsgIiA+ICIg
KyBpbnN0YW5jZUNvdW50KTsKLSAgICAgICAgICAgICAgICBpZiAocm93c1Nob3duIDwgaW5zdGFu
Y2VDb3VudCkgewotICAgICAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0
b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIik7
Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tTaG93TW9yZUJ1dHRvbigi
c2hvd05leHQiLCBidXR0b25zTm9kZSwgc3RlcDMpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAocm93c1Nob3duID09PSBpbnN0YW5jZUNvdW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7Ci0gICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCAhIWJ1dHRv
bnNOb2RlLCAiYnV0dG9ucyBub2RlIGZvdW5kIHdoZW4gYWxsIGluc3RhbmNlcyBhcmUgc2hvd24h
Iik7Ci0gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgMCk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgXSk7Ci19Ci0KLTwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPHA+Ci1UZXN0cyBDb250YWlu
bWVudCB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLgotUmVwZWF0ZWQgY2xpY2tzIG9u
ICZxdW90O1Nob3cgTmV4dCZxdW90OyBidXR0b24gbXVzdCBzaG93IGFsbCBub2Rlcy4KLTwvcD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc2hvd24tbm9kZS1jb3VudC1wcmVz
ZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
cm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc2hvd24tbm9kZS1jb3VudC1w
cmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTI4MDg5ODc4OGFkYTZjYTMwOTkwMDIxOTk1MjY1YTNmZWE3MmQ1Mi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LXNob3duLW5vZGUt
Y291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSw0ICswLDAgQEAKLVRlc3RzIENvbnRhaW5tZW50IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBz
bmFwc2hvdHMuIFNob3duIG5vZGUgY291bnQgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgc29ydGlu
Zy4KLQotSGVhcCBwcm9maWxlciBpcyBkaXNhYmxlZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LXNob3du
LW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1zaG93bi1ub2Rl
LWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjFlNzU3OTM2NDNhMDhkZDA5ZWM4MWM2ZGM4ZDAyOWJiY2Y3ZGFiZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LXNob3duLW5vZGUt
Y291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzkg
KzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9ImRl
dGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjU7Ci0gICAgZnVuY3Rpb24gY3Jl
YXRlSGVhcFNuYXBzaG90KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmNy
ZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNvdW50KTsKLSAgICB9Ci0KLSAgICBJbnNwZWN0b3JU
ZXN0LnJ1bkRldGFpbGVkSGVhcHNob3RUZXN0U3VpdGUoWwotICAgICAgICBmdW5jdGlvbiB0ZXN0
U2hvd25Ob2RlQ291bnRQcmVzZXJ2ZWRXaGVuU29ydGluZyhuZXh0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LnRha2VBbmRPcGVuU25hcHNob3QoY3JlYXRlSGVhcFNuYXBz
aG90LCBzdGVwMSk7Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29udGFpbm1l
bnQiLCBzdGVwMik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBjb2x1bW5zOwot
ICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNvbHVtbnMgPSBJbnNwZWN0b3JUZXN0LnZpZXdDb2x1bW5zKCk7Ci0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5zWzBdLCBzdGVwMyk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZpbmRBbmRFeHBhbmRHQ1Jvb3RzKHN0ZXA0KTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDQocm93KQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3Qu
ZmluZEJ1dHRvbnNOb2RlKHJvdyk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwgIm5vIGJ1dHRvbnMgbm9kZSBmb3VuZCEiKTsK
LSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrU2hvd01vcmVCdXR0b24oInNob3dO
ZXh0IiwgYnV0dG9uc05vZGUsIHN0ZXA1KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
dmFyIG5vZGVDb3VudDsKLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA1KHJvdykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAvLyBUaGVyZSBtdXN0IGJlIGVub3VnaCBub2RlcyB0byBo
YXZlIHNvbWUgdW5yZXZlYWxlZC4KLSAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJ
bnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOwotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYnV0dG9uc05vZGUsICJubyBidXR0b25zIG5v
ZGUgZm91bmQhIik7Ci0KLSAgICAgICAgICAgICAgICBub2RlQ291bnQgPSBJbnNwZWN0b3JUZXN0
LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNbMF0pLmxlbmd0aDsKLSAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCBub2RlQ291bnQgPiAwLCAibm9kZUNvdW50ID4g
MCIpOwotCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5z
WzBdLCBjbGlja1R3aWNlKTsKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiBjbGlja1R3aWNlKCkK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xp
Y2tDb2x1bW4oY29sdW1uc1swXSwgc3RlcDYpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDYoKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHZhciBuZXdOb2RlQ291bnQgPSBJbnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRl
bnRzKGNvbHVtbnNbMF0pLmxlbmd0aDsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscyhub2RlQ291bnQsIG5ld05vZGVDb3VudCk7Ci0gICAgICAgICAgICAgICAgc2V0
VGltZW91dChuZXh0LCAwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIF0pOwotfQot
Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPgotVGVz
dHMgQ29udGFpbm1lbnQgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KLVNob3duIG5v
ZGUgY291bnQgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgc29ydGluZy4KLTwvcD4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRh
aWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LXNv
cnRpbmctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGZmZGFl
NGUwMWZhNzRmMTY4Yzg5OWQxZjYyNWNhOGFjNzUyNDVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9k
ZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc29ydGluZy1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRlc3RzIHNvcnRpbmcgaW4gQ29udGFpbm1lbnQgdmll
dyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KLQotSGVhcCBwcm9maWxlciBpcyBkaXNhYmxl
ZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQt
aGVhcHNob3RzLWNvbnRhaW5tZW50LXNvcnRpbmcuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc29ydGluZy5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjlkYmMyNDk5OGI1ODNjNTY0MjMwMzhiMGM4
MTQwMWJlMzM0MmRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29u
dGFpbm1lbnQtc29ydGluZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotPGh0
bWw+Ci08aGVhZD4KLSAgPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9ImRldGFpbGVkLWhlYXBz
aG90cy10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewot
ICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjU7Ci0gICAgZnVuY3Rpb24gY3JlYXRlSGVhcFNuYXBz
aG90KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFw
c2hvdChpbnN0YW5jZUNvdW50KTsKLSAgICB9Ci0KLSAgICBJbnNwZWN0b3JUZXN0LnJ1bkRldGFp
bGVkSGVhcHNob3RUZXN0U3VpdGUoWwotICAgICAgICBmdW5jdGlvbiB0ZXN0U29ydGluZyhuZXh0
KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnRha2VBbmRPcGVuU25hcHNo
b3QoY3JlYXRlSGVhcFNuYXBzaG90LCBzdGVwMSk7Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0
ZXAxKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnN3aXRj
aFRvVmlldygiQ29udGFpbm1lbnQiLCBzdGVwMik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIHZhciBnY1Jvb3RzOwotICAgICAgICAgICAgdmFyIGNvbHVtbnM7Ci0gICAgICAgICAgICB2
YXIgY3VycmVudENvbHVtbjsKLSAgICAgICAgICAgIHZhciBjdXJyZW50Q29sdW1uT3JkZXI7Ci0K
LSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmZpbmRBbmRFeHBhbmRHQ1Jvb3RzKHN0ZXAzKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMoZ2NSb290c1JvdykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBnY1Jvb3RzID0gZ2NSb290c1JvdzsKLSAgICAgICAgICAg
ICAgICBjb2x1bW5zID0gSW5zcGVjdG9yVGVzdC52aWV3Q29sdW1ucygpOwotICAgICAgICAgICAg
ICAgIGN1cnJlbnRDb2x1bW4gPSAwOwotICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5PcmRl
ciA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc3RlcDQsIDApOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwNCgpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb2x1bW4gPj0gY29sdW1ucy5sZW5ndGgpIHsKLSAg
ICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1tjdXJyZW50Q29sdW1uXSwgc3RlcDUpOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwNShuZXdDb2x1bW5TdGF0ZSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb2x1bW5zW2N1cnJlbnRDb2x1bW5dID0gbmV3
Q29sdW1uU3RhdGU7Ci0gICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRzID0gSW5zcGVjdG9yVGVz
dC5jb2x1bW5Db250ZW50cyhjb2x1bW5zW2N1cnJlbnRDb2x1bW5dLCBnY1Jvb3RzKTsKLSAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWNvbnRlbnRzLmxl
bmd0aCwgImNvbHVtbiBjb250ZW50cyIpOwotICAgICAgICAgICAgICAgIHZhciBzb3J0VHlwZXMg
PSB7IG9iamVjdDogIm5hbWUiLCBzaGFsbG93U2l6ZTogInNpemUiLCByZXRhaW5lZFNpemU6ICJz
aXplIiB9OwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUs
ICEhc29ydFR5cGVzW2NvbHVtbnNbY3VycmVudENvbHVtbl0uaWRlbnRpZmllcl0sICJzb3J0IGJ5
IGlkZW50aWZpZXIiKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrQXJyYXlJ
c1NvcnRlZChjb250ZW50cywgc29ydFR5cGVzW2NvbHVtbnNbY3VycmVudENvbHVtbl0uaWRlbnRp
Zmllcl0sIGNvbHVtbnNbY3VycmVudENvbHVtbl0uc29ydCk7Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoIWN1cnJlbnRDb2x1bW5PcmRlcikKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbHVt
bk9yZGVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgY3VycmVudENvbHVtbk9yZGVyID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICsrY3Vy
cmVudENvbHVtbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91
dChzdGVwNCwgMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICBdKTsKLX0KLQotPC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD4KLVRlc3RzIHNv
cnRpbmcgaW4gQ29udGFpbm1lbnQgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KLTwv
cD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
cm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1leHBhbnNpb24tcHJlc2VydmVk
LXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvZGV0YWlsZWQtaGVhcHNob3RzLWRvbWluYXRvcnMtZXhwYW5zaW9uLXByZXNlcnZlZC13aGVu
LXNvcnRpbmctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDQz
NGY1MzE1MGY4NzkwZDVmOGIzYmI2MzIwMDgzZGZiNjMxMGNkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxl
ci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4t
c29ydGluZy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRlc3Rz
IERvbWluYXRvcnMgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gRXhwYW5kZWQgbm9k
ZXMgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgc29ydGluZy4KLQotSGVhcCBwcm9maWxlciBpcyBk
aXNhYmxlZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0
YWlsZWQtaGVhcHNob3RzLWRvbWluYXRvcnMtZXhwYW5zaW9uLXByZXNlcnZlZC13aGVuLXNvcnRp
bmcuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hv
dHMtZG9taW5hdG9ycy1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzEyNmM4MDRlNWNkN2I4ODhlZWJmMDYxZjcxY2Q1
YjM3ZDdhMmJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5h
dG9ycy1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsODAgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgPHNjcmlwdCBzcmM9Ii4uLy4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlw
dCBzcmM9ImRldGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjU7Ci0gICAgZnVu
Y3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBJbnNwZWN0
b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNvdW50KTsKLSAgICB9Ci0KLSAgICBJ
bnNwZWN0b3JUZXN0LnJ1bkRldGFpbGVkSGVhcHNob3RUZXN0U3VpdGUoWwotICAgICAgICBmdW5j
dGlvbiB0ZXN0RXhwYW5zaW9uUHJlc2VydmVkV2hlblNvcnRpbmcobmV4dCkKLSAgICAgICAgewot
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC50YWtlQW5kT3BlblNuYXBzaG90KGNyZWF0ZUhlYXBT
bmFwc2hvdCwgc3RlcDEpOwotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwMSgpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zd2l0Y2hUb1ZpZXcoIkRvbWlu
YXRvcnMiLCBzdGVwMik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBjb2x1bW5z
OwotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNvbHVtbnMgPSBJbnNwZWN0b3JUZXN0LnZpZXdDb2x1bW5zKCk7Ci0gICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5zWzBdLCBzdGVwMyk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZpbmRBbmRFeHBhbmRHQ1Jvb3RzKHN0ZXA0
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDQocm93KQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRl
c3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwgIm5vIGJ1dHRvbnMgbm9kZSBmb3VuZCEi
KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrU2hvd01vcmVCdXR0b24oInNo
b3dBbGwiLCBidXR0b25zTm9kZSwgc3RlcDUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBmdW5jdGlvbiBzdGVwNShyb3cpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmFy
IHJvdyA9IHJvdy5jaGlsZHJlblswXTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscyh0cnVlLCAhIXJvdywgIlwiQlwiIGluc3RhbmNlIHJvdyIpOwotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93KHJvdywgc3RlcDYpOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICB2YXIgY29sdW1uQ29udGVudHM7Ci0gICAgICAgICAgICBmdW5jdGlv
biBzdGVwNigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29sdW1uQ29udGVudHMg
PSBJbnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNbMF0pOwotICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwgY2xpY2tUd2ljZSk7Ci0g
ICAgICAgICAgICAgICAgZnVuY3Rpb24gY2xpY2tUd2ljZSgpCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrQ29sdW1uKGNvbHVtbnNbMF0s
IHN0ZXA3KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGZ1bmN0aW9uIHN0ZXA3KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgbmV3
Q29sdW1uQ29udGVudHMgPSBJbnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNbMF0p
OwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0Q29sdW1uQ29udGVudHNFcXVh
bChjb2x1bW5Db250ZW50cywgbmV3Q29sdW1uQ29udGVudHMpOwotICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQobmV4dCwgMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICBdKTsKLX0K
LQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD4KLVRl
c3RzIERvbWluYXRvcnMgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KLUV4cGFuZGVk
IG5vZGVzIG11c3QgYmUgcHJlc2VydmVkIGFmdGVyIHNvcnRpbmcuCi08L3A+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWls
ZWQtaGVhcHNob3RzLWRvbWluYXRvcnMtc2hvdy1hbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1kb21pbmF0b3JzLXNob3ct
YWxsLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY2ZjFiYmZm
M2MyM2VmN2Y5YjhjZDIxMTQ3MDU2MjM5Y2JjZTlkNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0
YWlsZWQtaGVhcHNob3RzLWRvbWluYXRvcnMtc2hvdy1hbGwtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNCArMCwwIEBACi1UZXN0cyBEb21pbmF0b3JzIHZpZXcgb2YgZGV0YWlsZWQg
aGVhcCBzbmFwc2hvdHMuIFRoZSAiU2hvdyBBbGwiIGJ1dHRvbiBtdXN0IHNob3cgYWxsIG5vZGVz
LgotCi1IZWFwIHByb2ZpbGVyIGlzIGRpc2FibGVkCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1zaG93LWFs
bC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90
cy1kb21pbmF0b3JzLXNob3ctYWxsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwZTcxMzc5ODBjYjVhYjY3ZTgxYjBlMDUyZWJmMWUzY2E4ZDZjODkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1kb21pbmF0b3JzLXNob3ctYWxsLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotICA8c2NyaXB0IHNyYz0i
Li4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgot
ICA8c2NyaXB0IHNyYz0iZGV0YWlsZWQtaGVhcHNob3RzLXRlc3QuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgdmFyIGluc3RhbmNlQ291bnQgPSAyNTsK
LSAgICBmdW5jdGlvbiBjcmVhdGVIZWFwU25hcHNob3QoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90KGluc3RhbmNlQ291bnQpOwotICAgIH0K
LQotICAgIEluc3BlY3RvclRlc3QucnVuRGV0YWlsZWRIZWFwc2hvdFRlc3RTdWl0ZShbCi0gICAg
ICAgIGZ1bmN0aW9uIHRlc3RTaG93QWxsKG5leHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3QsIHN0ZXAx
KTsKLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDEoKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3Quc3dpdGNoVG9WaWV3KCJEb21pbmF0b3JzIiwgc3RlcDIp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5maW5kQW5kRXhwYW5kR0NSb290
cyhzdGVwMyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKHJv
dykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNw
ZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOwotICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYnV0dG9uc05vZGUsICJidXR0b25zIG5vZGUiKTsK
LSAgICAgICAgICAgICAgICB2YXIgd29yZHMgPSBidXR0b25zTm9kZS5zaG93QWxsLnRleHRDb250
ZW50LnNwbGl0KCIgIik7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3b3Jk
cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbWF5YmVOdW1iZXIgPSBw
YXJzZUludCh3b3Jkc1tpXSwgMTApOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKG1h
eWJlTnVtYmVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
RXF1YWxzKGluc3RhbmNlQ291bnQsIG1heWJlTnVtYmVyLCBidXR0b25zTm9kZS5zaG93QWxsLnRl
eHRDb250ZW50KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jbGlja1Nob3dNb3JlQnV0dG9uKCJzaG93QWxsIiwgYnV0dG9uc05vZGUsIHN0ZXA0KTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDQocm93KQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHZhciByb3dzU2hvd24gPSBJbnNwZWN0b3JUZXN0LmNv
dW50RGF0YVJvd3Mocm93KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyhpbnN0YW5jZUNvdW50LCByb3dzU2hvd24sICJhZnRlciBzaG93QWxsIGNsaWNrIik7Ci0g
ICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9u
c05vZGUocm93KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhm
YWxzZSwgISFidXR0b25zTm9kZSwgImJ1dHRvbnMgbm9kZSBmb3VuZCB3aGVuIGFsbCBpbnN0YW5j
ZXMgYXJlIHNob3duISIpOwotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgMCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICBdKTsKLX0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD4KLVRlc3RzIERvbWluYXRvcnMgdmlldyBv
ZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KLVRoZSAmcXVvdDtTaG93IEFsbCZxdW90OyBidXR0
b24gbXVzdCBzaG93IGFsbCBub2Rlcy4KLTwvcD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9t
aW5hdG9ycy1zaG93LW5leHQtYWN0dWFsLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1zaG93LW5leHQtYWN0dWFsLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU3ZTFhYjQxOTkxZjRhOGZlZTg1MWMzZTNm
YzcyMGIwZmNjODUyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWRv
bWluYXRvcnMtc2hvdy1uZXh0LWFjdHVhbC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAg
QEAKLVRlc3RzIENvbXBhcmlzb24gdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gUmVw
ZWF0ZWQgY2xpY2tzIG9uICJTaG93IE5leHQiIGJ1dHRvbiBtdXN0IHNob3cgYWxsIG5vZGVzLgot
Ci1IZWFwIHByb2ZpbGVyIGlzIGRpc2FibGVkCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1zaG93LW5leHQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhl
YXBzaG90cy1kb21pbmF0b3JzLXNob3ctbmV4dC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGFkMDIxY2E1MThjMmExOTY5NWI1ZjYwM2ZkMjUxY2Q0ODU0NDFkNzIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1kb21pbmF0b3JzLXNob3ct
bmV4dC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRlc3RzIERv
bWluYXRvcnMgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gUmVwZWF0ZWQgY2xpY2tz
IG9uICJTaG93IE5leHQiIGJ1dHRvbiBtdXN0IHNob3cgYWxsIG5vZGVzLgotCi1IZWFwIHByb2Zp
bGVyIGlzIGRpc2FibGVkCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1zaG93LW5leHQuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1z
aG93LW5leHQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjUwNTlmYmQ3MmUy
OGRkZTllNmExNjY2ZTI4MWM5Y2QwODM0MWE3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWls
ZWQtaGVhcHNob3RzLWRvbWluYXRvcnMtc2hvdy1uZXh0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSw1NiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotICA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotICA8c2NyaXB0IHNy
Yz0iZGV0YWlsZWQtaGVhcHNob3RzLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgdmFyIGluc3RhbmNlQ291bnQgPSAyNTsKLSAgICBmdW5jdGlv
biBjcmVhdGVIZWFwU25hcHNob3QoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvclRl
c3QuY3JlYXRlSGVhcFNuYXBzaG90KGluc3RhbmNlQ291bnQpOwotICAgIH0KLQotICAgIEluc3Bl
Y3RvclRlc3QucnVuRGV0YWlsZWRIZWFwc2hvdFRlc3RTdWl0ZShbCi0gICAgICAgIGZ1bmN0aW9u
IHRlc3RTaG93TmV4dChuZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LnRha2VBbmRPcGVuU25hcHNob3QoY3JlYXRlSGVhcFNuYXBzaG90LCBzdGVwMSk7Ci0KLSAgICAg
ICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiRG9taW5hdG9ycyIsIHN0ZXAyKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmluZEFuZEV4cGFuZEdDUm9vdHMoc3RlcDMpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwMyhyb3cpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgdmFyIHJvd3NTaG93biA9IEluc3BlY3RvclRlc3QuY291
bnREYXRhUm93cyhyb3cpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKHRydWUsIHJvd3NTaG93biA8PSBpbnN0YW5jZUNvdW50LCAic2hvd24gbW9yZSBpbnN0YW5j
ZXMgdGhhbiBjcmVhdGVkOiAiICsgcm93c1Nob3duICsgIiA+ICIgKyBpbnN0YW5jZUNvdW50KTsK
LSAgICAgICAgICAgICAgICBpZiAocm93c1Nob3duIDwgaW5zdGFuY2VDb3VudCkgewotICAgICAg
ICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25z
Tm9kZShyb3cpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIik7Ci0gICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY2xpY2tTaG93TW9yZUJ1dHRvbigic2hvd05leHQiLCBidXR0b25z
Tm9kZSwgc3RlcDMpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocm93c1Nob3duID09PSBp
bnN0YW5jZUNvdW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IElu
c3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7Ci0gICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBu
b2RlIGZvdW5kIHdoZW4gYWxsIGluc3RhbmNlcyBhcmUgc2hvd24hIik7Ci0gICAgICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQobmV4dCwgMCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgXSk7Ci19Ci0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgotPHA+Ci1UZXN0cyBEb21pbmF0b3JzIHZpZXcgb2YgZGV0YWls
ZWQgaGVhcCBzbmFwc2hvdHMuCi1SZXBlYXRlZCBjbGlja3Mgb24gJnF1b3Q7U2hvdyBOZXh0JnF1
b3Q7IGJ1dHRvbiBtdXN0IHNob3cgYWxsIG5vZGVzLgotPC9wPgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBz
aG90cy1kb21pbmF0b3JzLXNob3duLW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVh
cHNob3RzLWRvbWluYXRvcnMtc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5n
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUyYTM1NmM5NzEy
MWQ2ODNkODkwN2I0NDQ5NWFmOTI4YTUyMWMyNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWls
ZWQtaGVhcHNob3RzLWRvbWluYXRvcnMtc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1z
b3J0aW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotVGVzdHMg
RG9taW5hdG9ycyB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLiBTaG93biBub2RlIGNv
dW50IG11c3QgYmUgcHJlc2VydmVkIGFmdGVyIHNvcnRpbmcuCi0KLUhlYXAgcHJvZmlsZXIgaXMg
ZGlzYWJsZWQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2Rl
dGFpbGVkLWhlYXBzaG90cy1kb21pbmF0b3JzLXNob3duLW5vZGUtY291bnQtcHJlc2VydmVkLXdo
ZW4tc29ydGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVk
LWhlYXBzaG90cy1kb21pbmF0b3JzLXNob3duLW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29y
dGluZy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDc4N2NjZWVhZDg0MGVi
M2EwZmQ5ZGYxMjQ2N2U1OGQ3OWEyMTQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1o
ZWFwc2hvdHMtZG9taW5hdG9ycy1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRp
bmcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci0g
IDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5q
cyI+PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3JjPSJkZXRhaWxlZC1oZWFwc2hvdHMtdGVzdC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgaW5zdGFu
Y2VDb3VudCA9IDI1OwotICAgIGZ1bmN0aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdCgpCi0gICAgewot
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3QoaW5zdGFuY2VD
b3VudCk7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yVGVzdC5ydW5EZXRhaWxlZEhlYXBzaG90VGVz
dFN1aXRlKFsKLSAgICAgICAgZnVuY3Rpb24gdGVzdFNob3duTm9kZUNvdW50UHJlc2VydmVkV2hl
blNvcnRpbmcobmV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC50YWtl
QW5kT3BlblNuYXBzaG90KGNyZWF0ZUhlYXBTbmFwc2hvdCwgc3RlcDEpOwotCi0gICAgICAgICAg
ICBmdW5jdGlvbiBzdGVwMSgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5zd2l0Y2hUb1ZpZXcoIkRvbWluYXRvcnMiLCBzdGVwMik7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIHZhciBjb2x1bW5zOwotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIo
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBJbnNwZWN0b3JUZXN0
LnZpZXdDb2x1bW5zKCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVt
bihjb2x1bW5zWzBdLCBzdGVwMyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0
aW9uIHN0ZXAzKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmZpbmRBbmRFeHBhbmRHQ1Jvb3RzKHN0ZXA0KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgZnVuY3Rpb24gc3RlcDQocm93KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZh
ciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7Ci0gICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFidXR0b25zTm9k
ZSwgIm5vIGJ1dHRvbnMgbm9kZSBmb3VuZCEiKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNsaWNrU2hvd01vcmVCdXR0b24oInNob3dOZXh0IiwgYnV0dG9uc05vZGUsIHN0ZXA1KTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIG5vZGVDb3VudDsKLSAgICAgICAgICAg
IGZ1bmN0aW9uIHN0ZXA1KHJvdykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBU
aGVyZSBtdXN0IGJlIGVub3VnaCBub2RlcyB0byBoYXZlIHNvbWUgdW5yZXZlYWxlZC4KLSAgICAg
ICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9k
ZShyb3cpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUs
ICEhYnV0dG9uc05vZGUsICJubyBidXR0b25zIG5vZGUgZm91bmQhIik7Ci0KLSAgICAgICAgICAg
ICAgICBub2RlQ291bnQgPSBJbnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNbMF0p
Lmxlbmd0aDsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVl
LCBub2RlQ291bnQgPiAwLCAibm9kZUNvdW50ID4gMCIpOwotCi0gICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5zWzBdLCBjbGlja1R3aWNlKTsKLSAgICAgICAg
ICAgICAgICBmdW5jdGlvbiBjbGlja1R3aWNlKCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwgc3RlcDYp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rp
b24gc3RlcDYoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhciBuZXdOb2RlQ291
bnQgPSBJbnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNbMF0pLmxlbmd0aDsKLSAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhub2RlQ291bnQsIG5ld05v
ZGVDb3VudCk7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIF0pOwotfQotCi08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPgotVGVzdHMgRG9taW5hdG9ycyB2aWV3IG9mIGRldGFp
bGVkIGhlYXAgc25hcHNob3RzLgotU2hvd24gbm9kZSBjb3VudCBtdXN0IGJlIHByZXNlcnZlZCBh
ZnRlciBzb3J0aW5nLgotPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1kb21pbmF0b3JzLXNv
cnRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFp
bGVkLWhlYXBzaG90cy1kb21pbmF0b3JzLXNvcnRpbmctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzNDUwODcyNGZjNzU0Mzc2Nzc0ZTFmMzcxYWJiZWJlNGRmM2Zh
NTNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1z
b3J0aW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotVGVzdHMg
c29ydGluZyBpbiBEb21pbmF0b3JzIHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCi0K
LUhlYXAgcHJvZmlsZXIgaXMgZGlzYWJsZWQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1kb21pbmF0b3JzLXNvcnRpbmcuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9t
aW5hdG9ycy1zb3J0aW5nLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5MDhj
NzlmMzYwZjAwNDNiMzVjOGE1YmFlMGZkNzcxZDU5OTJjZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVy
L2RldGFpbGVkLWhlYXBzaG90cy1kb21pbmF0b3JzLXNvcnRpbmcuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDgyICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci0gIDxzY3JpcHQgc3JjPSIuLi8uLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gIDxzY3Jp
cHQgc3JjPSJkZXRhaWxlZC1oZWFwc2hvdHMtdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgaW5zdGFuY2VDb3VudCA9IDI1OwotICAgIGZ1
bmN0aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdCgpCi0gICAgewotICAgICAgICByZXR1cm4gSW5zcGVj
dG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3QoaW5zdGFuY2VDb3VudCk7Ci0gICAgfQotCi0gICAg
SW5zcGVjdG9yVGVzdC5ydW5EZXRhaWxlZEhlYXBzaG90VGVzdFN1aXRlKFsKLSAgICAgICAgZnVu
Y3Rpb24gdGVzdFNvcnRpbmcobmV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC50YWtlQW5kT3BlblNuYXBzaG90KGNyZWF0ZUhlYXBTbmFwc2hvdCwgc3RlcDEpOwotCi0g
ICAgICAgICAgICBmdW5jdGlvbiBzdGVwMSgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5zd2l0Y2hUb1ZpZXcoIkRvbWluYXRvcnMiLCBzdGVwMik7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBnY1Jvb3RzOwotICAgICAgICAgICAgdmFyIGNv
bHVtbnM7Ci0gICAgICAgICAgICB2YXIgY3VycmVudENvbHVtbjsKLSAgICAgICAgICAgIHZhciBj
dXJyZW50Q29sdW1uT3JkZXI7Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZpbmRBbmRFeHBhbmRHQ1Jv
b3RzKHN0ZXAzKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMo
Z2NSb290c1JvdykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnY1Jvb3RzID0gZ2NS
b290c1JvdzsKLSAgICAgICAgICAgICAgICBjb2x1bW5zID0gSW5zcGVjdG9yVGVzdC52aWV3Q29s
dW1ucygpOwotICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW4gPSAwOwotICAgICAgICAgICAg
ICAgIGN1cnJlbnRDb2x1bW5PcmRlciA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoc3RlcDQsIDApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVw
NCgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb2x1bW4gPj0g
Y29sdW1ucy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0LCAw
KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1tjdXJyZW50Q29s
dW1uXSwgc3RlcDUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVw
NShuZXdDb2x1bW5TdGF0ZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb2x1bW5z
W2N1cnJlbnRDb2x1bW5dID0gbmV3Q29sdW1uU3RhdGU7Ci0gICAgICAgICAgICAgICAgdmFyIGNv
bnRlbnRzID0gSW5zcGVjdG9yVGVzdC5jb2x1bW5Db250ZW50cyhjb2x1bW5zW2N1cnJlbnRDb2x1
bW5dLCBnY1Jvb3RzKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cyh0cnVlLCAhIWNvbnRlbnRzLmxlbmd0aCwgImNvbHVtbiBjb250ZW50cyIpOwotICAgICAgICAg
ICAgICAgIHZhciBzb3J0VHlwZXMgPSB7IG9iamVjdDogImlkIiwgc2hhbGxvd1NpemU6ICJzaXpl
IiwgcmV0YWluZWRTaXplOiAic2l6ZSIgfTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydEVxdWFscyh0cnVlLCAhIXNvcnRUeXBlc1tjb2x1bW5zW2N1cnJlbnRDb2x1bW5dLmlk
ZW50aWZpZXJdLCAic29ydCBieSBpZGVudGlmaWVyIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5jaGVja0FycmF5SXNTb3J0ZWQoY29udGVudHMsIHNvcnRUeXBlc1tjb2x1bW5zW2N1
cnJlbnRDb2x1bW5dLmlkZW50aWZpZXJdLCBjb2x1bW5zW2N1cnJlbnRDb2x1bW5dLnNvcnQpOwot
Ci0gICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50Q29sdW1uT3JkZXIpCi0gICAgICAgICAgICAg
ICAgICAgIGN1cnJlbnRDb2x1bW5PcmRlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5PcmRlciA9IGZhbHNlOwotICAgICAg
ICAgICAgICAgICAgICArK2N1cnJlbnRDb2x1bW47Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoc3RlcDQsIDApOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgXSk7Ci19Ci0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgotPHA+Ci1UZXN0cyBzb3J0aW5nIGluIERvbWluYXRvcnMgdmlldyBvZiBkZXRhaWxlZCBo
ZWFwIHNuYXBzaG90cy4KLTwvcD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1leHBh
bnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktZXhwYW5zaW9uLXBy
ZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmZDFhODgwYjdmNzI0MzkyN2UwNjg2MDhmMmU1YTZiYjg4NTg0ZDAxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1leHBhbnNpb24tcHJlc2Vy
dmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAg
QEAKLVRlc3RzIFN1bW1hcnkgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gRXhwYW5k
ZWQgbm9kZXMgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgc29ydGluZy4KLQotSGVhcCBwcm9maWxl
ciBpcyBkaXNhYmxlZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktZXhwYW5zaW9uLXByZXNlcnZlZC13aGVuLXNv
cnRpbmcuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFw
c2hvdHMtc3VtbWFyeS1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmMwYzNiZTRjOTdmOTNlOTBlOWRhNDQ4M2MyYmIz
M2I5ODIzYTkwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFy
eS1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsOTMgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBz
cmM9ImRldGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1
bmN0aW9uIHRlc3QoKQotewotICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjU7Ci0gICAgZnVuY3Rp
b24gY3JlYXRlSGVhcFNuYXBzaG90KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3JU
ZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNvdW50KTsKLSAgICB9Ci0KLSAgICBJbnNw
ZWN0b3JUZXN0LnJ1bkRldGFpbGVkSGVhcHNob3RUZXN0U3VpdGUoWwotICAgICAgICBmdW5jdGlv
biB0ZXN0RXhwYW5zaW9uUHJlc2VydmVkV2hlblNvcnRpbmcobmV4dCkKLSAgICAgICAgewotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC50YWtlQW5kT3BlblNuYXBzaG90KGNyZWF0ZUhlYXBTbmFw
c2hvdCwgc3RlcDEpOwotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwMSgpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zd2l0Y2hUb1ZpZXcoIlN1bW1hcnki
LCBzdGVwMik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgcm93ID0gSW5zcGVjdG9yVGVzdC5m
aW5kUm93KCJvYmplY3QiLCAiQiIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKHRydWUsICEhcm93LCAiXCJCXCIgcm93Iik7Ci0gICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBhbmRSb3cocm93LCBleHBhbmRCKTsKLSAgICAgICAgICAgICAgICBmdW5j
dGlvbiBleHBhbmRCKCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7Ci0gICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYnV0dG9u
c05vZGUsICJubyBidXR0b25zIG5vZGUgZm91bmQhIik7Ci0gICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuY2xpY2tTaG93TW9yZUJ1dHRvbigic2hvd0FsbCIsIGJ1dHRvbnNOb2RlLCBz
dGVwMyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2
YXIgY29sdW1uczsKLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBjb2x1bW5zID0gSW5zcGVjdG9yVGVzdC52aWV3Q29sdW1ucygpOwot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwgc3Rl
cDQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwNCgpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmFyIHJvdyA9IEluc3BlY3RvclRlc3QuZmluZFJv
dygib2JqZWN0IiwgIkIiKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyh0cnVlLCAhIXJvdywgIlwiQlwiIHJvdyIpOwotICAgICAgICAgICAgICAgIHZhciBiSW5z
dGFuY2VSb3cgPSByb3cuY2hpbGRyZW5bMF07Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnRFcXVhbHModHJ1ZSwgISFiSW5zdGFuY2VSb3csICJcIkJcIiBpbnN0YW5jZSByb3ci
KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZFJvdyhiSW5zdGFuY2VSb3cs
IGV4cGFuZEEpOwotICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGV4cGFuZEEocm93KQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcHJvcGVydHlNYXRjaGVy
KGRhdGEpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBkYXRhLm5hbWUgPT09ICJhIiAmJiBkYXRhLnZhbHVlLmNoYXJBdCgwKSA9PT0gIkEiOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHZhciBhUm93ID0gSW5z
cGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCBwcm9wZXJ0eU1hdGNoZXIsIHJvdyk7Ci0gICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYVJvdywg
IlwiYTogQVwiIHJvdyIpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFu
ZFJvdyhhUm93LCBzdGVwNSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICB2YXIgY29sdW1uQ29udGVudHM7Ci0gICAgICAgICAgICBmdW5jdGlvbiBzdGVw
NSgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29sdW1uQ29udGVudHMgPSBJbnNw
ZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNbMF0pOwotICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwgY2xpY2tUd2ljZSk7Ci0gICAgICAg
ICAgICAgICAgZnVuY3Rpb24gY2xpY2tUd2ljZSgpCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrQ29sdW1uKGNvbHVtbnNbMF0sIHN0ZXA2
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0
aW9uIHN0ZXA2KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgbmV3Q29sdW1u
Q29udGVudHMgPSBJbnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNbMF0pOwotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0Q29sdW1uQ29udGVudHNFcXVhbChjb2x1
bW5Db250ZW50cywgbmV3Q29sdW1uQ29udGVudHMpOwotICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQobmV4dCwgMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICBdKTsKLX0KLQotPC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD4KLVRlc3RzIFN1
bW1hcnkgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KLUV4cGFuZGVkIG5vZGVzIG11
c3QgYmUgcHJlc2VydmVkIGFmdGVyIHNvcnRpbmcuCi08L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNo
b3RzLXN1bW1hcnktc2hvdy1hbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNob3ctYWxsLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIyM2E4MWRlMmY3N2RjMGMxOTEyNmFi
NjkzYWQ1NzU4MGVmNzk0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3Rz
LXN1bW1hcnktc2hvdy1hbGwtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCww
IEBACi1UZXN0cyBTdW1tYXJ5IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIFRoZSAi
U2hvdyBBbGwiIGJ1dHRvbiBtdXN0IHNob3cgYWxsIG5vZGVzLgotCi1IZWFwIHByb2ZpbGVyIGlz
IGRpc2FibGVkCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9k
ZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zaG93LWFsbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNob3ctYWxsLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMDM0ZGZhMWJmZWZkYjUyZWU5ZDczYzUz
MTZkMTYzZmUwMzNkYjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1z
dW1tYXJ5LXNob3ctYWxsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi08aHRt
bD4KLTxoZWFkPgotICA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5z
cGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotICA8c2NyaXB0IHNyYz0iZGV0YWlsZWQtaGVhcHNo
b3RzLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0g
ICAgdmFyIGluc3RhbmNlQ291bnQgPSAyNTsKLSAgICBmdW5jdGlvbiBjcmVhdGVIZWFwU25hcHNo
b3QoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBz
aG90KGluc3RhbmNlQ291bnQpOwotICAgIH0KLQotICAgIEluc3BlY3RvclRlc3QucnVuRGV0YWls
ZWRIZWFwc2hvdFRlc3RTdWl0ZShbCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RTaG93QWxsKG5leHQp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hv
dChjcmVhdGVIZWFwU25hcHNob3QsIHN0ZXAxKTsKLQotICAgICAgICAgICAgZnVuY3Rpb24gc3Rl
cDEoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc3dpdGNo
VG9WaWV3KCJTdW1tYXJ5Iiwgc3RlcDIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBm
dW5jdGlvbiBzdGVwMigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmFyIHJvdyA9
IEluc3BlY3RvclRlc3QuZmluZFJvdygib2JqZWN0IiwgIkEiKTsKLSAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIXJvdywgIlwiQVwiIHJvdyIpOwotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93KHJvdywgc3RlcDMpOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwMyhyb3cpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gcm93LmRhdGFbImNvdW50Il07Ci0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoaW5zdGFuY2VDb3VudC50b1N0cmlu
ZygpLCBjb3VudCk7Ci0gICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9y
VGVzdC5maW5kQnV0dG9uc05vZGUocm93KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIik7Ci0gICAg
ICAgICAgICAgICAgdmFyIHdvcmRzID0gYnV0dG9uc05vZGUuc2hvd0FsbC50ZXh0Q29udGVudC5z
cGxpdCgiICIpOwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29yZHMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG1heWJlTnVtYmVyID0gcGFyc2VJ
bnQod29yZHNbaV0sIDEwKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFpc05hTihtYXliZU51
bWJlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cyhpbnN0YW5jZUNvdW50LCBtYXliZU51bWJlciwgYnV0dG9uc05vZGUuc2hvd0FsbC50ZXh0Q29u
dGVudCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
Y2xpY2tTaG93TW9yZUJ1dHRvbigic2hvd0FsbCIsIGJ1dHRvbnNOb2RlLCBzdGVwNCk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA0KHJvdykKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICB2YXIgcm93c1Nob3duID0gSW5zcGVjdG9yVGVzdC5jb3VudERh
dGFSb3dzKHJvdyk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
aW5zdGFuY2VDb3VudCwgcm93c1Nob3duLCAiYWZ0ZXIgc2hvd0FsbCBjbGljayIpOwotICAgICAg
ICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2Rl
KHJvdyk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFsc2Us
ICEhYnV0dG9uc05vZGUsICJidXR0b25zIG5vZGUgZm91bmQgd2hlbiBhbGwgaW5zdGFuY2VzIGFy
ZSBzaG93biEiKTsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KG5leHQsIDApOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgXSk7Ci19Ci0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPHA+Ci1UZXN0cyBTdW1tYXJ5IHZpZXcgb2YgZGV0YWls
ZWQgaGVhcCBzbmFwc2hvdHMuCi1UaGUgJnF1b3Q7U2hvdyBBbGwmcXVvdDsgYnV0dG9uIG11c3Qg
c2hvdyBhbGwgbm9kZXMuCi08L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktc2hv
dy1uZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRh
aWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zaG93LW5leHQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzZjU1YWFlZTA4MGM2MzE5OWZlMmYwNTMxMmYwMDc2NDc4MjZl
MTFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zaG93
LW5leHQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UZXN0cyBT
dW1tYXJ5IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIFJlcGVhdGVkIGNsaWNrcyBv
biAiU2hvdyBOZXh0IiBidXR0b24gbXVzdCBzaG93IGFsbCBub2Rlcy4KLQotSGVhcCBwcm9maWxl
ciBpcyBkaXNhYmxlZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktc2hvdy1uZXh0Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktc2hvdy1uZXh0
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNzQzMDU4M2M0NTc1MGUwMGI1
MzVjYmQ4NWY2OWZkZTFmMDQ2ZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBz
aG90cy1zdW1tYXJ5LXNob3ctbmV4dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBA
QAotPGh0bWw+Ci08aGVhZD4KLSAgPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9ImRldGFpbGVk
LWhlYXBzaG90cy10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3Qo
KQotewotICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjU7Ci0gICAgZnVuY3Rpb24gY3JlYXRlSGVh
cFNuYXBzaG90KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhl
YXBTbmFwc2hvdChpbnN0YW5jZUNvdW50KTsKLSAgICB9Ci0KLSAgICBJbnNwZWN0b3JUZXN0LnJ1
bkRldGFpbGVkSGVhcHNob3RUZXN0U3VpdGUoWwotICAgICAgICBmdW5jdGlvbiB0ZXN0U2hvd05l
eHQobmV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC50YWtlQW5kT3Bl
blNuYXBzaG90KGNyZWF0ZUhlYXBTbmFwc2hvdCwgc3RlcDEpOwotCi0gICAgICAgICAgICBmdW5j
dGlvbiBzdGVwMSgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5zd2l0Y2hUb1ZpZXcoIlN1bW1hcnkiLCBzdGVwMik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2
YXIgcm93ID0gSW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCAiQSIpOwotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhcm93LCAiXCJBXCIgcm93
Iik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBhbmRSb3cocm93LCBzdGVwMyk7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKHJvdykKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgcm93c1Nob3duID0gSW5zcGVjdG9yVGVzdC5j
b3VudERhdGFSb3dzKHJvdyk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRF
cXVhbHModHJ1ZSwgcm93c1Nob3duIDw9IGluc3RhbmNlQ291bnQsICJzaG93biBtb3JlIGluc3Rh
bmNlcyB0aGFuIGNyZWF0ZWQ6ICIgKyByb3dzU2hvd24gKyAiID4gIiArIGluc3RhbmNlQ291bnQp
OwotICAgICAgICAgICAgICAgIGlmIChyb3dzU2hvd24gPCBpbnN0YW5jZUNvdW50KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRv
bnNOb2RlKHJvdyk7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKHRydWUsICEhYnV0dG9uc05vZGUsICJidXR0b25zIG5vZGUiKTsKLSAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja1Nob3dNb3JlQnV0dG9uKCJzaG93TmV4dCIsIGJ1dHRv
bnNOb2RlLCBzdGVwMyk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyb3dzU2hvd24gPT09
IGluc3RhbmNlQ291bnQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0g
SW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUocm93KTsKLSAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFsc2UsICEhYnV0dG9uc05vZGUsICJidXR0b25z
IG5vZGUgZm91bmQgd2hlbiBhbGwgaW5zdGFuY2VzIGFyZSBzaG93biEiKTsKLSAgICAgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICBdKTsKLX0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD4KLVRlc3RzIFN1bW1hcnkgdmlldyBvZiBkZXRhaWxl
ZCBoZWFwIHNuYXBzaG90cy4KLVJlcGVhdGVkIGNsaWNrcyBvbiAmcXVvdDtTaG93IE5leHQmcXVv
dDsgYnV0dG9uIG11c3Qgc2hvdyBhbGwgbm9kZXMuCi08L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNo
b3RzLXN1bW1hcnktc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hv
dHMtc3VtbWFyeS1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmYwYTVmMTc2ZDFlNjY2YTgz
ZGQzZGVkNTc3YzZiNjEzOWNmZmE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFw
c2hvdHMtc3VtbWFyeS1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UZXN0cyBTdW1tYXJ5IHZp
ZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIFNob3duIG5vZGUgY291bnQgbXVzdCBiZSBw
cmVzZXJ2ZWQgYWZ0ZXIgc29ydGluZy4KLQotSGVhcCBwcm9maWxlciBpcyBkaXNhYmxlZAotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNo
b3RzLXN1bW1hcnktc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1h
cnktc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MzUwNWY0MmMxMmNkZjc3ODk3YjM1OTVkZGZlYTM3Mjg2
OGZhNDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNo
b3duLW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsODAgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgPHNjcmlwdCBzcmM9Ii4uLy4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlw
dCBzcmM9ImRldGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjU7Ci0gICAgZnVu
Y3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBJbnNwZWN0
b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNvdW50KTsKLSAgICB9Ci0KLSAgICBJ
bnNwZWN0b3JUZXN0LnJ1bkRldGFpbGVkSGVhcHNob3RUZXN0U3VpdGUoWwotICAgICAgICBmdW5j
dGlvbiB0ZXN0RXhwYW5zaW9uUHJlc2VydmVkV2hlblNvcnRpbmcobmV4dCkKLSAgICAgICAgewot
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC50YWtlQW5kT3BlblNuYXBzaG90KGNyZWF0ZUhlYXBT
bmFwc2hvdCwgc3RlcDEpOwotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwMSgpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zd2l0Y2hUb1ZpZXcoIlN1bW1h
cnkiLCBzdGVwMik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBjb2x1bW5zOwot
ICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNvbHVtbnMgPSBJbnNwZWN0b3JUZXN0LnZpZXdDb2x1bW5zKCk7Ci0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5zWzBdLCBzdGVwMyk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICB2YXIgcm93ID0gSW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCAi
QiIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEh
cm93LCAiXCJCXCIgcm93Iik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBhbmRS
b3cocm93LCBzaG93TmV4dCk7Ci0gICAgICAgICAgICAgICAgZnVuY3Rpb24gc2hvd05leHQocm93
KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2Rl
ID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUocm93KTsKLSAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwgIm5vIGJ1
dHRvbnMgbm9kZSBmb3VuZCEiKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5j
bGlja1Nob3dNb3JlQnV0dG9uKCJzaG93TmV4dCIsIGJ1dHRvbnNOb2RlLCBzdGVwNCk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgbm9kZUNvdW50
OwotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDQocm93KQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIC8vIFRoZXJlIG11c3QgYmUgZW5vdWdoIG5vZGVzIHRvIGhhdmUgc29tZSB1bnJl
dmVhbGVkLgotICAgICAgICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3Qu
ZmluZEJ1dHRvbnNOb2RlKHJvdyk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwgIm5vIGJ1dHRvbnMgbm9kZSBmb3VuZCEiKTsK
LQotICAgICAgICAgICAgICAgIG5vZGVDb3VudCA9IEluc3BlY3RvclRlc3QuY29sdW1uQ29udGVu
dHMoY29sdW1uc1swXSkubGVuZ3RoOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKHRydWUsIG5vZGVDb3VudCA+IDAsICJub2RlQ291bnQgPiAwIik7Ci0KLSAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrQ29sdW1uKGNvbHVtbnNbMF0sIGNsaWNrVHdp
Y2UpOwotICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNsaWNrVHdpY2UoKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1
bW5zWzBdLCBzdGVwNik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBmdW5jdGlvbiBzdGVwNigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
dmFyIG5ld05vZGVDb3VudCA9IEluc3BlY3RvclRlc3QuY29sdW1uQ29udGVudHMoY29sdW1uc1sw
XSkubGVuZ3RoOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKG5v
ZGVDb3VudCwgbmV3Tm9kZUNvdW50KTsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KG5leHQs
IDApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgXSk7Ci19Ci0KLTwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPHA+Ci1UZXN0cyBTdW1tYXJ5IHZp
ZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCi1TaG93biBub2RlIGNvdW50IG11c3QgYmUg
cHJlc2VydmVkIGFmdGVyIHNvcnRpbmcuCi08L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1
bW1hcnktc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktc29ydGluZy1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MzA3NjAxMTk0ZGJmMzVkMDUxYTIzNjBlY2I1Mzgw
MzkyOTZiZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5
LXNvcnRpbmctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UZXN0
cyBzb3J0aW5nIGluIFN1bW1hcnkgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KLQot
SGVhcCBwcm9maWxlciBpcyBkaXNhYmxlZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktc29ydGluZy5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5
LXNvcnRpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRjOTBkMmMzZDA5
MTgxOTEyYjIwOWQ0YWQzMTg3YzM1NzI4YWE2Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWls
ZWQtaGVhcHNob3RzLXN1bW1hcnktc29ydGluZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzUg
KzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9ImRl
dGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjU7Ci0gICAgZnVuY3Rpb24gY3Jl
YXRlSGVhcFNuYXBzaG90KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmNy
ZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNvdW50KTsKLSAgICB9Ci0KLSAgICBJbnNwZWN0b3JU
ZXN0LnJ1bkRldGFpbGVkSGVhcHNob3RUZXN0U3VpdGUoWwotICAgICAgICBmdW5jdGlvbiB0ZXN0
U29ydGluZyhuZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnRha2VB
bmRPcGVuU25hcHNob3QoY3JlYXRlSGVhcFNuYXBzaG90LCBzdGVwMSk7Ci0KLSAgICAgICAgICAg
IGZ1bmN0aW9uIHN0ZXAxKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LnN3aXRjaFRvVmlldygiU3VtbWFyeSIsIHN0ZXAyKTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgdmFyIGNvbHVtbnM7Ci0gICAgICAgICAgICB2YXIgY3VycmVudENvbHVtbjsK
LSAgICAgICAgICAgIHZhciBjdXJyZW50Q29sdW1uT3JkZXI7Ci0KLSAgICAgICAgICAgIGZ1bmN0
aW9uIHN0ZXAyKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb2x1bW5zID0gSW5z
cGVjdG9yVGVzdC52aWV3Q29sdW1ucygpOwotICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW4g
PSAwOwotICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5PcmRlciA9IGZhbHNlOwotICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoc3RlcDMsIDApOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBmdW5jdGlvbiBzdGVwMygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYg
KGN1cnJlbnRDb2x1bW4gPj0gY29sdW1ucy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAg
c2V0VGltZW91dChuZXh0LCAwKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4o
Y29sdW1uc1tjdXJyZW50Q29sdW1uXSwgc3RlcDQpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBmdW5jdGlvbiBzdGVwNChuZXdDb2x1bW5TdGF0ZSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBjb2x1bW5zW2N1cnJlbnRDb2x1bW5dID0gbmV3Q29sdW1uU3RhdGU7Ci0gICAg
ICAgICAgICAgICAgdmFyIGNvbnRlbnRzID0gSW5zcGVjdG9yVGVzdC5jb2x1bW5Db250ZW50cyhj
b2x1bW5zW2N1cnJlbnRDb2x1bW5dKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscyh0cnVlLCAhIWNvbnRlbnRzLmxlbmd0aCwgImNvbHVtbiBjb250ZW50cyIpOwot
ICAgICAgICAgICAgICAgIHZhciBzb3J0VHlwZXMgPSB7IG9iamVjdDogInRleHQiLCBkaXN0YW5j
ZVRvV2luZG93OiAibnVtYmVyIiwgY291bnQ6ICJudW1iZXIiLCBzaGFsbG93U2l6ZTogInNpemUi
LCByZXRhaW5lZFNpemU6ICJzaXplIiB9OwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0RXF1YWxzKHRydWUsICEhc29ydFR5cGVzW2NvbHVtbnNbY3VycmVudENvbHVtbl0uaWRl
bnRpZmllcl0sICJzb3J0IGJ5IGlkZW50aWZpZXIiKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNoZWNrQXJyYXlJc1NvcnRlZChjb250ZW50cywgc29ydFR5cGVzW2NvbHVtbnNbY3Vy
cmVudENvbHVtbl0uaWRlbnRpZmllcl0sIGNvbHVtbnNbY3VycmVudENvbHVtbl0uc29ydCk7Ci0K
LSAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRDb2x1bW5PcmRlcikKLSAgICAgICAgICAgICAg
ICAgICAgY3VycmVudENvbHVtbk9yZGVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbHVtbk9yZGVyID0gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgICAgICsrY3VycmVudENvbHVtbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgc2V0VGltZW91dChzdGVwMywgMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICBdKTsKLX0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+Ci08cD4KLVRlc3RzIHNvcnRpbmcgaW4gU3VtbWFyeSB2aWV3IG9mIGRldGFpbGVkIGhlYXAg
c25hcHNob3RzLgotPC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmY1MWRiZWU2MjhmZDFhMTY0YWUzNTY0NmVhZWY4
N2IzYTM4OTc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtdGVzdC5q
cworKysgL2Rldi9udWxsCkBAIC0xLDM5OCArMCwwIEBACi12YXIgaW5pdGlhbGl6ZV9EZXRhaWxl
ZEhlYXBzaG90VGVzdCA9IGZ1bmN0aW9uKCkgewotCi1JbnNwZWN0b3JUZXN0LnN0YXJ0UHJvZmls
ZXJUZXN0ID0gZnVuY3Rpb24oY2FsbGJhY2spCi17Ci0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5l
bCgicHJvZmlsZXMiKTsKLSAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0hlYXBTbmFwc2hv
dE9iamVjdHNIaWRkZW5Qcm9wZXJ0aWVzLnNldCh0cnVlKTsKLQotICAgIGZ1bmN0aW9uIHByb2Zp
bGVyRW5hYmxlZCgpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUHJv
ZmlsZXIgd2FzIGVuYWJsZWQuIik7Ci0gICAgICAgIC8vIFdlIG1vY2sgb3V0IFByb2ZpbGVyQWdl
bnQgLS0gYXMgRFJUIHJ1bnMgaW4gc2luZ2xlLXByb2Nlc3MgbW9kZSwgSW5zcGVjdG9yCi0gICAg
ICAgIC8vIGFuZCB0ZXN0IHNoYXJlIHRoZSBzYW1lIGhlYXAuIFRha2luZyBhIHNuYXBzaG90IHRh
a2VzIHRvbyBsb25nIGZvciBhIHRlc3QsCi0gICAgICAgIC8vIHNvIHdlIHByb3ZpZGUgc3ludGhl
dGljIHNuYXBzaG90cy4KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5fcGFuZWxSZXNldCA9IEluc3Bl
Y3RvclRlc3Qub3ZlcnJpZGUoV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcywgIl9yZXNldCIs
IGZ1bmN0aW9uKCl7fSwgdHJ1ZSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihX
ZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLCAiX2xvYWRQcm9maWxl
IiwgSW5zcGVjdG9yVGVzdC5fc25hcHNob3RWaWV3U2hvd24sIHRydWUpOwotCi0gICAgICAgIGRl
dGFpbGVkSGVhcFByb2ZpbGVzRW5hYmxlZCgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGRldGFp
bGVkSGVhcFByb2ZpbGVzRW5hYmxlZCgpCi0gICAgewotICAgICAgICAvLyBSZWR1Y2UgdGhlIG51
bWJlciBvZiBwb3B1bGF0ZWQgbm9kZXMgdG8gc3BlZWQgdXAgdGVzdGluZy4KLSAgICAgICAgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnRhaW5tZW50RGF0YUdyaWQucHJvdG90eXBlLl9kZWZh
dWx0UG9wdWxhdGVDb3VudCA9IDEwOwotICAgICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Q29uc3RydWN0b3JzRGF0YUdyaWQucHJvdG90eXBlLl9kZWZhdWx0UG9wdWxhdGVDb3VudCA9IDEw
OwotICAgICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZkRhdGFHcmlkLnByb3RvdHlw
ZS5fZGVmYXVsdFBvcHVsYXRlQ291bnQgPSA1OwotICAgICAgICBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RG9taW5hdG9yc0RhdGFHcmlkLnByb3RvdHlwZS5fZGVmYXVsdFBvcHVsYXRlQ291bnQg
PSAzOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRGV0YWlsZWQgaGVhcCBwcm9m
aWxlcyB3ZXJlIGVuYWJsZWQuIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2Fs
bGJhY2spKCk7Ci0gICAgfQotCi0gICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMu
X3Byb2ZpbGVyRW5hYmxlZCkKLSAgICAgICAgcHJvZmlsZXJFbmFibGVkKCk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IucGFuZWxzLnBy
b2ZpbGVzLCAiX3Byb2ZpbGVyV2FzRW5hYmxlZCIsIHByb2ZpbGVyRW5hYmxlZCk7Ci0gICAgICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMuX3RvZ2dsZVByb2ZpbGluZyhmYWxzZSk7Ci0g
ICAgfQotfTsKLQotSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVByb2ZpbGVyVGVzdCA9IGZ1bmN0aW9u
KCkKLXsKLSAgICAvLyBUaGVyZSBpcyBubyB3YXkgdG8gZGlzYWJsZSBkZXRhaWxlZCBoZWFwIHBy
b2ZpbGVzLgotCi0gICAgZnVuY3Rpb24gY29tcGxldGVUZXN0KCkKLSAgICB7Ci0gICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIlByb2ZpbGVyIHdhcyBkaXNhYmxlZC4iKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21w
bGV0ZVRlc3QoKTsKLSAgICB9Ci0KLSAgICB2YXIgcHJvZmlsZXNQYW5lbCA9IFdlYkluc3BlY3Rv
ci5wYW5lbHMucHJvZmlsZXM7Ci0gICAgaWYgKCFwcm9maWxlc1BhbmVsLl9wcm9maWxlckVuYWJs
ZWQpCi0gICAgICAgIGNvbXBsZXRlVGVzdCgpOwotICAgIGVsc2UgewotICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcywgIl9wcm9maWxl
cldhc0Rpc2FibGVkIiwgY29tcGxldGVUZXN0KTsKLSAgICAgICAgcHJvZmlsZXNQYW5lbC5fdG9n
Z2xlUHJvZmlsaW5nKGZhbHNlKTsKLSAgICB9Ci19OwotCi1JbnNwZWN0b3JUZXN0LnJ1bkRldGFp
bGVkSGVhcHNob3RUZXN0U3VpdGUgPSBmdW5jdGlvbih0ZXN0U3VpdGUpCi17Ci0gICAgaWYgKCFD
YXBhYmlsaXRpZXMuaGVhcFByb2ZpbGVyUHJlc2VudCkgewotICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiSGVhcCBwcm9maWxlciBpcyBkaXNhYmxlZCIpOwotICAgICAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSW5z
cGVjdG9yVGVzdC5fbmV4dFVpZCA9IDE7Ci0gICAgdmFyIHRlc3RTdWl0ZVRlc3RzID0gdGVzdFN1
aXRlLnNsaWNlKCk7Ci0KLSAgICBmdW5jdGlvbiBydW5uZXIoKQotICAgIHsKLSAgICAgICAgaWYg
KCF0ZXN0U3VpdGVUZXN0cy5sZW5ndGgpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29t
cGxldGVQcm9maWxlclRlc3QoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZhciBuZXh0VGVzdCA9IHRlc3RTdWl0ZVRlc3RzLnNoaWZ0KCk7Ci0gICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIlJ1bm5pbmc6ICIgKyAvZnVuY3Rpb25ccyhbXihdKikvLmV4ZWMobmV4dFRlc3QpWzFdKTsK
LSAgICAgICAgSW5zcGVjdG9yVGVzdC5fcGFuZWxSZXNldC5jYWxsKFdlYkluc3BlY3Rvci5wYW5l
bHMucHJvZmlsZXMpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKG5leHRUZXN0KShy
dW5uZXIsIHJ1bm5lcik7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yVGVzdC5zdGFydFByb2ZpbGVy
VGVzdChydW5uZXIpOwotfTsKLQotSW5zcGVjdG9yVGVzdC5hc3NlcnRDb2x1bW5Db250ZW50c0Vx
dWFsID0gZnVuY3Rpb24ocmVmZXJlbmNlLCBhY3R1YWwpCi17Ci0gICAgdmFyIGxlbmd0aCA9IE1h
dGgubWluKHJlZmVyZW5jZS5sZW5ndGgsIGFjdHVhbC5sZW5ndGgpOwotICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxz
KHJlZmVyZW5jZVtpXSwgYWN0dWFsW2ldLCAicm93ICIgKyBpKTsKLSAgICBpZiAocmVmZXJlbmNl
Lmxlbmd0aCA+IGxlbmd0aCkKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImV4dHJh
IHJvd3MgaW4gcmVmZXJlbmNlIGFycmF5OlxuIiArIHJlZmVyZW5jZS5zbGljZShsZW5ndGgpLmpv
aW4oIlxuIikpOwotICAgIGVsc2UgaWYgKGFjdHVhbC5sZW5ndGggPiBsZW5ndGgpCi0gICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJleHRyYSByb3dzIGluIGFjdHVhbCBhcnJheTpcbiIg
KyBhY3R1YWwuc2xpY2UobGVuZ3RoKS5qb2luKCJcbiIpKTsKLX07Ci0KLUluc3BlY3RvclRlc3Qu
Y2hlY2tBcnJheUlzU29ydGVkID0gZnVuY3Rpb24oY29udGVudHMsIHNvcnRUeXBlLCBzb3J0T3Jk
ZXIpCi17Ci0gICAgZnVuY3Rpb24gc2ltcGxlQ29tcGFyYXRvcihhLCBiKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGEgPCBiID8gLTEgOiAoYSA+IGIgPyAxIDogMCk7Ci0gICAgfQotICAgIGZ1bmN0
aW9uIHBhcnNlU2l6ZShzaXplKQotICAgIHsKLSAgICAgICAgaWYgKHNpemUuY2hhckF0KDApID09
PSAiPiIpCi0gICAgICAgICAgICBzaXplID0gc2l6ZS5zdWJzdHJpbmcoMik7Ci0gICAgICAgIHZh
ciBhbW91bnQgPSBwYXJzZUZsb2F0KHNpemUsIDEwKTsKLSAgICAgICAgdmFyIG11bHRpcGxpZXIg
PSB7Ci0gICAgICAgICAgICAiS0IiOiAxMDI0LAotICAgICAgICAgICAgIk1CIjogMTAyNCAqIDEw
MjQKLSAgICAgICAgfVtzaXplLnN1YnN0cmluZyhzaXplLmxlbmd0aCAtIDIpXTsKLSAgICAgICAg
cmV0dXJuIG11bHRpcGxpZXIgPyBhbW91bnQgKiBtdWx0aXBsaWVyIDogYW1vdW50OwotICAgIH0K
LSAgICBmdW5jdGlvbiBleHRyYWN0TmFtZShkYXRhKQotICAgIHsKLSAgICAgICAgZGF0YSA9IEpT
T04ucGFyc2UoZGF0YSk7Ci0gICAgICAgIGlmICghZGF0YS5uYW1lKQotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIk5vIG5hbWUgZmllbGQgaW4gIiArIEpTT04uc3RyaW5naWZ5
KGRhdGEpKTsKLSAgICAgICAgcmV0dXJuIHBhcnNlSW50KGRhdGEubmFtZSwgMTApOwotICAgIH0K
LSAgICBmdW5jdGlvbiBleHRyYWN0SWQoZGF0YSkKLSAgICB7Ci0gICAgICAgIGRhdGEgPSBKU09O
LnBhcnNlKGRhdGEpOwotICAgICAgICBpZiAoIWRhdGEubm9kZUlkKQotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIk5vIG5vZGVJZCBmaWVsZCBpbiAiICsgSlNPTi5zdHJpbmdp
ZnkoZGF0YSkpOwotICAgICAgICByZXR1cm4gcGFyc2VJbnQoZGF0YS5ub2RlSWQsIDEwKTsKLSAg
ICB9Ci0gICAgdmFyIGNvbXBhcmF0b3IgPSB7Ci0gICAgICAgIHRleHQ6IHNpbXBsZUNvbXBhcmF0
b3IsCi0gICAgICAgIG51bWJlcjogZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIHNpbXBsZUNvbXBh
cmF0b3IocGFyc2VJbnQoYSwgMTApLCBwYXJzZUludChiLCAxMCkpOyB9LAotICAgICAgICBzaXpl
OiBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gc2ltcGxlQ29tcGFyYXRvcihwYXJzZVNpemUoYSks
IHBhcnNlU2l6ZShiKSk7IH0sCi0gICAgICAgIG5hbWU6IGZ1bmN0aW9uIChhLCBiKSB7IHJldHVy
biBzaW1wbGVDb21wYXJhdG9yKGV4dHJhY3ROYW1lKGEpLCBleHRyYWN0TmFtZShiKSk7IH0sCi0g
ICAgICAgIGlkOiBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gc2ltcGxlQ29tcGFyYXRvcihleHRy
YWN0SWQoYSksIGV4dHJhY3RJZChiKSk7IH0KLSAgICB9W3NvcnRUeXBlXTsKLSAgICB2YXIgYWNj
ZXB0YWJsZUNvbXBhcmlzb25SZXN1bHQgPSB7Ci0gICAgICAgIGFzY2VuZGluZzogLTEsCi0gICAg
ICAgIGRlc2NlbmRpbmc6IDEKLSAgICB9W3NvcnRPcmRlcl07Ci0KLSAgICBpZiAoIWNvbXBhcmF0
b3IpIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkludmFsaWQgc29ydCB0eXBl
OiAiICsgc29ydFR5cGUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghYWNjZXB0
YWJsZUNvbXBhcmlzb25SZXN1bHQpIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IkludmFsaWQgc29ydCBvcmRlcjogIiArIHNvcnRPcmRlcik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbnRlbnRzLmxlbmd0aCAtIDE7ICsraSkg
ewotICAgICAgICB2YXIgcmVzdWx0ID0gY29tcGFyYXRvcihjb250ZW50c1tpXSwgY29udGVudHNb
aSArIDFdKTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPT0gMCAmJiByZXN1bHQgIT09IGFjY2VwdGFi
bGVDb21wYXJpc29uUmVzdWx0KQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IkVsZW1lbnRzICIgKyBpICsgIiBhbmQgIiArIChpICsgMSkgKyAiIGFyZSBvdXQgb2Ygb3JkZXI6
ICIgKyBjb250ZW50c1tpXSArICIgIiArIGNvbnRlbnRzW2kgKyAxXSArICIgKCIgKyBzb3J0T3Jk
ZXIgKyAiKSIpOwotICAgIH0KLX07Ci0KLUluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4gPSBmdW5j
dGlvbihjb2x1bW4sIGNhbGxiYWNrKQotewotICAgIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5z
YWZlV3JhcChjYWxsYmFjayk7Ci0gICAgdmFyIGNlbGwgPSB0aGlzLl9jdXJyZW50R3JpZCgpLl9o
ZWFkZXJUYWJsZUhlYWRlcnNbY29sdW1uLmlkZW50aWZpZXJdOwotICAgIHZhciBldmVudCA9IHsg
dGFyZ2V0OiB7IGVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWU6IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2VsbDsgfSB9IH07Ci0KLSAgICBmdW5jdGlvbiBzb3J0aW5nQ29tcGxldGUoKQotICAg
IHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5fY3VycmVudEdyaWQoKS5yZW1vdmVFdmVudExpc3Rl
bmVyKCJzb3J0aW5nIGNvbXBsZXRlIiwgc29ydGluZ0NvbXBsZXRlLCB0aGlzKTsKLSAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoY29sdW1uLmlkZW50aWZpZXIsIHRoaXMuX2N1cnJl
bnRHcmlkKCkuc29ydENvbHVtbklkZW50aWZpZXIsICJ1bmV4cGVjdGVkIHNvcnRpbmciKTsKLSAg
ICAgICAgY29sdW1uLnNvcnQgPSB0aGlzLl9jdXJyZW50R3JpZCgpLnNvcnRPcmRlcjsKLSAgICAg
ICAgZnVuY3Rpb24gY2FsbENhbGxiYWNrKCkKLSAgICAgICAgewotICAgICAgICAgICAgY2FsbGJh
Y2soY29sdW1uKTsKLSAgICAgICAgfQotICAgICAgICBzZXRUaW1lb3V0KGNhbGxDYWxsYmFjaywg
MCk7Ci0gICAgfQotICAgIEluc3BlY3RvclRlc3QuX2N1cnJlbnRHcmlkKCkuYWRkRXZlbnRMaXN0
ZW5lcigic29ydGluZyBjb21wbGV0ZSIsIHNvcnRpbmdDb21wbGV0ZSwgdGhpcyk7Ci0gICAgdGhp
cy5fY3VycmVudEdyaWQoKS5fY2xpY2tJbkhlYWRlckNlbGwoZXZlbnQpOwotfTsKLQotSW5zcGVj
dG9yVGVzdC5jbGlja1Nob3dNb3JlQnV0dG9uID0gZnVuY3Rpb24oYnV0dG9uTmFtZSwgcm93LCBj
YWxsYmFjaykKLXsKLSAgICBjYWxsYmFjayA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJh
Y2spOwotICAgIHZhciBwYXJlbnQgPSByb3cucGFyZW50OwotICAgIGZ1bmN0aW9uIHBvcHVsYXRl
Q29tcGxldGUoKQotICAgIHsKLSAgICAgICAgcGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBv
cHVsYXRlIGNvbXBsZXRlIiwgcG9wdWxhdGVDb21wbGV0ZSwgdGhpcyk7Ci0gICAgICAgIGZ1bmN0
aW9uIGNhbGxDYWxsYmFjaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHBhcmVu
dCk7Ci0gICAgICAgIH0KLSAgICAgICAgc2V0VGltZW91dChjYWxsQ2FsbGJhY2ssIDApOwotICAg
IH0KLSAgICBwYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9wdWxhdGUgY29tcGxldGUiLCBwb3B1
bGF0ZUNvbXBsZXRlLCB0aGlzKTsKLSAgICByb3dbYnV0dG9uTmFtZV0uY2xpY2soKTsKLX07Ci0K
LUluc3BlY3RvclRlc3QuY29sdW1uQ29udGVudHMgPSBmdW5jdGlvbihjb2x1bW4sIHJvdykKLXsK
LSAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgdmFyIHBhcmVudCA9IHJvdyB8fCB0aGlzLl9jdXJy
ZW50R3JpZCgpOwotICAgIGZvciAodmFyIG5vZGUgPSBwYXJlbnQuY2hpbGRyZW5bMF07IG5vZGU7
IG5vZGUgPSBub2RlLnRyYXZlcnNlTmV4dE5vZGUodHJ1ZSwgcGFyZW50LCB0cnVlKSkgewotICAg
ICAgICBpZiAoIW5vZGUuc2VsZWN0YWJsZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICB2YXIgZGF0YSA9IG5vZGUuZGF0YVtjb2x1bW4uaWRlbnRpZmllcl07Ci0gICAgICAgIGlmICh0
eXBlb2YgZGF0YSA9PT0gIm9iamVjdCIpCi0gICAgICAgICAgICBkYXRhID0gSlNPTi5zdHJpbmdp
ZnkoZGF0YSk7Ci0gICAgICAgIHJlc3VsdC5wdXNoKGRhdGEpOwotICAgIH0KLSAgICByZXR1cm4g
cmVzdWx0OwotfTsKLQotSW5zcGVjdG9yVGVzdC5jb3VudERhdGFSb3dzID0gZnVuY3Rpb24ocm93
LCBmaWx0ZXIpCi17Ci0gICAgdmFyIHJlc3VsdCA9IDA7Ci0gICAgZmlsdGVyID0gZmlsdGVyIHx8
IGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIG5vZGUuc2VsZWN0YWJsZTsgfTsKLSAgICBmb3IgKHZh
ciBub2RlID0gcm93LmNoaWxkcmVuWzBdOyBub2RlOyBub2RlID0gbm9kZS50cmF2ZXJzZU5leHRO
b2RlKHRydWUsIHJvdywgdHJ1ZSkpIHsKLSAgICAgICAgaWYgKGZpbHRlcihub2RlKSkKLSAgICAg
ICAgICAgICsrcmVzdWx0OwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfTsKLQotSW5zcGVj
dG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3QgPSBmdW5jdGlvbihpbnN0YW5jZUNvdW50LCBmaXJz
dElkKQotewotICAgIC8vIE1vY2tpbmcgcmVzdWx0cyBvZiBydW5uaW5nIHRoZSBmb2xsb3dpbmcg
Y29kZToKLSAgICAvLyAKLSAgICAvLyBmdW5jdGlvbiBBKCkgeyB0aGlzLmEgPSB0aGlzOyB9Ci0g
ICAgLy8gZnVuY3Rpb24gQih4KSB7IHRoaXMuYSA9IG5ldyBBKHgpOyB9Ci0gICAgLy8gZm9yICh2
YXIgaSA9IDA7IGkgPCBpbnN0YW5jZUNvdW50OyArK2kpIG5ldyBCKCk7Ci0gICAgLy8gCi0gICAg
Ly8gSW5zdGFuY2VzIG9mIEEgaGF2ZSAxMiBieXRlcyBzaXplLCBpbnN0YW5jZXMgb2YgQiBoYXMg
MTYgYnl0ZXMgc2l6ZS4KLSAgICB2YXIgc2l6ZU9mQSA9IDEyOwotICAgIHZhciBzaXplT2ZCID0g
MTY7ICAKLQotICAgIGZ1bmN0aW9uIGdlbmVyYXRlTm9kZXMoKQotICAgIHsKLSAgICAgICAgdmFy
IG5vZGVzID0gW251bGxdOwotICAgICAgICAvLyBQdXNoIHRoZSAnbWV0YS1yb290JyBub2RlLgot
ICAgICAgICBub2Rlcy5wdXNoKDAsIDAsIDEsIDAsIChzaXplT2ZBICsgc2l6ZU9mQikgKiBpbnN0
YW5jZUNvdW50LCAxLCAxLCA0LCAxLCBudWxsKTsKLSAgICAgICAgLy8gUHVzaCBpbnN0YW5jZXMg
b2YgQSBhbmQgQi4KLSAgICAgICAgdmFyIGluZGV4ZXNPZkIgPSBbXTsKLSAgICAgICAgdmFyIG5l
eHRJZCA9IGZpcnN0SWQgfHwgNTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnN0YW5j
ZUNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIHZhciBpbmRleE9mQSA9IG5vZGVzLmxlbmd0aDsK
LSAgICAgICAgICAgIG5vZGVzLnB1c2goMywgMSwgbmV4dElkKyssIHNpemVPZkEsIHNpemVPZkEs
IG51bGwsIDEsIDIsIDMsIGluZGV4T2ZBKTsKLSAgICAgICAgICAgIHZhciBpbmRleE9mQiA9IG5v
ZGVzLmxlbmd0aDsKLSAgICAgICAgICAgIC8vIFNldCBkb21pbmF0b3Igb2YgQS4KLSAgICAgICAg
ICAgIG5vZGVzW2luZGV4T2ZBICsgNV0gPSBpbmRleE9mQjsKLSAgICAgICAgICAgIG5vZGVzLnB1
c2goMywgMiwgbmV4dElkKyssIHNpemVPZkIsIHNpemVPZkIgKyBzaXplT2ZBLCBudWxsLCAxLCAy
LCAzLCBpbmRleE9mQSk7Ci0gICAgICAgICAgICBpbmRleGVzT2ZCLnB1c2goaW5kZXhPZkIpOwot
ICAgICAgICB9Ci0gICAgICAgIHZhciBpbmRleE9mR0NSb290cyA9IG5vZGVzLmxlbmd0aDsKLSAg
ICAgICAgbm9kZXMucHVzaCgzLCA0LCAzLCAwLCAoc2l6ZU9mQSArIHNpemVPZkIpICogaW5zdGFu
Y2VDb3VudCwgMSwgaW5zdGFuY2VDb3VudCk7Ci0gICAgICAgIC8vIFNldCBkb21pbmF0b3Igb2Yg
Qi4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnN0YW5jZUNvdW50OyArK2kpIHsKLSAg
ICAgICAgICAgIG5vZGVzW2luZGV4ZXNPZkJbaV0gKyA1XSA9IGluZGV4T2ZHQ1Jvb3RzOwotICAg
ICAgICB9Ci0gICAgICAgIC8vIFNldCAoR0Mgcm9vdHMpIGFzIGNoaWxkIG9mIG1ldGEtcm9vdC4K
LSAgICAgICAgbm9kZXNbMTBdID0gaW5kZXhPZkdDUm9vdHM7Ci0gICAgICAgIC8vIFB1c2ggaW5z
dGFuY2VzIG9mIEIgYXMgY2hpbGRyZW4gb2YgR0Mgcm9vdHMuCi0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgaW5zdGFuY2VDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBub2Rlcy5wdXNoKDEs
IGkgKyAxLCBpbmRleGVzT2ZCW2ldKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbm9kZXM7
Ci0gICAgfQotCi0gICAgdmFyIHJlc3VsdCA9IHsKLSAgICAgICAgInNuYXBzaG90Ijoge30sCi0g
ICAgICAgICJub2RlcyI6IGdlbmVyYXRlTm9kZXMoKSwKLSAgICAgICAgInN0cmluZ3MiOiBbIiIs
ICJBIiwgIkIiLCAiYSIsICIoR0Mgcm9vdHMpIl0KLSAgICB9OwotICAgIHJlc3VsdC5ub2Rlc1sw
XSA9IHsKLSAgICAgICAgImZpZWxkcyI6WyJ0eXBlIiwibmFtZSIsImlkIiwic2VsZl9zaXplIiwi
cmV0YWluZWRfc2l6ZSIsImRvbWluYXRvciIsImNoaWxkcmVuX2NvdW50IiwiY2hpbGRyZW4iXSwK
LSAgICAgICAgInR5cGVzIjpbWyJoaWRkZW4iLCJhcnJheSIsInN0cmluZyIsIm9iamVjdCIsImNv
ZGUiLCJjbG9zdXJlIiwicmVnZXhwIiwibnVtYmVyIiwibmF0aXZlIl0sInN0cmluZyIsIm51bWJl
ciIsIm51bWJlciIsIm51bWJlciIsIm51bWJlciIsIm51bWJlciIsewotICAgICAgICAgICAgImZp
ZWxkcyI6WyJ0eXBlIiwibmFtZV9vcl9pbmRleCIsInRvX25vZGUiXSwKLSAgICAgICAgICAgICJ0
eXBlcyI6W1siY29udGV4dCIsImVsZW1lbnQiLCJwcm9wZXJ0eSIsImludGVybmFsIiwiaGlkZGVu
Iiwic2hvcnRjdXQiXSwic3RyaW5nX29yX251bWJlciIsIm5vZGUiXX1dfTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfTsKLQotSW5zcGVjdG9yVGVzdC5leHBhbmRSb3cgPSBmdW5jdGlvbihyb3csIGNh
bGxiYWNrKQotewotICAgIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFj
ayk7Ci0gICAgZnVuY3Rpb24gcG9wdWxhdGVDb21wbGV0ZSgpCi0gICAgewotICAgICAgICByb3cu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9wdWxhdGUgY29tcGxldGUiLCBwb3B1bGF0ZUNvbXBsZXRl
LCB0aGlzKTsKLSAgICAgICAgZnVuY3Rpb24gY2FsbENhbGxiYWNrKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgY2FsbGJhY2socm93KTsKLSAgICAgICAgfQotICAgICAgICBzZXRUaW1lb3V0KGNh
bGxDYWxsYmFjaywgMCk7Ci0gICAgfQotICAgIHJvdy5hZGRFdmVudExpc3RlbmVyKCJwb3B1bGF0
ZSBjb21wbGV0ZSIsIHBvcHVsYXRlQ29tcGxldGUsIHRoaXMpOwotICAgIChmdW5jdGlvbiBleHBh
bmQoKQotICAgIHsKLSAgICAgICAgaWYgKHJvdy5oYXNDaGlsZHJlbikKLSAgICAgICAgICAgIHJv
dy5leHBhbmQoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0VGltZW91dChleHBhbmQs
IDApOwotICAgIH0pKCk7Ci19OwotCi1JbnNwZWN0b3JUZXN0LmZpbmRBbmRFeHBhbmRHQ1Jvb3Rz
ID0gZnVuY3Rpb24oY2FsbGJhY2spCi17Ci0gICAgY2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0LnNh
ZmVXcmFwKGNhbGxiYWNrKTsKLSAgICBmdW5jdGlvbiBwcm9wZXJ0eU1hdGNoZXIoZGF0YSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBkYXRhLnZhbHVlID09PSAiKEdDIHJvb3RzKSI7Ci0gICAgfQot
ICAgIHZhciBnY1Jvb3RzID0gSW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCBwcm9wZXJ0
eU1hdGNoZXIpOwotICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhZ2NSb290
cywgIkdDIHJvb3RzIHJvdyIpOwotICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93KGdjUm9vdHMs
IGNhbGxiYWNrKTsKLX0KLQotSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUgPSBmdW5jdGlv
bihyb3csIHN0YXJ0Tm9kZSkKLXsKLSAgICB2YXIgcmVzdWx0ID0gMDsKLSAgICBmb3IgKHZhciBu
b2RlID0gc3RhcnROb2RlIHx8IHJvdy5jaGlsZHJlblswXTsgbm9kZTsgbm9kZSA9IG5vZGUudHJh
dmVyc2VOZXh0Tm9kZSh0cnVlLCByb3csIHRydWUpKSB7Ci0gICAgICAgIGlmICghbm9kZS5zZWxl
Y3RhYmxlICYmIG5vZGUuc2hvd05leHQpCi0gICAgICAgICAgICByZXR1cm4gbm9kZTsKLSAgICB9
Ci0gICAgcmV0dXJuIG51bGw7Ci19OwotCi1JbnNwZWN0b3JUZXN0LmZpbmRSb3cgPSBmdW5jdGlv
bihjb2x1bW5JZGVudGlmaWVyLCBtYXRjaGVyLCBwYXJlbnQpCi17Ci0gICAgcGFyZW50ID0gcGFy
ZW50IHx8IHRoaXMuX2N1cnJlbnRHcmlkKCk7Ci0gICAgaWYgKHR5cGVvZiBtYXRjaGVyICE9PSAi
ZnVuY3Rpb24iKSB7Ci0gICAgICAgIHZhciB2YWx1ZSA9IG1hdGNoZXI7Ci0gICAgICAgIG1hdGNo
ZXIgPSBmdW5jdGlvbih4KSB7IHJldHVybiB4ID09PSB2YWx1ZTsgfTsKLSAgICB9Ci0gICAgZm9y
ICh2YXIgbm9kZSA9IHBhcmVudC5jaGlsZHJlblswXTsgbm9kZTsgbm9kZSA9IG5vZGUudHJhdmVy
c2VOZXh0Tm9kZSh0cnVlLCBwYXJlbnQsIHRydWUpKSB7Ci0gICAgICAgIGlmIChtYXRjaGVyKG5v
ZGUuZGF0YVtjb2x1bW5JZGVudGlmaWVyXSkpCi0gICAgICAgICAgICByZXR1cm4gbm9kZTsKLSAg
ICB9Ci0gICAgcmV0dXJuIG51bGw7Ci19OwotCi1JbnNwZWN0b3JUZXN0LmZpbmRSb3cyID0gZnVu
Y3Rpb24obWF0Y2hlciwgcGFyZW50KQotewotICAgIHBhcmVudCA9IHBhcmVudCB8fCB0aGlzLl9j
dXJyZW50R3JpZCgpOwotICAgIGZvciAodmFyIG5vZGUgPSBwYXJlbnQuY2hpbGRyZW5bMF07IG5v
ZGU7IG5vZGUgPSBub2RlLnRyYXZlcnNlTmV4dE5vZGUodHJ1ZSwgcGFyZW50LCB0cnVlKSkgewot
ICAgICAgICBpZiAobWF0Y2hlcihub2RlLmRhdGEpKQotICAgICAgICAgICAgcmV0dXJuIG5vZGU7
Ci0gICAgfQotICAgIHJldHVybiBudWxsOwotfTsKLQotSW5zcGVjdG9yVGVzdC5zd2l0Y2hUb1Zp
ZXcgPSBmdW5jdGlvbih0aXRsZSwgY2FsbGJhY2spCi17Ci0gICAgY2FsbGJhY2sgPSBJbnNwZWN0
b3JUZXN0LnNhZmVXcmFwKGNhbGxiYWNrKTsKLSAgICB2YXIgdmlldyA9IFdlYkluc3BlY3Rvci5w
YW5lbHMucHJvZmlsZXMudmlzaWJsZVZpZXc7Ci0gICAgdmlldy5jaGFuZ2VWaWV3KHRpdGxlLCBj
YWxsYmFjayk7Ci19OwotCi1JbnNwZWN0b3JUZXN0LnRha2VBbmRPcGVuU25hcHNob3QgPSBmdW5j
dGlvbihnZW5lcmF0b3IsIGNhbGxiYWNrKQotewotICAgIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVz
dC5zYWZlV3JhcChjYWxsYmFjayk7Ci0gICAgdmFyIHVpZCA9IEluc3BlY3RvclRlc3QuX25leHRV
aWQrKzsKLSAgICB2YXIgcHJvZmlsZSA9IHsgdHlwZUlkOiBXZWJJbnNwZWN0b3IuRGV0YWlsZWRI
ZWFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCwgdWlkOiB1aWQsIHRpdGxlOiBVc2VySW5pdGlhdGVk
UHJvZmlsZU5hbWUgKyAiLiIgKyB1aWQgfTsKLSAgICBmdW5jdGlvbiBwdXNoR2VuZXJhdGVkU25h
cHNob3QodHlwZUlkLCB1aWQpCi0gICAgewotICAgICAgICB2YXIgc25hcHNob3QgPSBnZW5lcmF0
b3IoKTsKLSAgICAgICAgc25hcHNob3Quc25hcHNob3QudHlwZUlkID0gcHJvZmlsZS50eXBlSWQ7
Ci0gICAgICAgIHNuYXBzaG90LnNuYXBzaG90LnRpdGxlID0gcHJvZmlsZS50aXRsZTsKLSAgICAg
ICAgc25hcHNob3Quc25hcHNob3QudWlkID0gcHJvZmlsZS51aWQ7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5wYW5lbHMucHJvZmlsZXMuX2FkZEhlYXBTbmFwc2hvdENodW5rKHVpZCwgSlNPTi5zdHJp
bmdpZnkoc25hcHNob3QpKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5f
ZmluaXNoSGVhcFNuYXBzaG90KHVpZCk7Ci0gICAgfQotICAgIEluc3BlY3RvclRlc3Qub3ZlcnJp
ZGUoUHJvZmlsZXJBZ2VudCwgImdldFByb2ZpbGUiLCBwdXNoR2VuZXJhdGVkU25hcHNob3QpOwot
ICAgIEluc3BlY3RvclRlc3QuX3Rha2VBbmRPcGVuU25hcHNob3RDYWxsYmFjayA9IGNhbGxiYWNr
OwotICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMuYWRkUHJvZmlsZUhlYWRlcihwcm9m
aWxlKTsKLSAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLnNob3dQcm9maWxlKHByb2Zp
bGUpOwotfTsKLQotSW5zcGVjdG9yVGVzdC52aWV3Q29sdW1ucyA9IGZ1bmN0aW9uKCkKLXsKLSAg
ICByZXR1cm4gSW5zcGVjdG9yVGVzdC5fY3VycmVudEdyaWQoKS5fY29sdW1uc0FycmF5OwotfTsK
LQotSW5zcGVjdG9yVGVzdC5fY3VycmVudEdyaWQgPSBmdW5jdGlvbigpCi17Ci0gICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMudmlzaWJsZVZpZXcuZGF0YUdyaWQ7Ci19Owot
Ci1JbnNwZWN0b3JUZXN0Ll9zbmFwc2hvdFZpZXdTaG93biA9IGZ1bmN0aW9uKCkKLXsKLSAgICBp
ZiAoSW5zcGVjdG9yVGVzdC5fdGFrZUFuZE9wZW5TbmFwc2hvdENhbGxiYWNrKSB7Ci0gICAgICAg
IHZhciBjYWxsYmFjayA9IEluc3BlY3RvclRlc3QuX3Rha2VBbmRPcGVuU25hcHNob3RDYWxsYmFj
azsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5fdGFrZUFuZE9wZW5TbmFwc2hvdENhbGxiYWNrID0g
bnVsbDsKLSAgICAgICAgdmFyIGRhdGFHcmlkID0gdGhpcy5kYXRhR3JpZDsKLSAgICAgICAgZnVu
Y3Rpb24gc29ydGluZ0NvbXBsZXRlKCkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YUdyaWQu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigic29ydGluZyBjb21wbGV0ZSIsIHNvcnRpbmdDb21wbGV0ZSwg
bnVsbCk7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICB9Ci0gICAgICAgIGRhdGFH
cmlkLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY29tcGxldGUiLCBzb3J0aW5nQ29tcGxldGUs
IG51bGwpOwotICAgIH0KLX07Ci0KLX07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21wYXJpc29uLWV4cGFuc2lvbi1wcmVzZXJ2ZWQt
d2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxl
ci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tZXhwYW5zaW9uLXByZXNlcnZlZC13aGVuLXNvcnRp
bmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ZTIwNzZmNzUwZGEzYzIzYjIyNzYwMjA2YTU2
MjVkNzA0MDgzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21wYXJpc29uLWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1z
b3J0aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Rlc3RzIENvbXBhcmlzb24gdmll
dyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gRXhwYW5kZWQgbm9kZXMgbXVzdCBiZSBwcmVz
ZXJ2ZWQgYWZ0ZXIgc29ydGluZy4KKworSGVhcCBwcm9maWxlciBpcyBkaXNhYmxlZAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21w
YXJpc29uLWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21wYXJpc29uLWV4cGFuc2lvbi1w
cmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjk0ZDc0ZmU3YTJiNzczZmIx
ZjhhMTMwODIyNzBmY2UyNmJiNjFiYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tZXhwYW5zaW9uLXByZXNl
cnZlZC13aGVuLXNvcnRpbmcuaHRtbApAQCAtMCwwICsxLDEzMiBAQAorPGh0bWw+Cis8aGVhZD4K
KyAgPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9ImhlYXAtc25hcHNob3QtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgaW5zdGFuY2VD
b3VudCA9IDI0OworICAgIGZ1bmN0aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdEEoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90KGluc3RhbmNlQ291
bnQsIDUpOworICAgIH0KKyAgICBmdW5jdGlvbiBjcmVhdGVIZWFwU25hcHNob3RCKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5j
ZUNvdW50ICsgMSwgNSArIGluc3RhbmNlQ291bnQpOworICAgIH0KKworICAgIEluc3BlY3RvclRl
c3QucnVuSGVhcFNuYXBzaG90VGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVzdEV4cGFu
c2lvblByZXNlcnZlZFdoZW5Tb3J0aW5nKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3RBLCBjcmVh
dGVTbmFwc2hvdEIpOworICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlU25hcHNob3RCKCkgewor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVI
ZWFwU25hcHNob3RCLCBzdGVwMSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIHN0ZXAxKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LnN3aXRjaFRvVmlldygiQ29tcGFyaXNvbiIsIHN0ZXAyKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHZhciByb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIsICJCIik7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFyb3csICJcIkJcIiBy
b3ciKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZFJvdyhyb3csIGV4cGFu
ZEIpOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGV4cGFuZEIoKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5m
aW5kQnV0dG9uc05vZGUocm93KTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwgIm5vIGJ1dHRvbnMgbm9kZSBmb3VuZCEi
KTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja1Nob3dNb3JlQnV0dG9u
KCJzaG93QWxsIiwgYnV0dG9uc05vZGUsIHN0ZXAzKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB2YXIgcm93ID0gSW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3Qi
LCAiQiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUs
ICEhcm93LCAiXCJCXCIgcm93Iik7CisgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0g
SW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUocm93KTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAibm8gYnV0dG9ucyBu
b2RlIGZvdW5kISIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tTaG93TW9y
ZUJ1dHRvbigic2hvd0FsbCIsIGJ1dHRvbnNOb2RlLCBzdGVwNCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciBjb2x1bW5zOworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDQoKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBJbnNwZWN0b3JUZXN0LnZp
ZXdDb2x1bW5zKCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihj
b2x1bW5zWzBdLCBzdGVwNSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHN0ZXA1KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgcm93ID0gSW5zcGVj
dG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCAiQiIpOworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhcm93LCAiXCJCXCIgcm93Iik7CisgICAgICAgICAg
ICAgICAgdmFyIGJJbnN0YW5jZVJvdyA9IHJvdy5jaGlsZHJlblswXTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJJbnN0YW5jZVJvdywgIlwiQlwi
IGluc3RhbmNlIHJvdyIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93
KGJJbnN0YW5jZVJvdywgZXhwYW5kQSk7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gZXhwYW5k
QShyb3cpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBw
cm9wZXJ0eU1hdGNoZXIoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGRhdGEubmFtZSA9PT0gImEiICYmIGRhdGEudmFsdWUuY2hhckF0
KDApID09PSAiQSI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
dmFyIGFSb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIsIHByb3BlcnR5TWF0Y2hl
ciwgcm93KTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
dHJ1ZSwgISFhUm93LCAiXCJhOiBBXCIgcm93Iik7CisgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwYW5kUm93KGFSb3csIHN0ZXA2KTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA2KCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB2YXIgcm93ID0gSW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3Qi
LCAiQiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUs
ICEhcm93LCAiXCJCXCIgcm93Iik7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gZGVsZXRlZE5v
ZGVNYXRjaGVyKGRhdGEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZGF0YS5yZW1vdmVkQ291bnQgJiYgZGF0YS5vYmplY3QudmFsdWUuY2hhckF0KDApID09
PSAiQiI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhciBiSW5zdGFuY2VS
b3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3cyKGRlbGV0ZWROb2RlTWF0Y2hlciwgcm93KTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJJbnN0YW5j
ZVJvdywgIlwiQlwiIGluc3RhbmNlIHJvdyIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwYW5kUm93KGJJbnN0YW5jZVJvdywgZXhwYW5kQSk7CisgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gZXhwYW5kQShyb3cpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbiBwcm9wZXJ0eU1hdGNoZXIoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubmFtZSA9PT0gImEiICYmIGRhdGEu
dmFsdWUuY2hhckF0KDApID09PSAiQSI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgdmFyIGFSb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIsIHBy
b3BlcnR5TWF0Y2hlciwgcm93KTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHModHJ1ZSwgISFhUm93LCAiXCJhOiBBXCIgcm93Iik7CisgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93KGFSb3csIHN0ZXA3KTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBjb2x1bW5Db250ZW50czsK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA3KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjb2x1bW5Db250ZW50cyA9IEluc3BlY3RvclRlc3QuY29sdW1uQ29udGVudHMoY29sdW1u
c1swXSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5z
WzBdLCBjbGlja1R3aWNlKTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBjbGlja1R3aWNlKCkK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xp
Y2tDb2x1bW4oY29sdW1uc1swXSwgc3RlcDgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDgoKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHZhciBuZXdDb2x1bW5Db250ZW50cyA9IEluc3BlY3RvclRlc3QuY29sdW1u
Q29udGVudHMoY29sdW1uc1swXSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRDb2x1bW5Db250ZW50c0VxdWFsKGNvbHVtbkNvbnRlbnRzLCBuZXdDb2x1bW5Db250ZW50cyk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIF0pOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgQ29tcGFyaXNvbiB2aWV3IG9mIGRldGFpbGVkIGhlYXAg
c25hcHNob3RzLgorRXhwYW5kZWQgbm9kZXMgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgc29ydGlu
Zy4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc2hvdy1hbGwtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFy
aXNvbi1zaG93LWFsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFkZGZjNWUyYjJjMTg2YjM2
ZDg4ODUzNjE0MjliOGUxMTgwZWExNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc2hvdy1hbGwtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGVzdHMgQ29tcGFyaXNvbiB2aWV3IG9mIGRldGFpbGVk
IGhlYXAgc25hcHNob3RzLiBUaGUgIlNob3cgQWxsIiBidXR0b24gbXVzdCBzaG93IGFsbCBub2Rl
cy4KKworSGVhcCBwcm9maWxlciBpcyBkaXNhYmxlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21wYXJpc29uLXNob3ctYWxsLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21wYXJp
c29uLXNob3ctYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODNiZGY4N2NkOWU3MjlkZWMwYTgxZWMxM2Zk
Yzg1NDQwODI0YzUwOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
cm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc2hvdy1hbGwuaHRtbApAQCAtMCwwICsx
LDk0IEBACis8aHRtbD4KKzxoZWFkPgorICA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iaGVh
cC1zbmFwc2hvdC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjQ7CisgICAgZnVuY3Rpb24gY3JlYXRlSGVh
cFNuYXBzaG90QSgpCisgICAgeworICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5jcmVhdGVI
ZWFwU25hcHNob3QoaW5zdGFuY2VDb3VudCwgNSk7CisgICAgfQorICAgIGZ1bmN0aW9uIGNyZWF0
ZUhlYXBTbmFwc2hvdEIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuY3Jl
YXRlSGVhcFNuYXBzaG90KGluc3RhbmNlQ291bnQgKyAxLCA1ICsgaW5zdGFuY2VDb3VudCk7Cisg
ICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5ydW5IZWFwU25hcHNob3RUZXN0U3VpdGUoWworICAg
ICAgICBmdW5jdGlvbiB0ZXN0U2hvd0FsbChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LnRha2VBbmRPcGVuU25hcHNob3QoY3JlYXRlSGVhcFNuYXBzaG90QSwgY3Jl
YXRlU25hcHNob3RCKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZVNuYXBzaG90QigpIHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnRha2VBbmRPcGVuU25hcHNob3QoY3JlYXRl
SGVhcFNuYXBzaG90Qiwgc3RlcDEpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5j
dGlvbiBzdGVwMSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5zd2l0Y2hUb1ZpZXcoIkNvbXBhcmlzb24iLCBzdGVwMik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICB2YXIgcm93ID0gSW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCAiQSIpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhcm93LCAiXCJBXCIg
cm93Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBhbmRSb3cocm93LCBzdGVw
Myk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBjb3VudEE7CisgICAgICAgICAg
ICBmdW5jdGlvbiBzdGVwMyhyb3cpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY291
bnRBID0gcm93LmRhdGFbImFkZGVkQ291bnQiXTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscyh0cnVlLCBjb3VudEEgPiAwLCAiY291bnRBID4gMCIpOworICAgICAg
ICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2Rl
KHJvdyk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwg
ISFidXR0b25zTm9kZSwgImJ1dHRvbnMgbm9kZSAoYWRkZWQpIik7CisgICAgICAgICAgICAgICAg
dmFyIHdvcmRzID0gYnV0dG9uc05vZGUuc2hvd0FsbC50ZXh0Q29udGVudC5zcGxpdCgiICIpOwor
ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29yZHMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIG1heWJlTnVtYmVyID0gcGFyc2VJbnQod29yZHNbaV0s
IDEwKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc05hTihtYXliZU51bWJlcikpCisgICAg
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhjb3VudEEsIHdv
cmRzW2ldLCBidXR0b25zTm9kZS5zaG93QWxsLnRleHRDb250ZW50KTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja1Nob3dNb3JlQnV0dG9uKCJz
aG93QWxsIiwgYnV0dG9uc05vZGUsIHN0ZXA0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIGNvdW50QjsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA0KHJvdykKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgcm93c1Nob3duID0gSW5zcGVjdG9yVGVzdC5jb3Vu
dERhdGFSb3dzKHJvdywgZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gbm9kZS5kYXRhLmFkZGVkQ291
bnQ7IH0pOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGNvdW50
QSwgcm93c1Nob3duLnRvU3RyaW5nKCksICJhZnRlciBzaG93QWxsIGNsaWNrIDEiKTsKKworICAg
ICAgICAgICAgICAgIGNvdW50QiA9IHJvdy5kYXRhWyJyZW1vdmVkQ291bnQiXTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCBjb3VudEIgPiAwLCAiY291
bnRCID4gMCIpOworICAgICAgICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRl
c3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwgImJ1dHRvbnMgbm9kZSAoZGVsZXRlZCki
KTsKKyAgICAgICAgICAgICAgICB2YXIgd29yZHMgPSBidXR0b25zTm9kZS5zaG93QWxsLnRleHRD
b250ZW50LnNwbGl0KCIgIik7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3
b3Jkcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgbWF5YmVOdW1iZXIg
PSBwYXJzZUludCh3b3Jkc1tpXSwgMTApOworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFO
KG1heWJlTnVtYmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKGNvdW50Qiwgd29yZHNbaV0sIGJ1dHRvbnNOb2RlLnNob3dBbGwudGV4dENvbnRl
bnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNs
aWNrU2hvd01vcmVCdXR0b24oInNob3dBbGwiLCBidXR0b25zTm9kZSwgc3RlcDUpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNShyb3cpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgdmFyIHJvd3NTaG93biA9IEluc3BlY3RvclRlc3QuY291bnREYXRh
Um93cyhyb3csIGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIG5vZGUuZGF0YS5yZW1vdmVkQ291bnQ7
IH0pOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGNvdW50Qiwg
cm93c1Nob3duLnRvU3RyaW5nKCksICJhZnRlciBzaG93QWxsIGNsaWNrIDIiKTsKKyAgICAgICAg
ICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShy
b3cpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCAh
IWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIGZvdW5kIGFmdGVyIGFsbCByb3dzIHNob3duIik7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIF0pOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgQ29tcGFyaXNvbiB2aWV3IG9mIGRldGFpbGVkIGhlYXAg
c25hcHNob3RzLgorVGhlICZxdW90O1Nob3cgQWxsJnF1b3Q7IGJ1dHRvbiBtdXN0IHNob3cgYWxs
IG5vZGVzLgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1zaG93LW5leHQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3Qt
Y29tcGFyaXNvbi1zaG93LW5leHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1N2UxYWI0MTk5
MWY0YThmZWU4NTFjM2UzZmM3MjBiMGZjYzg1MjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21wYXJpc29uLXNob3ctbmV4
dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUZXN0cyBDb21wYXJpc29uIHZpZXcgb2Yg
ZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIFJlcGVhdGVkIGNsaWNrcyBvbiAiU2hvdyBOZXh0IiBi
dXR0b24gbXVzdCBzaG93IGFsbCBub2Rlcy4KKworSGVhcCBwcm9maWxlciBpcyBkaXNhYmxlZAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hv
dC1jb21wYXJpc29uLXNob3ctbmV4dC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2Zp
bGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1zaG93LW5leHQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
YjE2NGUxNjExYzA1MGQ5MzY1MDlhNzlmYjFjOWY3NDM0ZjI3OGY4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNv
bi1zaG93LW5leHQuaHRtbApAQCAtMCwwICsxLDc5IEBACis8aHRtbD4KKzxoZWFkPgorICA8c2Ny
aXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorICA8c2NyaXB0IHNyYz0iaGVhcC1zbmFwc2hvdC10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBpbnN0YW5jZUNvdW50ID0g
MjQ7CisgICAgZnVuY3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90QSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3QoaW5zdGFuY2VDb3VudCwgNSk7
CisgICAgfQorICAgIGZ1bmN0aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdEIoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90KGluc3RhbmNlQ291bnQg
KyAxLCA1ICsgaW5zdGFuY2VDb3VudCk7CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5ydW5I
ZWFwU25hcHNob3RUZXN0U3VpdGUoWworICAgICAgICBmdW5jdGlvbiB0ZXN0U2hvd05leHQobmV4
dCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC50YWtlQW5kT3BlblNuYXBz
aG90KGNyZWF0ZUhlYXBTbmFwc2hvdEEsIGNyZWF0ZVNuYXBzaG90Qik7CisgICAgICAgICAgICBm
dW5jdGlvbiBjcmVhdGVTbmFwc2hvdEIoKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC50YWtlQW5kT3BlblNuYXBzaG90KGNyZWF0ZUhlYXBTbmFwc2hvdEIsIHN0ZXAxKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc3dpdGNoVG9WaWV3KCJDb21wYXJpc29uIiwg
c3RlcDIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHJvdyA9IEluc3BlY3RvclRlc3QuZmlu
ZFJvdygib2JqZWN0IiwgIkEiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dEVxdWFscyh0cnVlLCAhIXJvdywgIlwiQVwiIHJvdyIpOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwYW5kUm93KHJvdywgc3RlcDMpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBmdW5jdGlvbiBzdGVwMyhyb3cpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUm93Q291bnRBID0gcGFyc2VJbnQocm93LmRhdGFbImFkZGVkQ291bnQiXSk7
CisgICAgICAgICAgICAgICAgdmFyIHJvd3NTaG93biA9IEluc3BlY3RvclRlc3QuY291bnREYXRh
Um93cyhyb3csIGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIG5vZGUuZGF0YS5hZGRlZENvdW50OyB9
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCByb3dz
U2hvd24gPD0gZXhwZWN0ZWRSb3dDb3VudEEsICJzaG93biBtb3JlIGluc3RhbmNlcyB0aGFuIGNy
ZWF0ZWQ6ICIgKyByb3dzU2hvd24gKyAiID4gIiArIGV4cGVjdGVkUm93Q291bnRBKTsKKyAgICAg
ICAgICAgICAgICBpZiAocm93c1Nob3duIDwgZXhwZWN0ZWRSb3dDb3VudEEpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05v
ZGUocm93KTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
dHJ1ZSwgISFidXR0b25zTm9kZSwgImJ1dHRvbnMgbm9kZSIpOworICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNsaWNrU2hvd01vcmVCdXR0b24oInNob3dOZXh0IiwgYnV0dG9uc05v
ZGUsIHN0ZXAzKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJvd3NTaG93biA9PT0gZXhw
ZWN0ZWRSb3dDb3VudEEpCisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc3RlcDQuYmlu
ZChudWxsLCByb3cpLCAwKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
c3RlcDQocm93KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBleHBlY3RlZFJv
d0NvdW50QiA9IHBhcnNlSW50KHJvdy5kYXRhWyJyZW1vdmVkQ291bnQiXSk7CisgICAgICAgICAg
ICAgICAgdmFyIHJvd3NTaG93biA9IEluc3BlY3RvclRlc3QuY291bnREYXRhUm93cyhyb3csIGZ1
bmN0aW9uKG5vZGUpIHsgcmV0dXJuIG5vZGUuZGF0YS5yZW1vdmVkQ291bnQ7IH0pOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIHJvd3NTaG93biA8PSBl
eHBlY3RlZFJvd0NvdW50QiwgInNob3duIG1vcmUgaW5zdGFuY2VzIHRoYW4gY3JlYXRlZDogIiAr
IHJvd3NTaG93biArICIgPiAiICsgZXhwZWN0ZWRSb3dDb3VudEIpOworICAgICAgICAgICAgICAg
IGlmIChyb3dzU2hvd24gPCBleHBlY3RlZFJvd0NvdW50QikgeworICAgICAgICAgICAgICAgICAg
ICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOwor
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1
dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIik7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY2xpY2tTaG93TW9yZUJ1dHRvbigic2hvd05leHQiLCBidXR0b25zTm9kZSwgc3RlcDQp
OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocm93c1Nob3duID09PSBleHBlY3RlZFJvd0Nv
dW50QikgeworICAgICAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JU
ZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscyhmYWxzZSwgISFidXR0b25zTm9kZSwgImJ1dHRvbnMgbm9kZSBmb3Vu
ZCBhZnRlciBhbGwgcm93cyBzaG93biIpOworICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KG5leHQsIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIF0pOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KKzxwPgorVGVzdHMgQ29tcGFyaXNvbiB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3Rz
LgorUmVwZWF0ZWQgY2xpY2tzIG9uICZxdW90O1Nob3cgTmV4dCZxdW90OyBidXR0b24gbXVzdCBz
aG93IGFsbCBub2Rlcy4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc2hvd24t
bm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc2hvd24tbm9k
ZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
NzkwOTc2NDEwNWFiZTRkOTkxNDFkMzhjMTZjODBkYWNhMjNkMGUxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNv
bi1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNCBAQAorVGVzdHMgQ29tcGFyaXNvbiB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25h
cHNob3RzLiBTaG93biBub2RlIGNvdW50IG11c3QgYmUgcHJlc2VydmVkIGFmdGVyIHNvcnRpbmcu
CisKK0hlYXAgcHJvZmlsZXIgaXMgZGlzYWJsZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1zaG93bi1ub2RlLWNv
dW50LXByZXNlcnZlZC13aGVuLXNvcnRpbmcuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
cm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2
ZWQtd2hlbi1zb3J0aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTEzN2VkOTg3OTNmMDM2MmJjZjE3YWI3
Y2NjMDZjODc5ZWFmNDMwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc2hvd24tbm9kZS1jb3VudC1wcmVz
ZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwKQEAgLTAsMCArMSw5OCBAQAorPGh0bWw+Cis8aGVhZD4K
KyAgPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9ImhlYXAtc25hcHNob3QtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgaW5zdGFuY2VD
b3VudCA9IDI0OworICAgIGZ1bmN0aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdEEoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90KGluc3RhbmNlQ291
bnQsIDUpOworICAgIH0KKyAgICBmdW5jdGlvbiBjcmVhdGVIZWFwU25hcHNob3RCKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5j
ZUNvdW50ICsgMSwgNSArIGluc3RhbmNlQ291bnQpOworICAgIH0KKworICAgIEluc3BlY3RvclRl
c3QucnVuSGVhcFNuYXBzaG90VGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVzdEV4cGFu
c2lvblByZXNlcnZlZFdoZW5Tb3J0aW5nKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3RBLCBjcmVh
dGVTbmFwc2hvdEIpOworICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlU25hcHNob3RCKCkgewor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVI
ZWFwU25hcHNob3RCLCBzdGVwMSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIHN0ZXAxKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LnN3aXRjaFRvVmlldygiQ29tcGFyaXNvbiIsIHN0ZXAyKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIGNvbHVtbnM7CisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY29sdW1ucyA9IEluc3BlY3RvclRlc3Qudmlld0Nv
bHVtbnMoKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrQ29sdW1uKGNvbHVt
bnNbMF0sIHN0ZXAzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3Rl
cDMoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciByb3cgPSBJbnNwZWN0b3JU
ZXN0LmZpbmRSb3coIm9iamVjdCIsICJCIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnRFcXVhbHModHJ1ZSwgISFyb3csICJcIkJcIiByb3ciKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGFuZFJvdyhyb3csIHNob3dOZXh0KTsKKyAgICAgICAgICAgICAg
ICBmdW5jdGlvbiBzaG93TmV4dChyb3cpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShy
b3cpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVl
LCAhIWJ1dHRvbnNOb2RlLCAibm8gYnV0dG9ucyBub2RlIGZvdW5kISIpOworICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrU2hvd01vcmVCdXR0b24oInNob3dOZXh0IiwgYnV0
dG9uc05vZGUsIHN0ZXA0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICB2YXIgcm93ID0gSW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCAiQiIpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhcm93LCAiXCJCXCIg
cm93Iik7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gZGVsZXRlZE5vZGVNYXRjaGVyKGRhdGEp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5yZW1v
dmVkQ291bnQgJiYgZGF0YS5vYmplY3QudmFsdWUuY2hhckF0KDApID09PSAiQiI7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhciBiSW5zdGFuY2VSb3cgPSBJbnNwZWN0b3JU
ZXN0LmZpbmRSb3cyKGRlbGV0ZWROb2RlTWF0Y2hlciwgcm93KTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJJbnN0YW5jZVJvdywgIlwiQlwiIGlu
c3RhbmNlIHJvdyIpOworICAgICAgICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3Rv
clRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdywgYkluc3RhbmNlUm93KTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAibm8gYnV0
dG9ucyBub2RlIGZvdW5kISIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tT
aG93TW9yZUJ1dHRvbigic2hvd05leHQiLCBidXR0b25zTm9kZSwgc3RlcDUpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgbm9kZUNvdW50OworICAgICAgICAgICAgZnVuY3Rpb24g
c3RlcDUocm93KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG5vZGVDb3VudCA9IElu
c3BlY3RvclRlc3QuY29sdW1uQ29udGVudHMoY29sdW1uc1swXSkubGVuZ3RoOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIG5vZGVDb3VudCA+IDAsICJu
b2RlQ291bnQgPiAwIik7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrQ29s
dW1uKGNvbHVtbnNbMF0sIGNsaWNrVHdpY2UpOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNs
aWNrVHdpY2UoKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5zWzBdLCBzdGVwNik7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNigpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdmFyIG5ld05vZGVDb3VudCA9IEluc3BlY3RvclRlc3Qu
Y29sdW1uQ29udGVudHMoY29sdW1uc1swXSkubGVuZ3RoOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKG5vZGVDb3VudCwgbmV3Tm9kZUNvdW50KTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KG5leHQsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgXSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgorPHA+CitUZXN0cyBDb21wYXJpc29uIHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMu
CitTaG93biBub2RlIGNvdW50IG11c3QgYmUgcHJlc2VydmVkIGFmdGVyIHNvcnRpbmcuCis8L3A+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21wYXJpc29uLXNvcnRpbmctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1zb3J0
aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzZkNjU0ZDY5NjUzYTFmNDQwMzhlMjUyMzBj
NWVhZTkzODM2N2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1zb3J0aW5nLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDQgQEAKK1Rlc3RzIHNvcnRpbmcgaW4gQ29tcGFyaXNvbiB2aWV3IG9mIGRldGFpbGVk
IGhlYXAgc25hcHNob3RzLgorCitIZWFwIHByb2ZpbGVyIGlzIGRpc2FibGVkCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlz
b24tc29ydGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25h
cHNob3QtY29tcGFyaXNvbi1zb3J0aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI0ZWQyNmRkMjA1ZmQ1
N2Q2YjUzMGQ3MTdiMzVjNzY0Nzk2N2ZjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc29ydGluZy5odG1s
CkBAIC0wLDAgKzEsODQgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CisgIDxzY3Jp
cHQgc3JjPSJoZWFwLXNuYXBzaG90LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGluc3RhbmNlQ291bnQgPSAyNDsKKyAgICBmdW5jdGlv
biBjcmVhdGVIZWFwU25hcHNob3RBKCkKKyAgICB7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JU
ZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNvdW50LCA1KTsKKyAgICB9CisgICAgZnVu
Y3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90QigpCisgICAgeworICAgICAgICByZXR1cm4gSW5zcGVj
dG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3QoaW5zdGFuY2VDb3VudCArIDEsIDUgKyBpbnN0YW5j
ZUNvdW50KTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LnJ1bkhlYXBTbmFwc2hvdFRlc3RT
dWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RTb3J0aW5nKG5leHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25h
cHNob3RBLCBjcmVhdGVTbmFwc2hvdEIpOworICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlU25h
cHNob3RCKCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFw
c2hvdChjcmVhdGVIZWFwU25hcHNob3RCLCBzdGVwMSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29tcGFyaXNvbiIsIHN0ZXAy
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGNvbHVtbnM7CisgICAgICAgICAg
ICB2YXIgY3VycmVudENvbHVtbjsKKyAgICAgICAgICAgIHZhciBjdXJyZW50Q29sdW1uT3JkZXI7
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb2x1bW5zID0gSW5zcGVjdG9yVGVzdC52aWV3Q29sdW1ucygpOworICAgICAgICAg
ICAgICAgIGN1cnJlbnRDb2x1bW4gPSAwOworICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5P
cmRlciA9IGZhbHNlOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc3RlcDMsIDApOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb2x1bW4gPj0gY29sdW1ucy5sZW5ndGgpIHsK
KyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1tjdXJyZW50Q29sdW1uXSwgc3RlcDQpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNChuZXdDb2x1bW5TdGF0ZSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb2x1bW5zW2N1cnJlbnRDb2x1bW5dID0g
bmV3Q29sdW1uU3RhdGU7CisgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRzID0gSW5zcGVjdG9y
VGVzdC5jb2x1bW5Db250ZW50cyhjb2x1bW5zW2N1cnJlbnRDb2x1bW5dKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWNvbnRlbnRzLmxlbmd0aCwg
ImNvbHVtbiBjb250ZW50cyIpOworICAgICAgICAgICAgICAgIHZhciBzb3J0VHlwZXMgPSB7IG9i
amVjdDogInRleHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkQ291
bnQ6ICJudW1iZXIiLCByZW1vdmVkQ291bnQ6ICJudW1iZXIiLCBjb3VudERlbHRhOiAibnVtYmVy
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRlZFNpemU6ICJzaXplIiwg
cmVtb3ZlZFNpemU6ICJzaXplIiwgc2l6ZURlbHRhOiAic2l6ZSIgfTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIXNvcnRUeXBlc1tjb2x1bW5zW2N1
cnJlbnRDb2x1bW5dLmlkZW50aWZpZXJdLCAic29ydCBieSBpZGVudGlmaWVyIik7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja0FycmF5SXNTb3J0ZWQoY29udGVudHMsIHNvcnRU
eXBlc1tjb2x1bW5zW2N1cnJlbnRDb2x1bW5dLmlkZW50aWZpZXJdLCBjb2x1bW5zW2N1cnJlbnRD
b2x1bW5dLnNvcnQpOworCisgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50Q29sdW1uT3JkZXIp
CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5PcmRlciA9IHRydWU7CisgICAgICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5PcmRlciA9
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICArK2N1cnJlbnRDb2x1bW47CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc3RlcDMsIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgXSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyBzb3J0aW5nIGluIENvbXBhcmlzb24gdmll
dyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNv
bnRhaW5tZW50LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbnRhaW5tZW50
LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wZjEyMmRlZTdiYjcwNjI5NDUzMTZkODM1NzE3NjA3MTIzOWRlZDhiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29udGFp
bm1lbnQtZXhwYW5zaW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNCBAQAorVGVzdHMgQ29udGFpbm1lbnQgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBz
aG90cy4gRXhwYW5kZWQgbm9kZXMgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgc29ydGluZy4KKwor
SGVhcCBwcm9maWxlciBpcyBkaXNhYmxlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb250YWlubWVudC1leHBhbnNpb24tcHJlc2Vy
dmVkLXdoZW4tc29ydGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hl
YXAtc25hcHNob3QtY29udGFpbm1lbnQtZXhwYW5zaW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmcu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mMTMyNzFhNWM1NjlkZGYwMjc5NGU5MzNiYWIzNDBlMWI1YjllZTJi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAt
c25hcHNob3QtY29udGFpbm1lbnQtZXhwYW5zaW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmcuaHRt
bApAQCAtMCwwICsxLDkwIEBACis8aHRtbD4KKzxoZWFkPgorICA8c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorICA8c2Ny
aXB0IHNyYz0iaGVhcC1zbmFwc2hvdC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjU7CisgICAgZnVuY3Rp
b24gY3JlYXRlSGVhcFNuYXBzaG90KCkKKyAgICB7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JU
ZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNvdW50KTsKKyAgICB9CisKKyAgICBJbnNw
ZWN0b3JUZXN0LnJ1bkhlYXBTbmFwc2hvdFRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRl
c3RFeHBhbnNpb25QcmVzZXJ2ZWRXaGVuU29ydGluZyhuZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnRha2VBbmRPcGVuU25hcHNob3QoY3JlYXRlSGVhcFNuYXBzaG90
LCBzdGVwMSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29udGFpbm1lbnQi
LCBzdGVwMik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBjb2x1bW5zOworICAg
ICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNvbHVtbnMgPSBJbnNwZWN0b3JUZXN0LnZpZXdDb2x1bW5zKCk7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5zWzBdLCBzdGVwMyk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZpbmRBbmRFeHBhbmRHQ1Jvb3RzKHN0ZXA0KTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDQocm93KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmlu
ZEJ1dHRvbnNOb2RlKHJvdyk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRF
cXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwgIm5vIGJ1dHRvbnMgbm9kZSBmb3VuZCEiKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrU2hvd01vcmVCdXR0b24oInNob3dBbGwi
LCBidXR0b25zTm9kZSwgc3RlcDUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5j
dGlvbiBzdGVwNShyb3cpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHJvdyA9
IHJvdy5jaGlsZHJlblswXTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyh0cnVlLCAhIXJvdywgIlwiQlwiIGluc3RhbmNlIHJvdyIpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwYW5kUm93KHJvdywgZXhwYW5kQSk7CisgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gZXhwYW5kQShyb3cpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBmdW5jdGlvbiBwcm9wZXJ0eU1hdGNoZXIoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubmFtZSA9PT0gImEiICYmIGRh
dGEudmFsdWUuY2hhckF0KDApID09PSAiQSI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgdmFyIGFSb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIs
IHByb3BlcnR5TWF0Y2hlciwgcm93KTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnRFcXVhbHModHJ1ZSwgISFhUm93LCAiXCJhOiBBXCIgcm93Iik7CisgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93KGFSb3csIHN0ZXA2KTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBjb2x1bW5Db250ZW50
czsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA2KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb2x1bW5Db250ZW50cyA9IEluc3BlY3RvclRlc3QuY29sdW1uQ29udGVudHMoY29s
dW1uc1swXSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1
bW5zWzBdLCBjbGlja1R3aWNlKTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBjbGlja1R3aWNl
KCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
Y2xpY2tDb2x1bW4oY29sdW1uc1swXSwgc3RlcDcpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDcoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHZhciBuZXdDb2x1bW5Db250ZW50cyA9IEluc3BlY3RvclRlc3QuY29s
dW1uQ29udGVudHMoY29sdW1uc1swXSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRDb2x1bW5Db250ZW50c0VxdWFsKGNvbHVtbkNvbnRlbnRzLCBuZXdDb2x1bW5Db250ZW50
cyk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIF0pOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgQ29udGFpbm1lbnQgdmlldyBvZiBkZXRhaWxlZCBo
ZWFwIHNuYXBzaG90cy4KK0V4cGFuZGVkIG5vZGVzIG11c3QgYmUgcHJlc2VydmVkIGFmdGVyIHNv
cnRpbmcuCis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb250YWlubWVudC1zaG93LWFsbC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1j
b250YWlubWVudC1zaG93LWFsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDMwNmNlNTI0OWRh
ZTMyNmY3NDdhZDVhNDE4NmNmOGQ5ZTQzOGQxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbnRhaW5tZW50LXNob3ctYWxs
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Rlc3RzIENvbnRhaW5tZW50IHZpZXcgb2Yg
ZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIFRoZSAiU2hvdyBBbGwiIGJ1dHRvbiBtdXN0IHNob3cg
YWxsIG5vZGVzLgorCitIZWFwIHByb2ZpbGVyIGlzIGRpc2FibGVkCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbnRhaW5tZW50LXNo
b3ctYWxsLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hv
dC1jb250YWlubWVudC1zaG93LWFsbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkYjBmYTlkNTk1YzFkYzM2
MTBhZTVlYmUzZTcxZWQxNDBkNjExYzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb250YWlubWVudC1zaG93LWFsbC5odG1s
CkBAIC0wLDAgKzEsNjMgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CisgIDxzY3Jp
cHQgc3JjPSJoZWFwLXNuYXBzaG90LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGluc3RhbmNlQ291bnQgPSAyNTsKKyAgICBmdW5jdGlv
biBjcmVhdGVIZWFwU25hcHNob3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvclRl
c3QuY3JlYXRlSGVhcFNuYXBzaG90KGluc3RhbmNlQ291bnQpOworICAgIH0KKworICAgIEluc3Bl
Y3RvclRlc3QucnVuSGVhcFNuYXBzaG90VGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVz
dFNob3dBbGwobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC50YWtl
QW5kT3BlblNuYXBzaG90KGNyZWF0ZUhlYXBTbmFwc2hvdCwgc3RlcDEpOworCisgICAgICAgICAg
ICBmdW5jdGlvbiBzdGVwMSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5zd2l0Y2hUb1ZpZXcoIkNvbnRhaW5tZW50Iiwgc3RlcDIpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5maW5kQW5kRXhwYW5kR0NSb290cyhzdGVwMyk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKHJvdykKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRC
dXR0b25zTm9kZShyb3cpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKHRydWUsICEhYnV0dG9uc05vZGUsICJidXR0b25zIG5vZGUiKTsKKyAgICAgICAgICAgICAg
ICB2YXIgd29yZHMgPSBidXR0b25zTm9kZS5zaG93QWxsLnRleHRDb250ZW50LnNwbGl0KCIgIik7
CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3b3Jkcy5sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgICAgICAgICB2YXIgbWF5YmVOdW1iZXIgPSBwYXJzZUludCh3b3Jkc1tp
XSwgMTApOworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKG1heWJlTnVtYmVyKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGluc3RhbmNl
Q291bnQsIG1heWJlTnVtYmVyLCBidXR0b25zTm9kZS5zaG93QWxsLnRleHRDb250ZW50KTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja1Nob3dN
b3JlQnV0dG9uKCJzaG93QWxsIiwgYnV0dG9uc05vZGUsIHN0ZXA0KTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDQocm93KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHZhciByb3dzU2hvd24gPSBJbnNwZWN0b3JUZXN0LmNvdW50RGF0YVJvd3Mocm93
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhpbnN0YW5jZUNv
dW50LCByb3dzU2hvd24sICJhZnRlciBzaG93QWxsIGNsaWNrIik7CisgICAgICAgICAgICAgICAg
dmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUocm93KTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhmYWxzZSwgISFidXR0b25z
Tm9kZSwgImJ1dHRvbnMgbm9kZSBmb3VuZCB3aGVuIGFsbCBpbnN0YW5jZXMgYXJlIHNob3duISIp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICBdKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3RzIENvbnRhaW5tZW50IHZpZXcgb2YgZGV0YWlsZWQgaGVh
cCBzbmFwc2hvdHMuCitUaGUgJnF1b3Q7U2hvdyBBbGwmcXVvdDsgYnV0dG9uIG11c3Qgc2hvdyBh
bGwgbm9kZXMuCis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb250YWlubWVudC1zaG93LW5leHQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3QtY29udGFpbm1lbnQtc2hvdy1uZXh0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Nzk4YjBh
YjM1MGZhYjAwY2E1MDg0ZTYwNzM1MGE2NGQ4NzJlYmRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29udGFpbm1lbnQtc2hv
dy1uZXh0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Rlc3RzIENvbnRhaW5tZW50IHZp
ZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIFJlcGVhdGVkIGNsaWNrcyBvbiAiU2hvdyBO
ZXh0IiBidXR0b24gbXVzdCBzaG93IGFsbCBub2Rlcy4KKworSGVhcCBwcm9maWxlciBpcyBkaXNh
YmxlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1z
bmFwc2hvdC1jb250YWlubWVudC1zaG93LW5leHQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbnRhaW5tZW50LXNob3ctbmV4dC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNkOGFhMDg2NjljNzkyZWRiZTllZWUwM2IxM2QwOGU2NjMyZmFiZjUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1j
b250YWlubWVudC1zaG93LW5leHQuaHRtbApAQCAtMCwwICsxLDU2IEBACis8aHRtbD4KKzxoZWFk
PgorICA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iaGVhcC1zbmFwc2hvdC10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBpbnN0YW5j
ZUNvdW50ID0gMjU7CisgICAgZnVuY3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNv
dW50KTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LnJ1bkhlYXBTbmFwc2hvdFRlc3RTdWl0
ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RTaG93TmV4dChuZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LnRha2VBbmRPcGVuU25hcHNob3QoY3JlYXRlSGVhcFNuYXBz
aG90LCBzdGVwMSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29udGFpbm1l
bnQiLCBzdGVwMik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAy
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZpbmRBbmRF
eHBhbmRHQ1Jvb3RzKHN0ZXAzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gc3RlcDMocm93KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciByb3dzU2hv
d24gPSBJbnNwZWN0b3JUZXN0LmNvdW50RGF0YVJvd3Mocm93KTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCByb3dzU2hvd24gPD0gaW5zdGFuY2VDb3Vu
dCwgInNob3duIG1vcmUgaW5zdGFuY2VzIHRoYW4gY3JlYXRlZDogIiArIHJvd3NTaG93biArICIg
PiAiICsgaW5zdGFuY2VDb3VudCk7CisgICAgICAgICAgICAgICAgaWYgKHJvd3NTaG93biA8IGlu
c3RhbmNlQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5z
cGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUocm93KTsKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwgImJ1dHRvbnMgbm9k
ZSIpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrU2hvd01vcmVCdXR0
b24oInNob3dOZXh0IiwgYnV0dG9uc05vZGUsIHN0ZXAzKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKHJvd3NTaG93biA9PT0gaW5zdGFuY2VDb3VudCkgeworICAgICAgICAgICAgICAgICAg
ICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOwor
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhmYWxzZSwgISFi
dXR0b25zTm9kZSwgImJ1dHRvbnMgbm9kZSBmb3VuZCB3aGVuIGFsbCBpbnN0YW5jZXMgYXJlIHNo
b3duISIpOworICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KG5leHQsIDApOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0pOworfQorCis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgQ29u
dGFpbm1lbnQgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KK1JlcGVhdGVkIGNsaWNr
cyBvbiAmcXVvdDtTaG93IE5leHQmcXVvdDsgYnV0dG9uIG11c3Qgc2hvdyBhbGwgbm9kZXMuCis8
L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb250YWlubWVudC1zaG93bi1ub2RlLWNvdW50LXByZXNl
cnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b2ZpbGVyL2hlYXAtc25hcHNob3QtY29udGFpbm1lbnQtc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2
ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjgwODk4Nzg4YWRhNmNh
MzA5OTAwMjE5OTUyNjVhM2ZlYTcyZDUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29udGFpbm1lbnQtc2hvd24tbm9kZS1j
b3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
K1Rlc3RzIENvbnRhaW5tZW50IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIFNob3du
IG5vZGUgY291bnQgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgc29ydGluZy4KKworSGVhcCBwcm9m
aWxlciBpcyBkaXNhYmxlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC1jb250YWlubWVudC1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZl
ZC13aGVuLXNvcnRpbmcuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFw
LXNuYXBzaG90LWNvbnRhaW5tZW50LXNob3duLW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29y
dGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5ZmJlN2VhN2ZiMmFmY2RkN2ZkMWE5MjY0Y2Y5ZTU1YTAw
YWEyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIv
aGVhcC1zbmFwc2hvdC1jb250YWlubWVudC1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVu
LXNvcnRpbmcuaHRtbApAQCAtMCwwICsxLDc5IEBACis8aHRtbD4KKzxoZWFkPgorICA8c2NyaXB0
IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorICA8c2NyaXB0IHNyYz0iaGVhcC1zbmFwc2hvdC10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjU7
CisgICAgZnVuY3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90KCkKKyAgICB7CisgICAgICAgIHJldHVy
biBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNvdW50KTsKKyAgICB9
CisKKyAgICBJbnNwZWN0b3JUZXN0LnJ1bkhlYXBTbmFwc2hvdFRlc3RTdWl0ZShbCisgICAgICAg
IGZ1bmN0aW9uIHRlc3RTaG93bk5vZGVDb3VudFByZXNlcnZlZFdoZW5Tb3J0aW5nKG5leHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChj
cmVhdGVIZWFwU25hcHNob3QsIHN0ZXAxKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDEo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc3dpdGNoVG9W
aWV3KCJDb250YWlubWVudCIsIHN0ZXAyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIGNvbHVtbnM7CisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY29sdW1ucyA9IEluc3BlY3RvclRlc3Qudmlld0NvbHVtbnMoKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrQ29sdW1uKGNvbHVtbnNbMF0sIHN0
ZXAzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMoKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmluZEFuZEV4cGFuZEdD
Um9vdHMoc3RlcDQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVw
NChyb3cpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0g
SW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUocm93KTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAibm8gYnV0dG9ucyBu
b2RlIGZvdW5kISIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tTaG93TW9y
ZUJ1dHRvbigic2hvd05leHQiLCBidXR0b25zTm9kZSwgc3RlcDUpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgbm9kZUNvdW50OworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDUo
cm93KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFRoZXJlIG11c3QgYmUgZW5v
dWdoIG5vZGVzIHRvIGhhdmUgc29tZSB1bnJldmVhbGVkLgorICAgICAgICAgICAgICAgIHZhciBi
dXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwg
Im5vIGJ1dHRvbnMgbm9kZSBmb3VuZCEiKTsKKworICAgICAgICAgICAgICAgIG5vZGVDb3VudCA9
IEluc3BlY3RvclRlc3QuY29sdW1uQ29udGVudHMoY29sdW1uc1swXSkubGVuZ3RoOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIG5vZGVDb3VudCA+IDAs
ICJub2RlQ291bnQgPiAwIik7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNr
Q29sdW1uKGNvbHVtbnNbMF0sIGNsaWNrVHdpY2UpOworICAgICAgICAgICAgICAgIGZ1bmN0aW9u
IGNsaWNrVHdpY2UoKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5zWzBdLCBzdGVwNik7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNigpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIG5ld05vZGVDb3VudCA9IEluc3BlY3RvclRl
c3QuY29sdW1uQ29udGVudHMoY29sdW1uc1swXSkubGVuZ3RoOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKG5vZGVDb3VudCwgbmV3Tm9kZUNvdW50KTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KG5leHQsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgXSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPHA+CitUZXN0cyBDb250YWlubWVudCB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNo
b3RzLgorU2hvd24gbm9kZSBjb3VudCBtdXN0IGJlIHByZXNlcnZlZCBhZnRlciBzb3J0aW5nLgor
PC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29udGFpbm1lbnQtc29ydGluZy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb250YWlubWVu
dC1zb3J0aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGZmZGFlNGUwMWZhNzRmMTY4Yzg5
OWQxZjYyNWNhOGFjNzUyNDVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29udGFpbm1lbnQtc29ydGluZy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0IEBACitUZXN0cyBzb3J0aW5nIGluIENvbnRhaW5tZW50IHZpZXcgb2Yg
ZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCisKK0hlYXAgcHJvZmlsZXIgaXMgZGlzYWJsZWQKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3Qt
Y29udGFpbm1lbnQtc29ydGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVy
L2hlYXAtc25hcHNob3QtY29udGFpbm1lbnQtc29ydGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMTEw
ZjZhMDgxNTdkNTA1MjgwNWQxOTM0NGQzZjViYmZjN2ZkOGMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb250YWlubWVudC1z
b3J0aW5nLmh0bWwKQEAgLTAsMCArMSw4MiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHNjcmlwdCBz
cmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9ImhlYXAtc25hcHNob3QtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgaW5zdGFuY2VDb3VudCA9IDI1Owor
ICAgIGZ1bmN0aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdCgpCisgICAgeworICAgICAgICByZXR1cm4g
SW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3QoaW5zdGFuY2VDb3VudCk7CisgICAgfQor
CisgICAgSW5zcGVjdG9yVGVzdC5ydW5IZWFwU25hcHNob3RUZXN0U3VpdGUoWworICAgICAgICBm
dW5jdGlvbiB0ZXN0U29ydGluZyhuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LnRha2VBbmRPcGVuU25hcHNob3QoY3JlYXRlSGVhcFNuYXBzaG90LCBzdGVwMSk7CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29udGFpbm1lbnQiLCBzdGVwMik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBnY1Jvb3RzOworICAgICAgICAgICAgdmFy
IGNvbHVtbnM7CisgICAgICAgICAgICB2YXIgY3VycmVudENvbHVtbjsKKyAgICAgICAgICAgIHZh
ciBjdXJyZW50Q29sdW1uT3JkZXI7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZpbmRBbmRFeHBhbmRH
Q1Jvb3RzKHN0ZXAzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3Rl
cDMoZ2NSb290c1JvdykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnY1Jvb3RzID0g
Z2NSb290c1JvdzsKKyAgICAgICAgICAgICAgICBjb2x1bW5zID0gSW5zcGVjdG9yVGVzdC52aWV3
Q29sdW1ucygpOworICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW4gPSAwOworICAgICAgICAg
ICAgICAgIGN1cnJlbnRDb2x1bW5PcmRlciA9IGZhbHNlOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoc3RlcDQsIDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBz
dGVwNCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb2x1bW4g
Pj0gY29sdW1ucy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0
LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1tjdXJyZW50
Q29sdW1uXSwgc3RlcDUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBz
dGVwNShuZXdDb2x1bW5TdGF0ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb2x1
bW5zW2N1cnJlbnRDb2x1bW5dID0gbmV3Q29sdW1uU3RhdGU7CisgICAgICAgICAgICAgICAgdmFy
IGNvbnRlbnRzID0gSW5zcGVjdG9yVGVzdC5jb2x1bW5Db250ZW50cyhjb2x1bW5zW2N1cnJlbnRD
b2x1bW5dLCBnY1Jvb3RzKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyh0cnVlLCAhIWNvbnRlbnRzLmxlbmd0aCwgImNvbHVtbiBjb250ZW50cyIpOworICAgICAg
ICAgICAgICAgIHZhciBzb3J0VHlwZXMgPSB7IG9iamVjdDogIm5hbWUiLCBzaGFsbG93U2l6ZTog
InNpemUiLCByZXRhaW5lZFNpemU6ICJzaXplIiB9OworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhc29ydFR5cGVzW2NvbHVtbnNbY3VycmVudENvbHVt
bl0uaWRlbnRpZmllcl0sICJzb3J0IGJ5IGlkZW50aWZpZXIiKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNoZWNrQXJyYXlJc1NvcnRlZChjb250ZW50cywgc29ydFR5cGVzW2NvbHVt
bnNbY3VycmVudENvbHVtbl0uaWRlbnRpZmllcl0sIGNvbHVtbnNbY3VycmVudENvbHVtbl0uc29y
dCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRDb2x1bW5PcmRlcikKKyAgICAgICAg
ICAgICAgICAgICAgY3VycmVudENvbHVtbk9yZGVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbHVtbk9yZGVyID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgICsrY3VycmVudENvbHVtbjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChzdGVwNCwgMCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICBdKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Cis8cD4KK1Rlc3RzIHNvcnRpbmcgaW4gQ29udGFpbm1lbnQgdmlldyBvZiBkZXRh
aWxlZCBoZWFwIHNuYXBzaG90cy4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWRvbWluYXRvcnMt
ZXhwYW5zaW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZG9taW5hdG9ycy1leHBhbnNpb24t
cHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWQ0MzRmNTMx
NTBmODc5MGQ1ZjhiM2JiNjMyMDA4M2RmYjYzMTBjZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWRvbWluYXRvcnMtZXhwYW5z
aW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAor
VGVzdHMgRG9taW5hdG9ycyB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLiBFeHBhbmRl
ZCBub2RlcyBtdXN0IGJlIHByZXNlcnZlZCBhZnRlciBzb3J0aW5nLgorCitIZWFwIHByb2ZpbGVy
IGlzIGRpc2FibGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxl
ci9oZWFwLXNuYXBzaG90LWRvbWluYXRvcnMtZXhwYW5zaW9uLXByZXNlcnZlZC13aGVuLXNvcnRp
bmcuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWRv
bWluYXRvcnMtZXhwYW5zaW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmcuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43OWE4NjQwM2M0MWRlN2U5Njc3ZTE3ODBiOTZiMmQwZmMzOTkwZDA2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZG9taW5h
dG9ycy1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sCkBAIC0wLDAgKzEsODAg
QEAKKzxodG1sPgorPGhlYWQ+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJoZWFwLXNu
YXBzaG90LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgdmFyIGluc3RhbmNlQ291bnQgPSAyNTsKKyAgICBmdW5jdGlvbiBjcmVhdGVIZWFwU25h
cHNob3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNu
YXBzaG90KGluc3RhbmNlQ291bnQpOworICAgIH0KKworICAgIEluc3BlY3RvclRlc3QucnVuSGVh
cFNuYXBzaG90VGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVzdEV4cGFuc2lvblByZXNl
cnZlZFdoZW5Tb3J0aW5nKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3QsIHN0ZXAxKTsKKworICAg
ICAgICAgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3Quc3dpdGNoVG9WaWV3KCJEb21pbmF0b3JzIiwgc3RlcDIpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgY29sdW1uczsKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHN0ZXAyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb2x1bW5zID0gSW5zcGVj
dG9yVGVzdC52aWV3Q29sdW1ucygpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xp
Y2tDb2x1bW4oY29sdW1uc1swXSwgc3RlcDMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmdW5jdGlvbiBzdGVwMygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5maW5kQW5kRXhwYW5kR0NSb290cyhzdGVwNCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA0KHJvdykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cp
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYnV0
dG9uc05vZGUsICJubyBidXR0b25zIG5vZGUgZm91bmQhIik7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jbGlja1Nob3dNb3JlQnV0dG9uKCJzaG93QWxsIiwgYnV0dG9uc05vZGUsIHN0
ZXA1KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDUocm93KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciByb3cgPSByb3cuY2hpbGRyZW5bMF07
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFyb3cs
ICJcIkJcIiBpbnN0YW5jZSByb3ciKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGFuZFJvdyhyb3csIHN0ZXA2KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGNv
bHVtbkNvbnRlbnRzOworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDYoKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnRzID0gSW5zcGVjdG9yVGVzdC5jb2x1bW5D
b250ZW50cyhjb2x1bW5zWzBdKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNr
Q29sdW1uKGNvbHVtbnNbMF0sIGNsaWNrVHdpY2UpOworICAgICAgICAgICAgICAgIGZ1bmN0aW9u
IGNsaWNrVHdpY2UoKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5zWzBdLCBzdGVwNyk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNygpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIG5ld0NvbHVtbkNvbnRlbnRzID0gSW5zcGVj
dG9yVGVzdC5jb2x1bW5Db250ZW50cyhjb2x1bW5zWzBdKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydENvbHVtbkNvbnRlbnRzRXF1YWwoY29sdW1uQ29udGVudHMsIG5ld0Nv
bHVtbkNvbnRlbnRzKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KG5leHQsIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgXSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyBEb21pbmF0b3JzIHZpZXcgb2Yg
ZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCitFeHBhbmRlZCBub2RlcyBtdXN0IGJlIHByZXNlcnZl
ZCBhZnRlciBzb3J0aW5nLgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZG9taW5hdG9ycy1zaG93
LWFsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1z
bmFwc2hvdC1kb21pbmF0b3JzLXNob3ctYWxsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjZm
MWJiZmYzYzIzZWY3ZjliOGNkMjExNDcwNTYyMzljYmNlOWQ1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZG9taW5hdG9ycy1z
aG93LWFsbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUZXN0cyBEb21pbmF0b3JzIHZp
ZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIFRoZSAiU2hvdyBBbGwiIGJ1dHRvbiBtdXN0
IHNob3cgYWxsIG5vZGVzLgorCitIZWFwIHByb2ZpbGVyIGlzIGRpc2FibGVkCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWRvbWluYXRv
cnMtc2hvdy1hbGwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNu
YXBzaG90LWRvbWluYXRvcnMtc2hvdy1hbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2NjY2Q3MzEyYWFk
NmQ5ZmUzNTNhODQwNGFmM2ZjMDdmNWRhNTRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZG9taW5hdG9ycy1zaG93LWFsbC5o
dG1sCkBAIC0wLDAgKzEsNjMgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxzY3JpcHQgc3JjPSIuLi8u
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CisgIDxz
Y3JpcHQgc3JjPSJoZWFwLXNuYXBzaG90LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGluc3RhbmNlQ291bnQgPSAyNTsKKyAgICBmdW5j
dGlvbiBjcmVhdGVIZWFwU25hcHNob3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rv
clRlc3QuY3JlYXRlSGVhcFNuYXBzaG90KGluc3RhbmNlQ291bnQpOworICAgIH0KKworICAgIElu
c3BlY3RvclRlc3QucnVuSGVhcFNuYXBzaG90VGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24g
dGVzdFNob3dBbGwobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC50
YWtlQW5kT3BlblNuYXBzaG90KGNyZWF0ZUhlYXBTbmFwc2hvdCwgc3RlcDEpOworCisgICAgICAg
ICAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5zd2l0Y2hUb1ZpZXcoIkRvbWluYXRvcnMiLCBzdGVwMik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZpbmRBbmRFeHBhbmRHQ1Jvb3RzKHN0ZXAzKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMocm93KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmlu
ZEJ1dHRvbnNOb2RlKHJvdyk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRF
cXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwgImJ1dHRvbnMgbm9kZSIpOworICAgICAgICAgICAg
ICAgIHZhciB3b3JkcyA9IGJ1dHRvbnNOb2RlLnNob3dBbGwudGV4dENvbnRlbnQuc3BsaXQoIiAi
KTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdvcmRzLmxlbmd0aDsgKytp
KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBtYXliZU51bWJlciA9IHBhcnNlSW50KHdvcmRz
W2ldLCAxMCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNOYU4obWF5YmVOdW1iZXIpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoaW5zdGFu
Y2VDb3VudCwgbWF5YmVOdW1iZXIsIGJ1dHRvbnNOb2RlLnNob3dBbGwudGV4dENvbnRlbnQpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrU2hv
d01vcmVCdXR0b24oInNob3dBbGwiLCBidXR0b25zTm9kZSwgc3RlcDQpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNChyb3cpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdmFyIHJvd3NTaG93biA9IEluc3BlY3RvclRlc3QuY291bnREYXRhUm93cyhy
b3cpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGluc3RhbmNl
Q291bnQsIHJvd3NTaG93biwgImFmdGVyIHNob3dBbGwgY2xpY2siKTsKKyAgICAgICAgICAgICAg
ICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCAhIWJ1dHRv
bnNOb2RlLCAiYnV0dG9ucyBub2RlIGZvdW5kIHdoZW4gYWxsIGluc3RhbmNlcyBhcmUgc2hvd24h
Iik7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIF0pOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgRG9taW5hdG9ycyB2aWV3IG9mIGRldGFpbGVkIGhl
YXAgc25hcHNob3RzLgorVGhlICZxdW90O1Nob3cgQWxsJnF1b3Q7IGJ1dHRvbiBtdXN0IHNob3cg
YWxsIG5vZGVzLgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZG9taW5hdG9ycy1zaG93LW5leHQt
YWN0dWFsLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90
LWRvbWluYXRvcnMtc2hvdy1uZXh0LWFjdHVhbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU3ZTFhYjQxOTkx
ZjRhOGZlZTg1MWMzZTNmYzcyMGIwZmNjODUyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWRvbWluYXRvcnMtc2hvdy1uZXh0
LWFjdHVhbC50eHQKQEAgLTAsMCArMSw0IEBACitUZXN0cyBDb21wYXJpc29uIHZpZXcgb2YgZGV0
YWlsZWQgaGVhcCBzbmFwc2hvdHMuIFJlcGVhdGVkIGNsaWNrcyBvbiAiU2hvdyBOZXh0IiBidXR0
b24gbXVzdCBzaG93IGFsbCBub2Rlcy4KKworSGVhcCBwcm9maWxlciBpcyBkaXNhYmxlZAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1k
b21pbmF0b3JzLXNob3ctbmV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1kb21pbmF0b3JzLXNob3ctbmV4dC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWQwMjFjYTUxOGMyYTE5Njk1YjVmNjAzZmQyNTFjZDQ4NTQ0MWQ3MgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBz
aG90LWRvbWluYXRvcnMtc2hvdy1uZXh0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Rl
c3RzIERvbWluYXRvcnMgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gUmVwZWF0ZWQg
Y2xpY2tzIG9uICJTaG93IE5leHQiIGJ1dHRvbiBtdXN0IHNob3cgYWxsIG5vZGVzLgorCitIZWFw
IHByb2ZpbGVyIGlzIGRpc2FibGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWRvbWluYXRvcnMtc2hvdy1uZXh0Lmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1kb21pbmF0b3JzLXNob3ct
bmV4dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllZjAxNmM1OWY3YjI1ZmQ2ZmUzZGViNzkwN2NhNDEzYWI2
MDZjZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIv
aGVhcC1zbmFwc2hvdC1kb21pbmF0b3JzLXNob3ctbmV4dC5odG1sCkBAIC0wLDAgKzEsNTYgQEAK
KzxodG1sPgorPGhlYWQ+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJoZWFwLXNuYXBz
aG90LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgdmFyIGluc3RhbmNlQ291bnQgPSAyNTsKKyAgICBmdW5jdGlvbiBjcmVhdGVIZWFwU25hcHNo
b3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBz
aG90KGluc3RhbmNlQ291bnQpOworICAgIH0KKworICAgIEluc3BlY3RvclRlc3QucnVuSGVhcFNu
YXBzaG90VGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVzdFNob3dOZXh0KG5leHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChj
cmVhdGVIZWFwU25hcHNob3QsIHN0ZXAxKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDEo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc3dpdGNoVG9W
aWV3KCJEb21pbmF0b3JzIiwgc3RlcDIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiBzdGVwMigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5maW5kQW5kRXhwYW5kR0NSb290cyhzdGVwMyk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHN0ZXAzKHJvdykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICB2YXIgcm93c1Nob3duID0gSW5zcGVjdG9yVGVzdC5jb3VudERhdGFSb3dzKHJvdyk7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgcm93c1Nob3duIDw9
IGluc3RhbmNlQ291bnQsICJzaG93biBtb3JlIGluc3RhbmNlcyB0aGFuIGNyZWF0ZWQ6ICIgKyBy
b3dzU2hvd24gKyAiID4gIiArIGluc3RhbmNlQ291bnQpOworICAgICAgICAgICAgICAgIGlmIChy
b3dzU2hvd24gPCBpbnN0YW5jZUNvdW50KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBidXR0
b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7CisgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYnV0dG9uc05vZGUs
ICJidXR0b25zIG5vZGUiKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlj
a1Nob3dNb3JlQnV0dG9uKCJzaG93TmV4dCIsIGJ1dHRvbnNOb2RlLCBzdGVwMyk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChyb3dzU2hvd24gPT09IGluc3RhbmNlQ291bnQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9u
c05vZGUocm93KTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVh
bHMoZmFsc2UsICEhYnV0dG9uc05vZGUsICJidXR0b25zIG5vZGUgZm91bmQgd2hlbiBhbGwgaW5z
dGFuY2VzIGFyZSBzaG93biEiKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0
LCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBd
KTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8
cD4KK1Rlc3RzIERvbWluYXRvcnMgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KK1Jl
cGVhdGVkIGNsaWNrcyBvbiAmcXVvdDtTaG93IE5leHQmcXVvdDsgYnV0dG9uIG11c3Qgc2hvdyBh
bGwgbm9kZXMuCis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1kb21pbmF0b3JzLXNob3duLW5vZGUt
Y291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1kb21pbmF0b3JzLXNob3duLW5vZGUtY291
bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUyYTM1
NmM5NzEyMWQ2ODNkODkwN2I0NDQ5NWFmOTI4YTUyMWMyNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWRvbWluYXRvcnMtc2hv
d24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKK1Rlc3RzIERvbWluYXRvcnMgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90
cy4gU2hvd24gbm9kZSBjb3VudCBtdXN0IGJlIHByZXNlcnZlZCBhZnRlciBzb3J0aW5nLgorCitI
ZWFwIHByb2ZpbGVyIGlzIGRpc2FibGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWRvbWluYXRvcnMtc2hvd24tbm9kZS1jb3VudC1w
cmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvaGVhcC1zbmFwc2hvdC1kb21pbmF0b3JzLXNob3duLW5vZGUtY291bnQtcHJlc2VydmVkLXdo
ZW4tc29ydGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4ZjJhMmFjZWQ5MGJhYTY4ZjhhMWI0NWZkNjk4
YmZkOGYzZTA2NTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC1kb21pbmF0b3JzLXNob3duLW5vZGUtY291bnQtcHJlc2VydmVk
LXdoZW4tc29ydGluZy5odG1sCkBAIC0wLDAgKzEsNzkgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJoZWFwLXNuYXBzaG90LXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGluc3RhbmNlQ291bnQg
PSAyNTsKKyAgICBmdW5jdGlvbiBjcmVhdGVIZWFwU25hcHNob3QoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90KGluc3RhbmNlQ291bnQpOwor
ICAgIH0KKworICAgIEluc3BlY3RvclRlc3QucnVuSGVhcFNuYXBzaG90VGVzdFN1aXRlKFsKKyAg
ICAgICAgZnVuY3Rpb24gdGVzdFNob3duTm9kZUNvdW50UHJlc2VydmVkV2hlblNvcnRpbmcobmV4
dCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC50YWtlQW5kT3BlblNuYXBz
aG90KGNyZWF0ZUhlYXBTbmFwc2hvdCwgc3RlcDEpOworCisgICAgICAgICAgICBmdW5jdGlvbiBz
dGVwMSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zd2l0
Y2hUb1ZpZXcoIkRvbWluYXRvcnMiLCBzdGVwMik7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciBjb2x1bW5zOworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBJbnNwZWN0b3JUZXN0LnZpZXdDb2x1bW5z
KCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5zWzBd
LCBzdGVwMyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZpbmRBbmRFeHBh
bmRHQ1Jvb3RzKHN0ZXA0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
c3RlcDQocm93KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBidXR0b25zTm9k
ZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwgIm5vIGJ1dHRv
bnMgbm9kZSBmb3VuZCEiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrU2hv
d01vcmVCdXR0b24oInNob3dOZXh0IiwgYnV0dG9uc05vZGUsIHN0ZXA1KTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIG5vZGVDb3VudDsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0
ZXA1KHJvdykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBUaGVyZSBtdXN0IGJl
IGVub3VnaCBub2RlcyB0byBoYXZlIHNvbWUgdW5yZXZlYWxlZC4KKyAgICAgICAgICAgICAgICB2
YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYnV0dG9uc05v
ZGUsICJubyBidXR0b25zIG5vZGUgZm91bmQhIik7CisKKyAgICAgICAgICAgICAgICBub2RlQ291
bnQgPSBJbnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNbMF0pLmxlbmd0aDsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCBub2RlQ291bnQg
PiAwLCAibm9kZUNvdW50ID4gMCIpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5j
bGlja0NvbHVtbihjb2x1bW5zWzBdLCBjbGlja1R3aWNlKTsKKyAgICAgICAgICAgICAgICBmdW5j
dGlvbiBjbGlja1R3aWNlKCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwgc3RlcDYpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDYoKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBuZXdOb2RlQ291bnQgPSBJbnNwZWN0
b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNbMF0pLmxlbmd0aDsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhub2RlQ291bnQsIG5ld05vZGVDb3VudCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIF0pOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKzxwPgorVGVzdHMgRG9taW5hdG9ycyB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25h
cHNob3RzLgorU2hvd24gbm9kZSBjb3VudCBtdXN0IGJlIHByZXNlcnZlZCBhZnRlciBzb3J0aW5n
LgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZG9taW5hdG9ycy1zb3J0aW5nLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWRvbWluYXRv
cnMtc29ydGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ1MDg3MjRmYzc1NDM3Njc3NGUx
ZjM3MWFiYmViZTRkZjNmYTUzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWRvbWluYXRvcnMtc29ydGluZy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0IEBACitUZXN0cyBzb3J0aW5nIGluIERvbWluYXRvcnMgdmlldyBvZiBk
ZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KKworSGVhcCBwcm9maWxlciBpcyBkaXNhYmxlZAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1k
b21pbmF0b3JzLXNvcnRpbmcuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9o
ZWFwLXNuYXBzaG90LWRvbWluYXRvcnMtc29ydGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwOGRkZDMx
OGZmNWRkYjRhOTg3M2FjZGY5Y2E0ZWE5OTUyMGUxOGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1kb21pbmF0b3JzLXNvcnRp
bmcuaHRtbApAQCAtMCwwICsxLDgyIEBACis8aHRtbD4KKzxoZWFkPgorICA8c2NyaXB0IHNyYz0i
Li4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICA8c2NyaXB0IHNyYz0iaGVhcC1zbmFwc2hvdC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjU7CisgICAg
ZnVuY3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90KCkKKyAgICB7CisgICAgICAgIHJldHVybiBJbnNw
ZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNvdW50KTsKKyAgICB9CisKKyAg
ICBJbnNwZWN0b3JUZXN0LnJ1bkhlYXBTbmFwc2hvdFRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0
aW9uIHRlc3RTb3J0aW5nKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3QsIHN0ZXAxKTsKKworICAg
ICAgICAgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3Quc3dpdGNoVG9WaWV3KCJEb21pbmF0b3JzIiwgc3RlcDIpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgZ2NSb290czsKKyAgICAgICAgICAgIHZhciBjb2x1
bW5zOworICAgICAgICAgICAgdmFyIGN1cnJlbnRDb2x1bW47CisgICAgICAgICAgICB2YXIgY3Vy
cmVudENvbHVtbk9yZGVyOworCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5maW5kQW5kRXhwYW5kR0NSb290
cyhzdGVwMyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKGdj
Um9vdHNSb3cpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2NSb290cyA9IGdjUm9v
dHNSb3c7CisgICAgICAgICAgICAgICAgY29sdW1ucyA9IEluc3BlY3RvclRlc3Qudmlld0NvbHVt
bnMoKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q29sdW1uID0gMDsKKyAgICAgICAgICAgICAg
ICBjdXJyZW50Q29sdW1uT3JkZXIgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KHN0ZXA0LCAwKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDQo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q29sdW1uID49IGNv
bHVtbnMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgMCk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrQ29sdW1uKGNvbHVtbnNbY3VycmVudENvbHVt
bl0sIHN0ZXA1KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDUo
bmV3Q29sdW1uU3RhdGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29sdW1uc1tj
dXJyZW50Q29sdW1uXSA9IG5ld0NvbHVtblN0YXRlOworICAgICAgICAgICAgICAgIHZhciBjb250
ZW50cyA9IEluc3BlY3RvclRlc3QuY29sdW1uQ29udGVudHMoY29sdW1uc1tjdXJyZW50Q29sdW1u
XSwgZ2NSb290cyk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
dHJ1ZSwgISFjb250ZW50cy5sZW5ndGgsICJjb2x1bW4gY29udGVudHMiKTsKKyAgICAgICAgICAg
ICAgICB2YXIgc29ydFR5cGVzID0geyBvYmplY3Q6ICJpZCIsIHNoYWxsb3dTaXplOiAic2l6ZSIs
IHJldGFpbmVkU2l6ZTogInNpemUiIH07CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHModHJ1ZSwgISFzb3J0VHlwZXNbY29sdW1uc1tjdXJyZW50Q29sdW1uXS5pZGVu
dGlmaWVyXSwgInNvcnQgYnkgaWRlbnRpZmllciIpOworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY2hlY2tBcnJheUlzU29ydGVkKGNvbnRlbnRzLCBzb3J0VHlwZXNbY29sdW1uc1tjdXJy
ZW50Q29sdW1uXS5pZGVudGlmaWVyXSwgY29sdW1uc1tjdXJyZW50Q29sdW1uXS5zb3J0KTsKKwor
ICAgICAgICAgICAgICAgIGlmICghY3VycmVudENvbHVtbk9yZGVyKQorICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50Q29sdW1uT3JkZXIgPSB0cnVlOworICAgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29sdW1uT3JkZXIgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgKytjdXJyZW50Q29sdW1uOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KHN0ZXA0LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIF0pOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KKzxwPgorVGVzdHMgc29ydGluZyBpbiBEb21pbmF0b3JzIHZpZXcgb2YgZGV0YWlsZWQgaGVh
cCBzbmFwc2hvdHMuCis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1pbnNwZWN0LWRvbS13cmFwcGVy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1pbnNw
ZWN0LWRvbS13cmFwcGVyLmh0bWwKaW5kZXggMjM1MDIwZGIyZTlkNWZjYjFlYWFhYzYzZDVmZTVj
ODlmN2M3YTBlMS4uNTgzOTQ0YTQwNDVjYThhZjI0MGEzMzJhYjNlYmRiMmI5ODhlZTk5MyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtaW5z
cGVjdC1kb20td3JhcHBlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxl
ci9oZWFwLXNuYXBzaG90LWluc3BlY3QtZG9tLXdyYXBwZXIuaHRtbApAQCAtMjYsNyArMjYsNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJfZmluaXNoSGVhcFNuYXBzaG90ICIgKyB1aWQpOwogICAgICAgICB2YXIgcGFuZWwgPSBXZWJJ
bnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzOwotICAgICAgICB2YXIgcHJvZmlsZSA9IHBhbmVsLl9w
cm9maWxlc0lkTWFwW3BhbmVsLl9tYWtlS2V5KHVpZCwgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVh
cHNob3RQcm9maWxlVHlwZS5UeXBlSWQpXTsKKyAgICAgICAgdmFyIHByb2ZpbGUgPSBwYW5lbC5f
cHJvZmlsZXNJZE1hcFtwYW5lbC5fbWFrZUtleSh1aWQsIFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RQcm9maWxlVHlwZS5UeXBlSWQpXTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVy
KHByb2ZpbGUucHJveHksICJfY2FsbExvYWRDYWxsYmFja3MiLCBzdGVwMik7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1z
dW1tYXJ5LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXN1bW1hcnktZXhwYW5z
aW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkMWE4
ODBiN2Y3MjQzOTI3ZTA2ODYwOGYyZTVhNmJiODg1ODRkMDEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LWV4cGFu
c2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
K1Rlc3RzIFN1bW1hcnkgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gRXhwYW5kZWQg
bm9kZXMgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgc29ydGluZy4KKworSGVhcCBwcm9maWxlciBp
cyBkaXNhYmxlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIv
aGVhcC1zbmFwc2hvdC1zdW1tYXJ5LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5
LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2VmNDAz
ODMwMjQ1NWE2Y2IyNWFjOTA4NzAyZDcwZjhjYTI3MTg5MQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXN1bW1hcnktZXhwYW5z
aW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmcuaHRtbApAQCAtMCwwICsxLDkzIEBACis8aHRtbD4K
KzxoZWFkPgorICA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iaGVhcC1zbmFwc2hvdC10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBp
bnN0YW5jZUNvdW50ID0gMjU7CisgICAgZnVuY3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0
YW5jZUNvdW50KTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LnJ1bkhlYXBTbmFwc2hvdFRl
c3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RFeHBhbnNpb25QcmVzZXJ2ZWRXaGVuU29y
dGluZyhuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnRha2VBbmRP
cGVuU25hcHNob3QoY3JlYXRlSGVhcFNuYXBzaG90LCBzdGVwMSk7CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LnN3aXRjaFRvVmlldygiU3VtbWFyeSIsIHN0ZXAyKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHZhciByb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIsICJCIik7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFyb3csICJcIkJcIiBy
b3ciKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZFJvdyhyb3csIGV4cGFu
ZEIpOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGV4cGFuZEIoKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5m
aW5kQnV0dG9uc05vZGUocm93KTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHModHJ1ZSwgISFidXR0b25zTm9kZSwgIm5vIGJ1dHRvbnMgbm9kZSBmb3VuZCEi
KTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja1Nob3dNb3JlQnV0dG9u
KCJzaG93QWxsIiwgYnV0dG9uc05vZGUsIHN0ZXAzKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBjb2x1bW5zOworICAgICAgICAgICAgZnVuY3Rp
b24gc3RlcDMoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBJbnNw
ZWN0b3JUZXN0LnZpZXdDb2x1bW5zKCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5j
bGlja0NvbHVtbihjb2x1bW5zWzBdLCBzdGVwNCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHN0ZXA0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIg
cm93ID0gSW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCAiQiIpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhcm93LCAiXCJCXCIgcm93Iik7
CisgICAgICAgICAgICAgICAgdmFyIGJJbnN0YW5jZVJvdyA9IHJvdy5jaGlsZHJlblswXTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJJbnN0YW5j
ZVJvdywgIlwiQlwiIGluc3RhbmNlIHJvdyIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwYW5kUm93KGJJbnN0YW5jZVJvdywgZXhwYW5kQSk7CisgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gZXhwYW5kQShyb3cpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbiBwcm9wZXJ0eU1hdGNoZXIoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubmFtZSA9PT0gImEiICYmIGRhdGEu
dmFsdWUuY2hhckF0KDApID09PSAiQSI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgdmFyIGFSb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIsIHBy
b3BlcnR5TWF0Y2hlciwgcm93KTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHModHJ1ZSwgISFhUm93LCAiXCJhOiBBXCIgcm93Iik7CisgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93KGFSb3csIHN0ZXA1KTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBjb2x1bW5Db250ZW50czsK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA1KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjb2x1bW5Db250ZW50cyA9IEluc3BlY3RvclRlc3QuY29sdW1uQ29udGVudHMoY29sdW1u
c1swXSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5z
WzBdLCBjbGlja1R3aWNlKTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBjbGlja1R3aWNlKCkK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xp
Y2tDb2x1bW4oY29sdW1uc1swXSwgc3RlcDYpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDYoKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHZhciBuZXdDb2x1bW5Db250ZW50cyA9IEluc3BlY3RvclRlc3QuY29sdW1u
Q29udGVudHMoY29sdW1uc1swXSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRDb2x1bW5Db250ZW50c0VxdWFsKGNvbHVtbkNvbnRlbnRzLCBuZXdDb2x1bW5Db250ZW50cyk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIF0pOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgU3VtbWFyeSB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25h
cHNob3RzLgorRXhwYW5kZWQgbm9kZXMgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgc29ydGluZy4K
KzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXN1bW1hcnktc2hvdy1hbGwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3Qtc3VtbWFyeS1zaG93
LWFsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIyM2E4MWRlMmY3N2RjMGMxOTEyNmFiNjkz
YWQ1NzU4MGVmNzk0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
cm9maWxlci9oZWFwLXNuYXBzaG90LXN1bW1hcnktc2hvdy1hbGwtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNCBAQAorVGVzdHMgU3VtbWFyeSB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3Rz
LiBUaGUgIlNob3cgQWxsIiBidXR0b24gbXVzdCBzaG93IGFsbCBub2Rlcy4KKworSGVhcCBwcm9m
aWxlciBpcyBkaXNhYmxlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNob3ctYWxsLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNob3ctYWxsLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzE4NzIxOWM0OTlhYjVjN2MxNTE4NjA0ZDUwODhkODQ2OGY3NjI0MQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90
LXN1bW1hcnktc2hvdy1hbGwuaHRtbApAQCAtMCwwICsxLDY3IEBACis8aHRtbD4KKzxoZWFkPgor
ICA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qu
anMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iaGVhcC1zbmFwc2hvdC10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBpbnN0YW5jZUNv
dW50ID0gMjU7CisgICAgZnVuY3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNvdW50
KTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LnJ1bkhlYXBTbmFwc2hvdFRlc3RTdWl0ZShb
CisgICAgICAgIGZ1bmN0aW9uIHRlc3RTaG93QWxsKG5leHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3Qs
IHN0ZXAxKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc3dpdGNoVG9WaWV3KCJTdW1tYXJ5Iiwgc3Rl
cDIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHJvdyA9IEluc3BlY3RvclRlc3QuZmluZFJv
dygib2JqZWN0IiwgIkEiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyh0cnVlLCAhIXJvdywgIlwiQVwiIHJvdyIpOworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwYW5kUm93KHJvdywgc3RlcDMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmdW5jdGlvbiBzdGVwMyhyb3cpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFy
IGNvdW50ID0gcm93LmRhdGFbImNvdW50Il07CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnRFcXVhbHMoaW5zdGFuY2VDb3VudC50b1N0cmluZygpLCBjb3VudCk7CisgICAgICAg
ICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUo
cm93KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAh
IWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIik7CisgICAgICAgICAgICAgICAgdmFyIHdvcmRz
ID0gYnV0dG9uc05vZGUuc2hvd0FsbC50ZXh0Q29udGVudC5zcGxpdCgiICIpOworICAgICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29yZHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIG1heWJlTnVtYmVyID0gcGFyc2VJbnQod29yZHNbaV0sIDEwKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFpc05hTihtYXliZU51bWJlcikpCisgICAgICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhpbnN0YW5jZUNvdW50LCBtYXli
ZU51bWJlciwgYnV0dG9uc05vZGUuc2hvd0FsbC50ZXh0Q29udGVudCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tTaG93TW9yZUJ1dHRvbigi
c2hvd0FsbCIsIGJ1dHRvbnNOb2RlLCBzdGVwNCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHN0ZXA0KHJvdykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2
YXIgcm93c1Nob3duID0gSW5zcGVjdG9yVGVzdC5jb3VudERhdGFSb3dzKHJvdyk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoaW5zdGFuY2VDb3VudCwgcm93c1No
b3duLCAiYWZ0ZXIgc2hvd0FsbCBjbGljayIpOworICAgICAgICAgICAgICAgIHZhciBidXR0b25z
Tm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFsc2UsICEhYnV0dG9uc05vZGUsICJidXR0
b25zIG5vZGUgZm91bmQgd2hlbiBhbGwgaW5zdGFuY2VzIGFyZSBzaG93biEiKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KG5leHQsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgXSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgorPHA+CitUZXN0cyBTdW1tYXJ5IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCitU
aGUgJnF1b3Q7U2hvdyBBbGwmcXVvdDsgYnV0dG9uIG11c3Qgc2hvdyBhbGwgbm9kZXMuCis8L3A+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNob3ctbmV4dC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNob3ctbmV4
dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y1NWFhZWUwODBjNjMxOTlmZTJmMDUzMTJmMDA3
NjQ3ODI2ZTExZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci9oZWFwLXNuYXBzaG90LXN1bW1hcnktc2hvdy1uZXh0LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKK1Rlc3RzIFN1bW1hcnkgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4g
UmVwZWF0ZWQgY2xpY2tzIG9uICJTaG93IE5leHQiIGJ1dHRvbiBtdXN0IHNob3cgYWxsIG5vZGVz
LgorCitIZWFwIHByb2ZpbGVyIGlzIGRpc2FibGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXN1bW1hcnktc2hvdy1uZXh0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNo
b3ctbmV4dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3NGFkYzU1ZDZkOWQwMDE3ZDYwOTYxYmNlMDQzMWZh
MDJkNmQyZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNob3ctbmV4dC5odG1sCkBAIC0wLDAgKzEsNTggQEAK
KzxodG1sPgorPGhlYWQ+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJoZWFwLXNuYXBz
aG90LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgdmFyIGluc3RhbmNlQ291bnQgPSAyNTsKKyAgICBmdW5jdGlvbiBjcmVhdGVIZWFwU25hcHNo
b3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBz
aG90KGluc3RhbmNlQ291bnQpOworICAgIH0KKworICAgIEluc3BlY3RvclRlc3QucnVuSGVhcFNu
YXBzaG90VGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVzdFNob3dOZXh0KG5leHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChj
cmVhdGVIZWFwU25hcHNob3QsIHN0ZXAxKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDEo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc3dpdGNoVG9W
aWV3KCJTdW1tYXJ5Iiwgc3RlcDIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5j
dGlvbiBzdGVwMigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHJvdyA9IElu
c3BlY3RvclRlc3QuZmluZFJvdygib2JqZWN0IiwgIkEiKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIXJvdywgIlwiQVwiIHJvdyIpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUm93KHJvdywgc3RlcDMpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMyhyb3cpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgdmFyIHJvd3NTaG93biA9IEluc3BlY3RvclRlc3QuY291bnREYXRhUm93
cyhyb3cpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUs
IHJvd3NTaG93biA8PSBpbnN0YW5jZUNvdW50LCAic2hvd24gbW9yZSBpbnN0YW5jZXMgdGhhbiBj
cmVhdGVkOiAiICsgcm93c1Nob3duICsgIiA+ICIgKyBpbnN0YW5jZUNvdW50KTsKKyAgICAgICAg
ICAgICAgICBpZiAocm93c1Nob3duIDwgaW5zdGFuY2VDb3VudCkgeworICAgICAgICAgICAgICAg
ICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cp
OworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAh
IWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIik7CisgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuY2xpY2tTaG93TW9yZUJ1dHRvbigic2hvd05leHQiLCBidXR0b25zTm9kZSwgc3Rl
cDMpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocm93c1Nob3duID09PSBpbnN0YW5jZUNv
dW50KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRl
c3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIGZvdW5k
IHdoZW4gYWxsIGluc3RhbmNlcyBhcmUgc2hvd24hIik7CisgICAgICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQobmV4dCwgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgXSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgorPHA+CitUZXN0cyBTdW1tYXJ5IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFw
c2hvdHMuCitSZXBlYXRlZCBjbGlja3Mgb24gJnF1b3Q7U2hvdyBOZXh0JnF1b3Q7IGJ1dHRvbiBt
dXN0IHNob3cgYWxsIG5vZGVzLgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3Qtc3VtbWFyeS1zaG93
bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3Qtc3VtbWFyeS1zaG93bi1ub2Rl
LWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYy
ZjBhNWYxNzZkMWU2NjZhODNkZDNkZWQ1NzdjNmI2MTM5Y2ZmYTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNo
b3duLW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0IEBACitUZXN0cyBTdW1tYXJ5IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMu
IFNob3duIG5vZGUgY291bnQgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgc29ydGluZy4KKworSGVh
cCBwcm9maWxlciBpcyBkaXNhYmxlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNob3duLW5vZGUtY291bnQtcHJlc2Vy
dmVkLXdoZW4tc29ydGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hl
YXAtc25hcHNob3Qtc3VtbWFyeS1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRp
bmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41NjZhNzNlODRiNjgzNzUzMzExOWNhMWM4MmI2MDkyZGIyNmZi
YWJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hl
YXAtc25hcHNob3Qtc3VtbWFyeS1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRp
bmcuaHRtbApAQCAtMCwwICsxLDgwIEBACis8aHRtbD4KKzxoZWFkPgorICA8c2NyaXB0IHNyYz0i
Li4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICA8c2NyaXB0IHNyYz0iaGVhcC1zbmFwc2hvdC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBpbnN0YW5jZUNvdW50ID0gMjU7CisgICAg
ZnVuY3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90KCkKKyAgICB7CisgICAgICAgIHJldHVybiBJbnNw
ZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdChpbnN0YW5jZUNvdW50KTsKKyAgICB9CisKKyAg
ICBJbnNwZWN0b3JUZXN0LnJ1bkhlYXBTbmFwc2hvdFRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0
aW9uIHRlc3RFeHBhbnNpb25QcmVzZXJ2ZWRXaGVuU29ydGluZyhuZXh0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnRha2VBbmRPcGVuU25hcHNob3QoY3JlYXRlSGVhcFNu
YXBzaG90LCBzdGVwMSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiU3VtbWFy
eSIsIHN0ZXAyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGNvbHVtbnM7Cisg
ICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY29sdW1ucyA9IEluc3BlY3RvclRlc3Qudmlld0NvbHVtbnMoKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNsaWNrQ29sdW1uKGNvbHVtbnNbMF0sIHN0ZXAzKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHZhciByb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIsICJC
Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFy
b3csICJcIkJcIiByb3ciKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZFJv
dyhyb3csIHNob3dOZXh0KTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBzaG93TmV4dChyb3cp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUg
PSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOworICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAibm8gYnV0
dG9ucyBub2RlIGZvdW5kISIpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNs
aWNrU2hvd01vcmVCdXR0b24oInNob3dOZXh0IiwgYnV0dG9uc05vZGUsIHN0ZXA0KTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBub2RlQ291bnQ7
CisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNChyb3cpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgLy8gVGhlcmUgbXVzdCBiZSBlbm91Z2ggbm9kZXMgdG8gaGF2ZSBzb21lIHVucmV2
ZWFsZWQuCisgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5m
aW5kQnV0dG9uc05vZGUocm93KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAibm8gYnV0dG9ucyBub2RlIGZvdW5kISIpOwor
CisgICAgICAgICAgICAgICAgbm9kZUNvdW50ID0gSW5zcGVjdG9yVGVzdC5jb2x1bW5Db250ZW50
cyhjb2x1bW5zWzBdKS5sZW5ndGg7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHModHJ1ZSwgbm9kZUNvdW50ID4gMCwgIm5vZGVDb3VudCA+IDAiKTsKKworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwgY2xpY2tUd2lj
ZSk7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2xpY2tUd2ljZSgpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrQ29sdW1uKGNvbHVt
bnNbMF0sIHN0ZXA2KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHN0ZXA2KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2
YXIgbmV3Tm9kZUNvdW50ID0gSW5zcGVjdG9yVGVzdC5jb2x1bW5Db250ZW50cyhjb2x1bW5zWzBd
KS5sZW5ndGg7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMobm9k
ZUNvdW50LCBuZXdOb2RlQ291bnQpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwg
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBdKTsKK30KKworPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3RzIFN1bW1hcnkgdmll
dyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KK1Nob3duIG5vZGUgY291bnQgbXVzdCBiZSBw
cmVzZXJ2ZWQgYWZ0ZXIgc29ydGluZy4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXN1bW1hcnkt
c29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVh
cC1zbmFwc2hvdC1zdW1tYXJ5LXNvcnRpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MzA3
NjAxMTk0ZGJmMzVkMDUxYTIzNjBlY2I1MzgwMzkyOTZiZWYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNvcnRp
bmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGVzdHMgc29ydGluZyBpbiBTdW1tYXJ5
IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCisKK0hlYXAgcHJvZmlsZXIgaXMgZGlz
YWJsZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAt
c25hcHNob3Qtc3VtbWFyeS1zb3J0aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNvcnRpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmMx
MjM1OWM0NTUyNzY5MmUzMzkwZWZhNjQzOWY4MGU2OWI1MDgxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3Qtc3VtbWFyeS1zb3J0
aW5nLmh0bWwKQEAgLTAsMCArMSw3NSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHNjcmlwdCBzcmM9
Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgPHNjcmlwdCBzcmM9ImhlYXAtc25hcHNob3QtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgaW5zdGFuY2VDb3VudCA9IDI1OworICAg
IGZ1bmN0aW9uIGNyZWF0ZUhlYXBTbmFwc2hvdCgpCisgICAgeworICAgICAgICByZXR1cm4gSW5z
cGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3QoaW5zdGFuY2VDb3VudCk7CisgICAgfQorCisg
ICAgSW5zcGVjdG9yVGVzdC5ydW5IZWFwU25hcHNob3RUZXN0U3VpdGUoWworICAgICAgICBmdW5j
dGlvbiB0ZXN0U29ydGluZyhuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LnRha2VBbmRPcGVuU25hcHNob3QoY3JlYXRlSGVhcFNuYXBzaG90LCBzdGVwMSk7CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiU3VtbWFyeSIsIHN0ZXAyKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIGNvbHVtbnM7CisgICAgICAgICAgICB2YXIgY3VycmVu
dENvbHVtbjsKKyAgICAgICAgICAgIHZhciBjdXJyZW50Q29sdW1uT3JkZXI7CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb2x1
bW5zID0gSW5zcGVjdG9yVGVzdC52aWV3Q29sdW1ucygpOworICAgICAgICAgICAgICAgIGN1cnJl
bnRDb2x1bW4gPSAwOworICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5PcmRlciA9IGZhbHNl
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoc3RlcDMsIDApOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMygpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgaWYgKGN1cnJlbnRDb2x1bW4gPj0gY29sdW1ucy5sZW5ndGgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChuZXh0LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xp
Y2tDb2x1bW4oY29sdW1uc1tjdXJyZW50Q29sdW1uXSwgc3RlcDQpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNChuZXdDb2x1bW5TdGF0ZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjb2x1bW5zW2N1cnJlbnRDb2x1bW5dID0gbmV3Q29sdW1uU3Rh
dGU7CisgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRzID0gSW5zcGVjdG9yVGVzdC5jb2x1bW5D
b250ZW50cyhjb2x1bW5zW2N1cnJlbnRDb2x1bW5dKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWNvbnRlbnRzLmxlbmd0aCwgImNvbHVtbiBjb250
ZW50cyIpOworICAgICAgICAgICAgICAgIHZhciBzb3J0VHlwZXMgPSB7IG9iamVjdDogInRleHQi
LCBkaXN0YW5jZVRvV2luZG93OiAibnVtYmVyIiwgY291bnQ6ICJudW1iZXIiLCBzaGFsbG93U2l6
ZTogInNpemUiLCByZXRhaW5lZFNpemU6ICJzaXplIiB9OworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhc29ydFR5cGVzW2NvbHVtbnNbY3VycmVudENv
bHVtbl0uaWRlbnRpZmllcl0sICJzb3J0IGJ5IGlkZW50aWZpZXIiKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNoZWNrQXJyYXlJc1NvcnRlZChjb250ZW50cywgc29ydFR5cGVzW2Nv
bHVtbnNbY3VycmVudENvbHVtbl0uaWRlbnRpZmllcl0sIGNvbHVtbnNbY3VycmVudENvbHVtbl0u
c29ydCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRDb2x1bW5PcmRlcikKKyAgICAg
ICAgICAgICAgICAgICAgY3VycmVudENvbHVtbk9yZGVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbHVtbk9yZGVyID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICsrY3VycmVudENvbHVtbjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChzdGVwMywgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICBdKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3RzIHNvcnRpbmcgaW4gU3VtbWFyeSB2aWV3IG9mIGRldGFp
bGVkIGhlYXAgc25hcHNob3RzLgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMKaW5kZXgg
ZTBkMjVhY2Y5MGMwNDY4ODk5Yjg4NmVjMDFmNjA1ZWZkYmY4NmYwMi4uYzNmNmEwMjFlZWYyYjA5
OGIzNzZmNDMzNDRmMzhlNjRjNzA4ZmNiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzCkBAIC0xNTUsNCArMTU1LDM5OSBA
QCBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tXaXRoRE9NID0gZnVuY3Rpb24o
KQogICAgIH0pOwogfTsKIAorSW5zcGVjdG9yVGVzdC5zdGFydFByb2ZpbGVyVGVzdCA9IGZ1bmN0
aW9uKGNhbGxiYWNrKQoreworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInByb2ZpbGVzIik7
CisgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dIZWFwU25hcHNob3RPYmplY3RzSGlkZGVu
UHJvcGVydGllcy5zZXQodHJ1ZSk7CisKKyAgICBmdW5jdGlvbiBwcm9maWxlckVuYWJsZWQoKQor
ICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlByb2ZpbGVyIHdhcyBlbmFi
bGVkLiIpOworICAgICAgICAvLyBXZSBtb2NrIG91dCBQcm9maWxlckFnZW50IC0tIGFzIERSVCBy
dW5zIGluIHNpbmdsZS1wcm9jZXNzIG1vZGUsIEluc3BlY3RvcgorICAgICAgICAvLyBhbmQgdGVz
dCBzaGFyZSB0aGUgc2FtZSBoZWFwLiBUYWtpbmcgYSBzbmFwc2hvdCB0YWtlcyB0b28gbG9uZyBm
b3IgYSB0ZXN0LAorICAgICAgICAvLyBzbyB3ZSBwcm92aWRlIHN5bnRoZXRpYyBzbmFwc2hvdHMu
CisgICAgICAgIEluc3BlY3RvclRlc3QuX3BhbmVsUmVzZXQgPSBJbnNwZWN0b3JUZXN0Lm92ZXJy
aWRlKFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMsICJfcmVzZXQiLCBmdW5jdGlvbigpe30s
IHRydWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFZpZXcucHJvdG90eXBlLCAiX2xvYWRQcm9maWxlIiwgSW5zcGVjdG9yVGVzdC5f
c25hcHNob3RWaWV3U2hvd24sIHRydWUpOworCisgICAgICAgIGRldGFpbGVkSGVhcFByb2ZpbGVz
RW5hYmxlZCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGRldGFpbGVkSGVhcFByb2ZpbGVzRW5h
YmxlZCgpCisgICAgeworICAgICAgICAvLyBSZWR1Y2UgdGhlIG51bWJlciBvZiBwb3B1bGF0ZWQg
bm9kZXMgdG8gc3BlZWQgdXAgdGVzdGluZy4KKyAgICAgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdENvbnRhaW5tZW50RGF0YUdyaWQucHJvdG90eXBlLl9kZWZhdWx0UG9wdWxhdGVDb3VudCA9
IDEwOworICAgICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JzRGF0YUdy
aWQucHJvdG90eXBlLl9kZWZhdWx0UG9wdWxhdGVDb3VudCA9IDEwOworICAgICAgICBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90RGlmZkRhdGFHcmlkLnByb3RvdHlwZS5fZGVmYXVsdFBvcHVsYXRl
Q291bnQgPSA1OworICAgICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RG9taW5hdG9yc0Rh
dGFHcmlkLnByb3RvdHlwZS5fZGVmYXVsdFBvcHVsYXRlQ291bnQgPSAzOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiRGV0YWlsZWQgaGVhcCBwcm9maWxlcyB3ZXJlIGVuYWJsZWQu
Iik7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spKCk7CisgICAgfQor
CisgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMuX3Byb2ZpbGVyRW5hYmxlZCkK
KyAgICAgICAgcHJvZmlsZXJFbmFibGVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLCAiX3Byb2ZpbGVy
V2FzRW5hYmxlZCIsIHByb2ZpbGVyRW5hYmxlZCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5l
bHMucHJvZmlsZXMuX3RvZ2dsZVByb2ZpbGluZyhmYWxzZSk7CisgICAgfQorfTsKKworSW5zcGVj
dG9yVGVzdC5jb21wbGV0ZVByb2ZpbGVyVGVzdCA9IGZ1bmN0aW9uKCkKK3sKKyAgICAvLyBUaGVy
ZSBpcyBubyB3YXkgdG8gZGlzYWJsZSBkZXRhaWxlZCBoZWFwIHByb2ZpbGVzLgorCisgICAgZnVu
Y3Rpb24gY29tcGxldGVUZXN0KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCIiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlByb2ZpbGVyIHdhcyBk
aXNhYmxlZC4iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9
CisKKyAgICB2YXIgcHJvZmlsZXNQYW5lbCA9IFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXM7
CisgICAgaWYgKCFwcm9maWxlc1BhbmVsLl9wcm9maWxlckVuYWJsZWQpCisgICAgICAgIGNvbXBs
ZXRlVGVzdCgpOworICAgIGVsc2UgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIo
V2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcywgIl9wcm9maWxlcldhc0Rpc2FibGVkIiwgY29t
cGxldGVUZXN0KTsKKyAgICAgICAgcHJvZmlsZXNQYW5lbC5fdG9nZ2xlUHJvZmlsaW5nKGZhbHNl
KTsKKyAgICB9Cit9OworCitJbnNwZWN0b3JUZXN0LnJ1bkhlYXBTbmFwc2hvdFRlc3RTdWl0ZSA9
IGZ1bmN0aW9uKHRlc3RTdWl0ZSkKK3sKKyAgICBpZiAoIUNhcGFiaWxpdGllcy5oZWFwUHJvZmls
ZXJQcmVzZW50KSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJIZWFwIHByb2Zp
bGVyIGlzIGRpc2FibGVkIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0Ll9uZXh0VWlkID0g
MTsKKyAgICB2YXIgdGVzdFN1aXRlVGVzdHMgPSB0ZXN0U3VpdGUuc2xpY2UoKTsKKworICAgIGZ1
bmN0aW9uIHJ1bm5lcigpCisgICAgeworICAgICAgICBpZiAoIXRlc3RTdWl0ZVRlc3RzLmxlbmd0
aCkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVByb2ZpbGVyVGVzdCgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIG5leHRUZXN0ID0g
dGVzdFN1aXRlVGVzdHMuc2hpZnQoKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUnVubmluZzogIiArIC9mdW5j
dGlvblxzKFteKF0qKS8uZXhlYyhuZXh0VGVzdClbMV0pOworICAgICAgICBJbnNwZWN0b3JUZXN0
Ll9wYW5lbFJlc2V0LmNhbGwoV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcyk7CisgICAgICAg
IEluc3BlY3RvclRlc3Quc2FmZVdyYXAobmV4dFRlc3QpKHJ1bm5lciwgcnVubmVyKTsKKyAgICB9
CisKKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0UHJvZmlsZXJUZXN0KHJ1bm5lcik7Cit9OworCitJ
bnNwZWN0b3JUZXN0LmFzc2VydENvbHVtbkNvbnRlbnRzRXF1YWwgPSBmdW5jdGlvbihyZWZlcmVu
Y2UsIGFjdHVhbCkKK3sKKyAgICB2YXIgbGVuZ3RoID0gTWF0aC5taW4ocmVmZXJlbmNlLmxlbmd0
aCwgYWN0dWFsLmxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMocmVmZXJlbmNlW2ldLCBhY3R1YWxb
aV0sICJyb3cgIiArIGkpOworICAgIGlmIChyZWZlcmVuY2UubGVuZ3RoID4gbGVuZ3RoKQorICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXh0cmEgcm93cyBpbiByZWZlcmVuY2UgYXJy
YXk6XG4iICsgcmVmZXJlbmNlLnNsaWNlKGxlbmd0aCkuam9pbigiXG4iKSk7CisgICAgZWxzZSBp
ZiAoYWN0dWFsLmxlbmd0aCA+IGxlbmd0aCkKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoImV4dHJhIHJvd3MgaW4gYWN0dWFsIGFycmF5OlxuIiArIGFjdHVhbC5zbGljZShsZW5ndGgp
LmpvaW4oIlxuIikpOworfTsKKworSW5zcGVjdG9yVGVzdC5jaGVja0FycmF5SXNTb3J0ZWQgPSBm
dW5jdGlvbihjb250ZW50cywgc29ydFR5cGUsIHNvcnRPcmRlcikKK3sKKyAgICBmdW5jdGlvbiBz
aW1wbGVDb21wYXJhdG9yKGEsIGIpCisgICAgeworICAgICAgICByZXR1cm4gYSA8IGIgPyAtMSA6
IChhID4gYiA/IDEgOiAwKTsKKyAgICB9CisgICAgZnVuY3Rpb24gcGFyc2VTaXplKHNpemUpCisg
ICAgeworICAgICAgICBpZiAoc2l6ZS5jaGFyQXQoMCkgPT09ICI+IikKKyAgICAgICAgICAgIHNp
emUgPSBzaXplLnN1YnN0cmluZygyKTsKKyAgICAgICAgdmFyIGFtb3VudCA9IHBhcnNlRmxvYXQo
c2l6ZSwgMTApOworICAgICAgICB2YXIgbXVsdGlwbGllciA9IHsKKyAgICAgICAgICAgICJLQiI6
IDEwMjQsCisgICAgICAgICAgICAiTUIiOiAxMDI0ICogMTAyNAorICAgICAgICB9W3NpemUuc3Vi
c3RyaW5nKHNpemUubGVuZ3RoIC0gMildOworICAgICAgICByZXR1cm4gbXVsdGlwbGllciA/IGFt
b3VudCAqIG11bHRpcGxpZXIgOiBhbW91bnQ7CisgICAgfQorICAgIGZ1bmN0aW9uIGV4dHJhY3RO
YW1lKGRhdGEpCisgICAgeworICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShkYXRhKTsKKyAgICAg
ICAgaWYgKCFkYXRhLm5hbWUpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
Tm8gbmFtZSBmaWVsZCBpbiAiICsgSlNPTi5zdHJpbmdpZnkoZGF0YSkpOworICAgICAgICByZXR1
cm4gcGFyc2VJbnQoZGF0YS5uYW1lLCAxMCk7CisgICAgfQorICAgIGZ1bmN0aW9uIGV4dHJhY3RJ
ZChkYXRhKQorICAgIHsKKyAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7CisgICAgICAg
IGlmICghZGF0YS5ub2RlSWQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
Tm8gbm9kZUlkIGZpZWxkIGluICIgKyBKU09OLnN0cmluZ2lmeShkYXRhKSk7CisgICAgICAgIHJl
dHVybiBwYXJzZUludChkYXRhLm5vZGVJZCwgMTApOworICAgIH0KKyAgICB2YXIgY29tcGFyYXRv
ciA9IHsKKyAgICAgICAgdGV4dDogc2ltcGxlQ29tcGFyYXRvciwKKyAgICAgICAgbnVtYmVyOiBm
dW5jdGlvbiAoYSwgYikgeyByZXR1cm4gc2ltcGxlQ29tcGFyYXRvcihwYXJzZUludChhLCAxMCks
IHBhcnNlSW50KGIsIDEwKSk7IH0sCisgICAgICAgIHNpemU6IGZ1bmN0aW9uIChhLCBiKSB7IHJl
dHVybiBzaW1wbGVDb21wYXJhdG9yKHBhcnNlU2l6ZShhKSwgcGFyc2VTaXplKGIpKTsgfSwKKyAg
ICAgICAgbmFtZTogZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIHNpbXBsZUNvbXBhcmF0b3IoZXh0
cmFjdE5hbWUoYSksIGV4dHJhY3ROYW1lKGIpKTsgfSwKKyAgICAgICAgaWQ6IGZ1bmN0aW9uIChh
LCBiKSB7IHJldHVybiBzaW1wbGVDb21wYXJhdG9yKGV4dHJhY3RJZChhKSwgZXh0cmFjdElkKGIp
KTsgfQorICAgIH1bc29ydFR5cGVdOworICAgIHZhciBhY2NlcHRhYmxlQ29tcGFyaXNvblJlc3Vs
dCA9IHsKKyAgICAgICAgYXNjZW5kaW5nOiAtMSwKKyAgICAgICAgZGVzY2VuZGluZzogMQorICAg
IH1bc29ydE9yZGVyXTsKKworICAgIGlmICghY29tcGFyYXRvcikgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiSW52YWxpZCBzb3J0IHR5cGU6ICIgKyBzb3J0VHlwZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFhY2NlcHRhYmxlQ29tcGFyaXNvblJlc3VsdCkg
eworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiSW52YWxpZCBzb3J0IG9yZGVyOiAi
ICsgc29ydE9yZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgY29udGVudHMubGVuZ3RoIC0gMTsgKytpKSB7CisgICAgICAgIHZhciByZXN1bHQg
PSBjb21wYXJhdG9yKGNvbnRlbnRzW2ldLCBjb250ZW50c1tpICsgMV0pOworICAgICAgICBpZiAo
cmVzdWx0ICE9PSAwICYmIHJlc3VsdCAhPT0gYWNjZXB0YWJsZUNvbXBhcmlzb25SZXN1bHQpCisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRWxlbWVudHMgIiArIGkgKyAiIGFu
ZCAiICsgKGkgKyAxKSArICIgYXJlIG91dCBvZiBvcmRlcjogIiArIGNvbnRlbnRzW2ldICsgIiAi
ICsgY29udGVudHNbaSArIDFdICsgIiAoIiArIHNvcnRPcmRlciArICIpIik7CisgICAgfQorfTsK
KworSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbiA9IGZ1bmN0aW9uKGNvbHVtbiwgY2FsbGJhY2sp
Cit7CisgICAgY2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKGNhbGxiYWNrKTsKKyAg
ICB2YXIgY2VsbCA9IHRoaXMuX2N1cnJlbnRHcmlkKCkuX2hlYWRlclRhYmxlSGVhZGVyc1tjb2x1
bW4uaWRlbnRpZmllcl07CisgICAgdmFyIGV2ZW50ID0geyB0YXJnZXQ6IHsgZW5jbG9zaW5nTm9k
ZU9yU2VsZldpdGhOb2RlTmFtZTogZnVuY3Rpb24oKSB7IHJldHVybiBjZWxsOyB9IH0gfTsKKwor
ICAgIGZ1bmN0aW9uIHNvcnRpbmdDb21wbGV0ZSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JU
ZXN0Ll9jdXJyZW50R3JpZCgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY29tcGxldGUi
LCBzb3J0aW5nQ29tcGxldGUsIHRoaXMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyhjb2x1bW4uaWRlbnRpZmllciwgdGhpcy5fY3VycmVudEdyaWQoKS5zb3J0Q29sdW1uSWRl
bnRpZmllciwgInVuZXhwZWN0ZWQgc29ydGluZyIpOworICAgICAgICBjb2x1bW4uc29ydCA9IHRo
aXMuX2N1cnJlbnRHcmlkKCkuc29ydE9yZGVyOworICAgICAgICBmdW5jdGlvbiBjYWxsQ2FsbGJh
Y2soKQorICAgICAgICB7CisgICAgICAgICAgICBjYWxsYmFjayhjb2x1bW4pOworICAgICAgICB9
CisgICAgICAgIHNldFRpbWVvdXQoY2FsbENhbGxiYWNrLCAwKTsKKyAgICB9CisgICAgSW5zcGVj
dG9yVGVzdC5fY3VycmVudEdyaWQoKS5hZGRFdmVudExpc3RlbmVyKCJzb3J0aW5nIGNvbXBsZXRl
Iiwgc29ydGluZ0NvbXBsZXRlLCB0aGlzKTsKKyAgICB0aGlzLl9jdXJyZW50R3JpZCgpLl9jbGlj
a0luSGVhZGVyQ2VsbChldmVudCk7Cit9OworCitJbnNwZWN0b3JUZXN0LmNsaWNrU2hvd01vcmVC
dXR0b24gPSBmdW5jdGlvbihidXR0b25OYW1lLCByb3csIGNhbGxiYWNrKQoreworICAgIGNhbGxi
YWNrID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjayk7CisgICAgdmFyIHBhcmVudCA9
IHJvdy5wYXJlbnQ7CisgICAgZnVuY3Rpb24gcG9wdWxhdGVDb21wbGV0ZSgpCisgICAgeworICAg
ICAgICBwYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9wdWxhdGUgY29tcGxldGUiLCBwb3B1
bGF0ZUNvbXBsZXRlLCB0aGlzKTsKKyAgICAgICAgZnVuY3Rpb24gY2FsbENhbGxiYWNrKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgY2FsbGJhY2socGFyZW50KTsKKyAgICAgICAgfQorICAgICAg
ICBzZXRUaW1lb3V0KGNhbGxDYWxsYmFjaywgMCk7CisgICAgfQorICAgIHBhcmVudC5hZGRFdmVu
dExpc3RlbmVyKCJwb3B1bGF0ZSBjb21wbGV0ZSIsIHBvcHVsYXRlQ29tcGxldGUsIHRoaXMpOwor
ICAgIHJvd1tidXR0b25OYW1lXS5jbGljaygpOworfTsKKworSW5zcGVjdG9yVGVzdC5jb2x1bW5D
b250ZW50cyA9IGZ1bmN0aW9uKGNvbHVtbiwgcm93KQoreworICAgIHZhciByZXN1bHQgPSBbXTsK
KyAgICB2YXIgcGFyZW50ID0gcm93IHx8IHRoaXMuX2N1cnJlbnRHcmlkKCk7CisgICAgZm9yICh2
YXIgbm9kZSA9IHBhcmVudC5jaGlsZHJlblswXTsgbm9kZTsgbm9kZSA9IG5vZGUudHJhdmVyc2VO
ZXh0Tm9kZSh0cnVlLCBwYXJlbnQsIHRydWUpKSB7CisgICAgICAgIGlmICghbm9kZS5zZWxlY3Rh
YmxlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHZhciBkYXRhID0gbm9kZS5kYXRh
W2NvbHVtbi5pZGVudGlmaWVyXTsKKyAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAib2JqZWN0
IikKKyAgICAgICAgICAgIGRhdGEgPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKKyAgICAgICAgcmVz
dWx0LnB1c2goZGF0YSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9OworCitJbnNwZWN0
b3JUZXN0LmNvdW50RGF0YVJvd3MgPSBmdW5jdGlvbihyb3csIGZpbHRlcikKK3sKKyAgICB2YXIg
cmVzdWx0ID0gMDsKKyAgICBmaWx0ZXIgPSBmaWx0ZXIgfHwgZnVuY3Rpb24obm9kZSkgeyByZXR1
cm4gbm9kZS5zZWxlY3RhYmxlOyB9OworICAgIGZvciAodmFyIG5vZGUgPSByb3cuY2hpbGRyZW5b
MF07IG5vZGU7IG5vZGUgPSBub2RlLnRyYXZlcnNlTmV4dE5vZGUodHJ1ZSwgcm93LCB0cnVlKSkg
eworICAgICAgICBpZiAoZmlsdGVyKG5vZGUpKQorICAgICAgICAgICAgKytyZXN1bHQ7CisgICAg
fQorICAgIHJldHVybiByZXN1bHQ7Cit9OworCitJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFw
c2hvdCA9IGZ1bmN0aW9uKGluc3RhbmNlQ291bnQsIGZpcnN0SWQpCit7CisgICAgLy8gTW9ja2lu
ZyByZXN1bHRzIG9mIHJ1bm5pbmcgdGhlIGZvbGxvd2luZyBjb2RlOgorICAgIC8vIAorICAgIC8v
IGZ1bmN0aW9uIEEoKSB7IHRoaXMuYSA9IHRoaXM7IH0KKyAgICAvLyBmdW5jdGlvbiBCKHgpIHsg
dGhpcy5hID0gbmV3IEEoeCk7IH0KKyAgICAvLyBmb3IgKHZhciBpID0gMDsgaSA8IGluc3RhbmNl
Q291bnQ7ICsraSkgbmV3IEIoKTsKKyAgICAvLyAKKyAgICAvLyBJbnN0YW5jZXMgb2YgQSBoYXZl
IDEyIGJ5dGVzIHNpemUsIGluc3RhbmNlcyBvZiBCIGhhcyAxNiBieXRlcyBzaXplLgorICAgIHZh
ciBzaXplT2ZBID0gMTI7CisgICAgdmFyIHNpemVPZkIgPSAxNjsgIAorCisgICAgZnVuY3Rpb24g
Z2VuZXJhdGVOb2RlcygpCisgICAgeworICAgICAgICB2YXIgbm9kZXMgPSBbbnVsbF07CisgICAg
ICAgIC8vIFB1c2ggdGhlICdtZXRhLXJvb3QnIG5vZGUuCisgICAgICAgIG5vZGVzLnB1c2goMCwg
MCwgMSwgMCwgKHNpemVPZkEgKyBzaXplT2ZCKSAqIGluc3RhbmNlQ291bnQsIDEsIDEsIDQsIDEs
IG51bGwpOworICAgICAgICAvLyBQdXNoIGluc3RhbmNlcyBvZiBBIGFuZCBCLgorICAgICAgICB2
YXIgaW5kZXhlc09mQiA9IFtdOworICAgICAgICB2YXIgbmV4dElkID0gZmlyc3RJZCB8fCA1Owor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluc3RhbmNlQ291bnQ7ICsraSkgeworICAgICAg
ICAgICAgdmFyIGluZGV4T2ZBID0gbm9kZXMubGVuZ3RoOworICAgICAgICAgICAgbm9kZXMucHVz
aCgzLCAxLCBuZXh0SWQrKywgc2l6ZU9mQSwgc2l6ZU9mQSwgbnVsbCwgMSwgMiwgMywgaW5kZXhP
ZkEpOworICAgICAgICAgICAgdmFyIGluZGV4T2ZCID0gbm9kZXMubGVuZ3RoOworICAgICAgICAg
ICAgLy8gU2V0IGRvbWluYXRvciBvZiBBLgorICAgICAgICAgICAgbm9kZXNbaW5kZXhPZkEgKyA1
XSA9IGluZGV4T2ZCOworICAgICAgICAgICAgbm9kZXMucHVzaCgzLCAyLCBuZXh0SWQrKywgc2l6
ZU9mQiwgc2l6ZU9mQiArIHNpemVPZkEsIG51bGwsIDEsIDIsIDMsIGluZGV4T2ZBKTsKKyAgICAg
ICAgICAgIGluZGV4ZXNPZkIucHVzaChpbmRleE9mQik7CisgICAgICAgIH0KKyAgICAgICAgdmFy
IGluZGV4T2ZHQ1Jvb3RzID0gbm9kZXMubGVuZ3RoOworICAgICAgICBub2Rlcy5wdXNoKDMsIDQs
IDMsIDAsIChzaXplT2ZBICsgc2l6ZU9mQikgKiBpbnN0YW5jZUNvdW50LCAxLCBpbnN0YW5jZUNv
dW50KTsKKyAgICAgICAgLy8gU2V0IGRvbWluYXRvciBvZiBCLgorICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGluc3RhbmNlQ291bnQ7ICsraSkgeworICAgICAgICAgICAgbm9kZXNbaW5kZXhl
c09mQltpXSArIDVdID0gaW5kZXhPZkdDUm9vdHM7CisgICAgICAgIH0KKyAgICAgICAgLy8gU2V0
IChHQyByb290cykgYXMgY2hpbGQgb2YgbWV0YS1yb290LgorICAgICAgICBub2Rlc1sxMF0gPSBp
bmRleE9mR0NSb290czsKKyAgICAgICAgLy8gUHVzaCBpbnN0YW5jZXMgb2YgQiBhcyBjaGlsZHJl
biBvZiBHQyByb290cy4KKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnN0YW5jZUNvdW50
OyArK2kpIHsKKyAgICAgICAgICAgIG5vZGVzLnB1c2goMSwgaSArIDEsIGluZGV4ZXNPZkJbaV0p
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBub2RlczsKKyAgICB9CisKKyAgICB2YXIgcmVz
dWx0ID0geworICAgICAgICAic25hcHNob3QiOiB7fSwKKyAgICAgICAgIm5vZGVzIjogZ2VuZXJh
dGVOb2RlcygpLAorICAgICAgICAic3RyaW5ncyI6IFsiIiwgIkEiLCAiQiIsICJhIiwgIihHQyBy
b290cykiXQorICAgIH07CisgICAgcmVzdWx0Lm5vZGVzWzBdID0geworICAgICAgICAiZmllbGRz
IjpbInR5cGUiLCJuYW1lIiwiaWQiLCJzZWxmX3NpemUiLCJyZXRhaW5lZF9zaXplIiwiZG9taW5h
dG9yIiwiY2hpbGRyZW5fY291bnQiLCJjaGlsZHJlbiJdLAorICAgICAgICAidHlwZXMiOltbImhp
ZGRlbiIsImFycmF5Iiwic3RyaW5nIiwib2JqZWN0IiwiY29kZSIsImNsb3N1cmUiLCJyZWdleHAi
LCJudW1iZXIiLCJuYXRpdmUiXSwic3RyaW5nIiwibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIiwi
bnVtYmVyIiwibnVtYmVyIix7CisgICAgICAgICAgICAiZmllbGRzIjpbInR5cGUiLCJuYW1lX29y
X2luZGV4IiwidG9fbm9kZSJdLAorICAgICAgICAgICAgInR5cGVzIjpbWyJjb250ZXh0IiwiZWxl
bWVudCIsInByb3BlcnR5IiwiaW50ZXJuYWwiLCJoaWRkZW4iLCJzaG9ydGN1dCJdLCJzdHJpbmdf
b3JfbnVtYmVyIiwibm9kZSJdfV19OworICAgIHJldHVybiByZXN1bHQ7Cit9OworCitJbnNwZWN0
b3JUZXN0LmV4cGFuZFJvdyA9IGZ1bmN0aW9uKHJvdywgY2FsbGJhY2spCit7CisgICAgY2FsbGJh
Y2sgPSBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKGNhbGxiYWNrKTsKKyAgICBmdW5jdGlvbiBwb3B1
bGF0ZUNvbXBsZXRlKCkKKyAgICB7CisgICAgICAgIHJvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJw
b3B1bGF0ZSBjb21wbGV0ZSIsIHBvcHVsYXRlQ29tcGxldGUsIHRoaXMpOworICAgICAgICBmdW5j
dGlvbiBjYWxsQ2FsbGJhY2soKQorICAgICAgICB7CisgICAgICAgICAgICBjYWxsYmFjayhyb3cp
OworICAgICAgICB9CisgICAgICAgIHNldFRpbWVvdXQoY2FsbENhbGxiYWNrLCAwKTsKKyAgICB9
CisgICAgcm93LmFkZEV2ZW50TGlzdGVuZXIoInBvcHVsYXRlIGNvbXBsZXRlIiwgcG9wdWxhdGVD
b21wbGV0ZSwgdGhpcyk7CisgICAgKGZ1bmN0aW9uIGV4cGFuZCgpCisgICAgeworICAgICAgICBp
ZiAocm93Lmhhc0NoaWxkcmVuKQorICAgICAgICAgICAgcm93LmV4cGFuZCgpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBzZXRUaW1lb3V0KGV4cGFuZCwgMCk7CisgICAgfSkoKTsKK307CisK
K0luc3BlY3RvclRlc3QuZmluZEFuZEV4cGFuZEdDUm9vdHMgPSBmdW5jdGlvbihjYWxsYmFjaykK
K3sKKyAgICBjYWxsYmFjayA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spOworICAg
IGZ1bmN0aW9uIHByb3BlcnR5TWF0Y2hlcihkYXRhKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRh
dGEudmFsdWUgPT09ICIoR0Mgcm9vdHMpIjsKKyAgICB9CisgICAgdmFyIGdjUm9vdHMgPSBJbnNw
ZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIsIHByb3BlcnR5TWF0Y2hlcik7CisgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFnY1Jvb3RzLCAiR0Mgcm9vdHMgcm93Iik7Cisg
ICAgSW5zcGVjdG9yVGVzdC5leHBhbmRSb3coZ2NSb290cywgY2FsbGJhY2spOworfQorCitJbnNw
ZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZSA9IGZ1bmN0aW9uKHJvdywgc3RhcnROb2RlKQorewor
ICAgIHZhciByZXN1bHQgPSAwOworICAgIGZvciAodmFyIG5vZGUgPSBzdGFydE5vZGUgfHwgcm93
LmNoaWxkcmVuWzBdOyBub2RlOyBub2RlID0gbm9kZS50cmF2ZXJzZU5leHROb2RlKHRydWUsIHJv
dywgdHJ1ZSkpIHsKKyAgICAgICAgaWYgKCFub2RlLnNlbGVjdGFibGUgJiYgbm9kZS5zaG93TmV4
dCkKKyAgICAgICAgICAgIHJldHVybiBub2RlOworICAgIH0KKyAgICByZXR1cm4gbnVsbDsKK307
CisKK0luc3BlY3RvclRlc3QuZmluZFJvdyA9IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIsIG1h
dGNoZXIsIHBhcmVudCkKK3sKKyAgICBwYXJlbnQgPSBwYXJlbnQgfHwgdGhpcy5fY3VycmVudEdy
aWQoKTsKKyAgICBpZiAodHlwZW9mIG1hdGNoZXIgIT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAg
dmFyIHZhbHVlID0gbWF0Y2hlcjsKKyAgICAgICAgbWF0Y2hlciA9IGZ1bmN0aW9uKHgpIHsgcmV0
dXJuIHggPT09IHZhbHVlOyB9OworICAgIH0KKyAgICBmb3IgKHZhciBub2RlID0gcGFyZW50LmNo
aWxkcmVuWzBdOyBub2RlOyBub2RlID0gbm9kZS50cmF2ZXJzZU5leHROb2RlKHRydWUsIHBhcmVu
dCwgdHJ1ZSkpIHsKKyAgICAgICAgaWYgKG1hdGNoZXIobm9kZS5kYXRhW2NvbHVtbklkZW50aWZp
ZXJdKSkKKyAgICAgICAgICAgIHJldHVybiBub2RlOworICAgIH0KKyAgICByZXR1cm4gbnVsbDsK
K307CisKK0luc3BlY3RvclRlc3QuZmluZFJvdzIgPSBmdW5jdGlvbihtYXRjaGVyLCBwYXJlbnQp
Cit7CisgICAgcGFyZW50ID0gcGFyZW50IHx8IHRoaXMuX2N1cnJlbnRHcmlkKCk7CisgICAgZm9y
ICh2YXIgbm9kZSA9IHBhcmVudC5jaGlsZHJlblswXTsgbm9kZTsgbm9kZSA9IG5vZGUudHJhdmVy
c2VOZXh0Tm9kZSh0cnVlLCBwYXJlbnQsIHRydWUpKSB7CisgICAgICAgIGlmIChtYXRjaGVyKG5v
ZGUuZGF0YSkpCisgICAgICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9CisgICAgcmV0dXJuIG51
bGw7Cit9OworCitJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldyA9IGZ1bmN0aW9uKHRpdGxlLCBj
YWxsYmFjaykKK3sKKyAgICBjYWxsYmFjayA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJh
Y2spOworICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy52aXNpYmxl
VmlldzsKKyAgICB2aWV3LmNoYW5nZVZpZXcodGl0bGUsIGNhbGxiYWNrKTsKK307CisKK0luc3Bl
Y3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdCA9IGZ1bmN0aW9uKGdlbmVyYXRvciwgY2FsbGJh
Y2spCit7CisgICAgY2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKGNhbGxiYWNrKTsK
KyAgICB2YXIgdWlkID0gSW5zcGVjdG9yVGVzdC5fbmV4dFVpZCsrOworICAgIHZhciBwcm9maWxl
ID0geyB0eXBlSWQ6IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQs
IHVpZDogdWlkLCB0aXRsZTogVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lICsgIi4iICsgdWlkIH07
CisgICAgZnVuY3Rpb24gcHVzaEdlbmVyYXRlZFNuYXBzaG90KHR5cGVJZCwgdWlkKQorICAgIHsK
KyAgICAgICAgdmFyIHNuYXBzaG90ID0gZ2VuZXJhdG9yKCk7CisgICAgICAgIHNuYXBzaG90LnNu
YXBzaG90LnR5cGVJZCA9IHByb2ZpbGUudHlwZUlkOworICAgICAgICBzbmFwc2hvdC5zbmFwc2hv
dC50aXRsZSA9IHByb2ZpbGUudGl0bGU7CisgICAgICAgIHNuYXBzaG90LnNuYXBzaG90LnVpZCA9
IHByb2ZpbGUudWlkOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLl9hZGRI
ZWFwU25hcHNob3RDaHVuayh1aWQsIEpTT04uc3RyaW5naWZ5KHNuYXBzaG90KSk7CisgICAgICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMuX2ZpbmlzaEhlYXBTbmFwc2hvdCh1aWQpOwor
ICAgIH0KKyAgICBJbnNwZWN0b3JUZXN0Lm92ZXJyaWRlKFByb2ZpbGVyQWdlbnQsICJnZXRQcm9m
aWxlIiwgcHVzaEdlbmVyYXRlZFNuYXBzaG90KTsKKyAgICBJbnNwZWN0b3JUZXN0Ll90YWtlQW5k
T3BlblNuYXBzaG90Q2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICBXZWJJbnNwZWN0b3IucGFuZWxz
LnByb2ZpbGVzLmFkZFByb2ZpbGVIZWFkZXIocHJvZmlsZSk7CisgICAgV2ViSW5zcGVjdG9yLnBh
bmVscy5wcm9maWxlcy5zaG93UHJvZmlsZShwcm9maWxlKTsKK307CisKK0luc3BlY3RvclRlc3Qu
dmlld0NvbHVtbnMgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuX2N1
cnJlbnRHcmlkKCkuX2NvbHVtbnNBcnJheTsKK307CisKK0luc3BlY3RvclRlc3QuX2N1cnJlbnRH
cmlkID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2Zp
bGVzLnZpc2libGVWaWV3LmRhdGFHcmlkOworfTsKKworSW5zcGVjdG9yVGVzdC5fc25hcHNob3RW
aWV3U2hvd24gPSBmdW5jdGlvbigpCit7CisgICAgaWYgKEluc3BlY3RvclRlc3QuX3Rha2VBbmRP
cGVuU25hcHNob3RDYWxsYmFjaykgeworICAgICAgICB2YXIgY2FsbGJhY2sgPSBJbnNwZWN0b3JU
ZXN0Ll90YWtlQW5kT3BlblNuYXBzaG90Q2FsbGJhY2s7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
X3Rha2VBbmRPcGVuU25hcHNob3RDYWxsYmFjayA9IG51bGw7CisgICAgICAgIHZhciBkYXRhR3Jp
ZCA9IHRoaXMuZGF0YUdyaWQ7CisgICAgICAgIGZ1bmN0aW9uIHNvcnRpbmdDb21wbGV0ZSgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRhdGFHcmlkLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNvcnRp
bmcgY29tcGxldGUiLCBzb3J0aW5nQ29tcGxldGUsIG51bGwpOworICAgICAgICAgICAgY2FsbGJh
Y2soKTsKKyAgICAgICAgfQorICAgICAgICBkYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKCJzb3J0
aW5nIGNvbXBsZXRlIiwgc29ydGluZ0NvbXBsZXRlLCBudWxsKTsKKyAgICB9Cit9OworCiB9Owpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2Zp
bGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb21wYXJpc29uLWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hl
bi1zb3J0aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2lu
c3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFyaXNvbi1leHBhbnNpb24t
cHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDUyMGZkNTAxYmIwYWM1YjBkZDRmMjEyZmQ1YzcxNGQxNmI2ZDdjMmYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb21w
YXJpc29uLWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotVGVzdHMgQ29tcGFyaXNvbiB2aWV3IG9mIGRldGFp
bGVkIGhlYXAgc25hcHNob3RzLiBFeHBhbmRlZCBub2RlcyBtdXN0IGJlIHByZXNlcnZlZCBhZnRl
ciBzb3J0aW5nLgotCi1Qcm9maWxlciB3YXMgZW5hYmxlZC4KLURldGFpbGVkIGhlYXAgcHJvZmls
ZXMgd2VyZSBlbmFibGVkLgotCi1SdW5uaW5nOiB0ZXN0RXhwYW5zaW9uUHJlc2VydmVkV2hlblNv
cnRpbmcKLQotUHJvZmlsZXIgd2FzIGRpc2FibGVkLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3Rz
LWNvbXBhcmlzb24tc2hvdy1hbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb21wYXJpc29u
LXNob3ctYWxsLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQy
NTBmZjE5MWQ0NDYwZDM5NWNiNjE3OTgyYzI0YzQzMjBkMmQxZi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbXBhcmlzb24tc2hvdy1h
bGwtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1UZXN0cyBDb21w
YXJpc29uIHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIFRoZSAiU2hvdyBBbGwiIGJ1
dHRvbiBtdXN0IHNob3cgYWxsIG5vZGVzLgotCi1Qcm9maWxlciB3YXMgZW5hYmxlZC4KLURldGFp
bGVkIGhlYXAgcHJvZmlsZXMgd2VyZSBlbmFibGVkLgotCi1SdW5uaW5nOiB0ZXN0U2hvd0FsbAot
Ci1Qcm9maWxlciB3YXMgZGlzYWJsZWQuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFy
aXNvbi1zaG93LW5leHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb21wYXJpc29uLXNob3ct
bmV4dC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4ZDEyNDNj
MmMyODU1MzMxY2JlNTQwNzAyYWZlZTViOGRhZTY4NGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5z
cGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb21wYXJpc29uLXNob3ctbmV4dC1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLVRlc3RzIENvbXBhcmlz
b24gdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gUmVwZWF0ZWQgY2xpY2tzIG9uICJT
aG93IE5leHQiIGJ1dHRvbiBtdXN0IHNob3cgYWxsIG5vZGVzLgotCi1Qcm9maWxlciB3YXMgZW5h
YmxlZC4KLURldGFpbGVkIGhlYXAgcHJvZmlsZXMgd2VyZSBlbmFibGVkLgotCi1SdW5uaW5nOiB0
ZXN0U2hvd05leHQKLQotUHJvZmlsZXIgd2FzIGRpc2FibGVkLgotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVh
cHNob3RzLWNvbXBhcmlzb24tc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5n
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9w
cm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFyaXNvbi1zaG93bi1ub2RlLWNvdW50LXBy
ZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlZTc3OGZmYzQ5MzNmYzIwZmIwOTA1YzZlNzU0YjA4Y2UxYTU4ZDJiLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFy
aXNvbi1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1UZXN0cyBDb21wYXJpc29uIHZpZXcgb2Yg
ZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIFNob3duIG5vZGUgY291bnQgbXVzdCBiZSBwcmVzZXJ2
ZWQgYWZ0ZXIgc29ydGluZy4KLQotUHJvZmlsZXIgd2FzIGVuYWJsZWQuCi1EZXRhaWxlZCBoZWFw
IHByb2ZpbGVzIHdlcmUgZW5hYmxlZC4KLQotUnVubmluZzogdGVzdEV4cGFuc2lvblByZXNlcnZl
ZFdoZW5Tb3J0aW5nCi0KLVByb2ZpbGVyIHdhcyBkaXNhYmxlZC4KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhl
YXBzaG90cy1jb21wYXJpc29uLXNvcnRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb21w
YXJpc29uLXNvcnRpbmctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiMWUyYmU5MDZiOWI0MmE5MTk1YzljMzhkNjhiYTA1Yjg3MzQ5YTMzLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFyaXNvbi1z
b3J0aW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotVGVzdHMg
c29ydGluZyBpbiBDb21wYXJpc29uIHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCi0K
LVByb2ZpbGVyIHdhcyBlbmFibGVkLgotRGV0YWlsZWQgaGVhcCBwcm9maWxlcyB3ZXJlIGVuYWJs
ZWQuCi0KLVJ1bm5pbmc6IHRlc3RTb3J0aW5nCi0KLVByb2ZpbGVyIHdhcyBkaXNhYmxlZC4KLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2Zp
bGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1leHBhbnNpb24tcHJlc2VydmVkLXdo
ZW4tc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9p
bnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LWV4cGFuc2lv
bi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDJkZjAyMjdhNGVjMzhiNWVkOWQyNTJmYmU5YThmNTBmMjczODZmNC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNv
bnRhaW5tZW50LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotVGVzdHMgQ29udGFpbm1lbnQgdmlldyBvZiBk
ZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gRXhwYW5kZWQgbm9kZXMgbXVzdCBiZSBwcmVzZXJ2ZWQg
YWZ0ZXIgc29ydGluZy4KLQotUHJvZmlsZXIgd2FzIGVuYWJsZWQuCi1EZXRhaWxlZCBoZWFwIHBy
b2ZpbGVzIHdlcmUgZW5hYmxlZC4KLQotUnVubmluZzogdGVzdEV4cGFuc2lvblByZXNlcnZlZFdo
ZW5Tb3J0aW5nCi0KLVByb2ZpbGVyIHdhcyBkaXNhYmxlZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBz
aG90cy1jb250YWlubWVudC1zaG93LWFsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRh
aW5tZW50LXNob3ctYWxsLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMTVlOTA2MWYxZDdkNDE4ZWE1MGYzZDEzZDA4NDkyYTU0NWExZTIyNy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50
LXNob3ctYWxsLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotVGVz
dHMgQ29udGFpbm1lbnQgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gVGhlICJTaG93
IEFsbCIgYnV0dG9uIG11c3Qgc2hvdyBhbGwgbm9kZXMuCi0KLVByb2ZpbGVyIHdhcyBlbmFibGVk
LgotRGV0YWlsZWQgaGVhcCBwcm9maWxlcyB3ZXJlIGVuYWJsZWQuCi0KLVJ1bm5pbmc6IHRlc3RT
aG93QWxsCi0KLVByb2ZpbGVyIHdhcyBkaXNhYmxlZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90
cy1jb250YWlubWVudC1zaG93LW5leHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlu
bWVudC1zaG93LW5leHQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwNDU1MDE2ZmY0NWExNTI4MzUwMGZjNDkzM2E2ZWEzZTExMWI3YWVmLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQt
c2hvdy1uZXh0LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotVGVz
dHMgQ29udGFpbm1lbnQgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gUmVwZWF0ZWQg
Y2xpY2tzIG9uICJTaG93IE5leHQiIGJ1dHRvbiBtdXN0IHNob3cgYWxsIG5vZGVzLgotCi1Qcm9m
aWxlciB3YXMgZW5hYmxlZC4KLURldGFpbGVkIGhlYXAgcHJvZmlsZXMgd2VyZSBlbmFibGVkLgot
Ci1SdW5uaW5nOiB0ZXN0U2hvd05leHQKLQotUHJvZmlsZXIgd2FzIGRpc2FibGVkLgotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIv
ZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LXNob3duLW5vZGUtY291bnQtcHJlc2VydmVk
LXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbnRhaW5tZW50LXNob3du
LW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkMTg3ZmZkNGEyYjZlNDlkZjRjNTlmNGE2ZWJjNzliMGU0
NmRhZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhl
YXBzaG90cy1jb250YWlubWVudC1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRp
bmctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1UZXN0cyBDb250
YWlubWVudCB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLiBTaG93biBub2RlIGNvdW50
IG11c3QgYmUgcHJlc2VydmVkIGFmdGVyIHNvcnRpbmcuCi0KLVByb2ZpbGVyIHdhcyBlbmFibGVk
LgotRGV0YWlsZWQgaGVhcCBwcm9maWxlcyB3ZXJlIGVuYWJsZWQuCi0KLVJ1bm5pbmc6IHRlc3RT
aG93bk5vZGVDb3VudFByZXNlcnZlZFdoZW5Tb3J0aW5nCi0KLVByb2ZpbGVyIHdhcyBkaXNhYmxl
ZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9y
L3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb250YWlubWVudC1zb3J0aW5nLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9k
ZXRhaWxlZC1oZWFwc2hvdHMtY29udGFpbm1lbnQtc29ydGluZy1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZTAzNGY5OTU3ZmI1ZGMxMjYwNjBjZGMzMjQxZjJl
YWE5YmY0MWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVk
LWhlYXBzaG90cy1jb250YWlubWVudC1zb3J0aW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDkgKzAsMCBAQAotVGVzdHMgc29ydGluZyBpbiBDb250YWlubWVudCB2aWV3IG9mIGRl
dGFpbGVkIGhlYXAgc25hcHNob3RzLgotCi1Qcm9maWxlciB3YXMgZW5hYmxlZC4KLURldGFpbGVk
IGhlYXAgcHJvZmlsZXMgd2VyZSBlbmFibGVkLgotCi1SdW5uaW5nOiB0ZXN0U29ydGluZwotCi1Q
cm9maWxlciB3YXMgZGlzYWJsZWQuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5hdG9y
cy1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNo
b3RzLWRvbWluYXRvcnMtZXhwYW5zaW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzFkMzQ2NGEzNDY5NmIzN2EyNzUz
NWRkYTQzZDExNjMyNzM0Y2JmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxl
ci9kZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4t
c29ydGluZy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLVRlc3Rz
IERvbWluYXRvcnMgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gRXhwYW5kZWQgbm9k
ZXMgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgc29ydGluZy4KLQotUHJvZmlsZXIgd2FzIGVuYWJs
ZWQuCi1EZXRhaWxlZCBoZWFwIHByb2ZpbGVzIHdlcmUgZW5hYmxlZC4KLQotUnVubmluZzogdGVz
dEV4cGFuc2lvblByZXNlcnZlZFdoZW5Tb3J0aW5nCi0KLVByb2ZpbGVyIHdhcyBkaXNhYmxlZC4K
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3By
b2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1kb21pbmF0b3JzLXNob3ctYWxsLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRh
aWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1zaG93LWFsbC1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3ZjhjMThhNWFhNTY4YTAzNjU4N2Y0ZGZiZWFjZTZiNDBm
ZTc2NWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhl
YXBzaG90cy1kb21pbmF0b3JzLXNob3ctYWxsLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDkgKzAsMCBAQAotVGVzdHMgRG9taW5hdG9ycyB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25h
cHNob3RzLiBUaGUgIlNob3cgQWxsIiBidXR0b24gbXVzdCBzaG93IGFsbCBub2Rlcy4KLQotUHJv
ZmlsZXIgd2FzIGVuYWJsZWQuCi1EZXRhaWxlZCBoZWFwIHByb2ZpbGVzIHdlcmUgZW5hYmxlZC4K
LQotUnVubmluZzogdGVzdFNob3dBbGwKLQotUHJvZmlsZXIgd2FzIGRpc2FibGVkLgotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIv
ZGV0YWlsZWQtaGVhcHNob3RzLWRvbWluYXRvcnMtc2hvdy1uZXh0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1o
ZWFwc2hvdHMtZG9taW5hdG9ycy1zaG93LW5leHQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhYTU1NmE4YjdmMTMxNDhlYzUwYTQ5MzcxMjYyOTA2MGIwZjcyOTc3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hv
dHMtZG9taW5hdG9ycy1zaG93LW5leHQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
OSArMCwwIEBACi1UZXN0cyBEb21pbmF0b3JzIHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hv
dHMuIFJlcGVhdGVkIGNsaWNrcyBvbiAiU2hvdyBOZXh0IiBidXR0b24gbXVzdCBzaG93IGFsbCBu
b2Rlcy4KLQotUHJvZmlsZXIgd2FzIGVuYWJsZWQuCi1EZXRhaWxlZCBoZWFwIHByb2ZpbGVzIHdl
cmUgZW5hYmxlZC4KLQotUnVubmluZzogdGVzdFNob3dOZXh0Ci0KLVByb2ZpbGVyIHdhcyBkaXNh
YmxlZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVj
dG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1kb21pbmF0b3JzLXNob3duLW5vZGUtY291
bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWRvbWlu
YXRvcnMtc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhiNjlkMTc2MjA2ZjA0YzQxMTE5M2Ew
ZjM5MzgwOTc1OTViMzhlOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIv
ZGV0YWlsZWQtaGVhcHNob3RzLWRvbWluYXRvcnMtc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQt
d2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAot
VGVzdHMgRG9taW5hdG9ycyB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLiBTaG93biBu
b2RlIGNvdW50IG11c3QgYmUgcHJlc2VydmVkIGFmdGVyIHNvcnRpbmcuCi0KLVByb2ZpbGVyIHdh
cyBlbmFibGVkLgotRGV0YWlsZWQgaGVhcCBwcm9maWxlcyB3ZXJlIGVuYWJsZWQuCi0KLVJ1bm5p
bmc6IHRlc3RTaG93bk5vZGVDb3VudFByZXNlcnZlZFdoZW5Tb3J0aW5nCi0KLVByb2ZpbGVyIHdh
cyBkaXNhYmxlZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
aW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1kb21pbmF0b3JzLXNvcnRpbmct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3By
b2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1kb21pbmF0b3JzLXNvcnRpbmctZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODJkNjI0N2YyNDcwZWRkNWIwZWExODlm
MDk1Y2U4MmM2ODI1Nzg2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9k
ZXRhaWxlZC1oZWFwc2hvdHMtZG9taW5hdG9ycy1zb3J0aW5nLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDkgKzAsMCBAQAotVGVzdHMgc29ydGluZyBpbiBEb21pbmF0b3JzIHZpZXcg
b2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCi0KLVByb2ZpbGVyIHdhcyBlbmFibGVkLgotRGV0
YWlsZWQgaGVhcCBwcm9maWxlcyB3ZXJlIGVuYWJsZWQuCi0KLVJ1bm5pbmc6IHRlc3RTb3J0aW5n
Ci0KLVByb2ZpbGVyIHdhcyBkaXNhYmxlZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1t
YXJ5LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFw
c2hvdHMtc3VtbWFyeS1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNmU0MDRmNWRmMzQ0ZjAzM2E0ZjE3
NGIzMjVlYTg1NTRlY2VhNTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVy
L2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0
aW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotVGVzdHMgU3Vt
bWFyeSB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLiBFeHBhbmRlZCBub2RlcyBtdXN0
IGJlIHByZXNlcnZlZCBhZnRlciBzb3J0aW5nLgotCi1Qcm9maWxlciB3YXMgZW5hYmxlZC4KLURl
dGFpbGVkIGhlYXAgcHJvZmlsZXMgd2VyZSBlbmFibGVkLgotCi1SdW5uaW5nOiB0ZXN0RXhwYW5z
aW9uUHJlc2VydmVkV2hlblNvcnRpbmcKLQotUHJvZmlsZXIgd2FzIGRpc2FibGVkLgotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIv
ZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktc2hvdy1hbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBz
aG90cy1zdW1tYXJ5LXNob3ctYWxsLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzZhMzgxNzgwZmE1ZGJkN2M5MzE0YmFjZjg0ZjM2ZjNlM2FlNjM2Ny4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1h
cnktc2hvdy1hbGwtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1U
ZXN0cyBTdW1tYXJ5IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIFRoZSAiU2hvdyBB
bGwiIGJ1dHRvbiBtdXN0IHNob3cgYWxsIG5vZGVzLgotCi1Qcm9maWxlciB3YXMgZW5hYmxlZC4K
LURldGFpbGVkIGhlYXAgcHJvZmlsZXMgd2VyZSBlbmFibGVkLgotCi1SdW5uaW5nOiB0ZXN0U2hv
d0FsbAotCi1Qcm9maWxlciB3YXMgZGlzYWJsZWQuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMt
c3VtbWFyeS1zaG93LW5leHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNob3ct
bmV4dC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2ODg2Mzll
MTAyNmRiYjE3NDYyZjExYjg3NWY2MGYyMDBkZGYxOWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5z
cGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNob3ctbmV4dC1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLVRlc3RzIFN1bW1hcnkgdmll
dyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gUmVwZWF0ZWQgY2xpY2tzIG9uICJTaG93IE5l
eHQiIGJ1dHRvbiBtdXN0IHNob3cgYWxsIG5vZGVzLgotCi1Qcm9maWxlciB3YXMgZW5hYmxlZC4K
LURldGFpbGVkIGhlYXAgcHJvZmlsZXMgd2VyZSBlbmFibGVkLgotCi1SdW5uaW5nOiB0ZXN0U2hv
d05leHQKLQotUHJvZmlsZXIgd2FzIGRpc2FibGVkLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3Rz
LXN1bW1hcnktc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9k
ZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZlZC13aGVu
LXNvcnRpbmctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWY4
YzdjMDg3NTdiOGU0OWI0ODVlNTBjZmE1NWMwM2JlYmNhY2EyLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zaG93bi1ub2Rl
LWNvdW50LXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsOSArMCwwIEBACi1UZXN0cyBTdW1tYXJ5IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFw
c2hvdHMuIFNob3duIG5vZGUgY291bnQgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgc29ydGluZy4K
LQotUHJvZmlsZXIgd2FzIGVuYWJsZWQuCi1EZXRhaWxlZCBoZWFwIHByb2ZpbGVzIHdlcmUgZW5h
YmxlZC4KLQotUnVubmluZzogdGVzdEV4cGFuc2lvblByZXNlcnZlZFdoZW5Tb3J0aW5nCi0KLVBy
b2ZpbGVyIHdhcyBkaXNhYmxlZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNv
cnRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVj
dG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LXNvcnRpbmctZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGEwZGExYTNhODUzN2E3ZTY1NTY2
ZjJiMTNhMzIwMGVhYzI5YWY4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxl
ci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1zb3J0aW5nLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDkgKzAsMCBAQAotVGVzdHMgc29ydGluZyBpbiBTdW1tYXJ5IHZpZXcgb2Yg
ZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCi0KLVByb2ZpbGVyIHdhcyBlbmFibGVkLgotRGV0YWls
ZWQgaGVhcCBwcm9maWxlcyB3ZXJlIGVuYWJsZWQuCi0KLVJ1bm5pbmc6IHRlc3RTb3J0aW5nCi0K
LVByb2ZpbGVyIHdhcyBkaXNhYmxlZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1l
eHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21w
YXJpc29uLWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41MjBmZDUwMWJiMGFjNWIwZGQ0ZjIxMmZkNWM3MTRkMTZiNmQ3YzJmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2Zp
bGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29y
dGluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0cyBDb21wYXJpc29uIHZpZXcg
b2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIEV4cGFuZGVkIG5vZGVzIG11c3QgYmUgcHJlc2Vy
dmVkIGFmdGVyIHNvcnRpbmcuCisKK1Byb2ZpbGVyIHdhcyBlbmFibGVkLgorRGV0YWlsZWQgaGVh
cCBwcm9maWxlcyB3ZXJlIGVuYWJsZWQuCisKK1J1bm5pbmc6IHRlc3RFeHBhbnNpb25QcmVzZXJ2
ZWRXaGVuU29ydGluZworCitQcm9maWxlciB3YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBz
aG90LWNvbXBhcmlzb24tc2hvdy1hbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1z
aG93LWFsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQyNTBmZjE5MWQ0NDYwZDM5NWNiNjE3
OTgyYzI0YzQzMjBkMmQxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc2hv
dy1hbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMgQ29tcGFyaXNvbiB2aWV3
IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLiBUaGUgIlNob3cgQWxsIiBidXR0b24gbXVzdCBz
aG93IGFsbCBub2Rlcy4KKworUHJvZmlsZXIgd2FzIGVuYWJsZWQuCitEZXRhaWxlZCBoZWFwIHBy
b2ZpbGVzIHdlcmUgZW5hYmxlZC4KKworUnVubmluZzogdGVzdFNob3dBbGwKKworUHJvZmlsZXIg
d2FzIGRpc2FibGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21wYXJpc29uLXNob3ctbmV4dC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21wYXJpc29uLXNob3ctbmV4dC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjhkMTI0M2MyYzI4NTUzMzFjYmU1NDA3MDJhZmVlNWI4ZGFlNjg0YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9m
aWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc2hvdy1uZXh0LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDkgQEAKK1Rlc3RzIENvbXBhcmlzb24gdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBz
aG90cy4gUmVwZWF0ZWQgY2xpY2tzIG9uICJTaG93IE5leHQiIGJ1dHRvbiBtdXN0IHNob3cgYWxs
IG5vZGVzLgorCitQcm9maWxlciB3YXMgZW5hYmxlZC4KK0RldGFpbGVkIGhlYXAgcHJvZmlsZXMg
d2VyZSBlbmFibGVkLgorCitSdW5uaW5nOiB0ZXN0U2hvd05leHQKKworUHJvZmlsZXIgd2FzIGRp
c2FibGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNw
ZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21wYXJpc29uLXNob3duLW5vZGUtY291bnQt
cHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21wYXJpc29uLXNo
b3duLW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWU3NzhmZmM0OTMzZmMyMGZiMDkwNWM2ZTc1NGIwOGNlMWE1OGQyYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxl
ci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hl
bi1zb3J0aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1Rlc3RzIENvbXBhcmlzb24g
dmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gU2hvd24gbm9kZSBjb3VudCBtdXN0IGJl
IHByZXNlcnZlZCBhZnRlciBzb3J0aW5nLgorCitQcm9maWxlciB3YXMgZW5hYmxlZC4KK0RldGFp
bGVkIGhlYXAgcHJvZmlsZXMgd2VyZSBlbmFibGVkLgorCitSdW5uaW5nOiB0ZXN0RXhwYW5zaW9u
UHJlc2VydmVkV2hlblNvcnRpbmcKKworUHJvZmlsZXIgd2FzIGRpc2FibGVkLgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVh
cC1zbmFwc2hvdC1jb21wYXJpc29uLXNvcnRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFy
aXNvbi1zb3J0aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWUyYmU5MDZiOWI0MmE5MTk1
YzljMzhkNjhiYTA1Yjg3MzQ5YTMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNv
bi1zb3J0aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1Rlc3RzIHNvcnRpbmcgaW4g
Q29tcGFyaXNvbiB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLgorCitQcm9maWxlciB3
YXMgZW5hYmxlZC4KK0RldGFpbGVkIGhlYXAgcHJvZmlsZXMgd2VyZSBlbmFibGVkLgorCitSdW5u
aW5nOiB0ZXN0U29ydGluZworCitQcm9maWxlciB3YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNu
YXBzaG90LWNvbnRhaW5tZW50LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxl
ci9oZWFwLXNuYXBzaG90LWNvbnRhaW5tZW50LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0
aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmRmMDIyN2E0ZWMzOGI1ZWQ5ZDI1MmZiZTlh
OGY1MGYyNzM4NmY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29udGFpbm1lbnQtZXhwYW5z
aW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAor
VGVzdHMgQ29udGFpbm1lbnQgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gRXhwYW5k
ZWQgbm9kZXMgbXVzdCBiZSBwcmVzZXJ2ZWQgYWZ0ZXIgc29ydGluZy4KKworUHJvZmlsZXIgd2Fz
IGVuYWJsZWQuCitEZXRhaWxlZCBoZWFwIHByb2ZpbGVzIHdlcmUgZW5hYmxlZC4KKworUnVubmlu
ZzogdGVzdEV4cGFuc2lvblByZXNlcnZlZFdoZW5Tb3J0aW5nCisKK1Byb2ZpbGVyIHdhcyBkaXNh
YmxlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVj
dG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29udGFpbm1lbnQtc2hvdy1hbGwtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hl
YXAtc25hcHNob3QtY29udGFpbm1lbnQtc2hvdy1hbGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE1ZTkwNjFmMWQ3ZDQxOGVhNTBmM2QxM2QwODQ5MmE1NDVhMWUyMjcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVh
cC1zbmFwc2hvdC1jb250YWlubWVudC1zaG93LWFsbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5
IEBACitUZXN0cyBDb250YWlubWVudCB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLiBU
aGUgIlNob3cgQWxsIiBidXR0b24gbXVzdCBzaG93IGFsbCBub2Rlcy4KKworUHJvZmlsZXIgd2Fz
IGVuYWJsZWQuCitEZXRhaWxlZCBoZWFwIHByb2ZpbGVzIHdlcmUgZW5hYmxlZC4KKworUnVubmlu
ZzogdGVzdFNob3dBbGwKKworUHJvZmlsZXIgd2FzIGRpc2FibGVkLgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFw
c2hvdC1jb250YWlubWVudC1zaG93LW5leHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29udGFpbm1l
bnQtc2hvdy1uZXh0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDU1MDE2ZmY0NWExNTI4MzUw
MGZjNDkzM2E2ZWEzZTExMWI3YWVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29udGFpbm1l
bnQtc2hvdy1uZXh0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1Rlc3RzIENvbnRhaW5t
ZW50IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIFJlcGVhdGVkIGNsaWNrcyBvbiAi
U2hvdyBOZXh0IiBidXR0b24gbXVzdCBzaG93IGFsbCBub2Rlcy4KKworUHJvZmlsZXIgd2FzIGVu
YWJsZWQuCitEZXRhaWxlZCBoZWFwIHByb2ZpbGVzIHdlcmUgZW5hYmxlZC4KKworUnVubmluZzog
dGVzdFNob3dOZXh0CisKK1Byb2ZpbGVyIHdhcyBkaXNhYmxlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3QtY29udGFpbm1lbnQtc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9m
aWxlci9oZWFwLXNuYXBzaG90LWNvbnRhaW5tZW50LXNob3duLW5vZGUtY291bnQtcHJlc2VydmVk
LXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQxODdmZmQ0YTJiNmU0OWRm
NGM1OWY0YTZlYmM3OWIwZTQ2ZGFkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbnRhaW5t
ZW50LXNob3duLW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw5IEBACitUZXN0cyBDb250YWlubWVudCB2aWV3IG9mIGRldGFpbGVkIGhlYXAg
c25hcHNob3RzLiBTaG93biBub2RlIGNvdW50IG11c3QgYmUgcHJlc2VydmVkIGFmdGVyIHNvcnRp
bmcuCisKK1Byb2ZpbGVyIHdhcyBlbmFibGVkLgorRGV0YWlsZWQgaGVhcCBwcm9maWxlcyB3ZXJl
IGVuYWJsZWQuCisKK1J1bm5pbmc6IHRlc3RTaG93bk5vZGVDb3VudFByZXNlcnZlZFdoZW5Tb3J0
aW5nCisKK1Byb2ZpbGVyIHdhcyBkaXNhYmxlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29udGFp
bm1lbnQtc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb250YWlubWVudC1zb3J0aW5nLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGUwMzRmOTk1N2ZiNWRjMTI2MDYwY2RjMzI0MWYyZWFh
OWJmNDFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
aW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29udGFpbm1lbnQtc29ydGluZy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0cyBzb3J0aW5nIGluIENvbnRhaW5tZW50IHZp
ZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCisKK1Byb2ZpbGVyIHdhcyBlbmFibGVkLgor
RGV0YWlsZWQgaGVhcCBwcm9maWxlcyB3ZXJlIGVuYWJsZWQuCisKK1J1bm5pbmc6IHRlc3RTb3J0
aW5nCisKK1Byb2ZpbGVyIHdhcyBkaXNhYmxlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZG9taW5h
dG9ycy1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hv
dC1kb21pbmF0b3JzLWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNzFkMzQ2NGEzNDY5NmIzN2EyNzUzNWRkYTQzZDExNjMyNzM0Y2JmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9y
L3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZG9taW5hdG9ycy1leHBhbnNpb24tcHJlc2VydmVkLXdo
ZW4tc29ydGluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0cyBEb21pbmF0b3Jz
IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIEV4cGFuZGVkIG5vZGVzIG11c3QgYmUg
cHJlc2VydmVkIGFmdGVyIHNvcnRpbmcuCisKK1Byb2ZpbGVyIHdhcyBlbmFibGVkLgorRGV0YWls
ZWQgaGVhcCBwcm9maWxlcyB3ZXJlIGVuYWJsZWQuCisKK1J1bm5pbmc6IHRlc3RFeHBhbnNpb25Q
cmVzZXJ2ZWRXaGVuU29ydGluZworCitQcm9maWxlciB3YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9oZWFw
LXNuYXBzaG90LWRvbWluYXRvcnMtc2hvdy1hbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZG9taW5h
dG9ycy1zaG93LWFsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdmOGMxOGE1YWE1NjhhMDM2
NTg3ZjRkZmJlYWNlNmI0MGZlNzY1ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWRvbWluYXRv
cnMtc2hvdy1hbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMgRG9taW5hdG9y
cyB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLiBUaGUgIlNob3cgQWxsIiBidXR0b24g
bXVzdCBzaG93IGFsbCBub2Rlcy4KKworUHJvZmlsZXIgd2FzIGVuYWJsZWQuCitEZXRhaWxlZCBo
ZWFwIHByb2ZpbGVzIHdlcmUgZW5hYmxlZC4KKworUnVubmluZzogdGVzdFNob3dBbGwKKworUHJv
ZmlsZXIgd2FzIGRpc2FibGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1kb21pbmF0b3JzLXNob3ct
bmV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0
b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1kb21pbmF0b3JzLXNob3ctbmV4dC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWE1NTZhOGI3ZjEzMTQ4ZWM1MGE0OTM3MTI2MjkwNjBiMGY3Mjk3Nwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rv
ci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWRvbWluYXRvcnMtc2hvdy1uZXh0LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDkgQEAKK1Rlc3RzIERvbWluYXRvcnMgdmlldyBvZiBkZXRhaWxlZCBoZWFw
IHNuYXBzaG90cy4gUmVwZWF0ZWQgY2xpY2tzIG9uICJTaG93IE5leHQiIGJ1dHRvbiBtdXN0IHNo
b3cgYWxsIG5vZGVzLgorCitQcm9maWxlciB3YXMgZW5hYmxlZC4KK0RldGFpbGVkIGhlYXAgcHJv
ZmlsZXMgd2VyZSBlbmFibGVkLgorCitSdW5uaW5nOiB0ZXN0U2hvd05leHQKKworUHJvZmlsZXIg
d2FzIGRpc2FibGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1kb21pbmF0b3JzLXNob3duLW5vZGUt
Y291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1kb21pbmF0
b3JzLXNob3duLW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDhiNjlkMTc2MjA2ZjA0YzQxMTE5M2EwZjM5MzgwOTc1OTViMzhlOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9w
cm9maWxlci9oZWFwLXNuYXBzaG90LWRvbWluYXRvcnMtc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2
ZWQtd2hlbi1zb3J0aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1Rlc3RzIERvbWlu
YXRvcnMgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4gU2hvd24gbm9kZSBjb3VudCBt
dXN0IGJlIHByZXNlcnZlZCBhZnRlciBzb3J0aW5nLgorCitQcm9maWxlciB3YXMgZW5hYmxlZC4K
K0RldGFpbGVkIGhlYXAgcHJvZmlsZXMgd2VyZSBlbmFibGVkLgorCitSdW5uaW5nOiB0ZXN0U2hv
d25Ob2RlQ291bnRQcmVzZXJ2ZWRXaGVuU29ydGluZworCitQcm9maWxlciB3YXMgZGlzYWJsZWQu
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9w
cm9maWxlci9oZWFwLXNuYXBzaG90LWRvbWluYXRvcnMtc29ydGluZy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFw
c2hvdC1kb21pbmF0b3JzLXNvcnRpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MmQ2MjQ3
ZjI0NzBlZGQ1YjBlYTE4OWYwOTVjZTgyYzY4MjU3ODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hv
dC1kb21pbmF0b3JzLXNvcnRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMg
c29ydGluZyBpbiBEb21pbmF0b3JzIHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCisK
K1Byb2ZpbGVyIHdhcyBlbmFibGVkLgorRGV0YWlsZWQgaGVhcCBwcm9maWxlcyB3ZXJlIGVuYWJs
ZWQuCisKK1J1bm5pbmc6IHRlc3RTb3J0aW5nCisKK1Byb2ZpbGVyIHdhcyBkaXNhYmxlZC4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2Zp
bGVyL2hlYXAtc25hcHNob3Qtc3VtbWFyeS1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGlu
Zy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3Iv
cHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1z
b3J0aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDZlNDA0ZjVkZjM0NGYwMzNhNGYxNzRi
MzI1ZWE4NTU0ZWNlYTUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3Qtc3VtbWFyeS1leHBhbnNp
b24tcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitU
ZXN0cyBTdW1tYXJ5IHZpZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuIEV4cGFuZGVkIG5v
ZGVzIG11c3QgYmUgcHJlc2VydmVkIGFmdGVyIHNvcnRpbmcuCisKK1Byb2ZpbGVyIHdhcyBlbmFi
bGVkLgorRGV0YWlsZWQgaGVhcCBwcm9maWxlcyB3ZXJlIGVuYWJsZWQuCisKK1J1bm5pbmc6IHRl
c3RFeHBhbnNpb25QcmVzZXJ2ZWRXaGVuU29ydGluZworCitQcm9maWxlciB3YXMgZGlzYWJsZWQu
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9w
cm9maWxlci9oZWFwLXNuYXBzaG90LXN1bW1hcnktc2hvdy1hbGwtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3Qtc3VtbWFyeS1zaG93LWFsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzZhMzgxNzgwZmE1
ZGJkN2M5MzE0YmFjZjg0ZjM2ZjNlM2FlNjM2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXN1
bW1hcnktc2hvdy1hbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMgU3VtbWFy
eSB2aWV3IG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLiBUaGUgIlNob3cgQWxsIiBidXR0b24g
bXVzdCBzaG93IGFsbCBub2Rlcy4KKworUHJvZmlsZXIgd2FzIGVuYWJsZWQuCitEZXRhaWxlZCBo
ZWFwIHByb2ZpbGVzIHdlcmUgZW5hYmxlZC4KKworUnVubmluZzogdGVzdFNob3dBbGwKKworUHJv
ZmlsZXIgd2FzIGRpc2FibGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNob3ctbmV4
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3Iv
cHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNob3ctbmV4dC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTY4ODYzOWUxMDI2ZGJiMTc0NjJmMTFiODc1ZjYwZjIwMGRkZjE5ZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9m
aWxlci9oZWFwLXNuYXBzaG90LXN1bW1hcnktc2hvdy1uZXh0LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDkgQEAKK1Rlc3RzIFN1bW1hcnkgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4g
UmVwZWF0ZWQgY2xpY2tzIG9uICJTaG93IE5leHQiIGJ1dHRvbiBtdXN0IHNob3cgYWxsIG5vZGVz
LgorCitQcm9maWxlciB3YXMgZW5hYmxlZC4KK0RldGFpbGVkIGhlYXAgcHJvZmlsZXMgd2VyZSBl
bmFibGVkLgorCitSdW5uaW5nOiB0ZXN0U2hvd05leHQKKworUHJvZmlsZXIgd2FzIGRpc2FibGVk
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3Iv
cHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNob3duLW5vZGUtY291bnQtcHJlc2VydmVk
LXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5LXNob3duLW5vZGUtY291
bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFmOGM3
YzA4NzU3YjhlNDliNDg1ZTUwY2ZhNTVjMDNiZWJjYWNhMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBz
aG90LXN1bW1hcnktc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1Rlc3RzIFN1bW1hcnkgdmlldyBvZiBkZXRhaWxlZCBo
ZWFwIHNuYXBzaG90cy4gU2hvd24gbm9kZSBjb3VudCBtdXN0IGJlIHByZXNlcnZlZCBhZnRlciBz
b3J0aW5nLgorCitQcm9maWxlciB3YXMgZW5hYmxlZC4KK0RldGFpbGVkIGhlYXAgcHJvZmlsZXMg
d2VyZSBlbmFibGVkLgorCitSdW5uaW5nOiB0ZXN0RXhwYW5zaW9uUHJlc2VydmVkV2hlblNvcnRp
bmcKKworUHJvZmlsZXIgd2FzIGRpc2FibGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1zdW1tYXJ5
LXNvcnRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5z
cGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3Qtc3VtbWFyeS1zb3J0aW5nLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZGEwZGExYTNhODUzN2E3ZTY1NTY2ZjJiMTNhMzIwMGVhYzI5YWY4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9y
L3Byb2ZpbGVyL2hlYXAtc25hcHNob3Qtc3VtbWFyeS1zb3J0aW5nLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDkgQEAKK1Rlc3RzIHNvcnRpbmcgaW4gU3VtbWFyeSB2aWV3IG9mIGRldGFpbGVkIGhl
YXAgc25hcHNob3RzLgorCitQcm9maWxlciB3YXMgZW5hYmxlZC4KK0RldGFpbGVkIGhlYXAgcHJv
ZmlsZXMgd2VyZSBlbmFibGVkLgorCitSdW5uaW5nOiB0ZXN0U29ydGluZworCitQcm9maWxlciB3
YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIv
UGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTUwZDI4YjRmNGY1Mzk1MDk4Yzg2N2Q1
OTU5MTRkODE0NDUxODAzYi4uMDBiYmMzYzdiYTdhN2E2NTBhNGI5YTNhMjRkNTE0OTdiYmZiYzc2
MyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNC0xNiAgWXVyeSBTZW1p
a2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBy
ZW5hbWUgaGVhcCBwcm9maWxlciBmaWxlcyBhbmQgY2xhc3NlcyBEZXRhaWxlZEhlYXBzaG90KiAt
PkhlYXBTbmFwc2hvdCoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg0MDM4CisKKyAgICAgICAgQSBidW5jaCBvZiByZW5hbWVzICJkZXRhaWxlZCBoZWFw
c2hvdCIgLT4gImhlYXAgc25hcHNob3QiLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RldGFpbGVkLWhlYXBzaG90cy1zbW9rZS10
ZXN0Lmh0bWw6CisKIDIwMTItMDQtMTMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgRml4IHNraXBwZWQgbGlzdC4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvaW5zcGVjdG9yL2RldGFpbGVkLWhlYXBzaG90cy1zbW9rZS10ZXN0Lmh0bWwgYi9QZXJmb3Jt
YW5jZVRlc3RzL2luc3BlY3Rvci9kZXRhaWxlZC1oZWFwc2hvdHMtc21va2UtdGVzdC5odG1sCmlu
ZGV4IGZhZTQ4NTQ2ZWEyMTZmZWJjYjg3MzI2OTZiMTQ3ZjU4NWQ4NzcxMWMuLjcxZjEwZDBhYzA5
YTM5YTlkZGNiMDNjMDI5MTMwM2EzMjRkYWUwYzYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvaW5zcGVjdG9yL2RldGFpbGVkLWhlYXBzaG90cy1zbW9rZS10ZXN0Lmh0bWwKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvZGV0YWlsZWQtaGVhcHNob3RzLXNtb2tlLXRlc3QuaHRt
bApAQCAtNDIsNyArNDIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHRpbWVyLmZp
bmlzaCh0cmFuc2ZlclRpbWVyQ29va2llKTsKICAgICAgICAgICAgIHNob3dUaW1lckNvb2tpZSA9
IHRpbWVyLnN0YXJ0KCJzaG93LXNuYXBzaG90Iik7CiAgICAgICAgICAgICB2YXIgcGFuZWwgPSBX
ZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzOwotICAgICAgICAgICAgdmFyIHByb2ZpbGUgPSBw
YW5lbC5fcHJvZmlsZXNJZE1hcFtwYW5lbC5fbWFrZUtleSh1aWQsIFdlYkluc3BlY3Rvci5EZXRh
aWxlZEhlYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkKV07CisgICAgICAgICAgICB2YXIgcHJvZmls
ZSA9IHBhbmVsLl9wcm9maWxlc0lkTWFwW3BhbmVsLl9tYWtlS2V5KHVpZCwgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCldOwogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRTbmlmZmVyKHByb2ZpbGUucHJveHksICJfY2FsbExvYWRDYWxsYmFja3MiLCBzdGVw
Mik7CiAgICAgICAgIH0KIAo=
</data>
<flag name="review"
          id="142376"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>