<?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>170622</bug_id>
          
          <creation_ts>2017-04-07 15:40:10 -0700</creation_ts>
          <short_desc>Add the UI for scheduling a A/B testing with a custom root</short_desc>
          <delta_ts>2017-04-10 14:45:13 -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>Perf Dashboard</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>170694</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>andersca</cc>
    
    <cc>barraclough</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1295510</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-04-07 15:40:10 -0700</bug_when>
    <thetext>The perf dashboard should have the capability to schedule an A/B testing job with a custom darwinup root.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295511</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-04-07 15:40:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/30341422&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296109</commentid>
    <comment_count>2</comment_count>
      <attachid>306729</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-04-10 12:29:33 -0700</bug_when>
    <thetext>Created attachment 306729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296156</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-04-10 14:38:06 -0700</bug_when>
    <thetext>Committed r215202: &lt;http://trac.webkit.org/changeset/215202&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296162</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-10 14:40:42 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 170694</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296169</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-04-10 14:45:13 -0700</bug_when>
    <thetext>Committed r215205: &lt;http://trac.webkit.org/changeset/215205&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306729</attachid>
            <date>2017-04-10 12:29:33 -0700</date>
            <delta_ts>2017-04-10 14:08:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>fix170622.patch</filename>
            <type>text/plain</type>
            <size>125047</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTEy
MykKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzNyBAQAorMjAxNy0w
NC0xMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgdGhl
IFVJIGZvciBzY2hlZHVsaW5nIGEgQS9CIHRlc3Rpbmcgd2l0aCBhIGN1c3RvbSByb290CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA2MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFk
ZHMgdGhlIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGEgbmV3IGFuYWx5c2lzIHRhc2sgd2l0aCBhIGN1
c3RvbSBkYXJ3aW51cCByb290cy4gQSBmb2xsb3cgdXAgcGF0Y2gKKyAgICAgICAgd291bGQgdXBk
YXRlIHRoZSBzeW5jaW5nIHNjcmlwdCB0byBzY2hlZHVsZSBzdWNoIGFuIEEvQiB0ZXN0aW5nIGpv
YiB0byBhIGJ1aWxkYm90IGluc3RhbmNlLgorCisKKyAgICAgICAgKiBSZWFkTWUubWQ6IFVwZGF0
ZWQgaW5zdHJ1Y3Rpb25zIGZvciBiYWNraW5nIHVwIGFuZCByZXN0b3JpbmcgdGhlIGRhdGFiYXNl
IHNvIHRoYXQgaXQncyBlYXNpZXIgdG8gcmVwbGFjZQorICAgICAgICB0aGUgZmlsZSBwYXRoIGZv
ciB0aGUgYmFja3VwLgorCisgICAgICAgICogaW5pdC1kYXRhYmFzZS5zcWw6IE1ha2UgdGFza19w
bGF0Zm9ybSBhbmQgdGFza19tZXRyaWMgb3B0aW9uYWwgaW4gZWFjaCBhbmFseXNpcyB0YXNrLiBB
bHNvIGFkZGVkIGEgY29sdW1uCisgICAgICAgIHRvIHN0b3JlIHRoZSByb290IGZpbGUgaW4gY29t
bWl0X3NldF9yZWxhdGlvbnNoaXBzLgorCisgICAgICAgICogcHVibGljL2FwaS9idWlsZC1yZXF1
ZXN0cy5waHA6CisgICAgICAgIChtYWluKTogSW5jbHVkZSB0aGUgdXBsb2FkZWQgZmlsZXMuCisK
KyAgICAgICAgKiBwdWJsaWMvYXBpL2NvbW1pdHMucGhwOgorICAgICAgICAobWFpbik6IEFkZGVk
IHRoZSBzdXBwb3J0IGZvciBxdWVyeWluZyB0aGUgbGF0ZXN0IGNvbW1pdHMgZm9yIGEgZ2l2ZW4g
cGxhdGZvcm0uIFRoaXMgaXMgdXNlZCBpbiBhIG5ldyBwYWdlCisgICAgICAgIHRvIGNyZWF0ZSBh
IGN1c3RvbSBhbmFseXNpcyB0YXNrIHRvIGF1dG9maWxsIHRoZSBsYXRlc3QgcmV2aXNpb25zIGZv
ciBhIGdpdmVuIHBsYXRmb3JtLgorCisgICAgICAgICogcHVibGljL2FwaS90ZXN0LWdyb3Vwcy5w
aHA6CisgICAgICAgIChtYWluKTogSW5jbHVkZSB0aGUgdXBsb2FkZWQgZmlsZXMuCisKKyAgICAg
ICAgKiBwdWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocDoKKyAgICAgICAg
KEJ1aWxkUmVxdWVzdHNGZXRjaGVyOjpfX2NvbnN0cnVjdCk6IEFkZGVkIGEgbGlzdCBvZiB1cGxv
YWRlZF9maWxlcyBhbmQgYSBtYXAgZnJvbSBpdHMgaWQuCisgICAgICAgIChCdWlsZFJlcXVlc3Rz
RmV0Y2hlcjo6dXBsb2FkZWRfZmlsZXMpOiBBZGRlZC4KKyAgICAgICAgKEJ1aWxkUmVxdWVzdHNG
ZXRjaGVyOjpmZXRjaF9jb21taXRzX2Zvcl9zZXRfaWZfbmVlZGVkKTogQWRkZWQgdGhlIHN1cHBv
cnQgZm9yIGluY2x1ZGluZyBjdXN0b20gcm9vdHMnIGlkIGluCisgICAgICAgIGVhY2ggY29tbWl0
IHNldCwgYW5kIGluc2VydGluZyBpdHMgbWV0YSBkYXRhIGluIHRoZSBsaXN0IG9mIHVwbGFvZGVk
IGZpbGVzLgorCisgICAgICAgICogcHVibGljL2luY2x1ZGUvY29tbWl0LWxvZy1mZXRjaGVyLnBo
cDoKKyAgICAgICAgKENvbW1pdExvZ0ZldGNoZXI6OmZldGNoX2xhdGVzdF9mb3JfcGxhdGZvcm0p
OiBBZGRlZC4gRmluZHMgdGhlIGxhdGVzdCBjb21taXQgZm9yIGEgZ2l2ZW4gcGxhdGZvcm0uIElk
ZWFsbHksCisgICAgICAgIHdlIHNob3VsZCBiZSBmaW5kaW5nIHRoZSBsYXRlc3QgY29tbWl0IGZv
ciBhIGdpdmVuIHBsYXRmb3JtLCBidXQgdGhpcyBpcyB2ZXJ5IHNsb3cgc28gaW5zdGVhZCBmaW5k
IHRoZSBjb21taXQKKyAgICAgICAgb2YgdGhlIGxhdGVzdCBidWlsZCBmb3IgYSBnaXZlbiBwbGF0
Zm9ybS4KKworICAgICAgICAqIHB1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91
cC5waHA6CisgICAgICAgIChtYWluKTogQWRkZWQgdGhlIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGFu
IGFuYWx5c2lzIHRhc2sgYWxvbmcgd2l0aCBhIGdyb3VwLgorICAgICAgICAoY29tbWl0X3NldHNf
ZnJvbV9yZXZpc2lvbl9zZXRzKTogQWRkZWQgdGhlIHN1cHBvcnQgZm9yIGN1c3RvbSByb290cy4g
VmVyaWZ5IHRoZSBzcGVjaWZpZWQgdXBsb2FkZWQgZmlsZSBleGlzdHMKKyAgICAgICAgYW5kIGlu
Y2x1ZGUgaXQgaW4gY29tbWl0X3NldF9yZWxhdGlvbnNoaXBzLiBCZWNhdXNlIGNvbW1pdHMgYW5k
IHVwbG9hZCBmaWxlcyBhcmUgc3RvcmVkIGluIGEgZGlmZmVyZW50IGNvbHVtbgorICAgICAgICBp
biBjb21taXRfc2V0X3JlbGF0aW9uc2hpcHMsIHRoaXMgZnVuY3Rpb24gbm93IHN0b3JlcyB0aGUg
aW5mb3JtYXRpb24gZm9yIGVhY2ggcm93IG9mIGNvbW1pdF9zZXRfcmVsYXRpb25zaGlwcworICAg
ICAgICBleGNlcHQgdGhlIGNvbW1pdCBzZXQgSUQsIHdoaWNoIGlzIHVua25vd24gdW50aWwgdGhl
IHNldCBpcyBjcmVhdGVkLCBpbnN0ZWFkIG9mIGEgY29tbWl0IElELgorICAgICAgICAoZW5zdXJl
X2NvbW1pdF9zZXRzKTogTWFkZSB0aGUgZWFjaCBlbnRyeSBpbiBhIGNvbW1pdCBzZXQgYSByb3cg
aW5zdGVhZCBvZiBhIGNvbW1pdCBJRCBhcyBkb25lLiBBcyB0aGlzIGZvcm1hdAorICAgICAgICBp
cyBvbmx5IGJ5IHYyIFVJIGFuZCBkZXRlY3QtY2hhbmdlcy5qcywgd2UgZG9uJ3QgYWRkIHRoZSBz
dXBwb3J0IGZvciBzcGVjaWZ5aW5nIGN1c3RvbSByb290cyBoZXJlLgorCisgICAgICAgICogcHVi
bGljL3ByaXZpbGVnZWQtYXBpL3VwbG9hZC1maWxlLnBocDoKKyAgICAgICAgKG1haW4pOiBGaXhl
ZCBhIHR5cG8uIEFsc28gYWRkZWQgb25lIG1vcmUgZXJyb3IgY2hlY2suCisKKyAgICAgICAgKiBw
dWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tYW5hbHlzaXMtdGFzay1jb25maWd1cmF0b3IuanM6
IEFkZGVkLiBUaGUgVUkgZm9yIHNlbGVjdGluZyBhIHRlc3QsIGEgcGxhdGZvcm0sCisgICAgICAg
IGFuZCBhIHNldCBvZiByZXZpc2lvbnMsIGFzIHdlbGwgYXMgY3VzdG9tIHJvb3RzIGZvciBhIGN1
c3RvbSBBL0IgdGVzdGluZyBqb2IuIFRoZSBmaXJzdCBzZXQgb2YgcmV2aXNpb24gd2l0aAorICAg
ICAgICBjdXN0b20gcm9vdHMgaXMgcmVmZXJyZWQgYXMgImJhc2VsaW5lIiwgYW5kIHRoZSBzZWNv
bmQgY29uZmlndXJhdGlvbiBpcyByZWZlcnJlZCBhcyAiY29tcGFyaXNvbiIgaW4gdGhpcyBjbGFz
cy4KKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvcik6CisgICAgICAgIChD
dXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBlLnRlc3RzKTogQWRkZWQuCisg
ICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBlLnBsYXRmb3Jt
KTogQWRkZWQuCisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90
eXBlLmNvbW1pdFNldHMpOiBBZGRlZC4gUmV0dXJucyBhIHBhaXIgb2YgYmFzZWxpbmUgYW5kIGNv
bXBhcnNpb24gaWYgYm90aAorICAgICAgICBoYXZlIGJlZW4gY29uZmlndXJlZCBieSB0aGUgdXNl
ci4KKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5wcm90b3R5cGUuZGlk
Q29uc3RydWN0U2hhZG93VHJlZSk6IEFkZGVkLgorICAgICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNr
Q29uZmlndXJhdG9yLnByb3RvdHlwZS5fY29uZmlndXJlQ29tcGFyaXNvbik6IEFkZGVkLiBDYWxs
ZWQgd2hlbiB0aGUgdXNlciBpcyB0byBjb25maWd1IHRoZQorICAgICAgICAiY29tcGFyaXNvbiIg
Y29uZmlndXJhdGlvbi4KKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5w
cm90b3R5cGUucmVuZGVyKTogQWRkZWQuCisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25m
aWd1cmF0b3IucHJvdG90eXBlLl9yZW5kZXJUcmlnZ2VyYWJsZVRlc3RzKTogQWRkZWQuIFJlbmRl
cnMgdGhlIGxpc3Qgb2YgdG9wLWxldmVsIHRlc3RzCisgICAgICAgIHRoYXQgY2FuIGJlIHNjaGVk
dWxlZCBieSBhIHRyaWdnZXJhYmxlLgorICAgICAgICAoQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmln
dXJhdG9yLnByb3RvdHlwZS5fcmVuZGVyVHJpZ2dlcmFibGVQbGF0Zm9ybXMpOiBBZGRlZC4gUmVu
ZGVycyB0aGUgbGlzdCBvZiBwbGF0Zm9ybXMKKyAgICAgICAgdGhhdCBjYW4gYmUgc2NoZWR1bGUg
d2l0aCB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGxpc3Qgb2YgdGVzdHMgYnkgYSB0cmlnZ2VyYWJs
ZS4gTm90ZSB0aGF0IHRoZSBjdXJyZW50IFVJIG9ubHkKKyAgICAgICAgbGV0cyB0aGUgdXNlciBz
ZWxlY3QgYSBzaW5nbGUgdGVzdCBidXQgdGhlIGludGVudCBpcyB0byBhbGxvdyBtdWx0aXBsZSB0
ZXN0cyB0byBiZSBzZWxlY3RlZCBpbiB0aGUgbmVhciBmdXR1cmUuCisgICAgICAgIChDdXN0b21B
bmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBlLl9idWlsZENoZWNrYm94TGlzdCk6IEFk
ZGVkLiBDcmVhdGVzIGEgbGlzdCBvZiByYWRpbyBib3hlcyB0byBzZWxlY3QKKyAgICAgICAgYW4g
aXRlbSB3aXRoIGEgY2FsbGJhY2sgZm9yIGVhY2guIEl0IGF1dG9tYXRpY2FsbHkgc2V0cyAic2Vs
ZWN0ZWQiIGNsYXNzIG9uIHRoZSBzZWxlY3RlZCBpdGVtLiBJdCdzIHVzZWQgdG8KKyAgICAgICAg
cmVuZGVyIGJvdGggdGhlIGxpc3Qgb2YgdGVzdHMgYW5kIHBsYXRmb3Jtcy4KKyAgICAgICAgKEN1
c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5wcm90b3R5cGUuX3VwZGF0ZVRyaWdnZXJhYmxl
KTogQWRkZWQuIEZpbmRzIHRoZSB0cmlnZ2VyYWJsZSBmb3IgYSBnaXZlbiBsaXN0IG9mCisgICAg
ICAgIHRlc3RzIGFuZCBwbGF0Zm9ybXMuIFJldHVybnMgYW4gZXJyb3Igd2hlbiBzb21lIHRlc3Rz
IGJlbG9uZyB0byBhbm90aGVyIHRyaWdnZWFyYWxiZS4KKyAgICAgICAgKEN1c3RvbUFuYWx5c2lz
VGFza0NvbmZpZ3VyYXRvci5wcm90b3R5cGUuX3VwZGF0ZVJlcG9zaXRvcnlHcm91cHMpOiBBZGRl
ZC4gRmluZHMgYSByZXBvc2l0b3J5IGdyb3VwIHRvIHVzZSB3aGVuCisgICAgICAgIHRoZSBjdXJy
ZW50IHRyaWdnZXJhYmxlIGhhcyBjaGFuZ2VkLiBXZSB0cnkgdG8gdXNlIHRoZSByZXBvc2l0b3J5
IGdyb3VwIG9mIHRoZSBzYW1lIG5hbWUgaWYgdGhlcmUgaXMgYW55LCBhbmQKKyAgICAgICAgZGVm
YXVsdHMgdG8gdGhlIGZpcnN0IHJlcG9zaXRvcnkgZ3JvdXAgaWYgdGhlcmUgaXMgbm9uZS4gVGhp
cyBhbGxvd3MgdGhlIHNldCBvZiByZXBvc2l0b3JpZXMgdG8gYmUgc3BlY2lmaWVkIHRvCisgICAg
ICAgIG1vcmUgb3IgbGVzcyBwZXJzaXN0IGFjcm9zcyBkaWZmZXJlbnQgdHJpZ2dlcmFibGVzLiBG
b3IgZXhhbXBsZSwgaWYgaU9TIHBsYXRmb3JtcyBhbmQgTWFjIHBsYXRmb3JtcyB1c2UgdHdvCisg
ICAgICAgIGRpc3RpbmN0IHRyaWdnZXJhYmxlcyAsIGFuZCBib3RoIHRyaWdnZXJhYmxlcyBoYXZl
IHR3byByZXBvc2l0b3J5IGdyb3Vwczogb25lIHRoYXQgb25seSBzcGVjaWZ5IHRoZSBPUyBhbmQg
dGhlCisgICAgICAgIG90aGVyIHRoYXQgc3BlY2lmaWVzIGJvdGggdGVoIE9TIGFuZCBXZWJLaXQg
cmV2aXNpb24sIHRoZW4gdGhpcyBjb2RlIGFsbG93cyB0aGUgY2hvaWNlIHRoZSB1c2VyIGhhZCBt
YWRlIHRvCisgICAgICAgIHNwZWNpZnkgZWl0aGVyIGp1c3QgdGhlIE9TIG9yIHRoZSBPUyBhbmQg
V2ViS2l0IHdpbGwgYmUgcHJlc2VydmVkIHdoZW4gdGhlIHVzZXIgc3dpdGNoZXMgZnJvbSBhbiBp
T1MgcGxhdGZvcm0KKyAgICAgICAgdG8gYSBNYWMgcGxhdGZvcm0uCisgICAgICAgIChDdXN0b21B
bmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBlLl91cGRhdGVDb21taXRTZXRNYXApOiBB
ZGRlZC4gQ3JlYXRlIGEgY29tbWl0IHNldCBtYXAsIHRoZSBmb3JtYXQgdGhhdAorICAgICAgICBU
ZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2sgYWNjZXB0cyBnaXZlbiAiYmFzZWxpbmUiIGFuZCAiY29t
cGFyaXNvbiIgY29tbWl0IHNldHMuIFByZXRlbmQgImNvbXBhcmlzb24iIGlzIG5vdCBzZXQKKyAg
ICAgICAgaWYgdHdvIHNldHMgYXJlIGlkZW50aWNhbCBzaW5jZSBpdCBtYWtlcyBubyBzZW5zZSB0
byBzY2hlZHVsZSBhbiBBL0IgdGVzdGluZyBqb2Igd2hlbiBBIGFuZCBCIGFyZSBpZGVudGljYWwu
CisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBlLl9jb21w
dXRlQ29tbWl0U2V0KTogQWRkZWQuIENyZWF0ZXMgYSBjb21taXQgc2V0IHVzaW5nIHRoZSByZXZp
c2lvbnMKKyAgICAgICAgYW5kIHRoZSBjc3V0b20gcm9vdHMgdGhlIHVzZXIgaGFkIHNwZWNpZmll
ZC4KKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5wcm90b3R5cGUuX3Jl
bmRlclJlcG9zaXRvcnlQYW5lcyk6IEFkZGVkLiBSZW5kZXJzIHRoZSBwYW5lIHRvIHNwZWNpZnkg
cmV2aXNpb25zCisgICAgICAgIGFuZCBjdXN0b20gcm9vdHMgZm9yICJiYXNlbGluZSIgYW5kICJj
b21wYXJpc29uIi4KKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5wcm90
b3R5cGUuX3JlbmRlckJhc2VsaW5lUmV2aXNpb25UYWJsZSk6IEFkZGVkLgorICAgICAgICAoQ3Vz
dG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLnByb3RvdHlwZS5fcmVuZGVyQ29tcGFyaXNvblJl
dmlzaW9uVGFibGUpOiBBZGRlZC4KKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3Vy
YXRvci5wcm90b3R5cGUuX29wdGlvbmFsUmVwb3NpdG9yeUxpc3QpOiBBZGRlZC4KKyAgICAgICAg
KEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5wcm90b3R5cGUuX2J1aWxkUmV2aXNpb25U
YWJsZSk6IEFkZGVkLiBDcmVhdGVzIGEgdGFibGUgZm9yIHNwZWNpZnlpbmcgcmV2aXNpb25zCisg
ICAgICAgIGFuZCBjdXN0b20gcm9vdHMgYWxvbmcgd2l0aCBhIGxpc3Qgb2YgcmVwb3NpdG9yeSBn
cm91cHMgdG8gcGljay4gVGhlIHNldCBvZiByZXBvc2l0b3JpZXMgYW5kIGN1c3RvbSByb290cyBh
cmUKKyAgICAgICAgc2hvd24gYXQgdGhlIGFsbCBpZiBhbGwgcmVwb3NpdG9yeSBncm91cHMgcmVx
dWlyZSB0aGVtLiBPdGhlcndpc2UsIHRoZXkgYXJlIGdyb3VwZWQgYXQgdGhlIGJvdHRvbSBhcyBv
cHRpb25hbC4KKyAgICAgICAgKEN1c3RvbUFuYWx5c2lzVGFza0NvbmZpZ3VyYXRvci5wcm90b3R5
cGUuX2J1aWxkUmVwb3NpdG9yeUdyb3VwTGlzdCk6IEFkZGVkLgorICAgICAgICAoQ3VzdG9tQW5h
bHlzaXNUYXNrQ29uZmlndXJhdG9yLnByb3RvdHlwZS5fc2VsZWN0UmVwb3NpdG9yeUdyb3VwKTog
QWRkZWQuCisgICAgICAgIChDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IucHJvdG90eXBl
Ll9idWlsZFJldmlzaW9uSW5wdXQpOiBBZGRlZC4gQ3JlYXRlcyBhbiBpbnB1dCBlbGVtZW50IHRv
IHNwZWNpZnkKKyAgICAgICAgYSByZXZpc2lvbiBmb3IgYSBnaXZlbiByZXBvc2l0b3J5LiBBdXRv
ZmlsbHMgaXQgd2l0aCB0aGUgbGF0ZXN0IGNvbW1pdCBmb3IgdGhlIGN1cnJlbnRseSBzZWxlY3Rl
ZCBwbGF0Zm9ybSBpZgorICAgICAgICB0aGUgdXNlciBoYWQgbm90IG1vZGlmaWVkIHRoZSBmaWVs
ZCBieSB0aGUgdGltZSB0aGUgcmV2aXNpb25zIGFyZSBmZXRjaGVkLgorICAgICAgICAoQ3VzdG9t
QW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLmh0bWxUZW1wbGF0ZSk6IEFkZGVkLgorICAgICAgICAo
Q3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJhdG9yLmNzc1RlbXBsYXRlKTogQWRkZWQuCisKKyAg
ICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9pbnN0YW50LWZpbGUtdXBsb2FkZXIuanM6IEFk
ZGVkLiBBIGZvcm0gdG8gdXBsb2FkIGEgY3VzdG9tIGRhcndpbnVwIHJvb3QgaW4gImJhc2VsaW5l
IgorICAgICAgICBvciAiY29tcGFyaXNvbiIgY29uZmlndXJhdGlvbnMgb2YgQ3VzdG9tQW5hbHlz
aXNUYXNrQ29uZmlndXJhdG9yLiBJdCdzICJpbnN0YW50IiBiZWNhdXNlIGl0IGF1dG8tZGV0ZWN0
cyB3aGVuIGEKKyAgICAgICAgZmlsZSB0byBiZSB1cGxvYWRlZCBoYWQgYWxyZWFkeSBiZWVuIHVw
bG9hZGVkIGVsc2V3aGVyZSBieSBjaGVja2luZyBpdHMgU0hBLTI1NiBoYXNoLgorICAgICAgICAo
SW5zdGFudEZpbGVVcGxvYWRlcik6CisgICAgICAgIChJbnN0YW50RmlsZVVwbG9hZGVyLnByb3Rv
dHlwZS5oYXNGaWxlVG9VcGxvYWQpOiBBZGRlZC4KKyAgICAgICAgKEluc3RhbnRGaWxlVXBsb2Fk
ZXIucHJvdG90eXBlLnVwbG9hZGVkRmlsZXMpOiBBZGRlZC4KKyAgICAgICAgKEluc3RhbnRGaWxl
VXBsb2FkZXIucHJvdG90eXBlLmFkZFVwbG9hZGVkRmlsZSk6IEFkZGVkLiBJdCdzIGNhbGxlZCBv
biB0aGUgdXBsb2FkZXIgZm9yICJjb21wYXJpc29uIgorICAgICAgICBjb25maWd1cmF0aW9uIHdo
ZW4gdGhlIHVwbG9hZGVyIGZvciAiYmFzZWxpbmUiIGNvbmZpZ3VyYXRpb24gZGlwc2F0Y2hlcyAi
dXBsb2FkZWRGaWxlIiBhY3Rpb24gdG8gYXV0b21hdGljYWxseQorICAgICAgICBtaXJyb3IgdGhl
IG5ld2x5IHVwbG9hZGVkIGN1c3RvbSByb290IHRvICJjb21wYXJpc2lvbiIgY29uZmlndXJhdGlv
bi4KKyAgICAgICAgKEluc3RhbnRGaWxlVXBsb2FkZXIucHJvdG90eXBlLmRpZENvbnN0cnVjdFNo
YWRvd1RyZWUpOiBBZGRlZC4KKyAgICAgICAgKEluc3RhbnRGaWxlVXBsb2FkZXIucHJvdG90eXBl
LnJlbmRlcik6IEFkZGVkLgorICAgICAgICAoSW5zdGFudEZpbGVVcGxvYWRlci5wcm90b3R5cGUu
X3JlbmRlclVwbG9hZGVkRmlsZXMpOiBBZGRlZC4gUmVuZGVycyB0aGUgbGlzdCBvZiB0aGUgdXBs
b2FkZWQgZmlsZXMuCisgICAgICAgIChJbnN0YW50RmlsZVVwbG9hZGVyLnByb3RvdHlwZS5fcmVu
ZGVyUHJldXBsb2FkRmlsZXMpOiBBZGRlZC4gUmVuZGVycyB0aGUgbGlzdCBvZiB0aGUgZmlsZXMg
dG8gYmUgdXBsb2FkZWQgd2l0aAorICAgICAgICBhIHByb2dyZXNzIGJhci4KKyAgICAgICAgKElu
c3RhbnRGaWxlVXBsb2FkZXIucHJvdG90eXBlLl91cGRhdGVVcGxvYWRTdGF0dXMpOiBBZGRlZC4g
VXBkYXRlcyB0aGUgcHJvZ3Jlc3MgYmFyIGZvciB1cGxvYWRpbmcgdGhlIGZpbGUuCisgICAgICAg
IChJbnN0YW50RmlsZVVwbG9hZGVyLnByb3RvdHlwZS5fZm9ybWF0VXBsb2FkRXJyb3IpOiBBZGRl
ZC4KKyAgICAgICAgKEluc3RhbnRGaWxlVXBsb2FkZXIucHJvdG90eXBlLl9kaWRGaWxlSW5wdXRD
aGFuZ2UpOiBBZGRlZC4gQ2FsbGVkIHdoZW4gdGhlIHVzZXIgcGlja3MgYSBmaWxlIHRvIHVwbG9h
ZGVkIG9uCisgICAgICAgIHRoZSBpbnB1dCBlbGVtZW50LiBGZXRjaCB0aGUgbWV0YSBkYXRhIGZv
ciB0aGUgdXBsb2FkZWQgZmlsZSB3aXRoIHRoZSBzYW1lIFNIQS0yNTYgaGFzaCBpZiB0aGVyZSBp
cyBhbnksIGFuZAorICAgICAgICBzdGFydCB1cGxvYWRpbmcgdGhlIGZpbGUgaWYgdGhlcmUgaXNu
J3Qgb25lLgorICAgICAgICAoSW5zdGFudEZpbGVVcGxvYWRlci5wcm90b3R5cGUuX3JlbW92ZVVw
bG9hZGVkRmlsZSk6IEFkZGVkLgorICAgICAgICAoSW5zdGFudEZpbGVVcGxvYWRlci5wcm90b3R5
cGUuX2RpZFVwbG9hZEZpbGUpOiBBZGRlZC4gTW92ZSBhIGZpbGUgZnJvbSB0aGUgbGlzdCBvZiBm
aWxlcyB0byBiZSB1cGxvYWRlZCB0bworICAgICAgICB0aGUgbGlzdCBvZiB1cGxvYWRlZCBmaWxl
cy4KKyAgICAgICAgKEluc3RhbnRGaWxlVXBsb2FkZXIuaHRtbFRlbXBsYXRlKTogQWRkZWQuCisg
ICAgICAgIChJbnN0YW50RmlsZVVwbG9hZGVyLmNzc1RlbXBsYXRlKTogQWRkZWQuCisKKyAgICAg
ICAgKiBwdWJsaWMvdjMvaW5kZXguaHRtbDoKKworICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMv
YW5hbHlzaXMtdGFzay5qczoKKyAgICAgICAgKEFuYWx5c2lzVGFzayk6IE1hZGUgcGxhdGZvcm0g
YW5kIG1ldHJpYyBvcHRpb25hbCBhcyBpdCBpcyBub3cuCisgICAgICAgIChBbmFseXNpc1Rhc2su
ZmluZEJ5UGxhdGZvcm1BbmRNZXRyaWMpOiBTa2lwIGFuYWx5c2lzIHRhc2tzIHdpdGhvdXQgYSBw
bGF0Zm9ybSBvciBhIG1ldHJpYy4KKyAgICAgICAgKEFuYWx5c2lzVGFzay5wcm90b3R5cGUuaXND
dXN0b20pOiBBZGRlZC4gUmV0dXJucyB0cnVlIGZvciBhIGN1c3RvbSBhbmFseXNpcyB0YXNrLgor
ICAgICAgICAoQW5hbHlzaXNUYXNrLmZldGNoUmVsYXRlZFRhc2tzKTogU2tpcCBjdXN0b20gYW5h
bHlzaXMgdGFza3MuCisgICAgICAgIChBbmFseXNpc1Rhc2suX2NvbnN0cnVjdEFuYWx5c2lzVGFz
a3NGcm9tUmF3RGF0YSk6IENvbnN0cnVjdCBhbmFseXNpcyB0YXNrcyBldmVuIGlmIHRoZXkgd2Vy
ZSBtaXNzaW5nIGEgbWV0cmljCisgICAgICAgIG9yIGEgcGxhdGZvcm0gaW5zdGVhZCBvZiBzaWxl
bnRseSBza2lwcGluZyB0aGVtLgorCisgICAgICAgICogcHVibGljL3YzL21vZGVscy9idWlsZC1y
ZXF1ZXN0LmpzOgorICAgICAgICAoQnVpbGRSZXF1ZXN0LmNvbnN0cnVjdEJ1aWxkUmVxdWVzdHNG
cm9tRGF0YSk6IENvbnN0cnVjdCB1cGxvYWRlZCBmaWxlIG9iamVjdHMgcmV0dXJuZWQgYnkgL2Fw
aS9idWlsZC1yZXF1ZXN0cy4KKworICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvY29tbWl0LWxv
Zy5qczoKKyAgICAgICAgKENvbW1pdExvZy5mZXRjaExhdGVzdENvbW1pdEZvclBsYXRmb3JtKTog
QWRkZWQuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1zZXQuanM6CisgICAg
ICAgIChDb21taXRTZXQpOiBBZGRlZCB0aGlzLl9jdXN0b21Sb290cy4KKyAgICAgICAgKENvbW1p
dFNldC5wcm90b3R5cGUuY3VzdG9tUm9vdHMpOiBSZXR1cm5zIHRoaXMuX2N1c3RvbVJvb3RzLgor
ICAgICAgICAoQ29tbWl0U2V0LnByb3RvdHlwZS5lcXVhbHMpOiBSZXR1cm5zIGZhbHNlIHdoZW4g
dGhlIHNldCBvZiBjdXN0b20gcm9vdHMgYXJlIG5vdCBlcXVhbC4KKyAgICAgICAgKENvbW1pdFNl
dC5hcmVDdXN0b21Sb290c0VxdWFsKTogQWRkZWQuCisgICAgICAgIChDdXN0b21Db21taXRTZXQp
OgorICAgICAgICAoQ3VzdG9tQ29tbWl0U2V0LnByb3RvdHlwZS5lcXVhbHMpOiBBZGRlZC4KKyAg
ICAgICAgKEN1c3RvbUNvbW1pdFNldC5wcm90b3R5cGUuY3VzdG9tUm9vdHMpOiBBZGRlZC4KKyAg
ICAgICAgKEN1c3RvbUNvbW1pdFNldC5wcm90b3R5cGUuYWRkQ3VzdG9tUm9vdCk6IEFkZGVkLgor
CisgICAgICAgICogcHVibGljL3YzL21vZGVscy9tYW5pZmVzdC5qczoKKyAgICAgICAgKE1hbmlm
ZXN0Ll9kaWRGZXRjaE1hbmlmZXN0KTogU3RvcmUgZmlsZVVwbG9hZFNpemVMaW1pdCBpbiB0aGUg
bWFuaWZlc3QgYXMgVXBsb2FkZWRGaWxlLmZpbGVVcGxvYWRTaXplTGltaXQuCisgICAgICAgIFRo
aXMgYWxsb3dzIGEgZmlsZSBzaXplIGNoZWNrIGluIHRoZSBjbGllbnQgc2l6ZSBpbnN0ZWFkIG9m
IHVwbG9hZGluZyBpdCB0byB0aGUgc2VydmVyIGFuZCByZWNlaXZpbmcgYW4gZXJyb3IuCisKKyAg
ICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL21ldHJpYy5qczoKKyAgICAgICAgKE1ldHJpYy5mb3Jt
YXRUaW1lKTogTW92ZWQgZnJvbSBDaGFydFBhbmVTdGF0dXNWaWV3IHRvIGJlIGFsc28gdXNlZCBi
eSBJbnN0YW50RmlsZVVwbG9hZGVyLl9yZW5kZXJVcGxvYWRlZEZpbGVzLgorCisgICAgICAgICog
cHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzOgorICAgICAgICAoVGVzdEdyb3VwLnByb3Rv
dHlwZS5jcmVhdGVXaXRoVGFzayk6IEFkZGVkLgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlw
ZS5jcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90
eXBlLl9yZXZpc2lvblNldHNGcm9tQ29tbWl0U2V0cyk6IEFkZGVkLiBFeHRyYWN0ZWQgZnJvbSBj
cmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcy4KKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUu
X2ZldGNoVGVzdEdyb3Vwc0ZvclRhc2spOiBBZGRlZC4gRXh0cmFjdGVkIGZyb20gY3JlYXRlQW5k
UmVmZXRjaFRlc3RHcm91cHMuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL3RyaWdnZXJh
YmxlLmpzOgorICAgICAgICAoVHJpZ2dlcmFibGUudHJpZ2dlcmFibGVQbGF0Zm9ybXNGb3JUZXN0
cyk6IEFkZGVkLgorICAgICAgICAoVHJpZ2dlcmFibGUuc29ydEJ5TmFtZVByZWZlcnJpbmdTbWFs
bGVyUmVwb3NpdG9yaWVzKTogQWRkZWQuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL3Vw
bG9hZGVkLWZpbGUuanM6CisgICAgICAgIChVcGxvYWRlZEZpbGUucHJvdG90eXBlLmNyZWF0ZWRB
dCk6IEFkZGVkLgorICAgICAgICAoVXBsb2FkZWRGaWxlLnByb3RvdHlwZS5maWxlbmFtZSk6IEFk
ZGVkLgorICAgICAgICAoVXBsb2FkZWRGaWxlLnByb3RvdHlwZS5hdXRob3IpOiBBZGRlZC4KKyAg
ICAgICAgKFVwbG9hZGVkRmlsZS5wcm90b3R5cGUuc2l6ZSk6IEFkZGVkLgorICAgICAgICAoVXBs
b2FkZWRGaWxlLnVwbG9hZEZpbGUpOiBBZGRlZCBhIGNsaWVudC1zaWRlIGNoZWNrIGZvciB0aGUg
ZmlsZSBzaXplIHVzaW5nIFVwbG9hZGVkRmlsZS5maWxlVXBsb2FkU2l6ZUxpbWl0LgorICAgICAg
ICAoVXBsb2FkZWRGaWxlLmZldGNoVW5sb2FkZWRGaWxlV2l0aElkZW50aWNhbEhhc2gpOiBEaXR0
by4gQWxzbyBmaXhlZCBhIGJ1ZyB0aGF0IDQwNCB3YXMgcmVzdWx0aW5nIGluIGEgcmVqZWN0ZWQK
KyAgICAgICAgcHJvbWlzZSBpbnN0ZWFkIG9mIGEgcmVzb2x2ZWQgcHJvbWlzZSB3aXRoIG51bGwu
CisKKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtY2F0ZWdvcnktcGFnZS5qczoK
KyAgICAgICAgKEFuYWx5c2lzQ2F0ZWdvcnlQYWdlLnByb3RvdHlwZS5fcmVjb25zdHJ1Y3RUYXNr
TGlzdCk6IE1vZGVybml6ZWQgdGhlIGNvZGUuIEFkZGVkIHRoZSBzdXBwb3J0IGZvciBwbGF0Zm9y
bSBhbmQKKyAgICAgICAgbWV0cmljIGJlaW5nIG51bGwgZm9yIHNvbWUgYW5hbHlzaXMgdGFza3Mu
CisKKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzOgorICAg
ICAgICAoQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuX2RpZEZldGNoVGFzayk6IERvbid0IGZl
dGNoIHRoZSBtZWFzdXJlbWVudCBzZXQgb3IgY3JlYXRlIGEgY2hhcnQgZm9yIGN1c3RvbSB0YXNr
cy4KKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLnJlbmRlcik6IERvbid0IGRp
c3BsYXkgdGhlIGNoYXJ0cyBvciB0aGUgc3RhY2tpbmcgdGFibGUgZm9yIGN1c3RvbSB0YXNrcy4K
KyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLl9yZW5kZXJUYXNrTmFtZUFuZFN0
YXR1cyk6IERvbid0IHRyeSB0byBzaG93IHRoZSBmdWxsIHRlc3QgbmFtZSBmb3IgY3VzdG9tIHRh
c2tzCisgICAgICAgIHNpbmNlIGl0J3Mgbm90IGFzc29jaWF0ZWQgd2l0aCBleGFjdGx5IG9uZSBw
YWlyLgorCisgICAgICAgICogcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUtc3RhdHVzLXZpZXcu
anM6CisgICAgICAgIChDaGFydFBhbmVTdGF0dXNWaWV3LnByb3RvdHlwZS5fcmVuZGVyQnVpbGRS
ZXZpc2lvblRhYmxlKToKKyAgICAgICAgKENoYXJ0UGFuZVN0YXR1c1ZpZXcucHJvdG90eXBlLl9m
b3JtYXRUaW1lKTogTW92ZWQgdG8gTWV0cmljLmZvcm1hdFRpbWUuCisKKyAgICAgICAgKiBwdWJs
aWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qczoKKyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUu
X2FuYWx5emVSYW5nZSk6IFNldCBpblByb2dyZXNzIHRvIHRydWUgdG8gaGlkZSBDdXN0b21BbmFs
eXNpc1Rhc2tDb25maWd1cmF0b3IgaW4KKyAgICAgICAgQ3JlYXRlQW5hbHlzaXNUYXNrUGFnZSB3
aGVuIGNyZWF0aW5nIGEgbm9uLWN1c3RvbSBhbmFseXNpcyB0YXNrIGZvciBhIHNwZWNpZmljIHJh
bmdlLgorCisgICAgICAgICogcHVibGljL3YzL3BhZ2VzL2NyZWF0ZS1hbmFseXNpcy10YXNrLXBh
Z2UuanM6CisgICAgICAgIChDcmVhdGVBbmFseXNpc1Rhc2tQYWdlKTogVGhpcyBwYWdlIG5vdyBz
aG93cyBDdXN0b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgYnkgZGVmYXVsdCwgYW5kIGxldHMg
YSB1c2VyIGNyZWF0ZQorICAgICAgICBhIGN1c3RvbSBhbmFseXNpcyB0YXNrIGJ5IHBpY2tpbmcg
YSB0ZXN0LCBhIHBsYXRmb3JtLCBhbmQgYSBzZXQgb2YgcmV2aXNpb25zIGFuZCBjdXN0b20gZGFy
d2ludXAgcm9vdHMuCisgICAgICAgIChDcmVhdGVBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS51
cGRhdGVGcm9tU2VyaWFsaXplZFN0YXRlKTogU2hvdyBhIG1lc3NhZ2Ugd2hlbiBpblByb2dyZXNz
IGlzIHNldC4gVGhpcyBpcworICAgICAgICB0aGUgb2xkIGJlaGF2aW9yIG9mIHRoaXMgcGFnZS4K
KyAgICAgICAgKENyZWF0ZUFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLmRpZENvbnN0cnVjdFNo
YWRvd1RyZWUpOiBBZGRlZC4KKyAgICAgICAgKENyZWF0ZUFuYWx5c2lzVGFza1BhZ2UucHJvdG90
eXBlLl9jcmVhdGVBbmFseXNpc1Rhc2tXaXRoR3JvdXApOiBBZGRlZC4KKyAgICAgICAgKENyZWF0
ZUFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChDcmVhdGVBbmFs
eXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5fcmVuZGVyTWVzc2FnZSk6IEFkZGVkLiBIaWRlcyBDdXN0
b21BbmFseXNpc1Rhc2tDb25maWd1cmF0b3IgYW5kIHRoZSBzZWxlY3QKKyAgICAgICAgZWxlbWVu
dCB0byBzcGVjaWZ5IHRoZSBudW1lYnIgb2YgaXRlcmF0aW9ucyB3aGVuIGEgbWVzc2FnZSBpcyBz
ZXQuCisgICAgICAgIChDcmVhdGVBbmFseXNpc1Rhc2tQYWdlLmh0bWxUZW1wbGF0ZSk6CisgICAg
ICAgIChDcmVhdGVBbmFseXNpc1Rhc2tQYWdlLmNzc1RlbXBsYXRlKToKKworICAgICAgICAqIHB1
YmxpYy92My9wYWdlcy9wYWdlLXJvdXRlci5qczoKKyAgICAgICAgKFBhZ2VSb3V0ZXIucHJvdG90
eXBlLnJvdXRlKTogQWx3YXlzIGVucXVldWUgdGhlIHBhZ2UgdG8gcmUtcmVuZGVyIHdoZW4gdGhl
IHJvdXRlIGhhcyBjaGFuZ2VkLgorCisgICAgICAgICogc2VydmVyLXRlc3RzL2FwaS1idWlsZC1y
ZXF1ZXN0cy10ZXN0cy5qczogVXBkYXRlZCB0ZXN0IGNhc2VzIG5vdyB0aGF0IHRoZSByZXNwb25z
ZSBjb250YWlucyBhIGxpc3Qgb2YKKyAgICAgICAgdXBsb2FkZWQgZmlsZXMgYXNzb2NpYXRlZCB3
aXRoIGJ1aWxkIHJlcXVlc3RzLgorICAgICAgICAqc2VydmVyLXRlc3RzL2FwaS1jb21taXRzLXRl
c3RzLmpzOiBBZGRlZCBhIHRlc3QgY2FzZSBmb3IgL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5LW5h
bWU+L2xhdGVzdD9wbGF0Zm9ybT1YLgorICAgICAgICAqIHNlcnZlci10ZXN0cy9wcml2aWxlZ2Vk
LWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5qczogQWRkZWQgdGVzdCBjYXNlcyBmb3IgY3Jl
YXRpbmcgYSBjdXN0b20gYW5hbHlzaXMgdGFzaworICAgICAgICBhbmQgYSB0ZXN0IGdyb3VwIHdp
dGggY3VzdG9tIHJvb3RzLiAKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2st
ZGF0YS5qczoKKyAgICAgICAgKE1vY2tEYXRhLmFkZE1vY2tEYXRhKTogVXBkYXRlZCB0aGUgbW9j
ayBkYXRhIHRvIHNhdGlzZnkgbmV3IGNvbnN0cmFpbnQgb24gYW5hbHlzaXMtdGFza3MgdGFibGUu
IEFsc28gaW5zZXJ0ZWQKKyAgICAgICAgbW9yZSBjb21taXRzLCBidWlsZHMsIGFuZCBidWlsZF9j
b21taXRzIHJvd3MgZm9yIHRlc3RpbmcgL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5LW5hbWU+L2xh
dGVzdD9wbGF0Zm9ybT1YLgorCisgICAgICAgICogdG9vbHMvanMvcmVtb3RlLmpzOiBJbmNsdWRl
IGdsb2JhbC5Gb3JtRGF0YSBmcm9tIGZvcm0tZGF0YS5qcy4KKworICAgICAgICAqIHVuaXQtdGVz
dHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qczogQWRkZWQgYSB0ZXN0IGZvciBjYWxsaW5nIGZpbmRC
eVBsYXRmb3JtQW5kTWV0cmljIHdoZW4gdGhlcmUgaXMgYSBjdXN0b20KKyAgICAgICAgYW5hbHlz
aXMgdGFzay4KKyAgICAgICAgKHNhbXBsZUFuYWx5c2lzVGFzayk6IFJlbW92ZWQgdGhlIGNhdGVn
b3J5IHNpbmNlIC9hcGkvYW5hbHlzaXMtdGFza3MvIG5vIGxvbmdlciBnZW5lcmF0ZSB0aGlzIHBy
b3BlcnR5LgorICAgICAgICAoc2FtcGxlQ3VzdG9tQW5hbHlzaXNUYXNrKTogQWRkZWQuCisgICAg
ICAgICogdW5pdC10ZXN0cy9idWlsZC1yZXF1ZXN0LXRlc3RzLmpzOgorICAgICAgICAoc2FtcGxl
QnVpbGRSZXF1ZXN0RGF0YSk6IFVwZGF0ZWQgdGhlIG1vY2sgcmVzcG9uc2UuIEFkZGVkIGEgdGVz
dCBjYXNlIGZvciBmZXRjaW5nIGN1c3RvbSByb290cy4KKyAgICAgICAgKiB1bml0LXRlc3RzL2J1
aWxkYm90LXN5bmNlci10ZXN0cy5qczoKKyAgICAgICAgKGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVz
dCk6IERpdHRvLgorICAgICAgICAqIHVuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanM6Cisg
ICAgICAgIChzYW1wbGVUZXN0R3JvdXApOiBEaXR0by4KKwogMjAxNy0wNC0wNyAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIGN5Y2xlciBwYWdlIHNjcm9s
bCBkb3duIHdoZW4gYSBkYXNoYm9hcmQgaXMgdG9vIHRhbGwgZm9yIHRoZSBjdXJyZW50IHZpZXdw
b3J0IHNpemUKSW5kZXg6IFJlYWRNZS5tZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBSZWFkTWUubWQJKHJldmlz
aW9uIDIxNTEyMykKKysrIFJlYWRNZS5tZAkod29ya2luZyBjb3B5KQpAQCAtNzEsMTEgKzcxLDEx
IEBACiAKIFVzZSBgcGdfZHVtcGAgYW5kIGBwZ19yZXN0b3JlYCB0byBiYWNrdXAgYW5kIHJlc3Rv
cmUgdGhlIGRhdGFiYXNlLiBJZiB5b3UncmUgcmVwbGljYXRpbmcgdGhlIHByb2R1Y3Rpb24gZGF0
YWJhc2UgZm9yIGRldmVsb3BtZW50IHB1cnBvc2VzLCB5b3UgbWF5IGNvbnNpZGVyIGV4Y2x1ZGlu
ZyBgcnVuX2l0ZXJhdGlvbnNgIHRhYmxlLCB3aGljaCB0YWtlcyB1cCAyLzMgb2YgdGhlIHN0b3Jh
Z2Ugc3BhY2UsIHRvIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgZGF0YWJhc2UgZm9yIHlvdXIgbG9j
YWwgY29weS4gQWRqdXN0IHRoZSBudW1iZXIgb2YgY29uY3VycmVudCBwcm9jZXNzZXMgdG8gdXNl
IGJ5IGAtLWpvYnNgIGFuZCBhZGp1c3QgdGhlIGNvbXByZXNzaW9uIGxldmVsIGJ5IGAtLWNvbXBy
ZXNzYCAoMCBpcyBubyBjb21wcmVzc2lvbiwgOSBpcyBtb3N0IGNvbXByZXNzZWQpLgogCi0tIE1h
a2luZyB0aGUgZnVsbGJhY2t1cCBvZiB0aGUgZGF0YWJhc2U6IGAvQXBwbGljYXRpb25zL1NlcnZl
ci5hcHAvQ29udGVudHMvU2VydmVyUm9vdC91c3IvYmluL3BnX2R1bXAgLWggbG9jYWxob3N0IHdl
YmtpdC1wZXJmLWRiIC0tZm9ybWF0PWRpcmVjdG9yeSAtLWZpbGU9PHBhdGggdG8gYmFja3VwIGRp
cmVjdG9yeT4gLS1qb2JzPTQgLS1uby1vd25lciAtLWNvbXByZXNzPTdgCistIE1ha2luZyB0aGUg
ZnVsbGJhY2t1cCBvZiB0aGUgZGF0YWJhc2U6IGAvQXBwbGljYXRpb25zL1NlcnZlci5hcHAvQ29u
dGVudHMvU2VydmVyUm9vdC91c3IvYmluL3BnX2R1bXAgLWggbG9jYWxob3N0IHdlYmtpdC1wZXJm
LWRiIC0tZm9ybWF0PWRpcmVjdG9yeSAtLWpvYnM9NCAtLW5vLW93bmVyIC0tY29tcHJlc3M9NyAt
LWZpbGU9PHBhdGggdG8gYmFja3VwIGRpcmVjdG9yeT5gCiAKLS0gTWFraW5nIGFuIGFicmlkZ2Vk
IGJhY2t1cCB3aXRob3V0IGBydW5faXRlcmF0aW9uc2AgdGFibGU6IGAvQXBwbGljYXRpb25zL1Nl
cnZlci5hcHAvQ29udGVudHMvU2VydmVyUm9vdC91c3IvYmluL3BnX2R1bXAgLWggbG9jYWxob3N0
IHdlYmtpdC1wZXJmLWRiIC0tZm9ybWF0PWRpcmVjdG9yeSAtLWZpbGU9PHBhdGggdG8gYmFja3Vw
IGRpcmVjdG9yeT4gLS1qb2JzPTQgLS1uby1vd25lciAtLWNvbXByZXNzPTcgLS1leGNsdWRlLXRh
YmxlPXJ1bl9pdGVyYXRpb25zYAorLSBNYWtpbmcgYW4gYWJyaWRnZWQgYmFja3VwIHdpdGhvdXQg
YHJ1bl9pdGVyYXRpb25zYCB0YWJsZTogYC9BcHBsaWNhdGlvbnMvU2VydmVyLmFwcC9Db250ZW50
cy9TZXJ2ZXJSb290L3Vzci9iaW4vcGdfZHVtcCAtaCBsb2NhbGhvc3Qgd2Via2l0LXBlcmYtZGIg
LS1mb3JtYXQ9ZGlyZWN0b3J5IC0tam9icz00IC0tbm8tb3duZXIgLS1jb21wcmVzcz03IC0tZXhj
bHVkZS10YWJsZT1ydW5faXRlcmF0aW9ucyAtLWZpbGU9PHBhdGggdG8gYmFja3VwIGRpcmVjdG9y
eT5gCiAKLS0gUmVzdG9yaW5nIHRoZSBkYXRhYmFzZTogYC9BcHBsaWNhdGlvbnMvU2VydmVyLmFw
cC9Db250ZW50cy9TZXJ2ZXJSb290L3Vzci9iaW4vcGdfcmVzdG9yZSAtLWZvcm1hdD1kaXJlY3Rv
cnkgLS1qb2JzPTQgLS1uby1vd25lciAtLWhvc3QgbG9jYWxob3N0IC0tdXNlcm5hbWU9d2Via2l0
LXBlcmYtZGItdXNlciA8cGF0aCB0byBiYWNrdXAgZGlyZWN0b3J5PiAtLWRibmFtZT13ZWJraXQt
cGVyZi1kYmAKKy0gUmVzdG9yaW5nIHRoZSBkYXRhYmFzZTogYC9BcHBsaWNhdGlvbnMvU2VydmVy
LmFwcC9Db250ZW50cy9TZXJ2ZXJSb290L3Vzci9iaW4vcGdfcmVzdG9yZSAtLWZvcm1hdD1kaXJl
Y3RvcnkgLS1qb2JzPTQgLS1uby1vd25lciAtLWhvc3QgbG9jYWxob3N0IC0tdXNlcm5hbWU9d2Vi
a2l0LXBlcmYtZGItdXNlciAtLWRibmFtZT13ZWJraXQtcGVyZi1kYiA8cGF0aCB0byBiYWNrdXAg
ZGlyZWN0b3J5PmAKICAgICAKICMjIENvbmZpZ3VyaW5nIEFwYWNoZQogCkBAIC04OCw3ICs4OCw3
IEBACiAKICMjIyBJbnN0cnVjdGlvbnMgaWYgeW91J3JlIG5vdCB1c2luZyBTZXJ2ZXIuYXBwCiAK
LSAtIEVkaXQgL3ByaXZhdGUvZXRjL2FwYWNoZTIvaHR0cGQuY29uZgorIC0gRWRpdCBgL3ByaXZh
dGUvZXRjL2FwYWNoZTIvaHR0cGQuY29uZmAKIAogICAgICAxLiBDaGFuZ2UgRG9jdW1lbnRSb290
IHRvIGAvVm9sdW1lcy9EYXRhL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYAogICAgICAyLiBVbmNv
bW1lbnQgYExvYWRNb2R1bGUgcGhwNV9tb2R1bGUgbGliZXhlYy9hcGFjaGUyL2xpYnBocDUuc29g
CkluZGV4OiBpbml0LWRhdGFiYXNlLnNxbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBpbml0LWRhdGFiYXNlLnNx
bAkocmV2aXNpb24gMjE1MTIzKQorKysgaW5pdC1kYXRhYmFzZS5zcWwJKHdvcmtpbmcgY29weSkK
QEAgLTIwNCw4ICsyMDQsOCBAQAogICAgIHRhc2tfc2VnbWVudGF0aW9uIGludGVnZXIgUkVGRVJF
TkNFUyBhbmFseXNpc19zdHJhdGVnaWVzLAogICAgIHRhc2tfdGVzdF9yYW5nZSBpbnRlZ2VyIFJF
RkVSRU5DRVMgYW5hbHlzaXNfc3RyYXRlZ2llcywKICAgICB0YXNrX2NyZWF0ZWRfYXQgdGltZXN0
YW1wIE5PVCBOVUxMIERFRkFVTFQgKENVUlJFTlRfVElNRVNUQU1QIEFUIFRJTUUgWk9ORSAnVVRD
JyksCi0gICAgdGFza19wbGF0Zm9ybSBpbnRlZ2VyIFJFRkVSRU5DRVMgcGxhdGZvcm1zIE5PVCBO
VUxMLAotICAgIHRhc2tfbWV0cmljIGludGVnZXIgUkVGRVJFTkNFUyB0ZXN0X21ldHJpY3MgTk9U
IE5VTEwsCisgICAgdGFza19wbGF0Zm9ybSBpbnRlZ2VyIFJFRkVSRU5DRVMgcGxhdGZvcm1zLAor
ICAgIHRhc2tfbWV0cmljIGludGVnZXIgUkVGRVJFTkNFUyB0ZXN0X21ldHJpY3MsCiAgICAgdGFz
a19zdGFydF9ydW4gaW50ZWdlciBSRUZFUkVOQ0VTIHRlc3RfcnVucywKICAgICB0YXNrX3N0YXJ0
X3J1bl90aW1lIHRpbWVzdGFtcCwKICAgICB0YXNrX2VuZF9ydW4gaW50ZWdlciBSRUZFUkVOQ0VT
IHRlc3RfcnVucywKQEAgLTIxMyw4ICsyMTMsMTMgQEAKICAgICB0YXNrX3Jlc3VsdCBhbmFseXNp
c190YXNrX3Jlc3VsdF90eXBlLAogICAgIHRhc2tfbmVlZGVkIGJvb2xlYW4sCiAgICAgQ09OU1RS
QUlOVCBhbmFseXNpc190YXNrX3Nob3VsZF9iZV91bmlxdWVfZm9yX3JhbmdlIFVOSVFVRSh0YXNr
X3N0YXJ0X3J1biwgdGFza19lbmRfcnVuKSwKLSAgICBDT05TVFJBSU5UIGFuYWx5c2lzX3Rhc2tf
c2hvdWxkX25vdF9iZV9hc3NvY2lhdGVkX3dpdGhfc2luZ2xlX3J1bgotICAgICAgICBDSEVDSyAo
KHRhc2tfc3RhcnRfcnVuIElTIE5VTEwgQU5EIHRhc2tfZW5kX3J1biBJUyBOVUxMKSBPUiAodGFz
a19zdGFydF9ydW4gSVMgTk9UIE5VTEwgQU5EIHRhc2tfZW5kX3J1biBJUyBOT1QgTlVMTCkpKTsK
KyAgICBDT05TVFJBSU5UIGFuYWx5c2lzX3Rhc2tfbXVzdF9iZV9hc3NvY2lhdGVkX3dpdGhfcnVu
X29yX2JlX2N1c3RvbQorICAgICAgICBDSEVDSyAoKHRhc2tfc3RhcnRfcnVuIElTIE5VTEwgQU5E
IHRhc2tfc3RhcnRfcnVuX3RpbWUgSVMgTlVMTAorICAgICAgICAgICAgICAgIEFORCB0YXNrX2Vu
ZF9ydW4gSVMgTlVMTCBBTkQgdGFza19lbmRfcnVuX3RpbWUgSVMgTlVMTAorICAgICAgICAgICAg
ICAgIEFORCB0YXNrX3BsYXRmb3JtIElTIE5VTEwgQU5EIHRhc2tfbWV0cmljIElTIE5VTEwpCisg
ICAgICAgICAgICBPUiAodGFza19zdGFydF9ydW4gSVMgTk9UIE5VTEwgQU5EIHRhc2tfc3RhcnRf
cnVuX3RpbWUgSVMgTk9UIE5VTEwKKyAgICAgICAgICAgICAgICBBTkQgdGFza19lbmRfcnVuIElT
IE5PVCBOVUxMIEFORCB0YXNrX2VuZF9ydW5fdGltZSBJUyBOT1QgTlVMTAorICAgICAgICAgICAg
ICAgIEFORCB0YXNrX3BsYXRmb3JtIElTIE5PVCBOVUxMIEFORCB0YXNrX21ldHJpYyBJUyBOT1Qg
TlVMTCkpKTsKIAogQ1JFQVRFIFRBQkxFIHRhc2tfY29tbWl0cyAoCiAgICAgdGFza2NvbW1pdF90
YXNrIGludGVnZXIgTk9UIE5VTEwgUkVGRVJFTkNFUyBhbmFseXNpc190YXNrcyBPTiBERUxFVEUg
Q0FTQ0FERSwKQEAgLTI4MCw3ICsyODUsOSBAQAogCiBDUkVBVEUgVEFCTEUgY29tbWl0X3NldF9y
ZWxhdGlvbnNoaXBzICgKICAgICBjb21taXRzZXRfc2V0IGludGVnZXIgUkVGRVJFTkNFUyBjb21t
aXRfc2V0cyBOT1QgTlVMTCwKLSAgICBjb21taXRzZXRfY29tbWl0IGludGVnZXIgUkVGRVJFTkNF
UyBjb21taXRzIE5PVCBOVUxMKTsKKyAgICBjb21taXRzZXRfY29tbWl0IGludGVnZXIgUkVGRVJF
TkNFUyBjb21taXRzLAorICAgIGNvbW1pdHNldF9yb290X2ZpbGUgaW50ZWdlciBSRUZFUkVOQ0VT
IHVwbG9hZGVkX2ZpbGVzLAorICAgIENPTlNUUkFJTlQgY29tbWl0c2V0X211c3RfaGF2ZV9jb21t
aXRfb3Jfcm9vdCBDSEVDSyAoY29tbWl0c2V0X2NvbW1pdCBJUyBOT1QgTlVMTCBPUiBjb21taXRz
ZXRfcm9vdF9maWxlIElTIE5PVCBOVUxMKSk7CiAKIENSRUFURSBUWVBFIGJ1aWxkX3JlcXVlc3Rf
c3RhdHVzX3R5cGUgYXMgRU5VTSAoJ3BlbmRpbmcnLCAnc2NoZWR1bGVkJywgJ3J1bm5pbmcnLCAn
ZmFpbGVkJywgJ2NvbXBsZXRlZCcsICdjYW5jZWxlZCcpOwogQ1JFQVRFIFRBQkxFIGJ1aWxkX3Jl
cXVlc3RzICgKSW5kZXg6IHB1YmxpYy9hcGkvYnVpbGQtcmVxdWVzdHMucGhwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHB1YmxpYy9hcGkvYnVpbGQtcmVxdWVzdHMucGhwCShyZXZpc2lvbiAyMTUxMjMpCisrKyBw
dWJsaWMvYXBpL2J1aWxkLXJlcXVlc3RzLnBocAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUs
NyBAQAogICAgICAgICAnYnVpbGRSZXF1ZXN0cycgPT4gJHJlc29sdmVfaWQgPyAkcmVxdWVzdHNf
ZmV0Y2hlci0+cmVzdWx0c193aXRoX3Jlc29sdmVkX2lkcygpIDogJHJlcXVlc3RzX2ZldGNoZXIt
PnJlc3VsdHMoKSwKICAgICAgICAgJ2NvbW1pdFNldHMnID0+ICRyZXF1ZXN0c19mZXRjaGVyLT5j
b21taXRfc2V0cygpLAogICAgICAgICAnY29tbWl0cycgPT4gJHJlcXVlc3RzX2ZldGNoZXItPmNv
bW1pdHMoKSwKKyAgICAgICAgJ3VwbG9hZGVkRmlsZXMnID0+ICRyZXF1ZXN0c19mZXRjaGVyLT51
cGxvYWRlZF9maWxlcygpLAogICAgICkpOwogfQogCkluZGV4OiBwdWJsaWMvYXBpL2NvbW1pdHMu
cGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHB1YmxpYy9hcGkvY29tbWl0cy5waHAJKHJldmlzaW9uIDIxNTEy
MykKKysrIHB1YmxpYy9hcGkvY29tbWl0cy5waHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDE0IEBACiAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdvbGRlc3QnKSB7CiAgICAgICAgICRj
b21taXRzID0gJGZldGNoZXItPmZldGNoX29sZGVzdCgkcmVwb3NpdG9yeV9pZCk7CiAgICAgfSBl
bHNlIGlmICgkZmlsdGVyID09ICdsYXRlc3QnKSB7Ci0gICAgICAgICRjb21taXRzID0gJGZldGNo
ZXItPmZldGNoX2xhdGVzdCgkcmVwb3NpdG9yeV9pZCk7CisgICAgICAgICRwbGF0Zm9ybV9pZCA9
IGFycmF5X2dldCgkX0dFVCwgJ3BsYXRmb3JtJyk7CisgICAgICAgIGlmICgkcGxhdGZvcm1faWQp
IHsKKyAgICAgICAgICAgIGlmICghaXNfbnVtZXJpYygkcGxhdGZvcm1faWQpKQorICAgICAgICAg
ICAgICAgIGV4aXRfd2l0aF9lcnJvcignSW52YWxpZFBsYXRmb3JtJywgYXJyYXkoJ3BsYXRmb3Jt
JyA9PiAkcGxhdGZvcm1faWQpKTsKKyAgICAgICAgICAgICRwbGF0Zm9ybV9pZCA9IGludHZhbCgk
cGxhdGZvcm1faWQpOworICAgICAgICAgICAgJGNvbW1pdHMgPSAkZmV0Y2hlci0+ZmV0Y2hfbGF0
ZXN0X2Zvcl9wbGF0Zm9ybSgkcmVwb3NpdG9yeV9pZCwgJHBsYXRmb3JtX2lkKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAkY29tbWl0cyA9ICRmZXRjaGVyLT5mZXRjaF9sYXRlc3QoJHJl
cG9zaXRvcnlfaWQpOwogICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnbGFzdC1yZXBvcnRlZCcp
IHsKICAgICAgICAgJGZyb20gPSBhcnJheV9nZXQoJF9HRVQsICdmcm9tJyk7CiAgICAgICAgICR0
byA9IGFycmF5X2dldCgkX0dFVCwgJ3RvJyk7CkluZGV4OiBwdWJsaWMvYXBpL3Rlc3QtZ3JvdXBz
LnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBwdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocAkocmV2aXNpb24g
MjE1MTIzKQorKysgcHVibGljL2FwaS90ZXN0LWdyb3Vwcy5waHAJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDcgKzU1LDggQEAKICAgICBleGl0X3dpdGhfc3VjY2VzcyhhcnJheSgndGVzdEdyb3Vwcycg
PT4gJHRlc3RfZ3JvdXBzLAogICAgICAgICAnYnVpbGRSZXF1ZXN0cycgPT4gJGJ1aWxkX3JlcXVl
c3RzLAogICAgICAgICAnY29tbWl0U2V0cycgPT4gJGJ1aWxkX3JlcXVlc3RzX2ZldGNoZXItPmNv
bW1pdF9zZXRzKCksCi0gICAgICAgICdjb21taXRzJyA9PiAkYnVpbGRfcmVxdWVzdHNfZmV0Y2hl
ci0+Y29tbWl0cygpKSk7CisgICAgICAgICdjb21taXRzJyA9PiAkYnVpbGRfcmVxdWVzdHNfZmV0
Y2hlci0+Y29tbWl0cygpLAorICAgICAgICAndXBsb2FkZWRGaWxlcycgPT4gJGJ1aWxkX3JlcXVl
c3RzX2ZldGNoZXItPnVwbG9hZGVkX2ZpbGVzKCkpKTsKIH0KIAogZnVuY3Rpb24gZm9ybWF0X3Rl
c3RfZ3JvdXAoJGdyb3VwX3JvdykgewpJbmRleDogcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVz
dHMtZmV0Y2hlci5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVz
dHMtZmV0Y2hlci5waHAJKHJldmlzaW9uIDIxNTEyMykKKysrIHB1YmxpYy9pbmNsdWRlL2J1aWxk
LXJlcXVlc3RzLWZldGNoZXIucGhwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogPD9w
aHAKIAogcmVxdWlyZV9vbmNlKCd0ZXN0LXBhdGgtcmVzb2x2ZXIucGhwJyk7CityZXF1aXJlX29u
Y2UoJ3VwbG9hZGVkLWZpbGUtaGVscGVycy5waHAnKTsKIAogY2xhc3MgQnVpbGRSZXF1ZXN0c0Zl
dGNoZXIgewogICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRkYikgewpAQCAtMTAsNiArMTEsOCBA
QAogICAgICAgICAkdGhpcy0+Y29tbWl0c19ieV9pZCA9IGFycmF5KCk7CiAgICAgICAgICR0aGlz
LT5jb21taXRzID0gYXJyYXkoKTsKICAgICAgICAgJHRoaXMtPmNvbW1pdF9zZXRzX2J5X2lkID0g
YXJyYXkoKTsKKyAgICAgICAgJHRoaXMtPnVwbG9hZGVkX2ZpbGVzID0gYXJyYXkoKTsKKyAgICAg
ICAgJHRoaXMtPnVwbG9hZGVkX2ZpbGVzX2J5X2lkID0gYXJyYXkoKTsKICAgICB9CiAKICAgICBm
dW5jdGlvbiBmZXRjaF9mb3JfdGFzaygkdGFza19pZCkgewpAQCAtODMsMjcgKzg2LDM3IEBACiAg
ICAgICAgIHJldHVybiAkcmVxdWVzdHM7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gY29tbWl0X3Nl
dHMoKSB7Ci0gICAgICAgIHJldHVybiAkdGhpcy0+Y29tbWl0X3NldHM7Ci0gICAgfQorICAgIGZ1
bmN0aW9uIGNvbW1pdF9zZXRzKCkgeyByZXR1cm4gJHRoaXMtPmNvbW1pdF9zZXRzOyB9CisgICAg
ZnVuY3Rpb24gY29tbWl0cygpIHsgcmV0dXJuICR0aGlzLT5jb21taXRzOyB9CisgICAgZnVuY3Rp
b24gdXBsb2FkZWRfZmlsZXMoKSB7IHJldHVybiAkdGhpcy0+dXBsb2FkZWRfZmlsZXM7IH0KIAot
ICAgIGZ1bmN0aW9uIGNvbW1pdHMoKSB7Ci0gICAgICAgIHJldHVybiAkdGhpcy0+Y29tbWl0czsK
LSAgICB9Ci0KICAgICBwcml2YXRlIGZ1bmN0aW9uIGZldGNoX2NvbW1pdHNfZm9yX3NldF9pZl9u
ZWVkZWQoJGNvbW1pdF9zZXRfaWQsICRyZXNvbHZlX2lkcykgewogICAgICAgICBpZiAoYXJyYXlf
a2V5X2V4aXN0cygkY29tbWl0X3NldF9pZCwgJHRoaXMtPmNvbW1pdF9zZXRzX2J5X2lkKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAkY29tbWl0X3Jvd3MgPSAkdGhpcy0+ZGItPnF1
ZXJ5X2FuZF9mZXRjaF9hbGwoJ1NFTEVDVCAqCi0gICAgICAgICAgICBGUk9NIGNvbW1pdF9zZXRf
cmVsYXRpb25zaGlwcywgY29tbWl0cyBMRUZUIE9VVEVSIEpPSU4gcmVwb3NpdG9yaWVzIE9OIGNv
bW1pdF9yZXBvc2l0b3J5ID0gcmVwb3NpdG9yeV9pZAotICAgICAgICAgICAgV0hFUkUgY29tbWl0
c2V0X2NvbW1pdCA9IGNvbW1pdF9pZCBBTkQgY29tbWl0c2V0X3NldCA9ICQxJywgYXJyYXkoJGNv
bW1pdF9zZXRfaWQpKTsKKyAgICAgICAgICAgIEZST00gY29tbWl0X3NldF9yZWxhdGlvbnNoaXBz
IExFRlQgT1VURVIgSk9JTiAgY29tbWl0cyBPTiBjb21taXRzZXRfY29tbWl0ID0gY29tbWl0X2lk
CisgICAgICAgICAgICAgICAgTEVGVCBPVVRFUiBKT0lOIHJlcG9zaXRvcmllcyBPTiByZXBvc2l0
b3J5X2lkID0gY29tbWl0X3JlcG9zaXRvcnkKKyAgICAgICAgICAgICAgICBXSEVSRSBjb21taXRz
ZXRfc2V0ID0gJDEnLCBhcnJheSgkY29tbWl0X3NldF9pZCkpOwogCiAgICAgICAgICRjb21taXRf
aWRzID0gYXJyYXkoKTsKKyAgICAgICAgJGN1c3RvbV9yb290cyA9IGFycmF5KCk7CisKICAgICAg
ICAgZm9yZWFjaCAoJGNvbW1pdF9yb3dzIGFzICRyb3cpIHsKICAgICAgICAgICAgICRyZXBvc2l0
b3J5X2lkID0gJHJlc29sdmVfaWRzID8gJHJvd1sncmVwb3NpdG9yeV9uYW1lJ10gOiAkcm93Wydy
ZXBvc2l0b3J5X2lkJ107CiAgICAgICAgICAgICAkcmV2aXNpb24gPSAkcm93Wydjb21taXRfcmV2
aXNpb24nXTsKICAgICAgICAgICAgICRjb21taXRfdGltZSA9ICRyb3dbJ2NvbW1pdF90aW1lJ107
CisKKyAgICAgICAgICAgICRyb290X2ZpbGVfaWQgPSAkcm93Wydjb21taXRzZXRfcm9vdF9maWxl
J107CisgICAgICAgICAgICBpZiAoJHJvb3RfZmlsZV9pZCkgeworICAgICAgICAgICAgICAgIGlm
ICghYXJyYXlfa2V5X2V4aXN0cygkcm9vdF9maWxlX2lkLCAkdGhpcy0+dXBsb2FkZWRfZmlsZXNf
YnlfaWQpKSB7CisgICAgICAgICAgICAgICAgICAgICR1cGxvYWRlZF9maWxlX3JvdyA9ICR0aGlz
LT5kYi0+c2VsZWN0X2ZpcnN0X3JvdygndXBsb2FkZWRfZmlsZXMnLCAnZmlsZScsIGFycmF5KCdp
ZCcgPT4gJHJvb3RfZmlsZV9pZCkpOworICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCR0
aGlzLT51cGxvYWRlZF9maWxlcywgZm9ybWF0X3VwbG9hZGVkX2ZpbGUoJHVwbG9hZGVkX2ZpbGVf
cm93KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJGN1
c3RvbV9yb290cywgJHJvb3RfZmlsZV9pZCk7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgIGFycmF5X3B1c2goJGNvbW1pdF9pZHMsICRyb3db
J2NvbW1pdF9pZCddKTsKIAogICAgICAgICAgICAgJGNvbW1pdF9pZCA9ICRyb3dbJ2NvbW1pdF9p
ZCddOwpAQCAtMTIxLDcgKzEzNCw3IEBACiAKICAgICAgICAgJHRoaXMtPmNvbW1pdF9zZXRzX2J5
X2lkWyRjb21taXRfc2V0X2lkXSA9IFRSVUU7CiAKLSAgICAgICAgYXJyYXlfcHVzaCgkdGhpcy0+
Y29tbWl0X3NldHMsIGFycmF5KCdpZCcgPT4gJGNvbW1pdF9zZXRfaWQsICdjb21taXRzJyA9PiAk
Y29tbWl0X2lkcykpOworICAgICAgICBhcnJheV9wdXNoKCR0aGlzLT5jb21taXRfc2V0cywgYXJy
YXkoJ2lkJyA9PiAkY29tbWl0X3NldF9pZCwgJ2NvbW1pdHMnID0+ICRjb21taXRfaWRzLCAnY3Vz
dG9tUm9vdHMnID0+ICRjdXN0b21fcm9vdHMpKTsKICAgICB9CiB9CiAKSW5kZXg6IHB1YmxpYy9p
bmNsdWRlL2NvbW1pdC1sb2ctZmV0Y2hlci5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcHVibGljL2luY2x1
ZGUvY29tbWl0LWxvZy1mZXRjaGVyLnBocAkocmV2aXNpb24gMjE1MTIzKQorKysgcHVibGljL2lu
Y2x1ZGUvY29tbWl0LWxvZy1mZXRjaGVyLnBocAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzEx
OCwyOCBAQAogICAgICAgICByZXR1cm4gJHRoaXMtPmZvcm1hdF9zaW5nbGVfY29tbWl0KCR0aGlz
LT5kYi0+c2VsZWN0X2xhc3Rfcm93KCdjb21taXRzJywgJ2NvbW1pdCcsIGFycmF5KCdyZXBvc2l0
b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCksIGFycmF5KCd0aW1lJywgJ29yZGVyJykpKTsKICAgICB9
CiAKKyAgICBmdW5jdGlvbiBmZXRjaF9sYXRlc3RfZm9yX3BsYXRmb3JtKCRyZXBvc2l0b3J5X2lk
LCAkcGxhdGZvcm1faWQpCisgICAgeworICAgICAgICAkcXVlcnlfcmVzdWx0ID0gJHRoaXMtPmRi
LT5xdWVyeV9hbmRfZmV0Y2hfYWxsKCJTRUxFQ1QgY29tbWl0cy4qIEZST00gdGVzdF9ydW5zLCBi
dWlsZHMsIGJ1aWxkX2NvbW1pdHMsIGNvbW1pdHMKKyAgICAgICAgICAgIFdIRVJFIHJ1bl9idWls
ZCA9IGJ1aWxkX2lkIEFORCBOT1QgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIGJ1aWxkX3JlcXVlc3Rz
IFdIRVJFIHJlcXVlc3RfYnVpbGQgPSBidWlsZF9pZCkKKyAgICAgICAgICAgICAgICBBTkQgcnVu
X2NvbmZpZyBJTiAoU0VMRUNUIGNvbmZpZ19pZCBGUk9NIHRlc3RfY29uZmlndXJhdGlvbnMKKyAg
ICAgICAgICAgICAgICAgICAgV0hFUkUgY29uZmlnX3R5cGUgPSAnY3VycmVudCcgQU5EIGNvbmZp
Z19wbGF0Zm9ybSA9ICQyIEFORCBjb25maWdfbWV0cmljCisgICAgICAgICAgICAgICAgICAgICAg
ICBJTiAoU0VMRUNUIG1ldHJpY19pZCBGUk9NIHRlc3RfbWV0cmljcywgdGVzdHMgV0hFUkUgbWV0
cmljX3Rlc3QgPSB0ZXN0X2lkIGFuZCB0ZXN0X3BhcmVudCBJUyBOVUxMKSkKKyAgICAgICAgICAg
ICAgICBBTkQgcnVuX2J1aWxkID0gYnVpbGRfaWQgQU5EIGNvbW1pdF9idWlsZCA9IGJ1aWxkX2lk
IEFORCBidWlsZF9jb21taXQgPSBjb21taXRfaWQgQU5EIGNvbW1pdF9yZXBvc2l0b3J5ID0gJDEK
KyAgICAgICAgICAgIE9SREVSIEJZIGJ1aWxkX3RpbWUgREVTQyBMSU1JVCAxOyIsIGFycmF5KCRy
ZXBvc2l0b3J5X2lkLCAkcGxhdGZvcm1faWQpKTsKKyAgICAgICAgLyogVGhpcyBxdWVyeSBpcyBh
cHByb3hpbWF0aW9uLiBJdCBmaW5kcyB0aGUgY29tbWl0IG9mIHRoZSBsYXN0IGJ1aWxkIGluc3Rl
YWQgb2YgdGhlIGxhc3QgY29tbWl0LgorICAgICAgICBXZSB3b3VsZCBpZGVhbGx5IHJ1biB0aGUg
Zm9sbG93aW5nIHF1ZXJ5IGJ1dCBpdCdzIG11Y2ggc2xvd2VyIH43MHMgY29tcGFyZWQgdG8gMzAw
bXMuCisgICAgICAgICAgICBTRUxFQ1QgY29tbWl0cy4qLCBjb21taXRfYnVpbGQsIHJ1bl9pZAor
ICAgICAgICAgICAgICAgIEZST00gY29tbWl0cywgYnVpbGRfY29tbWl0cywgdGVzdF9ydW5zCisg
ICAgICAgICAgICAgICAgV0hFUkUgY29tbWl0X3JlcG9zaXRvcnkgPSA5IEFORCBjb21taXRfaWQg
PSBidWlsZF9jb21taXQgQU5EIGNvbW1pdF9idWlsZCA9IHJ1bl9idWlsZAorICAgICAgICAgICAg
ICAgIEFORCBydW5fY29uZmlnIElOIChTRUxFQ1QgY29uZmlnX2lkIEZST00gdGVzdF9jb25maWd1
cmF0aW9ucyBXSEVSRSBjb25maWdfcGxhdGZvcm0gPSAzOCBBTkQgY29uZmlnX3R5cGUgPSAnY3Vy
cmVudCcpCisgICAgICAgICAgICAgICAgQU5EIE5PVCBFWElTVFMgKFNFTEVDVCAqIEZST00gYnVp
bGRfcmVxdWVzdHMgV0hFUkUgcmVxdWVzdF9idWlsZCA9IGNvbW1pdF9idWlsZCkKKyAgICAgICAg
ICAgICAgICBPUkRFUiBCWSBjb21taXRfdGltZSBERVNDLCBjb21taXRfb3JkZXIgREVTQyBMSU1J
VCAxOyAqLworICAgICAgICBpZiAoISRxdWVyeV9yZXN1bHQpCisgICAgICAgICAgICByZXR1cm4g
YXJyYXkoKTsKKyAgICAgICAgcmV0dXJuICR0aGlzLT5mb3JtYXRfc2luZ2xlX2NvbW1pdCgkcXVl
cnlfcmVzdWx0WzBdKTsKKyAgICB9CisKICAgICBmdW5jdGlvbiBmZXRjaF9sYXN0X3JlcG9ydGVk
KCRyZXBvc2l0b3J5X2lkKSB7CiAgICAgICAgIHJldHVybiAkdGhpcy0+Zm9ybWF0X3NpbmdsZV9j
b21taXQoJHRoaXMtPmRiLT5zZWxlY3RfbGFzdF9yb3coJ2NvbW1pdHMnLCAnY29tbWl0JywgYXJy
YXkoJ3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X2lkLCAncmVwb3J0ZWQnID0+IHRydWUpLCBh
cnJheSgndGltZScsICdvcmRlcicpKSk7CiAgICAgfQpJbmRleDogcHVibGljL3ByaXZpbGVnZWQt
YXBpL2NyZWF0ZS10ZXN0LWdyb3VwLnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwdWJsaWMvcHJpdmlsZWdl
ZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhwCShyZXZpc2lvbiAyMTUxMjMpCisrKyBwdWJsaWMv
cHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MSwxNiArMTEsMjggQEAKIAogICAgICRhcmd1bWVudHMgPSB2YWxpZGF0ZV9hcmd1bWVudHMoJGRh
dGEsIGFycmF5KAogICAgICAgICAnbmFtZScgPT4gJy8uKy8nLAotICAgICAgICAndGFzaycgPT4g
J2ludCcsCisgICAgICAgICd0YXNrJyA9PiAnaW50PycsCiAgICAgICAgICdyZXBldGl0aW9uQ291
bnQnID0+ICdpbnQ/JywKICAgICApKTsKICAgICAkbmFtZSA9ICRhcmd1bWVudHNbJ25hbWUnXTsK
LSAgICAkdGFza19pZCA9ICRhcmd1bWVudHNbJ3Rhc2snXTsKKyAgICAkdGFza19pZCA9IGFycmF5
X2dldCgkYXJndW1lbnRzLCAndGFzaycpOworICAgICR0YXNrX25hbWUgPSBhcnJheV9nZXQoJGRh
dGEsICd0YXNrTmFtZScpOwogICAgICRyZXBldGl0aW9uX2NvdW50ID0gJGFyZ3VtZW50c1sncmVw
ZXRpdGlvbkNvdW50J107CisgICAgJHBsYXRmb3JtX2lkID0gYXJyYXlfZ2V0KCRkYXRhLCAncGxh
dGZvcm0nKTsKKyAgICAkdGVzdF9pZCA9IGFycmF5X2dldCgkZGF0YSwgJ3Rlc3QnKTsKICAgICAk
cmV2aXNpb25fc2V0X2xpc3QgPSBhcnJheV9nZXQoJGRhdGEsICdyZXZpc2lvblNldHMnKTsKICAg
ICAkY29tbWl0X3NldHNfaW5mbyA9IGFycmF5X2dldCgkZGF0YSwgJ2NvbW1pdFNldHMnKTsKIAot
ICAgIHJlcXVpcmVfZm9ybWF0KCdUYXNrJywgJHRhc2tfaWQsICcvXlxkKyQvJyk7CisgICAgaWYg
KCEkdGFza19pZCA9PSAhJHRhc2tfbmFtZSkKKyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZh
bGlkVGFzaycpOworCisgICAgaWYgKCR0YXNrX2lkKQorICAgICAgICByZXF1aXJlX2Zvcm1hdCgn
VGFzaycsICR0YXNrX2lkLCAnL15cZCskLycpOworICAgIGlmICgkdGFza19uYW1lIHx8ICRwbGF0
Zm9ybV9pZCB8fCAkdGVzdF9pZCkgeworICAgICAgICByZXF1aXJlX2Zvcm1hdCgnUGxhdGZvcm0n
LCAkcGxhdGZvcm1faWQsICcvXlxkKyQvJyk7CisgICAgICAgIHJlcXVpcmVfZm9ybWF0KCdUZXN0
JywgJHRlc3RfaWQsICcvXlxkKyQvJyk7CisgICAgfQorCiAgICAgaWYgKCEkcmV2aXNpb25fc2V0
X2xpc3QgJiYgISRjb21taXRfc2V0c19pbmZvKQogICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0lu
dmFsaWRDb21taXRTZXRzJyk7CiAKQEAgLTI5LDM5ICs0MSw2NSBAQAogICAgIGVsc2UgaWYgKCRy
ZXBldGl0aW9uX2NvdW50IDwgMSkKICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkUmVw
ZXRpdGlvbkNvdW50JywgYXJyYXkoJ3JlcGV0aXRpb25Db3VudCcgPT4gJHJlcGV0aXRpb25fY291
bnQpKTsKIAotICAgICR0YXNrID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdhbmFseXNpc190YXNr
cycsICd0YXNrJywgYXJyYXkoJ2lkJyA9PiAkdGFza19pZCkpOwotICAgIGlmICghJHRhc2spCi0g
ICAgICAgIGV4aXRfd2l0aF9lcnJvcignSW52YWxpZFRhc2snLCBhcnJheSgndGFzaycgPT4gJHRh
c2tfaWQpKTsKLSAgICAkdHJpZ2dlcmFibGUgPSBmaW5kX3RyaWdnZXJhYmxlX2Zvcl90YXNrKCRk
YiwgJHRhc2tfaWQpOwotICAgIGlmICghJHRyaWdnZXJhYmxlKQotICAgICAgICBleGl0X3dpdGhf
ZXJyb3IoJ1RyaWdnZXJhYmxlTm90Rm91bmRGb3JUYXNrJywgYXJyYXkoJ3Rhc2snID0+ICR0YXNr
X2lkKSk7CisgICAgJHRyaWdnZXJhYmxlX2lkID0gTlVMTDsKKyAgICBpZiAoJHRhc2tfaWQpIHsK
KyAgICAgICAgJHRhc2sgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ2FuYWx5c2lzX3Rhc2tzJywg
J3Rhc2snLCBhcnJheSgnaWQnID0+ICR0YXNrX2lkKSk7CisgICAgICAgIGlmICghJHRhc2spCisg
ICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRUYXNrJywgYXJyYXkoJ3Rhc2snID0+
ICR0YXNrX2lkKSk7CisgICAgICAgICR0cmlnZ2VyYWJsZSA9IGZpbmRfdHJpZ2dlcmFibGVfZm9y
X3Rhc2soJGRiLCAkdGFza19pZCk7CisgICAgICAgIGlmICgkdHJpZ2dlcmFibGUpIHsKKyAgICAg
ICAgICAgICR0cmlnZ2VyYWJsZV9pZCA9ICR0cmlnZ2VyYWJsZVsnaWQnXTsKKyAgICAgICAgICAg
IGlmICghJHBsYXRmb3JtX2lkICYmICEkdGVzdF9pZCkgeworICAgICAgICAgICAgICAgICRwbGF0
Zm9ybV9pZCA9ICR0cmlnZ2VyYWJsZVsncGxhdGZvcm0nXTsKKyAgICAgICAgICAgICAgICAkdGVz
dF9pZCA9ICR0cmlnZ2VyYWJsZVsndGVzdCddOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZiAoJHRyaWdnZXJhYmxlWydwbGF0Zm9ybSddICYmICRwbGF0Zm9ybV9pZCAh
PSAkdHJpZ2dlcmFibGVbJ3BsYXRmb3JtJ10pCisgICAgICAgICAgICAgICAgICAgIGV4aXRfd2l0
aF9lcnJvcignSW5jb25zaXN0ZW50UGxhdGZvcm0nLCBhcnJheSgnZ3JvdXBQbGF0Zm9ybScgPT4g
JHBsYXRmb3JtX2lkLCAndGFza1BsYXRmb3JtJyA9PiAkdHJpZ2dlcmFibGVbJ3BsYXRmb3JtJ10p
KTsKKyAgICAgICAgICAgICAgICBpZiAoJHRyaWdnZXJhYmxlWyd0ZXN0J10gJiYgJHRlc3RfaWQg
IT0gJHRyaWdnZXJhYmxlWyd0ZXN0J10pCisgICAgICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9l
cnJvcignSW5jb25zaXN0ZW50VGVzdCcsIGFycmF5KCdncm91cFRlc3QnID0+ICR0ZXN0X2lkLCAn
dGFza1Rlc3QnID0+ICR0cmlnZ2VyYWJsZVsndGVzdCddKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgaWYgKCRwbGF0Zm9ybV9pZCAmJiAkdGVzdF9pZCkgeworICAgICAg
ICAkdHJpZ2dlcmFibGVfY29uZmlndXJhdGlvbiA9ICRkYi0+c2VsZWN0X2ZpcnN0X3JvdygndHJp
Z2dlcmFibGVfY29uZmlndXJhdGlvbnMnLCAndHJpZ2NvbmZpZycsCisgICAgICAgICAgICBhcnJh
eSgndGVzdCcgPT4gJHRlc3RfaWQsICdwbGF0Zm9ybScgPT4gJHBsYXRmb3JtX2lkKSk7CisgICAg
ICAgIGlmICgkdHJpZ2dlcmFibGVfY29uZmlndXJhdGlvbikKKyAgICAgICAgICAgICR0cmlnZ2Vy
YWJsZV9pZCA9ICR0cmlnZ2VyYWJsZV9jb25maWd1cmF0aW9uWyd0cmlnY29uZmlnX3RyaWdnZXJh
YmxlJ107CisgICAgfQogCisgICAgaWYgKCEkdHJpZ2dlcmFibGVfaWQpCisgICAgICAgIGV4aXRf
d2l0aF9lcnJvcignVHJpZ2dlcmFibGVOb3RGb3VuZEZvclRhc2snLCBhcnJheSgndGFzaycgPT4g
JHRhc2tfaWQsICdwbGF0Zm9ybScgPT4gJHBsYXRmb3JtX2lkLCAndGVzdCcgPT4gJHRlc3RfaWQp
KTsKKwogICAgIGlmICgkcmV2aXNpb25fc2V0X2xpc3QpCi0gICAgICAgICRjb21taXRfc2V0cyA9
IGNvbW1pdF9zZXRzX2Zyb21fcmV2aXNpb25fc2V0cygkZGIsICR0cmlnZ2VyYWJsZVsnaWQnXSwg
JHJldmlzaW9uX3NldF9saXN0KTsKKyAgICAgICAgJGNvbW1pdF9zZXRzID0gY29tbWl0X3NldHNf
ZnJvbV9yZXZpc2lvbl9zZXRzKCRkYiwgJHRyaWdnZXJhYmxlX2lkLCAkcmV2aXNpb25fc2V0X2xp
c3QpOwogICAgIGVsc2UgLy8gVjIgVUkgY29tcGF0aWJpbGl0eQotICAgICAgICAkY29tbWl0X3Nl
dHMgPSBlbnN1cmVfY29tbWl0X3NldHMoJGRiLCAkdHJpZ2dlcmFibGVbJ2lkJ10sICRjb21taXRf
c2V0c19pbmZvKTsKKyAgICAgICAgJGNvbW1pdF9zZXRzID0gZW5zdXJlX2NvbW1pdF9zZXRzKCRk
YiwgJHRyaWdnZXJhYmxlX2lkLCAkY29tbWl0X3NldHNfaW5mbyk7CiAKICAgICAkZGItPmJlZ2lu
X3RyYW5zYWN0aW9uKCk7CiAKKyAgICBpZiAoJHRhc2tfbmFtZSkKKyAgICAgICAgJHRhc2tfaWQg
PSAkZGItPmluc2VydF9yb3coJ2FuYWx5c2lzX3Rhc2tzJywgJ3Rhc2snLCBhcnJheSgnbmFtZScg
PT4gJHRhc2tfbmFtZSwgJ2F1dGhvcicgPT4gJGF1dGhvcikpOworCiAgICAgJGNvbmZpZ3VyYXRp
b25fbGlzdCA9IGFycmF5KCk7CiAgICAgZm9yZWFjaCAoJGNvbW1pdF9zZXRzIGFzICRjb21taXRf
bGlzdCkgewogICAgICAgICAkY29tbWl0X3NldF9pZCA9ICRkYi0+aW5zZXJ0X3JvdygnY29tbWl0
X3NldHMnLCAnY29tbWl0c2V0JywgYXJyYXkoKSk7Ci0gICAgICAgIGZvcmVhY2ggKCRjb21taXRf
bGlzdFsnc2V0J10gYXMgJGNvbW1pdCkKLSAgICAgICAgICAgICRkYi0+aW5zZXJ0X3JvdygnY29t
bWl0X3NldF9yZWxhdGlvbnNoaXBzJywgJ2NvbW1pdHNldCcsIGFycmF5KCdzZXQnID0+ICRjb21t
aXRfc2V0X2lkLCAnY29tbWl0JyA9PiAkY29tbWl0KSwgJ2NvbW1pdCcpOworICAgICAgICBmb3Jl
YWNoICgkY29tbWl0X2xpc3RbJ3NldCddIGFzICRjb21taXRfcm93KSB7CisgICAgICAgICAgICAk
Y29tbWl0X3Jvd1snc2V0J10gPSAkY29tbWl0X3NldF9pZDsKKyAgICAgICAgICAgICRkYi0+aW5z
ZXJ0X3JvdygnY29tbWl0X3NldF9yZWxhdGlvbnNoaXBzJywgJ2NvbW1pdHNldCcsICRjb21taXRf
cm93LCAnY29tbWl0Jyk7CisgICAgICAgIH0KICAgICAgICAgYXJyYXlfcHVzaCgkY29uZmlndXJh
dGlvbl9saXN0LCBhcnJheSgnY29tbWl0X3NldCcgPT4gJGNvbW1pdF9zZXRfaWQsICdyZXBvc2l0
b3J5X2dyb3VwJyA9PiAkY29tbWl0X2xpc3RbJ3JlcG9zaXRvcnlfZ3JvdXAnXSkpOwogICAgIH0K
IAogICAgICRncm91cF9pZCA9ICRkYi0+aW5zZXJ0X3JvdygnYW5hbHlzaXNfdGVzdF9ncm91cHMn
LCAndGVzdGdyb3VwJywKLSAgICAgICAgYXJyYXkoJ3Rhc2snID0+ICR0YXNrWyd0YXNrX2lkJ10s
ICduYW1lJyA9PiAkbmFtZSwgJ2F1dGhvcicgPT4gJGF1dGhvcikpOworICAgICAgICBhcnJheSgn
dGFzaycgPT4gJHRhc2tfaWQsICduYW1lJyA9PiAkbmFtZSwgJ2F1dGhvcicgPT4gJGF1dGhvcikp
OwogCiAgICAgJG9yZGVyID0gMDsKICAgICBmb3IgKCRpID0gMDsgJGkgPCAkcmVwZXRpdGlvbl9j
b3VudDsgJGkrKykgewogICAgICAgICBmb3JlYWNoICgkY29uZmlndXJhdGlvbl9saXN0IGFzICRj
b25maWcpIHsKICAgICAgICAgICAgICRkYi0+aW5zZXJ0X3JvdygnYnVpbGRfcmVxdWVzdHMnLCAn
cmVxdWVzdCcsIGFycmF5KAotICAgICAgICAgICAgICAgICd0cmlnZ2VyYWJsZScgPT4gJHRyaWdn
ZXJhYmxlWydpZCddLAorICAgICAgICAgICAgICAgICd0cmlnZ2VyYWJsZScgPT4gJHRyaWdnZXJh
YmxlX2lkLAogICAgICAgICAgICAgICAgICdyZXBvc2l0b3J5X2dyb3VwJyA9PiAkY29uZmlnWydy
ZXBvc2l0b3J5X2dyb3VwJ10sCi0gICAgICAgICAgICAgICAgJ3BsYXRmb3JtJyA9PiAkdHJpZ2dl
cmFibGVbJ3BsYXRmb3JtJ10sCi0gICAgICAgICAgICAgICAgJ3Rlc3QnID0+ICR0cmlnZ2VyYWJs
ZVsndGVzdCddLAorICAgICAgICAgICAgICAgICdwbGF0Zm9ybScgPT4gJHBsYXRmb3JtX2lkLAor
ICAgICAgICAgICAgICAgICd0ZXN0JyA9PiAkdGVzdF9pZCwKICAgICAgICAgICAgICAgICAnZ3Jv
dXAnID0+ICRncm91cF9pZCwKICAgICAgICAgICAgICAgICAnb3JkZXInID0+ICRvcmRlciwKICAg
ICAgICAgICAgICAgICAnY29tbWl0X3NldCcgPT4gJGNvbmZpZ1snY29tbWl0X3NldCddLCkpOwpA
QCAtNzEsNyArMTA5LDcgQEAKIAogICAgICRkYi0+Y29tbWl0X3RyYW5zYWN0aW9uKCk7CiAKLSAg
ICBleGl0X3dpdGhfc3VjY2VzcyhhcnJheSgndGVzdEdyb3VwSWQnID0+ICRncm91cF9pZCkpOwor
ICAgIGV4aXRfd2l0aF9zdWNjZXNzKGFycmF5KCd0YXNrSWQnID0+ICR0YXNrX2lkLCAndGVzdEdy
b3VwSWQnID0+ICRncm91cF9pZCkpOwogfQogCiBmdW5jdGlvbiBjb21taXRfc2V0c19mcm9tX3Jl
dmlzaW9uX3NldHMoJGRiLCAkdHJpZ2dlcmFibGVfaWQsICRyZXZpc2lvbl9zZXRfbGlzdCkKQEAg
LTg3LDggKzEyNSwxNiBAQAogCiAgICAgICAgICRjb21taXRfc2V0ID0gYXJyYXkoKTsKICAgICAg
ICAgJHJlcG9zaXRvcnlfbGlzdCA9IGFycmF5KCk7Ci0KICAgICAgICAgZm9yZWFjaCAoJHJldmlz
aW9uX3NldCBhcyAkcmVwb3NpdG9yeV9pZCA9PiAkcmV2aXNpb24pIHsKKyAgICAgICAgICAgIGlm
ICgkcmVwb3NpdG9yeV9pZCA9PSAnY3VzdG9tUm9vdHMnKSB7CisgICAgICAgICAgICAgICAgJGZp
bGVfaWRfbGlzdCA9ICRyZXZpc2lvbjsKKyAgICAgICAgICAgICAgICBmb3JlYWNoICgkZmlsZV9p
ZF9saXN0IGFzICRmaWxlX2lkKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghJGRiLT5zZWxl
Y3RfZmlyc3Rfcm93KCd1cGxvYWRlZF9maWxlcycsICdmaWxlJywgYXJyYXkoJ2lkJyA9PiAkZmls
ZV9pZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlk
VXBsb2FkZWRGaWxlJywgYXJyYXkoJ2ZpbGUnID0+ICRmaWxlX2lkKSk7CisgICAgICAgICAgICAg
ICAgICAgIGFycmF5X3B1c2goJGNvbW1pdF9zZXQsIGFycmF5KCdyb290X2ZpbGUnID0+ICRmaWxl
X2lkKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFpc19udW1lcmljKCRyZXBvc2l0b3J5X2lkKSkK
ICAgICAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXBvc2l0b3J5JywgYXJy
YXkoJ3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X2lkKSk7CiAgICAgICAgICAgICAkY29tbWl0
ID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdjb21taXRzJywgJ2NvbW1pdCcsCkBAIC05NSw3ICsx
NDEsNyBAQAogICAgICAgICAgICAgICAgIGFycmF5KCdyZXBvc2l0b3J5JyA9PiBpbnR2YWwoJHJl
cG9zaXRvcnlfaWQpLCAncmV2aXNpb24nID0+ICRyZXZpc2lvbikpOwogICAgICAgICAgICAgaWYg
KCEkY29tbWl0KQogICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignUmV2aXNpb25Ob3RG
b3VuZCcsIGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwgJ3JldmlzaW9uJyA9
PiAkcmV2aXNpb24pKTsKLSAgICAgICAgICAgIGFycmF5X3B1c2goJGNvbW1pdF9zZXQsICRjb21t
aXRbJ2NvbW1pdF9pZCddKTsKKyAgICAgICAgICAgIGFycmF5X3B1c2goJGNvbW1pdF9zZXQsIGFy
cmF5KCdjb21taXQnID0+ICRjb21taXRbJ2NvbW1pdF9pZCddKSk7CiAgICAgICAgICAgICBhcnJh
eV9wdXNoKCRyZXBvc2l0b3J5X2xpc3QsICRyZXBvc2l0b3J5X2lkKTsKICAgICAgICAgfQogCkBA
IC0xMjcsNyArMTczLDcgQEAKICAgICAgICAgICAgIGlmICghJGNvbW1pdCkKICAgICAgICAgICAg
ICAgICBleGl0X3dpdGhfZXJyb3IoJ1JldmlzaW9uTm90Rm91bmQnLCBhcnJheSgncmVwb3NpdG9y
eScgPT4gJHJlcG9zaXRvcnlfbmFtZSwgJ3JldmlzaW9uJyA9PiAkcmV2aXNpb24pKTsKICAgICAg
ICAgICAgIGFycmF5X3NldF9kZWZhdWx0KCRjb21taXRfc2V0cywgJGksIGFycmF5KCdzZXQnID0+
IGFycmF5KCkpKTsKLSAgICAgICAgICAgIGFycmF5X3B1c2goJGNvbW1pdF9zZXRzWyRpXVsnc2V0
J10sICRjb21taXRbJ2NvbW1pdF9pZCddKTsKKyAgICAgICAgICAgIGFycmF5X3B1c2goJGNvbW1p
dF9zZXRzWyRpXVsnc2V0J10sIGFycmF5KCdjb21taXQnID0+ICRjb21taXRbJ2NvbW1pdF9pZCdd
KSk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IHB1YmxpYy9wcml2aWxlZ2VkLWFwaS91cGxv
YWQtZmlsZS5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwbG9hZC1m
aWxlLnBocAkocmV2aXNpb24gMjE1MTIzKQorKysgcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwbG9h
ZC1maWxlLnBocAkod29ya2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBAQAogZnVuY3Rpb24gbWFp
bigpCiB7CiAgICAgaWYgKGFycmF5X2dldCgkX1NFUlZFUiwgJ0NPTlRFTlRfTEVOR1RIJykgJiYg
ZW1wdHkoJF9QT1NUKSAmJiBlbXB0eSgkX0ZJTEVTKSkKLSAgICAgICAgZXhpdF93aXRoX2Vycm9y
KCdGaWxlU2l6ZUxpbWl0RXhjZWVkZWQyJyk7CisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmls
ZVNpemVMaW1pdEV4Y2VlZGVkJyk7CiAKICAgICBpZiAoIXZlcmlmeV90b2tlbihhcnJheV9nZXQo
JF9QT1NULCAndG9rZW4nKSkpCiAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignSW52YWxpZFRva2Vu
Jyk7CkBAIC0yMiw2ICsyMiw5IEBACiAgICAgaWYgKCEkaW5wdXRfZmlsZSkKICAgICAgICAgZXhp
dF93aXRoX2Vycm9yKCdOb0ZpbGVTcGVjaWZpZWQnKTsKIAorICAgIGlmICgkaW5wdXRfZmlsZVsn
ZXJyb3InXSA9PSBVUExPQURfRVJSX0lOSV9TSVpFIHx8ICRpbnB1dF9maWxlWydlcnJvciddID09
IFVQTE9BRF9FUlJfRk9STV9TSVpFKQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ZpbGVTaXpl
TGltaXRFeGNlZWRlZCcpOworCiAgICAgaWYgKCRpbnB1dF9maWxlWydlcnJvciddICE9IFVQTE9B
RF9FUlJfT0spCiAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9VcGxvYWRGaWxlJywg
YXJyYXkoJ25hbWUnID0+ICRpbnB1dF9maWxlWyduYW1lJ10sICdlcnJvcicgPT4gJGlucHV0X2Zp
bGVbJ2Vycm9yJ10pKTsKIApJbmRleDogcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9tLWFuYWx5
c2lzLXRhc2stY29uZmlndXJhdG9yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHB1YmxpYy92My9jb21wb25l
bnRzL2N1c3RvbS1hbmFseXNpcy10YXNrLWNvbmZpZ3VyYXRvci5qcwkobm9uZXhpc3RlbnQpCisr
KyBwdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b20tYW5hbHlzaXMtdGFzay1jb25maWd1cmF0b3Iu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NDUgQEAKK2NsYXNzIEN1c3RvbUFuYWx5c2lz
VGFza0NvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudEJhc2UgeworCisgICAgY29uc3RydWN0
b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoJ2N1c3RvbS1hbmFseXNpcy10YXNrLWNvbmZpZ3Vy
YXRvcicpOworCisgICAgICAgIHRoaXMuX3NlbGVjdGVkVGVzdHMgPSBbXTsKKyAgICAgICAgdGhp
cy5fdHJpZ2dlcmFibGVQbGF0Zm9ybXMgPSBbXTsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRQbGF0
Zm9ybSA9IG51bGw7CisgICAgICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25OYW1lcyA9IFsnQmFzZWxp
bmUnLCAnQ29tcGFyaXNvbiddOworICAgICAgICB0aGlzLl9zaG93Q29tcGFyaXNvbiA9IGZhbHNl
OworICAgICAgICB0aGlzLl9jb21taXRTZXRNYXAgPSB7fTsKKyAgICAgICAgdGhpcy5fc3BlY2lm
aWVkUmV2aXNpb25zID0geydCYXNlbGluZSc6IG5ldyBNYXAsICdDb21wYXJpc29uJzogbmV3IE1h
cH07CisgICAgICAgIHRoaXMuX2ZldGNoZWRSZXZpc2lvbnMgPSB7J0Jhc2VsaW5lJzogbmV3IE1h
cCwgJ0NvbXBhcmlzb24nOiBuZXcgTWFwfTsKKyAgICAgICAgdGhpcy5fcmVwb3NpdG9yeUdyb3Vw
QnlDb25maWd1cmF0aW9uID0geydCYXNlbGluZSc6IG51bGwsICdDb21wYXJpc29uJzogbnVsbH07
CisgICAgICAgIHRoaXMuX3VwZGF0ZVRyaWdnZXJhYmxlTGF6aWx5ID0gbmV3IExhemlseUV2YWx1
YXRlZEZ1bmN0aW9uKHRoaXMuX3VwZGF0ZVRyaWdnZXJhYmxlLmJpbmQodGhpcykpOworCisgICAg
ICAgIHRoaXMuX3JlbmRlclRyaWdnZXJhYmxlVGVzdHNMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVh
dGVkRnVuY3Rpb24odGhpcy5fcmVuZGVyVHJpZ2dlcmFibGVUZXN0cy5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgdGhpcy5fcmVuZGVyVHJpZ2dlcmFibGVQbGF0Zm9ybXNMYXppbHkgPSBuZXcgTGF6aWx5
RXZhbHVhdGVkRnVuY3Rpb24odGhpcy5fcmVuZGVyVHJpZ2dlcmFibGVQbGF0Zm9ybXMuYmluZCh0
aGlzKSk7CisgICAgICAgIHRoaXMuX3JlbmRlclJlcG9zaXRvcnlQYW5lc0xhemlseSA9IG5ldyBM
YXppbHlFdmFsdWF0ZWRGdW5jdGlvbih0aGlzLl9yZW5kZXJSZXBvc2l0b3J5UGFuZXMuYmluZCh0
aGlzKSk7CisKKyAgICAgICAgdGhpcy5fZmlsZVVwbG9hZGVycyA9IHt9OworICAgIH0KKworICAg
IHRlc3RzKCkgeyByZXR1cm4gdGhpcy5fc2VsZWN0ZWRUZXN0czsgfQorICAgIHBsYXRmb3JtKCkg
eyByZXR1cm4gdGhpcy5fc2VsZWN0ZWRQbGF0Zm9ybTsgfQorICAgIGNvbW1pdFNldHMoKQorICAg
IHsKKyAgICAgICAgY29uc3QgbWFwID0gdGhpcy5fY29tbWl0U2V0TWFwOworICAgICAgICBpZiAo
IW1hcFsnQmFzZWxpbmUnXSB8fCAhbWFwWydDb21wYXJpc29uJ10pCisgICAgICAgICAgICByZXR1
cm4gbnVsbDsKKyAgICAgICAgcmV0dXJuIFttYXBbJ0Jhc2VsaW5lJ10sIG1hcFsnQ29tcGFyaXNv
biddXTsKKyAgICB9CisKKyAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuY29udGVudCgnc3BlY2lmeS1jb21wYXJpc29uLWJ1dHRvbicpLm9uY2xpY2sgPSB0
aGlzLmNyZWF0ZUV2ZW50SGFuZGxlcigoKSA9PiB0aGlzLl9jb25maWd1cmVDb21wYXJpc29uKCkp
OworCisgICAgICAgIGNvbnN0IGJhc2VsaW5lUm9vdHNVcGxvYWRlciA9IG5ldyBJbnN0YW50Rmls
ZVVwbG9hZGVyOworICAgICAgICBiYXNlbGluZVJvb3RzVXBsb2FkZXIubGlzdGVuVG9BY3Rpb24o
J3VwbG9hZGVkRmlsZScsICh1cGxvYWRlZEZpbGUpID0+IHsKKyAgICAgICAgICAgIGNvbXBhcmlz
b25Sb290c1VwbG9hZGVyLmFkZFVwbG9hZGVkRmlsZSh1cGxvYWRlZEZpbGUpOworICAgICAgICAg
ICAgdGhpcy5fdXBkYXRlQ29tbWl0U2V0TWFwKCk7CisgICAgICAgIH0pOworICAgICAgICBiYXNl
bGluZVJvb3RzVXBsb2FkZXIubGlzdGVuVG9BY3Rpb24oJ3JlbW92ZWRGaWxlJywgKCkgPT4gdGhp
cy5fdXBkYXRlQ29tbWl0U2V0TWFwKCkpOworICAgICAgICB0aGlzLl9maWxlVXBsb2FkZXJzWydC
YXNlbGluZSddID0gYmFzZWxpbmVSb290c1VwbG9hZGVyOworCisgICAgICAgIGNvbnN0IGNvbXBh
cmlzb25Sb290c1VwbG9hZGVyID0gbmV3IEluc3RhbnRGaWxlVXBsb2FkZXI7CisgICAgICAgIGNv
bXBhcmlzb25Sb290c1VwbG9hZGVyLmxpc3RlblRvQWN0aW9uKCd1cGxvYWRlZEZpbGUnLCAoKSA9
PiB0aGlzLl91cGRhdGVDb21taXRTZXRNYXAoKSk7CisgICAgICAgIGNvbXBhcmlzb25Sb290c1Vw
bG9hZGVyLmxpc3RlblRvQWN0aW9uKCdyZW1vdmVkRmlsZScsICgpID0+IHRoaXMuX3VwZGF0ZUNv
bW1pdFNldE1hcCgpKTsKKyAgICAgICAgdGhpcy5fZmlsZVVwbG9hZGVyc1snQ29tcGFyaXNvbidd
ID0gY29tcGFyaXNvblJvb3RzVXBsb2FkZXI7CisgICAgfQorCisgICAgX2NvbmZpZ3VyZUNvbXBh
cmlzb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2hvd0NvbXBhcmlzb24gPSB0cnVlOworICAg
ICAgICB0aGlzLl9yZXBvc2l0b3J5R3JvdXBCeUNvbmZpZ3VyYXRpb25bJ0NvbXBhcmlzb24nXSA9
IHRoaXMuX3JlcG9zaXRvcnlHcm91cEJ5Q29uZmlndXJhdGlvblsnQmFzZWxpbmUnXTsKKworICAg
ICAgICBjb25zdCBzcGVjaWZpZWRCYXNlbGluZVJldmlzaW9ucyA9IHRoaXMuX3NwZWNpZmllZFJl
dmlzaW9uc1snQmFzZWxpbmUnXTsKKyAgICAgICAgY29uc3Qgc3BlY2lmaWVkQ29tcGFyaXNvblJl
dmlzaW9ucyA9IG5ldyBNYXA7CisgICAgICAgIGZvciAobGV0IGtleSBvZiBzcGVjaWZpZWRCYXNl
bGluZVJldmlzaW9ucy5rZXlzKCkpCisgICAgICAgICAgICBzcGVjaWZpZWRDb21wYXJpc29uUmV2
aXNpb25zLnNldChrZXksIHNwZWNpZmllZEJhc2VsaW5lUmV2aXNpb25zLmdldChrZXkpKTsKKyAg
ICAgICAgdGhpcy5fc3BlY2lmaWVkUmV2aXNpb25zWydDb21wYXJpc29uJ10gPSBzcGVjaWZpZWRD
b21wYXJpc29uUmV2aXNpb25zOworCisgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7Cisg
ICAgfQorCisgICAgcmVuZGVyKCkKKyAgICB7CisgICAgICAgIHN1cGVyLnJlbmRlcigpOworCisg
ICAgICAgIHRoaXMuX3JlbmRlclRyaWdnZXJhYmxlVGVzdHNMYXppbHkuZXZhbHVhdGUoKTsKKyAg
ICAgICAgdGhpcy5fcmVuZGVyVHJpZ2dlcmFibGVQbGF0Zm9ybXNMYXppbHkuZXZhbHVhdGUodGhp
cy5fc2VsZWN0ZWRUZXN0cywgdGhpcy5fdHJpZ2dlcmFibGVQbGF0Zm9ybXMpOworCisgICAgICAg
IGNvbnN0IFt0cmlnZ2VyYWJsZSwgZXJyb3JdID0gdGhpcy5fdXBkYXRlVHJpZ2dlcmFibGVMYXpp
bHkuZXZhbHVhdGUodGhpcy5fc2VsZWN0ZWRUZXN0cywgdGhpcy5fc2VsZWN0ZWRQbGF0Zm9ybSk7
CisKKyAgICAgICAgdGhpcy5fcmVuZGVyUmVwb3NpdG9yeVBhbmVzTGF6aWx5LmV2YWx1YXRlKHRy
aWdnZXJhYmxlLCBlcnJvciwgdGhpcy5fc2VsZWN0ZWRQbGF0Zm9ybSwgdGhpcy5fcmVwb3NpdG9y
eUdyb3VwQnlDb25maWd1cmF0aW9uLCB0aGlzLl9zaG93Q29tcGFyaXNvbik7CisgICAgfQorCisg
ICAgX3JlbmRlclRyaWdnZXJhYmxlVGVzdHMoKQorICAgIHsKKyAgICAgICAgY29uc3QgZW5hYmxl
ZFRyaWdnZXJhYmxlcyA9IFRyaWdnZXJhYmxlLmFsbCgpLmZpbHRlcigodHJpZ2dlcmFibGUpID0+
ICF0cmlnZ2VyYWJsZS5pc0Rpc2FibGVkKCkpOworCisgICAgICAgIGxldCB0ZXN0cyA9IFRlc3Qu
dG9wTGV2ZWxUZXN0cygpLmZpbHRlcigodGVzdCkgPT4gdGVzdC5tZXRyaWNzKCkubGVuZ3RoICYm
IGVuYWJsZWRUcmlnZ2VyYWJsZXMuc29tZSgodHJpZ2dlcmFibGUpID0+IHRyaWdnZXJhYmxlLmFj
Y2VwdHNUZXN0KHRlc3QpKSk7CisgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlzLmNvbnRl
bnQoJ3Rlc3QtbGlzdCcpLCB0aGlzLl9idWlsZENoZWNrYm94TGlzdCgndGVzdCcsIHRlc3RzLCAo
c2VsZWN0ZWRUZXN0cykgPT4geworICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZXN0cyA9IHNl
bGVjdGVkVGVzdHM7CisKKyAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJhYmxlUGxhdGZvcm1zID0g
VHJpZ2dlcmFibGUudHJpZ2dlcmFibGVQbGF0Zm9ybXNGb3JUZXN0cyh0aGlzLl9zZWxlY3RlZFRl
c3RzKTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFRlc3RzLmxlbmd0aCAmJiAhdGhp
cy5fdHJpZ2dlcmFibGVQbGF0Zm9ybXMuaW5jbHVkZXModGhpcy5fc2VsZWN0ZWRQbGF0Zm9ybSkp
CisgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQbGF0Zm9ybSA9IG51bGw7CisgICAgICAg
IH0pKTsKKyAgICB9CisKKyAgICBfcmVuZGVyVHJpZ2dlcmFibGVQbGF0Zm9ybXMoc2VsZWN0ZWRU
ZXN0cywgdHJpZ2dlcmFibGVQbGF0Zm9ybXMpCisgICAgeworICAgICAgICBpZiAoIXNlbGVjdGVk
VGVzdHMubGVuZ3RoKSB7CisgICAgICAgICAgICB0aGlzLmNvbnRlbnQoJ3BsYXRmb3JtLXBhbmUn
KS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIHRoaXMuY29udGVudCgncGxhdGZvcm0tcGFuZScpLnN0eWxlLmRpc3BsYXkgPSBu
dWxsOworCisgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlzLmNvbnRlbnQoJ3BsYXRmb3Jt
LWxpc3QnKSwgdGhpcy5fYnVpbGRDaGVja2JveExpc3QoJ3BsYXRmb3JtJywgdHJpZ2dlcmFibGVQ
bGF0Zm9ybXMsIChzZWxlY3RlZFBsYXRmb3JtcykgPT4geworICAgICAgICAgICAgdGhpcy5fc2Vs
ZWN0ZWRQbGF0Zm9ybSA9IHNlbGVjdGVkUGxhdGZvcm1zLmxlbmd0aCA/IHNlbGVjdGVkUGxhdGZv
cm1zWzBdIDogbnVsbDsKKworICAgICAgICAgICAgY29uc3QgW3RyaWdnZXJhYmxlLCBlcnJvcl0g
PSB0aGlzLl91cGRhdGVUcmlnZ2VyYWJsZUxhemlseS5ldmFsdWF0ZSh0aGlzLl9zZWxlY3RlZFRl
c3RzLCB0aGlzLl9zZWxlY3RlZFBsYXRmb3JtKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVJl
cG9zaXRvcnlHcm91cHModHJpZ2dlcmFibGUpOworICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29t
bWl0U2V0TWFwKCk7CisKKyAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CisgICAg
ICAgIH0pKTsKKyAgICB9CisKKyAgICBfYnVpbGRDaGVja2JveExpc3QobmFtZSwgb2JqZWN0cywg
Y2FsbGJhY2spCisgICAgeworICAgICAgICBjb25zdCBsaXN0SXRlbXMgPSBbXTsKKyAgICAgICAg
bGV0IHNlbGVjdGVkTGlzdEl0ZW1zID0gW107CisgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBDb21w
b25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CisgICAgICAgIHJldHVybiBvYmplY3RzLm1hcCgob2Jq
ZWN0KSA9PiB7CisgICAgICAgICAgICBjb25zdCBjaGVja2JveCA9IGVsZW1lbnQoJ2lucHV0Jywg
e3R5cGU6ICdyYWRpbycsIG5hbWU6IG5hbWUsIG9uY2hhbmdlOiAoKSA9PiB7CisgICAgICAgICAg
ICAgICAgc2VsZWN0ZWRMaXN0SXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5sYWJlbC5jbGFz
c0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpKTsKKyAgICAgICAgICAgICAgICBzZWxlY3RlZExpc3RJ
dGVtcyA9IGxpc3RJdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uY2hlY2tib3guY2hlY2tlZCk7
CisgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0SXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gaXRl
bS5sYWJlbC5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpKTsKKworICAgICAgICAgICAgICAgIGNh
bGxiYWNrKHNlbGVjdGVkTGlzdEl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5vYmplY3QpKTsKKyAg
ICAgICAgICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOworICAgICAgICAgICAgfX0pOwor
ICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBlbGVtZW50KCdsYWJlbCcsIFtjaGVja2JveCwgb2Jq
ZWN0LmxhYmVsKCldKTsKKyAgICAgICAgICAgIGxpc3RJdGVtcy5wdXNoKHtjaGVja2JveCwgbGFi
ZWwsIG9iamVjdH0pOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQoJ2xpJywgbGFiZWwpOwor
ICAgICAgICB9KQorICAgIH0KKworICAgIF91cGRhdGVUcmlnZ2VyYWJsZSh0ZXN0cywgcGxhdGZv
cm0pCisgICAgeworICAgICAgICBsZXQgdHJpZ2dlcmFibGUgPSBudWxsOworICAgICAgICBsZXQg
ZXJyb3IgPSBudWxsOworICAgICAgICBpZiAodGVzdHMubGVuZ3RoICYmIHBsYXRmb3JtKSB7Cisg
ICAgICAgICAgICB0cmlnZ2VyYWJsZSA9IFRyaWdnZXJhYmxlLmZpbmRCeVRlc3RDb25maWd1cmF0
aW9uKHRlc3RzWzBdLCBwbGF0Zm9ybSk7CisgICAgICAgICAgICBsZXQgbWF0Y2hpbmdUZXN0cyA9
IG5ldyBTZXQ7CisgICAgICAgICAgICBsZXQgbWlzbWF0Y2hpbmdUZXN0cyA9IG5ldyBTZXQ7Cisg
ICAgICAgICAgICBmb3IgKGxldCB0ZXN0IG9mIHRlc3RzKSB7CisgICAgICAgICAgICAgICAgaWYg
KFRyaWdnZXJhYmxlLmZpbmRCeVRlc3RDb25maWd1cmF0aW9uKHRlc3QsIHBsYXRmb3JtKSA9PSB0
cmlnZ2VyYWJsZSkKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdUZXN0cy5hZGQodGVzdCk7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtaXNtYXRjaGluZ1Rl
c3RzLmFkZCh0ZXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtYXRjaGluZ1Rl
c3RzLnNpemUgPCB0ZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGlu
Z1Rlc3ROYW1lcyA9IFsuLi5tYXRjaGluZ1Rlc3RzXS5tYXAoKHRlc3QpID0+IHRlc3QuZnVsbE5h
bWUoKSkuc29ydCgpLmpvaW4oJyIsICInKTsKKyAgICAgICAgICAgICAgICBjb25zdCBtaXNtYXRo
aW5nVGVzdE5hbWVzID0gWy4uLm1pc21hdGNoaW5nVGVzdHNdLm1hcCgodGVzdCkgPT4gdGVzdC5m
dWxsTmFtZSgpKS5zb3J0KCkuam9pbignIiwgIicpOworICAgICAgICAgICAgICAgIGVycm9yID0g
YFRlc3RzICIke21hdGNoaW5nVGVzdE5hbWVzfSIgYW5kICIke21pc21hdGhpbmdUZXN0TmFtZXN9
IiBjYW5ub3QgYmUgc2NoZWR1bGVkCisgICAgICAgICAgICAgICAgICAgIHNpbXVsdGVub3N1bHkg
b24gIiR7cGxhdGZvcm0ubmFtZSgpfSIuIFBsZWFzZSBzZWxlY3Qgb25lIG9mIHRoZW0gYXQgYSB0
aW1lLmA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gW3RyaWdn
ZXJhYmxlLCBlcnJvcl07CisgICAgfQorCisgICAgX3VwZGF0ZVJlcG9zaXRvcnlHcm91cHModHJp
Z2dlcmFibGUpCisgICAgeworICAgICAgICBjb25zdCByZXBvc2l0b3J5R3JvdXBzID0gdHJpZ2dl
cmFibGUgPyBUcmlnZ2VyYWJsZVJlcG9zaXRvcnlHcm91cC5zb3J0QnlOYW1lUHJlZmVycmluZ1Nt
YWxsZXJSZXBvc2l0b3JpZXModHJpZ2dlcmFibGUucmVwb3NpdG9yeUdyb3VwcygpKSA6IFtdOwor
ICAgICAgICBmb3IgKGxldCBuYW1lIGluIHRoaXMuX3JlcG9zaXRvcnlHcm91cEJ5Q29uZmlndXJh
dGlvbikgeworICAgICAgICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5fcmVwb3NpdG9y
eUdyb3VwQnlDb25maWd1cmF0aW9uW25hbWVdOworICAgICAgICAgICAgbGV0IG1hdGNoaW5nR3Jv
dXAgPSBudWxsOworICAgICAgICAgICAgaWYgKGN1cnJlbnRHcm91cCkgeworICAgICAgICAgICAg
ICAgIGlmIChyZXBvc2l0b3J5R3JvdXBzLmluY2x1ZGVzKGN1cnJlbnRHcm91cCkpCisgICAgICAg
ICAgICAgICAgICAgIG1hdGNoaW5nR3JvdXAgPSBjdXJyZW50R3JvdXA7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtYXRjaGluZ0dyb3VwID0gcmVwb3NpdG9yeUdy
b3Vwcy5maW5kKChncm91cCkgPT4gZ3JvdXAubmFtZSgpID09IGN1cnJlbnRHcm91cC5uYW1lKCkp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFtYXRjaGluZ0dyb3VwICYmIHJlcG9z
aXRvcnlHcm91cHMubGVuZ3RoKQorICAgICAgICAgICAgICAgIG1hdGNoaW5nR3JvdXAgPSByZXBv
c2l0b3J5R3JvdXBzWzBdOworICAgICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeUdyb3VwQnlDb25m
aWd1cmF0aW9uW25hbWVdID0gbWF0Y2hpbmdHcm91cDsKKyAgICAgICAgfQorICAgIH0KKworICAg
IF91cGRhdGVDb21taXRTZXRNYXAoKQorICAgIHsKKyAgICAgICAgY29uc3QgbmV3QmFzZWxpbmUg
PSB0aGlzLl9jb21wdXRlQ29tbWl0U2V0KCdCYXNlbGluZScpOworICAgICAgICBsZXQgbmV3Q29t
cGFyaXNvbiA9IHRoaXMuX2NvbXB1dGVDb21taXRTZXQoJ0NvbXBhcmlzb24nKTsKKyAgICAgICAg
aWYgKG5ld0Jhc2VsaW5lICYmIG5ld0NvbXBhcmlzb24gJiYgbmV3QmFzZWxpbmUuZXF1YWxzKG5l
d0NvbXBhcmlzb24pKQorICAgICAgICAgICAgbmV3Q29tcGFyaXNvbiA9IG51bGw7CisKKyAgICAg
ICAgY29uc3QgY3VycmVudEJhc2VsaW5lID0gdGhpcy5fY29tbWl0U2V0TWFwWydCYXNlbGluZSdd
OworICAgICAgICBjb25zdCBjdXJyZW50Q29tcGFyaXNvbiA9IHRoaXMuX2NvbW1pdFNldE1hcFsn
QmFzZWxpbmUnXTsKKyAgICAgICAgaWYgKG5ld0Jhc2VsaW5lID09IGN1cnJlbnRCYXNlbGluZSAm
JiBuZXdDb21wYXJpc29uID09IGN1cnJlbnRDb21wYXJpc29uKQorICAgICAgICAgICAgcmV0dXJu
OyAvLyBCb3RoIG9mIHRoZW0gYXJlIG51bGwuCisKKyAgICAgICAgaWYgKG5ld0Jhc2VsaW5lICYm
IGN1cnJlbnRCYXNlbGluZSAmJiBuZXdCYXNlbGluZS5lcXVhbHMoY3VycmVudEJhc2VsaW5lKQor
ICAgICAgICAgICAgJiYgbmV3Q29tcGFyaXNvbiAmJiBjdXJyZW50Q29tcGFyaXNvbiAmJiBuZXdD
b21wYXJpc29uLmVxdWFscyhjdXJyZW50Q29tcGFyaXNvbikpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgdGhpcy5fY29tbWl0U2V0TWFwID0geydCYXNlbGluZSc6IG5ld0Jhc2VsaW5l
LCAnQ29tcGFyaXNvbic6IG5ld0NvbXBhcmlzb259OworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hB
Y3Rpb24oJ2NvbW1pdFNldENoYW5nZScpOworICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigp
OworICAgIH0KKworICAgIF9jb21wdXRlQ29tbWl0U2V0KGNvbmZpZ3VyYXRpb25OYW1lKQorICAg
IHsKKyAgICAgICAgY29uc3QgcmVwb3NpdG9yeUdyb3VwID0gdGhpcy5fcmVwb3NpdG9yeUdyb3Vw
QnlDb25maWd1cmF0aW9uW2NvbmZpZ3VyYXRpb25OYW1lXTsKKyAgICAgICAgaWYgKCFyZXBvc2l0
b3J5R3JvdXApCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBjb25zdCBmaWxl
VXBsb2FkZXIgPSB0aGlzLl9maWxlVXBsb2FkZXJzW2NvbmZpZ3VyYXRpb25OYW1lXTsKKyAgICAg
ICAgaWYgKCFmaWxlVXBsb2FkZXIgfHwgZmlsZVVwbG9hZGVyLmhhc0ZpbGVUb1VwbG9hZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gbmV3
IEN1c3RvbUNvbW1pdFNldDsKKyAgICAgICAgZm9yIChsZXQgcmVwb3NpdG9yeSBvZiByZXBvc2l0
b3J5R3JvdXAucmVwb3NpdG9yaWVzKCkpIHsKKyAgICAgICAgICAgIGxldCByZXZpc2lvbiA9IHRo
aXMuX3NwZWNpZmllZFJldmlzaW9uc1tjb25maWd1cmF0aW9uTmFtZV0uZ2V0KHJlcG9zaXRvcnkp
OworICAgICAgICAgICAgaWYgKCFyZXZpc2lvbikKKyAgICAgICAgICAgICAgICByZXZpc2lvbiA9
IHRoaXMuX2ZldGNoZWRSZXZpc2lvbnNbY29uZmlndXJhdGlvbk5hbWVdLmdldChyZXBvc2l0b3J5
KTsKKyAgICAgICAgICAgIGlmICghcmV2aXNpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGw7CisgICAgICAgICAgICBjb21taXRTZXQuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9z
aXRvcnksIHJldmlzaW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAobGV0IHVwbG9hZGVk
RmlsZSBvZiBmaWxlVXBsb2FkZXIudXBsb2FkZWRGaWxlcygpKQorICAgICAgICAgICAgY29tbWl0
U2V0LmFkZEN1c3RvbVJvb3QodXBsb2FkZWRGaWxlKTsKKworICAgICAgICByZXR1cm4gY29tbWl0
U2V0OworICAgIH0KKworICAgIF9yZW5kZXJSZXBvc2l0b3J5UGFuZXModHJpZ2dlcmFibGUsIGVy
cm9yLCBwbGF0Zm9ybSwgcmVwb3NpdG9yeUdyb3VwQnlDb25maWd1cmF0aW9uLCBzaG93Q29tcGFy
aXNvbikKKyAgICB7CisgICAgICAgIHRoaXMuY29udGVudCgncmVwb3NpdG9yeS1jb25maWd1cmF0
aW9uLWVycm9yLXBhbmUnKS5zdHlsZS5kaXNwbGF5ID0gZXJyb3IgPyBudWxsIDogJ25vbmUnOwor
ICAgICAgICB0aGlzLmNvbnRlbnQoJ2Vycm9yJykudGV4dENvbnRlbnQgPSBlcnJvcjsKKworICAg
ICAgICB0aGlzLmNvbnRlbnQoJ2Jhc2VsaW5lLWNvbmZpZ3VyYXRpb24tcGFuZScpLnN0eWxlLmRp
c3BsYXkgPSB0cmlnZ2VyYWJsZSA/IG51bGwgOiAnbm9uZSc7CisgICAgICAgIHRoaXMuY29udGVu
dCgnc3BlY2lmeS1jb21wYXJpc29uLXBhbmUnKS5zdHlsZS5kaXNwbGF5ID0gdHJpZ2dlcmFibGUg
JiYgIXNob3dDb21wYXJpc29uID8gbnVsbCA6ICdub25lJzsKKyAgICAgICAgdGhpcy5jb250ZW50
KCdjb21wYXJpc29uLWNvbmZpZ3VyYXRpb24tcGFuZScpLnN0eWxlLmRpc3BsYXkgPSB0cmlnZ2Vy
YWJsZSAmJiBzaG93Q29tcGFyaXNvbiA/IG51bGwgOiAnbm9uZSc7CisKKyAgICAgICAgaWYgKCF0
cmlnZ2VyYWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjb25zdCByZXBvc2l0
b3J5R3JvdXBzID0gVHJpZ2dlcmFibGVSZXBvc2l0b3J5R3JvdXAuc29ydEJ5TmFtZVByZWZlcnJp
bmdTbWFsbGVyUmVwb3NpdG9yaWVzKHRyaWdnZXJhYmxlLnJlcG9zaXRvcnlHcm91cHMoKSk7CisK
KyAgICAgICAgY29uc3QgcmVwb3NpdG9yeVNldCA9IG5ldyBTZXQ7CisgICAgICAgIGZvciAobGV0
IGdyb3VwIG9mIHJlcG9zaXRvcnlHcm91cHMpIHsKKyAgICAgICAgICAgIGZvciAobGV0IHJlcG9z
aXRvcnkgb2YgZ3JvdXAucmVwb3NpdG9yaWVzKCkpCisgICAgICAgICAgICAgICAgcmVwb3NpdG9y
eVNldC5hZGQocmVwb3NpdG9yeSk7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCByZXBvc2l0
b3JpZXMgPSBSZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwoWy4uLnJl
cG9zaXRvcnlTZXRdKTsKKyAgICAgICAgY29uc3QgcmVxdWlyZWRSZXBvc2l0b3JpZXMgPSByZXBv
c2l0b3JpZXMuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiB7CisgICAgICAgICAgICByZXR1cm4gcmVw
b3NpdG9yeUdyb3Vwcy5ldmVyeSgoZ3JvdXApID0+IGdyb3VwLnJlcG9zaXRvcmllcygpLmluY2x1
ZGVzKHJlcG9zaXRvcnkpKTsKKyAgICAgICAgfSk7CisgICAgICAgIGNvbnN0IGFsd2F5c0FjY2Vw
dHNDdXN0b21Sb290cyA9IHJlcG9zaXRvcnlHcm91cHMuZXZlcnkoKGdyb3VwKSA9PiBncm91cC5h
Y2NlcHRzQ3VzdG9tUm9vdHMoKSk7CisKKyAgICAgICAgY29uc29sZS5sb2cocmVwb3NpdG9yeUdy
b3VwcywgYWx3YXlzQWNjZXB0c0N1c3RvbVJvb3RzKTsKKworICAgICAgICB0aGlzLl9yZW5kZXJC
YXNlbGluZVJldmlzaW9uVGFibGUocGxhdGZvcm0sIHJlcG9zaXRvcnlHcm91cHMsIHJlcXVpcmVk
UmVwb3NpdG9yaWVzLCByZXBvc2l0b3J5R3JvdXBCeUNvbmZpZ3VyYXRpb24sIGFsd2F5c0FjY2Vw
dHNDdXN0b21Sb290cyk7CisKKyAgICAgICAgaWYgKHNob3dDb21wYXJpc29uKQorICAgICAgICAg
ICAgdGhpcy5fcmVuZGVyQ29tcGFyaXNvblJldmlzaW9uVGFibGUocGxhdGZvcm0sIHJlcG9zaXRv
cnlHcm91cHMsIHJlcXVpcmVkUmVwb3NpdG9yaWVzLCByZXBvc2l0b3J5R3JvdXBCeUNvbmZpZ3Vy
YXRpb24sIGFsd2F5c0FjY2VwdHNDdXN0b21Sb290cyk7CisgICAgfQorCisgICAgX3JlbmRlckJh
c2VsaW5lUmV2aXNpb25UYWJsZShwbGF0Zm9ybSwgcmVwb3NpdG9yeUdyb3VwcywgcmVxdWlyZWRS
ZXBvc2l0b3JpZXMsIHJlcG9zaXRvcnlHcm91cEJ5Q29uZmlndXJhdGlvbiwgYWx3YXlzQWNjZXB0
c0N1c3RvbVJvb3RzKQorICAgIHsKKyAgICAgICAgbGV0IGN1cnJlbnRHcm91cCA9IHJlcG9zaXRv
cnlHcm91cEJ5Q29uZmlndXJhdGlvblsnQmFzZWxpbmUnXTsKKyAgICAgICAgY29uc3Qgb3B0aW9u
YWxSZXBvc2l0b3J5TGlzdCA9IHRoaXMuX29wdGlvbmFsUmVwb3NpdG9yeUxpc3QoY3VycmVudEdy
b3VwLCByZXF1aXJlZFJlcG9zaXRvcmllcyk7CisgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0
aGlzLmNvbnRlbnQoJ2Jhc2VsaW5lLXJldmlzaW9uLXRhYmxlJyksCisgICAgICAgICAgICB0aGlz
Ll9idWlsZFJldmlzaW9uVGFibGUoJ0Jhc2VsaW5lJywgcmVwb3NpdG9yeUdyb3VwcywgY3VycmVu
dEdyb3VwLCBwbGF0Zm9ybSwgcmVxdWlyZWRSZXBvc2l0b3JpZXMsIG9wdGlvbmFsUmVwb3NpdG9y
eUxpc3QsIGFsd2F5c0FjY2VwdHNDdXN0b21Sb290cykpOworICAgIH0KKworICAgIF9yZW5kZXJD
b21wYXJpc29uUmV2aXNpb25UYWJsZShwbGF0Zm9ybSwgcmVwb3NpdG9yeUdyb3VwcywgcmVxdWly
ZWRSZXBvc2l0b3JpZXMsIHJlcG9zaXRvcnlHcm91cEJ5Q29uZmlndXJhdGlvbiwgYWx3YXlzQWNj
ZXB0c0N1c3RvbVJvb3RzKQorICAgIHsKKyAgICAgICAgbGV0IGN1cnJlbnRHcm91cCA9IHJlcG9z
aXRvcnlHcm91cEJ5Q29uZmlndXJhdGlvblsnQ29tcGFyaXNvbiddOworICAgICAgICBjb25zdCBv
cHRpb25hbFJlcG9zaXRvcnlMaXN0ID0gdGhpcy5fb3B0aW9uYWxSZXBvc2l0b3J5TGlzdChjdXJy
ZW50R3JvdXAsIHJlcXVpcmVkUmVwb3NpdG9yaWVzKTsKKyAgICAgICAgdGhpcy5yZW5kZXJSZXBs
YWNlKHRoaXMuY29udGVudCgnY29tcGFyaXNvbi1yZXZpc2lvbi10YWJsZScpLAorICAgICAgICAg
ICAgdGhpcy5fYnVpbGRSZXZpc2lvblRhYmxlKCdDb21wYXJpc29uJywgcmVwb3NpdG9yeUdyb3Vw
cywgY3VycmVudEdyb3VwLCBwbGF0Zm9ybSwgcmVxdWlyZWRSZXBvc2l0b3JpZXMsIG9wdGlvbmFs
UmVwb3NpdG9yeUxpc3QsIGFsd2F5c0FjY2VwdHNDdXN0b21Sb290cykpOworICAgIH0KKworICAg
IF9vcHRpb25hbFJlcG9zaXRvcnlMaXN0KGN1cnJlbnRHcm91cCwgcmVxdWlyZWRSZXBvc2l0b3Jp
ZXMpCisgICAgeworICAgICAgICBpZiAoIWN1cnJlbnRHcm91cCkKKyAgICAgICAgICAgIHJldHVy
biBbXTsKKyAgICAgICAgcmV0dXJuIFJlcG9zaXRvcnkuc29ydEJ5TmFtZVByZWZlcnJpbmdPbmVz
V2l0aFVSTChjdXJyZW50R3JvdXAucmVwb3NpdG9yaWVzKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9
PiAhcmVxdWlyZWRSZXBvc2l0b3JpZXMuaW5jbHVkZXMocmVwb3NpdG9yeSkpKTsKKyAgICB9CisK
KyAgICBfYnVpbGRSZXZpc2lvblRhYmxlKGNvbmZpZ3VyYXRpb25OYW1lLCByZXBvc2l0b3J5R3Jv
dXBzLCBjdXJyZW50R3JvdXAsIHBsYXRmb3JtLCByZXF1aXJlZFJlcG9zaXRvcmllcywgb3B0aW9u
YWxSZXBvc2l0b3J5TGlzdCwgYWx3YXlzQWNjZXB0c0N1c3RvbVJvb3RzKQorICAgIHsKKyAgICAg
ICAgY29uc3QgZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRlRWxlbWVudDsKKyAgICAgICAg
Y29uc3QgbGluayA9IENvbXBvbmVudEJhc2UuY3JlYXRlTGluazsKKworICAgICAgICBjb25zdCBj
dXN0b21Sb290c1RCb2R5ID0gZWxlbWVudCgndGJvZHknLCBbCisgICAgICAgICAgICBlbGVtZW50
KCd0cicsIFsKKyAgICAgICAgICAgICAgICBlbGVtZW50KCd0aCcsICdSb290cycpLAorICAgICAg
ICAgICAgICAgIGVsZW1lbnQoJ3RkJywgdGhpcy5fZmlsZVVwbG9hZGVyc1tjb25maWd1cmF0aW9u
TmFtZV0pLAorICAgICAgICAgICAgXSksCisgICAgICAgIF0pOworCisgICAgICAgIHJldHVybiBb
CisgICAgICAgICAgICBlbGVtZW50KCd0Ym9keScsCisgICAgICAgICAgICAgICAgcmVxdWlyZWRS
ZXBvc2l0b3JpZXMubWFwKChyZXBvc2l0b3J5KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlbGVtZW50KCd0cicsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3Ro
JywgcmVwb3NpdG9yeS5uYW1lKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCgn
dGQnLCB0aGlzLl9idWlsZFJldmlzaW9uSW5wdXQoY29uZmlndXJhdGlvbk5hbWUsIHJlcG9zaXRv
cnksIHBsYXRmb3JtKSkKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgICAg
fSkpLAorICAgICAgICAgICAgYWx3YXlzQWNjZXB0c0N1c3RvbVJvb3RzID8gY3VzdG9tUm9vdHNU
Qm9keSA6IFtdLAorICAgICAgICAgICAgZWxlbWVudCgndGJvZHknLCBbCisgICAgICAgICAgICAg
ICAgZWxlbWVudCgndHInLCB7J2NsYXNzJzogJ2dyb3VwLXJvdyd9LAorICAgICAgICAgICAgICAg
ICAgICBlbGVtZW50KCd0ZCcsIHtjb2xzcGFuOiAyfSwgdGhpcy5fYnVpbGRSZXBvc2l0b3J5R3Jv
dXBMaXN0KHJlcG9zaXRvcnlHcm91cHMsIGN1cnJlbnRHcm91cCwgY29uZmlndXJhdGlvbk5hbWUp
KSksCisgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICFhbHdheXNBY2NlcHRzQ3VzdG9tUm9v
dHMgJiYgY3VycmVudEdyb3VwICYmIGN1cnJlbnRHcm91cC5hY2NlcHRzQ3VzdG9tUm9vdHMoKSA/
IGN1c3RvbVJvb3RzVEJvZHkgOiBbXSwKKyAgICAgICAgICAgIGVsZW1lbnQoJ3Rib2R5JywKKyAg
ICAgICAgICAgICAgICBvcHRpb25hbFJlcG9zaXRvcnlMaXN0Lm1hcCgocmVwb3NpdG9yeSkgPT4g
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudCgndHInLFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsZW1lbnQoJ3RoJywgcmVwb3NpdG9yeS5uYW1lKCkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgZWxlbWVudCgndGQnLCB0aGlzLl9idWlsZFJldmlzaW9uSW5wdXQoY29u
ZmlndXJhdGlvbk5hbWUsIHJlcG9zaXRvcnksIHBsYXRmb3JtKSkKKyAgICAgICAgICAgICAgICAg
ICAgXSk7CisgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICldOworICAgIH0KKworICAg
IF9idWlsZFJlcG9zaXRvcnlHcm91cExpc3QocmVwb3NpdG9yeUdyb3VwcywgY3VycmVudEdyb3Vw
LCBjb25maWd1cmF0aW9uTmFtZSkKKyAgICB7CisgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBDb21w
b25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CisgICAgICAgIHJldHVybiByZXBvc2l0b3J5R3JvdXBz
Lm1hcCgoZ3JvdXApID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gZWxlbWVudCgnaW5w
dXQnLCB7CisgICAgICAgICAgICAgICAgdHlwZTogJ3JhZGlvJywKKyAgICAgICAgICAgICAgICBu
YW1lOiAncmVwb3NpdG9yeUdyb3VwLWZvci0nICsgY29uZmlndXJhdGlvbk5hbWUudG9Mb3dlckNh
c2UoKSwKKyAgICAgICAgICAgICAgICBjaGVja2VkOiBjdXJyZW50R3JvdXAgPT0gZ3JvdXAsCisg
ICAgICAgICAgICAgICAgb25jaGFuZ2U6ICgpID0+IHRoaXMuX3NlbGVjdFJlcG9zaXRvcnlHcm91
cChjb25maWd1cmF0aW9uTmFtZSwgZ3JvdXApCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IHJldHVybiBbZWxlbWVudCgnbGFiZWwnLCBbaW5wdXQsIGdyb3VwLmRlc2NyaXB0aW9uKCldKV07
CisgICAgICAgIH0pOworICAgIH0KKworICAgIF9zZWxlY3RSZXBvc2l0b3J5R3JvdXAoY29uZmln
dXJhdGlvbk5hbWUsIGdyb3VwKQorICAgIHsKKyAgICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5f
cmVwb3NpdG9yeUdyb3VwQnlDb25maWd1cmF0aW9uOworICAgICAgICBjb25zdCBjbG9uZSA9IHt9
OworICAgICAgICBmb3IgKGxldCBrZXkgaW4gc291cmNlKQorICAgICAgICAgICAgY2xvbmVba2V5
XSA9IHNvdXJjZVtrZXldOworICAgICAgICBjbG9uZVtjb25maWd1cmF0aW9uTmFtZV0gPSBncm91
cDsKKyAgICAgICAgdGhpcy5fcmVwb3NpdG9yeUdyb3VwQnlDb25maWd1cmF0aW9uID0gY2xvbmU7
CisgICAgICAgIHRoaXMuX3VwZGF0ZUNvbW1pdFNldE1hcCgpOworICAgICAgICB0aGlzLmVucXVl
dWVUb1JlbmRlcigpOworICAgIH0KKworICAgIF9idWlsZFJldmlzaW9uSW5wdXQoY29uZmlndXJh
dGlvbk5hbWUsIHJlcG9zaXRvcnksIHBsYXRmb3JtKQorICAgIHsKKyAgICAgICAgY29uc3QgcmV2
aXNpb24gPSB0aGlzLl9zcGVjaWZpZWRSZXZpc2lvbnNbY29uZmlndXJhdGlvbk5hbWVdLmdldChy
ZXBvc2l0b3J5KSB8fCAnJzsKKyAgICAgICAgY29uc3QgZWxlbWVudCA9IENvbXBvbmVudEJhc2Uu
Y3JlYXRlRWxlbWVudDsKKyAgICAgICAgY29uc3QgaW5wdXQgPSBlbGVtZW50KCdpbnB1dCcsIHt2
YWx1ZTogcmV2aXNpb24sIG9uaW5wdXQ6ICgpID0+IHsKKyAgICAgICAgICAgIHVubW9kaWZpZWRJ
bnB1dCA9IG51bGw7CisgICAgICAgICAgICB0aGlzLl9zcGVjaWZpZWRSZXZpc2lvbnNbY29uZmln
dXJhdGlvbk5hbWVdLnNldChyZXBvc2l0b3J5LCBpbnB1dC52YWx1ZSk7CisgICAgICAgICAgICB0
aGlzLl91cGRhdGVDb21taXRTZXRNYXAoKTsKKyAgICAgICAgfX0pOworICAgICAgICBsZXQgdW5t
b2RpZmllZElucHV0ID0gaW5wdXQ7CisKKyAgICAgICAgaWYgKCFyZXZpc2lvbikgeworICAgICAg
ICAgICAgQ29tbWl0TG9nLmZldGNoTGF0ZXN0Q29tbWl0Rm9yUGxhdGZvcm0ocmVwb3NpdG9yeSwg
cGxhdGZvcm0pLnRoZW4oKGNvbW1pdCkgPT4geworICAgICAgICAgICAgICAgIGlmIChjb21taXQg
JiYgdW5tb2RpZmllZElucHV0KSB7CisgICAgICAgICAgICAgICAgICAgIHVubW9kaWZpZWRJbnB1
dC52YWx1ZSA9IGNvbW1pdC5yZXZpc2lvbigpOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9m
ZXRjaGVkUmV2aXNpb25zW2NvbmZpZ3VyYXRpb25OYW1lXS5zZXQocmVwb3NpdG9yeSwgY29tbWl0
LnJldmlzaW9uKCkpOworICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDb21taXRTZXRN
YXAoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiBpbnB1dDsKKyAgICB9CisKKyAgICBzdGF0aWMgaHRtbFRlbXBsYXRlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBgCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0idGVzdC1w
YW5lIiBjbGFzcz0icGFuZSI+CisgICAgICAgICAgICAgICAgPGgyPjEuIFNlbGVjdCBhIFRlc3Q8
L2gyPgorICAgICAgICAgICAgICAgIDx1bCBpZD0idGVzdC1saXN0IiBjbGFzcz0iY29uZmlnLWxp
c3QiPjwvdWw+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgICAgICA8c2VjdGlvbiBp
ZD0icGxhdGZvcm0tcGFuZSIgY2xhc3M9InBhbmUiPgorICAgICAgICAgICAgICAgIDxoMj4yLiBT
ZWxlY3QgYSBQbGF0Zm9ybTwvaDI+CisgICAgICAgICAgICAgICAgPHVsIGlkPSJwbGF0Zm9ybS1s
aXN0IiBjbGFzcz0iY29uZmlnLWxpc3QiPjwvdWw+CisgICAgICAgICAgICA8L3NlY3Rpb24+Cisg
ICAgICAgICAgICA8c2VjdGlvbiBpZD0icmVwb3NpdG9yeS1jb25maWd1cmF0aW9uLWVycm9yLXBh
bmUiIGNsYXNzPSJwYW5lIj4KKyAgICAgICAgICAgICAgICA8aDI+SW5jb21wYXRpYmxlIHRlc3Rz
PC9oMj4KKyAgICAgICAgICAgICAgICA8cCBpZD0iZXJyb3IiPjwvcD4KKyAgICAgICAgICAgIDwv
c2VjdGlvbj4KKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJiYXNlbGluZS1jb25maWd1cmF0aW9u
LXBhbmUiIGNsYXNzPSJwYW5lIj4KKyAgICAgICAgICAgICAgICA8aDI+My4gQ29uZmlndXJlIEJh
c2VsaW5lPC9oMj4KKyAgICAgICAgICAgICAgICA8dGFibGUgaWQ9ImJhc2VsaW5lLXJldmlzaW9u
LXRhYmxlIiBjbGFzcz0icmV2aXNpb24tdGFibGUiPjwvdGFibGU+CisgICAgICAgICAgICA8L3Nl
Y3Rpb24+CisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ic3BlY2lmeS1jb21wYXJpc29uLXBhbmUi
IGNsYXNzPSJwYW5lIj4KKyAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJzcGVjaWZ5LWNvbXBh
cmlzb24tYnV0dG9uIj5Db25maWd1cmUgdG8gQ29tcGFyZTwvYnV0dG9uPgorICAgICAgICAgICAg
PC9zZWN0aW9uPgorICAgICAgICAgICAgPHNlY3Rpb24gaWQ9ImNvbXBhcmlzb24tY29uZmlndXJh
dGlvbi1wYW5lIiBjbGFzcz0icGFuZSI+CisgICAgICAgICAgICAgICAgPGgyPjQuIENvbmZpZ3Vy
ZSBDb21wYXJpc29uPC9oMj4KKyAgICAgICAgICAgICAgICA8dGFibGUgaWQ9ImNvbXBhcmlzb24t
cmV2aXNpb24tdGFibGUiIGNsYXNzPSJyZXZpc2lvbi10YWJsZSI+PC90YWJsZT4KKyAgICAgICAg
ICAgIDwvc2VjdGlvbj5gOworICAgIH0KKworICAgIHN0YXRpYyBjc3NUZW1wbGF0ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gYAorICAgICAgICAgICAgOmhvc3QgeworICAgICAgICAgICAgICAg
IGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKKyAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlv
bjogcm93ICFpbXBvcnRhbnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAucGFuZSB7Cisg
ICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxcmVtOworICAgICAgICAgICAgICAgIHBhZGRp
bmc6IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAucGFuZSBoMiB7CisgICAgICAgICAg
ICAgICAgcGFkZGluZzogMDsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDA7CisgICAgICAgICAg
ICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtOworICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTog
MS4ycmVtOworICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OworICAgICAgICAg
ICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTog
bm93cmFwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuY29uZmlnLWxpc3QgeworICAg
ICAgICAgICAgICAgIGhlaWdodDogMjByZW07CisgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IHNj
cm9sbDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDA7CisgICAgICAgICAgICAgICAgcGFkZGluZzogMDsKKyAgICAgICAgICAgICAgICBs
aXN0LXN0eWxlOiBub25lOworICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKKyAg
ICAgICAgICAgICAgICBmb250LXdlaWdodDogaW5oZXJpdDsKKyAgICAgICAgICAgICAgICBib3Jk
ZXI6IG5vbmU7CisgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogc29saWQgMXB4ICNkZGQ7Cisg
ICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogc29saWQgMXB4ICNkZGQ7CisgICAgICAgICAg
ICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
I3BsYXRmb3JtLWxpc3Q6ZW1wdHk6YmVmb3JlIHsKKyAgICAgICAgICAgICAgICBjb250ZW50OiAi
Tm8gbWF0Y2hpbmcgcGxhdGZvcm0iOworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMXJlbSAwLjVyZW07CisgICAgICAgICAgICAgICAgdGV4
dC1hbGlnbjogY2VudGVyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuY29uZmlnLWxp
c3QgbGFiZWwgeworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgICAgICAg
ICAgIHBhZGRpbmc6IDAuMXJlbSAwLjJyZW07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC5jb25maWctbGlzdCBsYWJlbDpob3ZlciwKKyAgICAgICAgICAgIC5jb25maWctbGlzdCBhOmhv
dmVyIHsKKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIwNCwgMTUzLCA1MSwgMC4x
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLmNvbmZpZy1saXN0IGxhYmVsLnNlbGVj
dGVkLAorICAgICAgICAgICAgLmNvbmZpZy1saXN0IGEuc2VsZWN0ZWQgeworICAgICAgICAgICAg
ICAgIGJhY2tncm91bmQ6ICNlZWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC5jb25m
aWctbGlzdCBhIHsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgICAgICAg
ICAgICBwYWRkaW5nOiAwLjFyZW0gMC4ycmVtOworICAgICAgICAgICAgICAgIHRleHQtZGVjb3Jh
dGlvbjogbm9uZTsKKyAgICAgICAgICAgICAgICBjb2xvcjogaW5oZXJpdDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgI3JlcG9zaXRvcnktY29uZmlndXJhdGlvbi1wYW5lIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICNyZXBvc2l0b3J5LWNvbmZpZ3VyYXRpb24tcGFuZSA+IGJ1dHRvbiAgeworICAgICAgICAg
ICAgICAgIG1hcmdpbi1sZWZ0OiAxOS41cmVtOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAucmV2aXNpb24tdGFibGUgeworICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKKyAgICAg
ICAgICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOworICAgICAgICAgICAgICAgIGZv
bnQtc2l6ZTogMXJlbTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLnJldmlzaW9uLXRh
YmxlIHRoZWFkIHsKKyAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLnJldmlzaW9uLXRhYmxlIHRib2R5OmVtcHR5IHsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBub25lOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAu
cmV2aXNpb24tdGFibGUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQsCisgICAgICAgICAgICAucmV2
aXNpb24tdGFibGUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGggeworICAgICAgICAgICAgICAgIGJv
cmRlci10b3A6IHNvbGlkIDFweCAjZGRkOworICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiAw
LjVyZW07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC5yZXZpc2lvbi10YWJsZSB0Ym9k
eSB0cjpsYXN0LWNoaWxkIHRkLAorICAgICAgICAgICAgLnJldmlzaW9uLXRhYmxlIHRib2R5IHRy
Omxhc3QtY2hpbGQgdGggeworICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW07
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC5yZXZpc2lvbi10YWJsZSB0ZCwKKyAgICAg
ICAgICAgIC5yZXZpc2lvbi10YWJsZSB0aCB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDE1cmVt
OworICAgICAgICAgICAgICAgIGhlaWdodDogMS44cmVtOworICAgICAgICAgICAgICAgIHBhZGRp
bmc6IDAgMC4ycmVtOworICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKKyAgICAgICAgICAg
ICAgICBmb250LXdlaWdodDogaW5oZXJpdDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
LnJldmlzaW9uLXRhYmxlIHRoZWFkIHRoIHsKKyAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBj
ZW50ZXI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC5yZXZpc2lvbi10YWJsZSB0aCBj
bG9zZS1idXR0b24geworICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC5yZXZpc2lvbi10YWJsZSB0ZDpmaXJzdC1jaGls
ZCwKKyAgICAgICAgICAgIC5yZXZpc2lvbi10YWJsZSB0aDpmaXJzdC1jaGlsZCB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDZyZW07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC5yZXZp
c2lvbi10YWJsZSB0ci5ncm91cC1yb3cgdGQgeworICAgICAgICAgICAgICAgIHBhZGRpbmctbGVm
dDogNXJlbTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGFiZWwgeworICAgICAgICAg
ICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CisgICAgICAgICAgICAgICAgZGlzcGxheTogYmxv
Y2s7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlucHV0Om5vdChbdHlwZT1yYWRpb10p
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMC42cmVtKTsKKyAgICAgICAg
ICAgICAgICBwYWRkaW5nOiAwLjFyZW0gMC4ycmVtOworICAgICAgICAgICAgICAgIGZvbnQtc2l6
ZTogMC45cmVtOworICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAjc3BlY2lmeS1jb21wYXJpc29uLXBhbmUgYnV0dG9uIHsK
KyAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxLjVyZW07CisgICAgICAgICAgICAgICAgZm9u
dC1zaXplOiAxLjFyZW07CisgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNzdGFydC1wYW5lIGJ1dHRvbiB7CisgICAgICAg
ICAgICAgICAgbWFyZ2luLXRvcDogMS41cmVtOworICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTog
MS4ycmVtOworICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OworICAgICAgICAg
ICAgfQorYDsKKyAgICB9Cit9CisKK0NvbXBvbmVudEJhc2UuZGVmaW5lRWxlbWVudCgnY3VzdG9t
LWFuYWx5c2lzLXRhc2stY29uZmlndXJhdG9yJywgQ3VzdG9tQW5hbHlzaXNUYXNrQ29uZmlndXJh
dG9yKTsKSW5kZXg6IHB1YmxpYy92My9jb21wb25lbnRzL2luc3RhbnQtZmlsZS11cGxvYWRlci5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBwdWJsaWMvdjMvY29tcG9uZW50cy9pbnN0YW50LWZpbGUtdXBsb2Fk
ZXIuanMJKG5vbmV4aXN0ZW50KQorKysgcHVibGljL3YzL2NvbXBvbmVudHMvaW5zdGFudC1maWxl
LXVwbG9hZGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMyIEBACitjbGFzcyBJbnN0
YW50RmlsZVVwbG9hZGVyIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CisgICAgY29uc3RydWN0b3Io
KQorICAgIHsKKyAgICAgICAgc3VwZXIoJ2luc3RhbnQtZmlsZS11cGxvYWRlcicpOworICAgICAg
ICB0aGlzLl91cGxvYWRlZEZpbGVzID0gW107CisgICAgICAgIHRoaXMuX3ByZXVwbG9hZEZpbGVz
ID0gW107CisgICAgICAgIHRoaXMuX3VwbG9hZFByb2dyZXNzID0gbmV3IFdlYWtNYXA7CisgICAg
ICAgIHRoaXMuX2ZpbGVTaXplRm9ybWF0dGVyID0gTWV0cmljLm1ha2VGb3JtYXR0ZXIoJ0InLCAz
KTsKKworICAgICAgICB0aGlzLl9yZW5kZXJVcGxvYWRlZEZpbGVzTGF6aWx5ID0gbmV3IExhemls
eUV2YWx1YXRlZEZ1bmN0aW9uKHRoaXMuX3JlbmRlclVwbG9hZGVkRmlsZXMuYmluZCh0aGlzKSk7
CisgICAgICAgIHRoaXMuX3JlbmRlclByZXVwbG9hZEZpbGVzTGF6aWx5ID0gbmV3IExhemlseUV2
YWx1YXRlZEZ1bmN0aW9uKHRoaXMuX3JlbmRlclByZXVwbG9hZEZpbGVzLmJpbmQodGhpcykpOwor
ICAgIH0KKworICAgIGhhc0ZpbGVUb1VwbG9hZCgpIHsgcmV0dXJuICEhdGhpcy5fcHJldXBsb2Fk
RmlsZXMubGVuZ3RoOyB9CisgICAgdXBsb2FkZWRGaWxlcygpIHsgcmV0dXJuIHRoaXMuX3VwbG9h
ZGVkRmlsZXM7IH0KKworICAgIGFkZFVwbG9hZGVkRmlsZSh1cGxvYWRlZEZpbGUpCisgICAgewor
ICAgICAgICBjb25zb2xlLmFzc2VydCh1cGxvYWRlZEZpbGUgaW5zdGFuY2VvZiBVcGxvYWRlZEZp
bGUpOworICAgICAgICBpZiAodGhpcy5fdXBsb2FkZWRGaWxlcy5pbmNsdWRlcyh1cGxvYWRlZEZp
bGUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl91cGxvYWRlZEZpbGVzLnB1
c2godXBsb2FkZWRGaWxlKTsKKyAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKKyAgICB9
CisKKyAgICBkaWRDb25zdHJ1Y3RTaGFkb3dUcmVlKCkKKyAgICB7CisgICAgICAgIGNvbnN0IGlu
cHV0ID0gdGhpcy5jb250ZW50KCdmaWxlLWlucHV0Jyk7CisgICAgICAgIGlucHV0Lm9uY2hhbmdl
ID0gKCkgPT4gdGhpcy5fZGlkRmlsZUlucHV0Q2hhbmdlKGlucHV0KTsKKyAgICB9CisKKyAgICBy
ZW5kZXIoKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVuZGVyVXBsb2FkZWRGaWxlc0xhemlseS5l
dmFsdWF0ZSguLi50aGlzLl91cGxvYWRlZEZpbGVzKTsKKyAgICAgICAgY29uc3QgdXBsb2FkU3Rh
dHVzRWxlbWVudHMgPSB0aGlzLl9yZW5kZXJQcmV1cGxvYWRGaWxlc0xhemlseS5ldmFsdWF0ZSgu
Li50aGlzLl9wcmV1cGxvYWRGaWxlcyk7CisgICAgICAgIHRoaXMuX3VwZGF0ZVVwbG9hZFN0YXR1
cyh1cGxvYWRTdGF0dXNFbGVtZW50cyk7CisgICAgfQorCisgICAgX3JlbmRlclVwbG9hZGVkRmls
ZXMoLi4udXBsb2FkZWRGaWxlcykKKyAgICB7CisgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBDb21w
b25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CisgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlz
LmNvbnRlbnQoJ3VwbG9hZGVkLWZpbGVzJyksIHVwbG9hZGVkRmlsZXMubWFwKCh1cGxvYWRlZEZp
bGUpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGF1dGhvckluZm8gPSB1cGxvYWRlZEZpbGUuYXV0
aG9yKCkgPyAnIGJ5ICcgKyB1cGxvYWRlZEZpbGUuYXV0aG9yKCkgOiAnJzsKKyAgICAgICAgICAg
IGNvbnN0IGNyZWF0ZWRBdCA9IE1ldHJpYy5mb3JtYXRUaW1lKHVwbG9hZGVkRmlsZS5jcmVhdGVk
QXQoKSk7CisgICAgICAgICAgICBjb25zdCBkZWxldGVCdXR0b24gPSBuZXcgQ2xvc2VCdXR0b247
CisgICAgICAgICAgICBkZWxldGVCdXR0b24ubGlzdGVuVG9BY3Rpb24oJ2FjdGl2YXRlJywgKCkg
PT4gdGhpcy5fcmVtb3ZlVXBsb2FkZWRGaWxlKHVwbG9hZGVkRmlsZSkpOworICAgICAgICAgICAg
cmV0dXJuIGVsZW1lbnQoJ2xpJywgWworICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbiwKKyAg
ICAgICAgICAgICAgICBlbGVtZW50KCdjb2RlJywge2NsYXNzOiAnZmlsZW5hbWUnfSwgdXBsb2Fk
ZWRGaWxlLmZpbGVuYW1lKCkpLAorICAgICAgICAgICAgICAgICcgJywKKyAgICAgICAgICAgICAg
ICBlbGVtZW50KCdzbWFsbCcsIHtjbGFzczogJ2ZpbGVzaXplJ30sICcoJyArIHRoaXMuX2ZpbGVT
aXplRm9ybWF0dGVyKHVwbG9hZGVkRmlsZS5zaXplKCkpICsgJyknKSwKKyAgICAgICAgICAgICAg
ICBlbGVtZW50KCdzbWFsbCcsIHtjbGFzczogJ21ldGEnfSwgYFVwbG9hZGVkJHthdXRob3JJbmZv
fSBvbiAke2NyZWF0ZWRBdH1gKSwKKyAgICAgICAgICAgIF0pOworICAgICAgICB9KSk7CisgICAg
fQorCisgICAgX3JlbmRlclByZXVwbG9hZEZpbGVzKC4uLnByZXVwbG9hZEZpbGVzKQorICAgIHsK
KyAgICAgICAgY29uc3QgZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRlRWxlbWVudDsKKyAg
ICAgICAgY29uc3QgdXBsb2FkU3RhdHVzRWxlbWVudHMgPSBbXTsKKyAgICAgICAgdGhpcy5yZW5k
ZXJSZXBsYWNlKHRoaXMuY29udGVudCgncHJldXBsb2FkLWZpbGVzJyksIHByZXVwbG9hZEZpbGVz
Lm1hcCgoZmlsZSkgPT4geworICAgICAgICAgICAgY29uc3QgcHJvZ3Jlc3NCYXIgPSBlbGVtZW50
KCdwcm9ncmVzcycpOworICAgICAgICAgICAgY29uc3QgbWV0YSA9IGVsZW1lbnQoJ3NtYWxsJywg
e2NsYXNzOiAnbWV0YSd9LCBwcm9ncmVzc0Jhcik7CisgICAgICAgICAgICB1cGxvYWRTdGF0dXNF
bGVtZW50cy5wdXNoKHtmaWxlLCBtZXRhLCBwcm9ncmVzc0Jhcn0pOworCisgICAgICAgICAgICBy
ZXR1cm4gZWxlbWVudCgnbGknLCBbCisgICAgICAgICAgICAgICAgZWxlbWVudCgnY29kZScsIGZp
bGUubmFtZSksCisgICAgICAgICAgICAgICAgJyAnLAorICAgICAgICAgICAgICAgIGVsZW1lbnQo
J3NtYWxsJywge2NsYXNzOiAnZmlsZXNpemUnfSwgJygnICsgdGhpcy5fZmlsZVNpemVGb3JtYXR0
ZXIoZmlsZS5zaXplKSArICcpJyksCisgICAgICAgICAgICAgICAgbWV0YSwKKyAgICAgICAgICAg
IF0pOworICAgICAgICB9KSk7CisgICAgICAgIHJldHVybiB1cGxvYWRTdGF0dXNFbGVtZW50czsK
KyAgICB9CisKKyAgICBfdXBkYXRlVXBsb2FkU3RhdHVzKHVwbG9hZFN0YXR1c0VsZW1lbnRzKQor
ICAgIHsKKyAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgdXBsb2FkU3RhdHVzRWxlbWVudHMpIHsK
KyAgICAgICAgICAgIGNvbnN0IHByb2dyZXNzID0gdGhpcy5fdXBsb2FkUHJvZ3Jlc3MuZ2V0KGVu
dHJ5LmZpbGUpOworICAgICAgICAgICAgY29uc3QgcHJvZ3Jlc3NCYXIgPSBlbnRyeS5wcm9ncmVz
c0JhcjsKKyAgICAgICAgICAgIGlmICghcHJvZ3Jlc3MpIHsKKyAgICAgICAgICAgICAgICBwcm9n
cmVzc0Jhci5yZW1vdmVBdHRyaWJ1dGUoJ21heCcpOworICAgICAgICAgICAgICAgIHByb2dyZXNz
QmFyLnJlbW92ZUF0dHJpYnV0ZSgndmFsdWUnKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocHJvZ3Jlc3MuZXJyb3IpIHsKKyAgICAgICAg
ICAgICAgICBlbnRyeS5tZXRhLmNsYXNzTGlzdC5hZGQoJ2hhc0Vycm9yJyk7CisgICAgICAgICAg
ICAgICAgZW50cnkubWV0YS50ZXh0Q29udGVudCA9IHRoaXMuX2Zvcm1hdFVwbG9hZEVycm9yKHBy
b2dyZXNzLmVycm9yKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHJv
Z3Jlc3NCYXIubWF4ID0gcHJvZ3Jlc3MudG90YWw7CisgICAgICAgICAgICAgICAgcHJvZ3Jlc3NC
YXIudmFsdWUgPSBwcm9ncmVzcy5sb2FkZWQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBfZm9ybWF0VXBsb2FkRXJyb3IoZXJyb3IpCisgICAgeworICAgICAgICBzd2l0
Y2ggKGVycm9yKSB7CisgICAgICAgIGNhc2UgJ05vdFN1cHBvcnRlZCc6CisgICAgICAgICAgICBy
ZXR1cm4gJ0ZhaWxlZDogRmlsZSB1cGxvYWRpbmcgaXMgZGlzYWJsZWQnOworICAgICAgICBjYXNl
ICdGaWxlU2l6ZUxpbWl0RXhjZWVkZWQnOgorICAgICAgICAgICAgcmV0dXJuICdGYWlsZWQ6IFRo
ZSB1cGxvYWRlZCBmaWxlIHdhcyB0b28gYmlnJzsKKyAgICAgICAgY2FzZSAnRmlsZVNpemVRdW90
YUV4Y2VlZGVkJzoKKyAgICAgICAgICAgIHJldHVybiAnRmFpbGVkOiBFeGNlZWRlZCBmaWxlIHVw
bG9hZCBxdW90YSc7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICdGYWlsZWQgdG8gdXBsb2Fk
IHRoZSBmaWxlJzsKKyAgICB9CisKKyAgICBfZGlkRmlsZUlucHV0Q2hhbmdlKGlucHV0KQorICAg
IHsKKyAgICAgICAgaWYgKCFpbnB1dC5maWxlcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGNvbnN0IGxpbWl0ID0gVXBsb2FkZWRGaWxlLmZpbGVVcGxvYWRTaXplTGltaXQ7
CisgICAgICAgIGZvciAobGV0IGZpbGUgb2YgaW5wdXQuZmlsZXMpIHsKKyAgICAgICAgICAgIGlm
IChmaWxlLnNpemUgPiBsaW1pdCkgeworICAgICAgICAgICAgICAgIGFsZXJ0KGBUaGUgc3BlY2lm
aWVkIGZpbGUgIiR7ZmlsZS5uYW1lfSIgaXMgdG9vIGJpZyAoJHt0aGlzLl9maWxlU2l6ZUZvcm1h
dHRlcihmaWxlLnNpemUpfSkuIEl0IG11c3QgYmUgc21hbGxlciB0aGFuICR7dGhpcy5fZmlsZVNp
emVGb3JtYXR0ZXIobGltaXQpfWApOworICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0gbnVs
bDsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBV
cGxvYWRlZEZpbGUuZmV0Y2hVbmxvYWRlZEZpbGVXaXRoSWRlbnRpY2FsSGFzaChmaWxlKS50aGVu
KCh1cGxvYWRlZEZpbGUpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAodXBsb2FkZWRGaWxlKSB7
CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RpZFVwbG9hZEZpbGUoZmlsZSwgdXBsb2FkZWRG
aWxlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIFVwbG9hZGVkRmlsZS51cGxvYWRGaWxlKGZpbGUsIChwcm9ncmVzcykg
PT4geworICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGxvYWRQcm9ncmVzcy5zZXQoZmlsZSwg
cHJvZ3Jlc3MpOworICAgICAgICAgICAgICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwor
ICAgICAgICAgICAgICAgIH0pLnRoZW4oKHVwbG9hZGVkRmlsZSkgPT4geworICAgICAgICAgICAg
ICAgICAgICB0aGlzLl9kaWRVcGxvYWRGaWxlKGZpbGUsIHVwbG9hZGVkRmlsZSk7CisgICAgICAg
ICAgICAgICAgfSwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwbG9h
ZFByb2dyZXNzLnNldChmaWxlLCB7ZXJyb3I6IGVycm9yID09PSAwID8gJ1Vua25vd25FcnJvcicg
OiBlcnJvcn0pOworICAgICAgICAgICAgICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAg
dGhpcy5fcHJldXBsb2FkRmlsZXMgPSBBcnJheS5mcm9tKGlucHV0LmZpbGVzKTsKKyAgICAgICAg
aW5wdXQudmFsdWUgPSBudWxsOworCisgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7Cisg
ICAgfQorCisgICAgX3JlbW92ZVVwbG9hZGVkRmlsZSh1cGxvYWRlZEZpbGUpCisgICAgeworICAg
ICAgICAvLyBGSVhNRTogU2VuZCBhIHJlcXVlc3QgdG8gZGVsZXRlIHRoZSBmaWxlLgorICAgICAg
ICBjb25zb2xlLmFzc2VydCh1cGxvYWRlZEZpbGUgaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGUpOwor
ICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX3VwbG9hZGVkRmlsZXMuaW5kZXhPZih1cGxvYWRl
ZEZpbGUpOworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB0aGlzLl91cGxvYWRlZEZpbGVzLnNwbGljZShpbmRleCwgMSk7CisgICAgICAgIHRoaXMu
ZGlzcGF0Y2hBY3Rpb24oJ3JlbW92ZWRGaWxlJywgdXBsb2FkZWRGaWxlKTsKKyAgICAgICAgdGhp
cy5lbnF1ZXVlVG9SZW5kZXIoKTsKKyAgICB9CisKKyAgICBfZGlkVXBsb2FkRmlsZShmaWxlLCB1
cGxvYWRlZEZpbGUpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChmaWxlIGluc3RhbmNl
b2YgRmlsZSk7CisgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fcHJldXBsb2FkRmlsZXMuaW5k
ZXhPZihmaWxlKTsKKyAgICAgICAgaWYgKGluZGV4ID49IDApCisgICAgICAgICAgICB0aGlzLl9w
cmV1cGxvYWRGaWxlcy5zcGxpY2UoaW5kZXgsIDEpOworICAgICAgICB0aGlzLl91cGxvYWRlZEZp
bGVzLnB1c2godXBsb2FkZWRGaWxlKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEFjdGlvbigndXBs
b2FkZWRGaWxlJywgdXBsb2FkZWRGaWxlKTsKKyAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIo
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgaHRtbFRlbXBsYXRlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBgPHVsIGlkPSJ1cGxvYWRlZC1maWxlcyI+PC91bD4KKyAgICAgICAgICAgIDx1bCBpZD0i
cHJldXBsb2FkLWZpbGVzIj48L3VsPgorICAgICAgICAgICAgPGlucHV0IGlkPSJmaWxlLWlucHV0
IiB0eXBlPSJmaWxlIiBtdWx0aXBsZT0iZmFsc2UiPmA7CisgICAgfQorCisgICAgc3RhdGljIGNz
c1RlbXBsYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBgCisgICAgICAgICAgICB1bDplbXB0
eSB7CisgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdWwsIGxpIHsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDA7CisgICAgICAgICAg
ICAgICAgcGFkZGluZzogMDsKKyAgICAgICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBsaSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb246
IHJlbGF0aXZlOworICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07CisgICAg
ICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07CisgICAgICAgICAgICAgICAgcGFkZGlu
Zy1ib3R0b206IDAuMjVyZW07CisgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogc29saWQg
MXB4ICNlZWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpOmxhc3QtY2hpbGQgewor
ICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGxpID4gY2xvc2UtYnV0dG9uIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgICAgICAgICAgICAgbGVmdDogMDsKKyAgICAgICAgICAgICAgICB0b3A6
IDUwJTsKKyAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtMC41cmVtOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBsaSA+IHByb2dyZXNzIHsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBibG9jazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29kZSB7CisgICAgICAgICAg
ICAgICAgZm9udC1zaXplOiAxLjFyZW07CisgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGlu
aGVyaXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNtYWxsIHsKKyAgICAgICAgICAg
ICAgICBmb250LXNpemU6IDAuOHJlbTsKKyAgICAgICAgICAgICAgICBmb250LXdlaWdodDogaW5o
ZXJpdDsKKyAgICAgICAgICAgICAgICBjb2xvcjogIzY2NjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgc21hbGwubWV0YSB7CisgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC5oYXNFcnJvciB7CisgICAgICAgICAgICAgICAg
Y29sb3I6ICNjNjA7CisgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgYDsKKyAgICB9Cit9CisKK0NvbXBvbmVudEJhc2UuZGVmaW5lRWxl
bWVudCgnaW5zdGFudC1maWxlLXVwbG9hZGVyJywgSW5zdGFudEZpbGVVcGxvYWRlcik7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogcHVibGljL3YzL2luZGV4Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gcHVibGljL3YzL2luZGV4Lmh0bWwJKHJldmlzaW9uIDIxNTEyMykKKysrIHB1Ymxp
Yy92My9pbmRleC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBACiAgICAgICAg
IDxzY3JpcHQgc3JjPSJtb2RlbHMvYnVpbGQtcmVxdWVzdC5qcyI+PC9zY3JpcHQ+CiAgICAgICAg
IDxzY3JpcHQgc3JjPSJtb2RlbHMvY29tbWl0LXNldC5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxz
Y3JpcHQgc3JjPSJtb2RlbHMvdHJpZ2dlcmFibGUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0IHNyYz0ibW9kZWxzL3VwbG9hZGVkLWZpbGUuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2Ny
aXB0IHNyYz0ibW9kZWxzL21hbmlmZXN0LmpzIj48L3NjcmlwdD4KIAogICAgICAgICA8c2NyaXB0
IHNyYz0iY29tcG9uZW50cy9iYXNlLmpzIj48L3NjcmlwdD4KQEAgLTkxLDYgKzkyLDggQEAKICAg
ICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVudHMvbXV0YWJsZS1saXN0LXZpZXcuanMiPjwvc2Ny
aXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0iY29tcG9uZW50cy9hbmFseXNpcy10YXNrLWJ1Zy1s
aXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVudHMvcmF0aW8t
YmFyLWdyYXBoLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVudHMv
Y3VzdG9tLWFuYWx5c2lzLXRhc2stY29uZmlndXJhdG9yLmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9ImNvbXBvbmVudHMvaW5zdGFudC1maWxlLXVwbG9hZGVyLmpzIj48L3Njcmlw
dD4KIAogICAgICAgICA8c2NyaXB0IHNyYz0icGFnZXMvcGFnZS5qcyI+PC9zY3JpcHQ+CiAgICAg
ICAgIDxzY3JpcHQgc3JjPSJwYWdlcy9wYWdlLXJvdXRlci5qcyI+PC9zY3JpcHQ+CkluZGV4OiBw
dWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lzLXRhc2suanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcHVibGljL3Yz
L21vZGVscy9hbmFseXNpcy10YXNrLmpzCShyZXZpc2lvbiAyMTUxMjMpCisrKyBwdWJsaWMvdjMv
bW9kZWxzL2FuYWx5c2lzLXRhc2suanMJKHdvcmtpbmcgY29weSkKQEAgLTcsMTAgKzcsMTAgQEAK
ICAgICAgICAgdGhpcy5fYXV0aG9yID0gb2JqZWN0LmF1dGhvcjsKICAgICAgICAgdGhpcy5fY3Jl
YXRlZEF0ID0gb2JqZWN0LmNyZWF0ZWRBdDsKIAotICAgICAgICBjb25zb2xlLmFzc2VydChvYmpl
Y3QucGxhdGZvcm0gaW5zdGFuY2VvZiBQbGF0Zm9ybSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCFvYmplY3QucGxhdGZvcm0gfHwgb2JqZWN0LnBsYXRmb3JtIGluc3RhbmNlb2YgUGxhdGZvcm0p
OwogICAgICAgICB0aGlzLl9wbGF0Zm9ybSA9IG9iamVjdC5wbGF0Zm9ybTsKIAotICAgICAgICBj
b25zb2xlLmFzc2VydChvYmplY3QubWV0cmljIGluc3RhbmNlb2YgTWV0cmljKTsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoIW9iamVjdC5tZXRyaWMgfHwgb2JqZWN0Lm1ldHJpYyBpbnN0YW5jZW9m
IE1ldHJpYyk7CiAgICAgICAgIHRoaXMuX21ldHJpYyA9IG9iamVjdC5tZXRyaWM7CiAKICAgICAg
ICAgdGhpcy5fc3RhcnRNZWFzdXJlbWVudElkID0gb2JqZWN0LnN0YXJ0UnVuOwpAQCAtMjksNyAr
MjksMTEgQEAKIAogICAgIHN0YXRpYyBmaW5kQnlQbGF0Zm9ybUFuZE1ldHJpYyhwbGF0Zm9ybUlk
LCBtZXRyaWNJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmFsbCgpLmZpbHRlcihmdW5j
dGlvbiAodGFzaykgeyByZXR1cm4gdGFzay5fcGxhdGZvcm0uaWQoKSA9PSBwbGF0Zm9ybUlkICYm
IHRhc2suX21ldHJpYy5pZCgpID09IG1ldHJpY0lkOyB9KTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
YWxsKCkuZmlsdGVyKCh0YXNrKSA9PiB7CisgICAgICAgICAgICBjb25zdCBwbGF0Zm9ybSA9IHRh
c2suX3BsYXRmb3JtOworICAgICAgICAgICAgY29uc3QgbWV0cmljID0gdGFzay5fbWV0cmljOwor
ICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtICYmIG1ldHJpYyAmJiBwbGF0Zm9ybS5pZCgpID09
IHBsYXRmb3JtSWQgJiYgbWV0cmljLmlkKCkgPT0gbWV0cmljSWQ7CisgICAgICAgIH0pOwogICAg
IH0KIAogICAgIHVwZGF0ZVNpbmdsZXRvbihvYmplY3QpCkBAIC01NSw3ICs1OSw4IEBACiAgICAg
ICAgIHRoaXMuX2ZpbmlzaGVkQnVpbGRSZXF1ZXN0Q291bnQgPSArb2JqZWN0LmZpbmlzaGVkQnVp
bGRSZXF1ZXN0Q291bnQ7CiAgICAgfQogCi0gICAgaGFzUmVzdWx0cygpIHsgcmV0dXJuIHRoaXMu
X2ZpbmlzaGVkQnVpbGRSZXF1ZXN0Q291bnQ7IH0KKyAgICBpc0N1c3RvbSgpIHsgcmV0dXJuICF0
aGlzLl9wbGF0Zm9ybTsgfQorICAgIGhhc1Jlc3VsdHMoKSB7IHJldHVybiAhIXRoaXMuX2Zpbmlz
aGVkQnVpbGRSZXF1ZXN0Q291bnQ7IH0KICAgICBoYXNQZW5kaW5nUmVxdWVzdHMoKSB7IHJldHVy
biB0aGlzLl9maW5pc2hlZEJ1aWxkUmVxdWVzdENvdW50IDwgdGhpcy5fYnVpbGRSZXF1ZXN0Q291
bnQ7IH0KICAgICByZXF1ZXN0TGFiZWwoKSB7IHJldHVybiBgJHt0aGlzLl9maW5pc2hlZEJ1aWxk
UmVxdWVzdENvdW50fSBvZiAke3RoaXMuX2J1aWxkUmVxdWVzdENvdW50fWA7IH0KIApAQCAtMjAx
LDYgKzIwNiw4IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgZm9yICh2YXIgb3RoZXJUYXNrIG9mIEFuYWx5c2lzVGFzay5hbGwoKSkgeworICAgICAgICAg
ICAgICAgIGlmICh0YXNrLmlzQ3VzdG9tKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgIGlmICh0YXNrLmVuZFRpbWUoKSA8IG90aGVyVGFzay5zdGFydFRp
bWUoKQogICAgICAgICAgICAgICAgICAgICB8fCBvdGhlclRhc2suZW5kVGltZSgpIDwgdGFzay5z
dGFydFRpbWUoKQogICAgICAgICAgICAgICAgICAgICB8fCB0YXNrLm1ldHJpYygpICE9IG90aGVy
VGFzay5tZXRyaWMoKSkKQEAgLTI1Nyw5ICsyNjQsNiBAQAogICAgICAgICBmb3IgKHZhciByYXdE
YXRhIG9mIGRhdGEuYW5hbHlzaXNUYXNrcykgewogICAgICAgICAgICAgcmF3RGF0YS5wbGF0Zm9y
bSA9IFBsYXRmb3JtLmZpbmRCeUlkKHJhd0RhdGEucGxhdGZvcm0pOwogICAgICAgICAgICAgcmF3
RGF0YS5tZXRyaWMgPSBNZXRyaWMuZmluZEJ5SWQocmF3RGF0YS5tZXRyaWMpOwotICAgICAgICAg
ICAgaWYgKCFyYXdEYXRhLnBsYXRmb3JtIHx8ICFyYXdEYXRhLm1ldHJpYykKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLQogICAgICAgICAgICAgcmF3RGF0YS5idWdzID0gdGFza1RvQnVnW3Jh
d0RhdGEuaWRdOwogICAgICAgICAgICAgcmF3RGF0YS5jYXVzZXMgPSByZXNvbHZlQ29tbWl0cyhy
YXdEYXRhLmNhdXNlcyk7CiAgICAgICAgICAgICByYXdEYXRhLmZpeGVzID0gcmVzb2x2ZUNvbW1p
dHMocmF3RGF0YS5maXhlcyk7CkluZGV4OiBwdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3Qu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gcHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCShyZXZp
c2lvbiAyMTUxMjMpCisrKyBwdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMJKHdvcmtp
bmcgY29weSkKQEAgLTEyNyw2ICsxMjcsOSBAQAogICAgICAgICAgICAgY29tbWl0LnJlcG9zaXRv
cnkgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKGNvbW1pdC5yZXBvc2l0b3J5KTsKICAgICAgICAgfQog
CisgICAgICAgIGZvciAobGV0IHVwbG9hZGVkRmlsZSBvZiBkYXRhWyd1cGxvYWRlZEZpbGVzJ10p
CisgICAgICAgICAgICBVcGxvYWRlZEZpbGUuZW5zdXJlU2luZ2xldG9uKHVwbG9hZGVkRmlsZS5p
ZCwgdXBsb2FkZWRGaWxlKTsKKwogICAgICAgICBjb25zdCBjb21taXRTZXRzID0gZGF0YVsnY29t
bWl0U2V0cyddLm1hcCgocm93KSA9PiB7CiAgICAgICAgICAgICByb3cuY29tbWl0cyA9IHJvdy5j
b21taXRzLm1hcCgoY29tbWl0SWQpID0+IGNvbW1pdElkTWFwW2NvbW1pdElkXSk7CiAgICAgICAg
ICAgICByZXR1cm4gQ29tbWl0U2V0LmVuc3VyZVNpbmdsZXRvbihyb3cuaWQsIHJvdyk7CkluZGV4
OiBwdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1sb2cuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcHVibGljL3Yz
L21vZGVscy9jb21taXQtbG9nLmpzCShyZXZpc2lvbiAyMTUxMjMpCisrKyBwdWJsaWMvdjMvbW9k
ZWxzL2NvbW1pdC1sb2cuanMJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDIwIEBACiAgICAg
ICAgIHJldHVybiB7cmVwb3NpdG9yeTogcmVwb3NpdG9yeSwgbGFiZWw6IGxhYmVsLCB1cmw6IHJl
cG9zaXRvcnkudXJsRm9yUmV2aXNpb25SYW5nZShmcm9tLCB0byl9OwogICAgIH0KIAorICAgIHN0
YXRpYyBmZXRjaExhdGVzdENvbW1pdEZvclBsYXRmb3JtKHJlcG9zaXRvcnksIHBsYXRmb3JtKQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVwb3NpdG9yeSBpbnN0YW5jZW9mIFJlcG9z
aXRvcnkpOworICAgICAgICBjb25zb2xlLmFzc2VydChwbGF0Zm9ybSBpbnN0YW5jZW9mIFBsYXRm
b3JtKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVkRmV0Y2goYC9hcGkvY29tbWl0cy8ke3Jl
cG9zaXRvcnkuaWQoKX0vbGF0ZXN0YCwge3BsYXRmb3JtOiBwbGF0Zm9ybS5pZCgpfSkudGhlbigo
ZGF0YSkgPT4geworICAgICAgICAgICAgY29uc3QgY29tbWl0cyA9IGRhdGFbJ2NvbW1pdHMnXTsK
KyAgICAgICAgICAgIGlmICghY29tbWl0cyB8fCAhY29tbWl0cy5sZW5ndGgpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICBjb25zdCByYXdEYXRhID0gY29tbWl0c1sw
XTsKKyAgICAgICAgICAgIHJhd0RhdGEucmVwb3NpdG9yeSA9IHJlcG9zaXRvcnk7CisgICAgICAg
ICAgICByZXR1cm4gQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRvbihyYXdEYXRhLmlkLCByYXdEYXRh
KTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgc3RhdGljIGZldGNoQmV0d2VlblJldmlzaW9u
cyhyZXBvc2l0b3J5LCBwcmVjZWRpbmdSZXZpc2lvbiwgbGFzdFJldmlzaW9uKQogICAgIHsKICAg
ICAgICAgLy8gRklYTUU6IFRoZSBjYWNoZSBzaG91bGQgYmUgc21hcnRlciBhYm91dCBmZXRjaGlu
ZyBhIHJhbmdlIHdpdGhpbiBhbiBhbHJlYWR5IGZldGNoZWQgcmFuZ2UsIGV0Yy4uLgpJbmRleDog
cHVibGljL3YzL21vZGVscy9jb21taXQtc2V0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHB1YmxpYy92My9t
b2RlbHMvY29tbWl0LXNldC5qcwkocmV2aXNpb24gMjE1MTIzKQorKysgcHVibGljL3YzL21vZGVs
cy9jb21taXQtc2V0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgsNyBAQAogICAgICAgICB0
aGlzLl9yZXBvc2l0b3JpZXMgPSBbXTsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0
TWFwID0ge307CiAgICAgICAgIHRoaXMuX2xhdGVzdENvbW1pdFRpbWUgPSBudWxsOworICAgICAg
ICB0aGlzLl9jdXN0b21Sb290cyA9IFtdOwogCiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTgsOSArMTksMTQgQEAKICAgICAgICAgICAgIHRoaXMuX3JlcG9z
aXRvcnlUb0NvbW1pdE1hcFtyZXBvc2l0b3J5SWRdID0gQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRv
bihyb3cuaWQsIHJvdyk7CiAgICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3JpZXMucHVzaChyb3cu
cmVwb3NpdG9yeSk7CiAgICAgICAgIH0KKyAgICAgICAgZm9yIChsZXQgZmlsZUlkIG9mIG9iamVj
dC5jdXN0b21Sb290cykgeworICAgICAgICAgICAgY29uc3QgdXBsb2FkZWRGaWxlID0gVXBsb2Fk
ZWRGaWxlLmZpbmRCeUlkKGZpbGVJZCk7CisgICAgICAgICAgICB0aGlzLl9jdXN0b21Sb290cy5w
dXNoKHVwbG9hZGVkRmlsZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXBvc2l0b3JpZXMo
KSB7IHJldHVybiB0aGlzLl9yZXBvc2l0b3JpZXM7IH0KKyAgICBjdXN0b21Sb290cygpIHsgcmV0
dXJuIHRoaXMuX2N1c3RvbVJvb3RzOyB9CiAgICAgY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0
b3J5KSB7IHJldHVybiB0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRNYXBbcmVwb3NpdG9yeS5pZCgp
XTsgfQogCiAgICAgcmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpCkBAIC00OSw2ICs1
NSwxOCBAQAogICAgICAgICAgICAgaWYgKHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcFtyZXBv
c2l0b3J5SWRdICE9IG90aGVyLl9yZXBvc2l0b3J5VG9Db21taXRNYXBbcmVwb3NpdG9yeUlkXSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IENvbW1pdFNldC5hcmVDdXN0b21Sb290c0VxdWFsKHRoaXMuX2N1c3RvbVJvb3RzLCBvdGhlci5f
Y3VzdG9tUm9vdHMpOworICAgIH0KKworICAgIHN0YXRpYyBhcmVDdXN0b21Sb290c0VxdWFsKGN1
c3RvbVJvb3RzMSwgY3VzdG9tUm9vdHMyKQorICAgIHsKKyAgICAgICAgaWYgKGN1c3RvbVJvb3Rz
MS5sZW5ndGggIT0gY3VzdG9tUm9vdHMyLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgY29uc3Qgc2V0MiA9IG5ldyBTZXQoY3VzdG9tUm9vdHMyKTsKKyAgICAgICAg
Zm9yIChsZXQgZmlsZSBvZiBjdXN0b21Sb290czEpIHsKKyAgICAgICAgICAgIGlmICghc2V0Mi5o
YXMoZmlsZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTA2LDYgKzEyNCw3IEBACiAgICAgY29uc3Ry
dWN0b3IoKQogICAgIHsKICAgICAgICAgdGhpcy5fcmV2aXNpb25MaXN0QnlSZXBvc2l0b3J5ID0g
bmV3IE1hcDsKKyAgICAgICAgdGhpcy5fY3VzdG9tUm9vdHMgPSBbXTsKICAgICB9CiAKICAgICBz
ZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSwgcmV2aXNpb24pCkBAIC0xMTQsOSAr
MTMzLDI5IEBACiAgICAgICAgIHRoaXMuX3JldmlzaW9uTGlzdEJ5UmVwb3NpdG9yeS5zZXQocmVw
b3NpdG9yeSwgcmV2aXNpb24pOwogICAgIH0KIAorICAgIGVxdWFscyhvdGhlcikKKyAgICB7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KG90aGVyIGluc3RhbmNlb2YgQ3VzdG9tQ29tbWl0U2V0KTsK
KyAgICAgICAgaWYgKHRoaXMuX3JldmlzaW9uTGlzdEJ5UmVwb3NpdG9yeS5zaXplICE9IG90aGVy
Ll9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkuc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgZm9yIChsZXQgcmVwb3NpdG9yeSBvZiB0aGlzLl9yZXZpc2lvbkxpc3RCeVJl
cG9zaXRvcnkua2V5cygpKSB7CisgICAgICAgICAgICBjb25zdCB0aGlzUmV2aXNpb24gPSB0aGlz
Ll9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkuZ2V0KHJlcG9zaXRvcnkpOworICAgICAgICAgICAg
Y29uc3Qgb3RoZXJSZXZpc2lvbiA9IG90aGVyLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkuZ2V0
KHJlcG9zaXRvcnkpOworICAgICAgICAgICAgaWYgKHRoaXNSZXZpc2lvbiAhPSBvdGhlclJldmlz
aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gQ29tbWl0U2V0LmFyZUN1c3RvbVJvb3RzRXF1YWwodGhpcy5fY3VzdG9tUm9vdHMsIG90
aGVyLl9jdXN0b21Sb290cyk7CisgICAgfQorCiAgICAgcmVwb3NpdG9yaWVzKCkgeyByZXR1cm4g
QXJyYXkuZnJvbSh0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkua2V5cygpKTsgfQogICAg
IHJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB7IHJldHVybiB0aGlzLl9yZXZpc2lv
bkxpc3RCeVJlcG9zaXRvcnkuZ2V0KHJlcG9zaXRvcnkpOyB9CisgICAgY3VzdG9tUm9vdHMoKSB7
IHJldHVybiB0aGlzLl9jdXN0b21Sb290czsgfQogCisgICAgYWRkQ3VzdG9tUm9vdCh1cGxvYWRl
ZEZpbGUpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh1cGxvYWRlZEZpbGUgaW5zdGFu
Y2VvZiBVcGxvYWRlZEZpbGUpOworICAgICAgICB0aGlzLl9jdXN0b21Sb290cy5wdXNoKHVwbG9h
ZGVkRmlsZSk7CisgICAgfQogfQogCiBpZiAodHlwZW9mIG1vZHVsZSAhPSAndW5kZWZpbmVkJykg
ewpJbmRleDogcHVibGljL3YzL21vZGVscy9tYW5pZmVzdC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwdWJs
aWMvdjMvbW9kZWxzL21hbmlmZXN0LmpzCShyZXZpc2lvbiAyMTUxMjMpCisrKyBwdWJsaWMvdjMv
bW9kZWxzL21hbmlmZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw5IEBACiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfSk7CiAKKyAgICAgICAgaWYgKHR5cGVvZihVcGxvYWRlZEZp
bGUpICE9ICd1bmRlZmluZWQnKQorICAgICAgICAgICAgVXBsb2FkZWRGaWxlLmZpbGVVcGxvYWRT
aXplTGltaXQgPSByYXdSZXNwb25zZS5maWxlVXBsb2FkU2l6ZUxpbWl0IHx8IDA7CisKICAgICAg
ICAgSW5zdHJ1bWVudGF0aW9uLmVuZE1lYXN1cmluZ1RpbWUoJ01hbmlmZXN0JywgJ19kaWRGZXRj
aE1hbmlmZXN0Jyk7CiAKICAgICAgICAgcmV0dXJuIHsKSW5kZXg6IHB1YmxpYy92My9tb2RlbHMv
bWV0cmljLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHB1YmxpYy92My9tb2RlbHMvbWV0cmljLmpzCShyZXZp
c2lvbiAyMTUxMjMpCisrKyBwdWJsaWMvdjMvbW9kZWxzL21ldHJpYy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMTE5LDYgKzExOSwxNCBAQAogICAgICAgICBmb3JtYXR0ZXIuZGl2aXNvciA9IGRpdmlz
b3I7CiAgICAgICAgIHJldHVybiBmb3JtYXR0ZXI7CiAgICAgfTsKKworICAgIHN0YXRpYyBmb3Jt
YXRUaW1lKHV0Y1RpbWUpCisgICAgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmNvcnJl
Y3Qgd2hlbiB0aGUgb2Zmc2V0IGNyb3NzIGRheS1saWZlLXNhdmluZyBjaGFuZ2UuIEl0J3MgZ29v
ZCBlbm91Z2ggZm9yIG5vdy4KKyAgICAgICAgY29uc3Qgb2Zmc2V0SW5NaW51dGVzID0gKG5ldyBE
YXRlKHV0Y1RpbWUpKS5nZXRUaW1lem9uZU9mZnNldCgpOworICAgICAgICBjb25zdCB0aW1lSW5M
b2NhbFRpbWVab25lID0gbmV3IERhdGUodXRjVGltZSAtIG9mZnNldEluTWludXRlcyAqIDYwICog
MTAwMCk7CisgICAgICAgIHJldHVybiB0aW1lSW5Mb2NhbFRpbWVab25lLnRvSVNPU3RyaW5nKCku
cmVwbGFjZSgnVCcsICcgJykucmVwbGFjZSgvXC5cZCtaJC8sICcnKTsKKyAgICB9CiB9CiAKIGlm
ICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnKQpJbmRleDogcHVibGljL3YzL21vZGVscy90
ZXN0LWdyb3VwLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHB1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5q
cwkocmV2aXNpb24gMjE1MTIzKQorKysgcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzgsMjYgKzE3OCw0NyBAQAogICAgICAgICB9KTsKICAgICB9CiAK
KyAgICBzdGF0aWMgY3JlYXRlV2l0aFRhc2sodGFza05hbWUsIHBsYXRmb3JtLCB0ZXN0LCBncm91
cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0cykKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGNvbW1pdFNldHMubGVuZ3RoID09IDIpOworICAgICAgICBjb25zdCByZXZpc2lv
blNldHMgPSB0aGlzLl9yZXZpc2lvblNldHNGcm9tQ29tbWl0U2V0cyhjb21taXRTZXRzKTsKKyAg
ICAgICAgY29uc3QgcGFyYW1zID0ge3Rhc2tOYW1lLCBuYW1lOiBncm91cE5hbWUsIHBsYXRmb3Jt
OiBwbGF0Zm9ybS5pZCgpLCB0ZXN0OiB0ZXN0LmlkKCksIHJlcGV0aXRpb25Db3VudCwgcmV2aXNp
b25TZXRzfTsKKyAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0
ZS10ZXN0LWdyb3VwJywgcGFyYW1zKS50aGVuKChkYXRhKSA9PiB7CisgICAgICAgICAgICByZXR1
cm4gQW5hbHlzaXNUYXNrLmZldGNoQnlJZChkYXRhWyd0YXNrSWQnXSk7CisgICAgICAgIH0pLnRo
ZW4oKHRhc2spID0+IHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9mZXRjaFRlc3RHcm91cHNG
b3JUYXNrKHRhc2suaWQoKSkudGhlbigoKSA9PiB0YXNrKTsKKyAgICAgICAgfSk7CisgICAgfQor
CiAgICAgc3RhdGljIGNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRhc2ssIG5hbWUsIHJlcGV0
aXRpb25Db3VudCwgY29tbWl0U2V0cykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNv
bW1pdFNldHMubGVuZ3RoID09IDIpOworICAgICAgICBjb25zdCByZXZpc2lvblNldHMgPSB0aGlz
Ll9yZXZpc2lvblNldHNGcm9tQ29tbWl0U2V0cyhjb21taXRTZXRzKTsKKyAgICAgICAgcmV0dXJu
IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywgeworICAgICAg
ICAgICAgdGFzazogdGFzay5pZCgpLAorICAgICAgICAgICAgbmFtZTogbmFtZSwKKyAgICAgICAg
ICAgIHJlcGV0aXRpb25Db3VudDogcmVwZXRpdGlvbkNvdW50LAorICAgICAgICAgICAgcmV2aXNp
b25TZXRzOiByZXZpc2lvblNldHMsCisgICAgICAgIH0pLnRoZW4oKGRhdGEpID0+IHRoaXMuX2Zl
dGNoVGVzdEdyb3Vwc0ZvclRhc2sodGFzay5pZCgpKSk7CisgICAgfQogCi0gICAgICAgIGNvbnN0
IHJldmlzaW9uU2V0cyA9IGNvbW1pdFNldHMubWFwKChjb21taXRTZXQpID0+IHsKKyAgICBzdGF0
aWMgX3JldmlzaW9uU2V0c0Zyb21Db21taXRTZXRzKGNvbW1pdFNldHMpCisgICAgeworICAgICAg
ICByZXR1cm4gY29tbWl0U2V0cy5tYXAoKGNvbW1pdFNldCkgPT4gewogICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQoY29tbWl0U2V0IGluc3RhbmNlb2YgQ3VzdG9tQ29tbWl0U2V0IHx8IGNvbW1p
dFNldCBpbnN0YW5jZW9mIENvbW1pdFNldCk7CiAgICAgICAgICAgICBjb25zdCByZXZpc2lvblNl
dCA9IHt9OwogICAgICAgICAgICAgZm9yIChsZXQgcmVwb3NpdG9yeSBvZiBjb21taXRTZXQucmVw
b3NpdG9yaWVzKCkpCiAgICAgICAgICAgICAgICAgcmV2aXNpb25TZXRbcmVwb3NpdG9yeS5pZCgp
XSA9IGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSk7CisgICAgICAg
ICAgICBjb25zdCBjdXN0b21Sb290cyA9IGNvbW1pdFNldC5jdXN0b21Sb290cygpOworICAgICAg
ICAgICAgaWYgKGN1c3RvbVJvb3RzICYmIGN1c3RvbVJvb3RzLmxlbmd0aCkKKyAgICAgICAgICAg
ICAgICByZXZpc2lvblNldFsnY3VzdG9tUm9vdHMnXSA9IGN1c3RvbVJvb3RzLm1hcCgodXBsb2Fk
ZWRGaWxlKSA9PiB1cGxvYWRlZEZpbGUuaWQoKSk7CiAgICAgICAgICAgICByZXR1cm4gcmV2aXNp
b25TZXQ7CiAgICAgICAgIH0pOworICAgIH0KIAotICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQ
SS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7Ci0gICAgICAgICAgICB0YXNrOiB0
YXNrLmlkKCksCi0gICAgICAgICAgICBuYW1lOiBuYW1lLAotICAgICAgICAgICAgcmVwZXRpdGlv
bkNvdW50OiByZXBldGl0aW9uQ291bnQsCi0gICAgICAgICAgICByZXZpc2lvblNldHM6IHJldmlz
aW9uU2V0cywKLSAgICAgICAgfSkudGhlbigoZGF0YSkgPT4gewotICAgICAgICAgICAgcmV0dXJu
IHRoaXMuY2FjaGVkRmV0Y2goJy9hcGkvdGVzdC1ncm91cHMnLCB7dGFzazogdGFzay5pZCgpfSwg
dHJ1ZSkudGhlbigoZGF0YSkgPT4gdGhpcy5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3Jv
dXBzKGRhdGEpKTsKLSAgICAgICAgfSk7CisgICAgc3RhdGljIF9mZXRjaFRlc3RHcm91cHNGb3JU
YXNrKHRhc2tJZCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmNhY2hlZEZldGNoKCcvYXBp
L3Rlc3QtZ3JvdXBzJywge3Rhc2s6IHRhc2tJZH0sIHRydWUpLnRoZW4oKGRhdGEpID0+IHRoaXMu
X2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVkVGVzdEdyb3VwcyhkYXRhKSk7CiAgICAgfQogCiAgICAg
c3RhdGljIGZldGNoQnlUYXNrKHRhc2tJZCkKSW5kZXg6IHB1YmxpYy92My9tb2RlbHMvdHJpZ2dl
cmFibGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gcHVibGljL3YzL21vZGVscy90cmlnZ2VyYWJsZS5qcwko
cmV2aXNpb24gMjE1MTIzKQorKysgcHVibGljL3YzL21vZGVscy90cmlnZ2VyYWJsZS5qcwkod29y
a2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTkgQEAKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
bnVsbDsKICAgICB9CisKKyAgICBzdGF0aWMgdHJpZ2dlcmFibGVQbGF0Zm9ybXNGb3JUZXN0cyh0
ZXN0cykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRlc3RzIGluc3RhbmNlb2YgQXJy
YXkpOworICAgICAgICBpZiAoIXRlc3RzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBbXTsK
KyAgICAgICAgcmV0dXJuIHRoaXMuc29ydEJ5TmFtZShQbGF0Zm9ybS5hbGwoKS5maWx0ZXIoKHBs
YXRmb3JtKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gdGVzdHMuZXZlcnkoKHRlc3QpID0+IHsK
KyAgICAgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IFRyaWdnZXJhYmxlLmZpbmRCeVRl
c3RDb25maWd1cmF0aW9uKHRlc3QsIHBsYXRmb3JtKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJpZ2dlcmFibGUgJiYgIXRyaWdnZXJhYmxlLmlzRGlzYWJsZWQoKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KSk7CisgICAgfQogfQogCiBjbGFzcyBUcmlnZ2VyYWJsZVJlcG9zaXRvcnlH
cm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewpAQCAtNjQsNiArNzcsMjEgQEAKICAgICBkZXNj
cmlwdGlvbigpIHsgcmV0dXJuIHRoaXMuX2Rlc2NyaXB0aW9uIHx8IHRoaXMubmFtZSgpOyB9CiAg
ICAgYWNjZXB0c0N1c3RvbVJvb3RzKCkgeyByZXR1cm4gdGhpcy5fYWNjZXB0c0N1c3RvbVJvb3Rz
OyB9CiAgICAgcmVwb3NpdG9yaWVzKCkgeyByZXR1cm4gdGhpcy5fcmVwb3NpdG9yaWVzOyB9CisK
KyAgICBzdGF0aWMgc29ydEJ5TmFtZVByZWZlcnJpbmdTbWFsbGVyUmVwb3NpdG9yaWVzKGdyb3Vw
TGlzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBncm91cExpc3Quc29ydCgoYSwgYikgPT4gewor
ICAgICAgICAgICAgaWYgKGEucmVwb3NpdG9yaWVzKCkubGVuZ3RoIDwgYi5yZXBvc2l0b3JpZXMo
KS5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgZWxzZSBp
ZiAoYS5yZXBvc2l0b3JpZXMoKS5sZW5ndGggPiBiLnJlcG9zaXRvcmllcygpLmxlbmd0aCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIGlmIChhLm5hbWUoKSA8IGIubmFt
ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGEu
bmFtZSgpID4gYi5uYW1lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiBpZiAodHlwZW9mIG1vZHVsZSAh
PSAndW5kZWZpbmVkJykgewpJbmRleDogcHVibGljL3YzL21vZGVscy91cGxvYWRlZC1maWxlLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHB1YmxpYy92My9tb2RlbHMvdXBsb2FkZWQtZmlsZS5qcwkocmV2aXNp
b24gMjE1MTIzKQorKysgcHVibGljL3YzL21vZGVscy91cGxvYWRlZC1maWxlLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xMiw4ICsxMiwxNSBAQAogICAgICAgICB0aGlzLmVuc3VyZU5hbWVkU3RhdGlj
TWFwKCdzaGEyNTYnKVtvYmplY3Quc2hhMjU2XSA9IHRoaXM7CiAgICAgfQogCisgICAgY3JlYXRl
ZEF0KCkgeyByZXR1cm4gdGhpcy5fY3JlYXRlZEF0OyB9CisgICAgZmlsZW5hbWUoKSB7IHJldHVy
biB0aGlzLl9maWxlbmFtZTsgfQorICAgIGF1dGhvcigpIHsgcmV0dXJuIHRoaXMuX2F1dGhvcjsg
fQorICAgIHNpemUoKSB7IHJldHVybiB0aGlzLl9zaXplOyB9CisKICAgICBzdGF0aWMgdXBsb2Fk
RmlsZShmaWxlLCB1cGxvYWRQcm9ncmVzc0NhbGxiYWNrID0gbnVsbCkKICAgICB7CisgICAgICAg
IGlmIChmaWxlLnNpemUgPiBVcGxvYWRlZEZpbGUuZmlsZVVwbG9hZFNpemVMaW1pdCkKKyAgICAg
ICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgnRmlsZVNpemVMaW1pdEV4Y2VlZGVkJyk7CiAg
ICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGxvYWQtZmlsZScsIHsn
bmV3RmlsZSc6IGZpbGV9LCB7dXNlRm9ybURhdGE6IHRydWUsIHVwbG9hZFByb2dyZXNzQ2FsbGJh
Y2t9KS50aGVuKChyYXdEYXRhKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVXBsb2FkZWRGaWxl
LmVuc3VyZVNpbmdsZXRvbihyYXdEYXRhWyd1cGxvYWRlZEZpbGUnXS5pZCwgcmF3RGF0YVsndXBs
b2FkZWRGaWxlJ10pOwogICAgICAgICB9KTsKQEAgLTIxLDYgKzI4LDggQEAKIAogICAgIHN0YXRp
YyBmZXRjaFVubG9hZGVkRmlsZVdpdGhJZGVudGljYWxIYXNoKGZpbGUpCiAgICAgeworICAgICAg
ICBpZiAoZmlsZS5zaXplID4gVXBsb2FkZWRGaWxlLmZpbGVVcGxvYWRTaXplTGltaXQpCisgICAg
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ0ZpbGVTaXplTGltaXRFeGNlZWRlZCcpOwog
ICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICAg
ICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgICAgICAgICAgIHJlYWRl
ci5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQpOwpAQCAtMzIsOSArNDEsMTEg
QEAKICAgICAgICAgICAgIGNvbnN0IG1hcCA9IHRoaXMubmFtZWRTdGF0aWNNYXAoJ3NoYTI1Nicp
OwogICAgICAgICAgICAgaWYgKG1hcCAmJiBzaGEyNTYgaW4gbWFwKQogICAgICAgICAgICAgICAg
IHJldHVybiBtYXBbc2hhMjU2XTsKLSAgICAgICAgICAgIHJldHVybiBSZW1vdGVBUEkuZ2V0SlNP
TldpdGhTdGF0dXMoYC4uL2FwaS91cGxvYWRlZC1maWxlP3NoYTI1Nj0ke3NoYTI1Nn1gKS50aGVu
KChyYXdEYXRhKSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKCFyYXdEYXRhWyd1cGxvYWRlZEZp
bGUnXSkKKyAgICAgICAgICAgIHJldHVybiBSZW1vdGVBUEkuZ2V0SlNPTihgLi4vYXBpL3VwbG9h
ZGVkLWZpbGU/c2hhMjU2PSR7c2hhMjU2fWApLnRoZW4oKHJhd0RhdGEpID0+IHsKKyAgICAgICAg
ICAgICAgICBpZiAocmF3RGF0YVsnc3RhdHVzJ10gPT0gJ05vdEZvdW5kJyB8fCAhcmF3RGF0YVsn
dXBsb2FkZWRGaWxlJ10pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAg
ICAgICAgICAgIGlmIChyYXdEYXRhWydzdGF0dXMnXSAhPSAnT0snKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmF3RGF0YVsnc3RhdHVzJ10pOwogICAgICAgICAg
ICAgICAgIHJldHVybiBVcGxvYWRlZEZpbGUuZW5zdXJlU2luZ2xldG9uKHJhd0RhdGFbJ3VwbG9h
ZGVkRmlsZSddLmlkLCByYXdEYXRhWyd1cGxvYWRlZEZpbGUnXSk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfSk7CkBAIC01MiwzICs2Myw4IEBACiAgICAgfQogCiB9CisKK1VwbG9hZGVkRmls
ZS5maWxlVXBsb2FkU2l6ZUxpbWl0ID0gMDsKKworaWYgKHR5cGVvZiBtb2R1bGUgIT0gJ3VuZGVm
aW5lZCcpCisgICAgbW9kdWxlLmV4cG9ydHMuVXBsb2FkZWRGaWxlID0gVXBsb2FkZWRGaWxlOwpJ
bmRleDogcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLWNhdGVnb3J5LXBhZ2UuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLWNhdGVnb3J5LXBhZ2UuanMJKHJldmlzaW9u
IDIxNTEyMykKKysrIHB1YmxpYy92My9wYWdlcy9hbmFseXNpcy1jYXRlZ29yeS1wYWdlLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjMsMTEgKzEyMyw5IEBACiAgICAgICAgIEluc3RydW1lbnRhdGlv
bi5zdGFydE1lYXN1cmluZ1RpbWUoJ0FuYWx5c2lzQ2F0ZWdvcnlQYWdlJywgJ3JlY29uc3RydWN0
VGFza0xpc3QnKTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLnJvdXRlcigpKTsKLSAg
ICAgICAgdmFyIGN1cnJlbnRDYXRlZ29yeSA9IHRoaXMuX2NhdGVnb3J5VG9vbGJhci5jdXJyZW50
Q2F0ZWdvcnkoKTsKKyAgICAgICAgY29uc3QgY3VycmVudENhdGVnb3J5ID0gdGhpcy5fY2F0ZWdv
cnlUb29sYmFyLmN1cnJlbnRDYXRlZ29yeSgpOwogCi0gICAgICAgIHZhciB0YXNrcyA9IEFuYWx5
c2lzVGFzay5hbGwoKS5maWx0ZXIoZnVuY3Rpb24gKHRhc2spIHsKLSAgICAgICAgICAgIHJldHVy
biB0YXNrLmNhdGVnb3J5KCkgPT0gY3VycmVudENhdGVnb3J5OwotICAgICAgICB9KS5zb3J0KGZ1
bmN0aW9uIChhLCBiKSB7CisgICAgICAgIGNvbnN0IHRhc2tzID0gQW5hbHlzaXNUYXNrLmFsbCgp
LmZpbHRlcigodGFzaykgPT4gdGFzay5jYXRlZ29yeSgpID09IGN1cnJlbnRDYXRlZ29yeSkuc29y
dCgoYSwgYikgPT4gewogICAgICAgICAgICAgaWYgKGEuaGFzUGVuZGluZ1JlcXVlc3RzKCkgPT0g
Yi5oYXNQZW5kaW5nUmVxdWVzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gYi5jcmVhdGVk
QXQoKSAtIGEuY3JlYXRlZEF0KCk7CiAgICAgICAgICAgICBlbHNlIGlmIChhLmhhc1BlbmRpbmdS
ZXF1ZXN0cygpKSAvLyBhIDwgYgpAQCAtMTM3LDI1ICsxMzUsMjUgQEAKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICB9KTsKIAotICAgICAgICB2YXIgZWxlbWVudCA9IENvbXBvbmVudEJh
c2UuY3JlYXRlRWxlbWVudDsKLSAgICAgICAgdmFyIGxpbmsgPSBDb21wb25lbnRCYXNlLmNyZWF0
ZUxpbms7Ci0gICAgICAgIHZhciByb3V0ZXIgPSB0aGlzLnJvdXRlcigpOworICAgICAgICBjb25z
dCBlbGVtZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OworICAgICAgICBjb25zdCBs
aW5rID0gQ29tcG9uZW50QmFzZS5jcmVhdGVMaW5rOworICAgICAgICBjb25zdCByb3V0ZXIgPSB0
aGlzLnJvdXRlcigpOwogICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50KCku
cXVlcnlTZWxlY3RvcigndGJvZHkuYW5hbHlzaXMtdGFza3MnKSwKLSAgICAgICAgICAgIHRhc2tz
Lm1hcChmdW5jdGlvbiAodGFzaykgewotICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBBbmFs
eXNpc0NhdGVnb3J5UGFnZS5fY29tcHV0ZVN0YXR1cyh0YXNrKTsKKyAgICAgICAgICAgIHRhc2tz
Lm1hcCgodGFzaykgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IEFuYWx5c2lz
Q2F0ZWdvcnlQYWdlLl9jb21wdXRlU3RhdHVzKHRhc2spOwogICAgICAgICAgICAgICAgIHJldHVy
biBlbGVtZW50KCd0cicsIFsKICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCgndGQnLCB7Y2xh
c3M6ICdzdGF0dXMnfSwKICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3NwYW4nLCB7
Y2xhc3M6IHN0YXR1cy5jbGFzc30sIHN0YXR1cy5sYWJlbCkpLAogICAgICAgICAgICAgICAgICAg
ICBlbGVtZW50KCd0ZCcsIGxpbmsodGFzay5sYWJlbCgpLCByb3V0ZXIudXJsKGBhbmFseXNpcy90
YXNrLyR7dGFzay5pZCgpfWApKSksICAgIAogICAgICAgICAgICAgICAgICAgICBlbGVtZW50KCd0
ZCcsIHtjbGFzczogJ2J1Z3MnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3Vs
JywgdGFzay5idWdzKCkubWFwKGZ1bmN0aW9uIChidWcpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgdXJsID0gYnVnLnVybCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciB0aXRsZSA9IGJ1Zy50aXRsZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVu
dCgndWwnLCB0YXNrLmJ1Z3MoKS5tYXAoKGJ1ZykgPT4geworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVybCA9IGJ1Zy51cmwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB0aXRsZSA9IGJ1Zy50aXRsZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBlbGVtZW50KCdsaScsIHVybCA/IGxpbmsoYnVnLmxhYmVsKCksIHRpdGxlLCB1cmws
IHRydWUpIDogdGl0bGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSwKICAgICAgICAg
ICAgICAgICAgICAgZWxlbWVudCgndGQnLCB7Y2xhc3M6ICdhdXRob3InfSwgdGFzay5hdXRob3Io
KSksCi0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3RkJywge2NsYXNzOiAncGxhdGZvcm0n
fSwgdGFzay5wbGF0Zm9ybSgpLmxhYmVsKCkpLAotICAgICAgICAgICAgICAgICAgICBlbGVtZW50
KCd0ZCcsIHRhc2subWV0cmljKCkuZnVsbE5hbWUoKSksCisgICAgICAgICAgICAgICAgICAgIGVs
ZW1lbnQoJ3RkJywge2NsYXNzOiAncGxhdGZvcm0nfSwgdGFzay5wbGF0Zm9ybSgpID8gdGFzay5w
bGF0Zm9ybSgpLmxhYmVsKCkgOiBudWxsKSwKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudCgn
dGQnLCB0YXNrLm1ldHJpYygpID8gdGFzay5tZXRyaWMoKS5mdWxsTmFtZSgpIDogbnVsbCksCiAg
ICAgICAgICAgICAgICAgICAgIF0pOwogICAgICAgICAgICAgfSkpOwogCkluZGV4OiBwdWJsaWMv
djMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHB1YmxpYy92My9w
YWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMJKHJldmlzaW9uIDIxNTEyMykKKysrIHB1YmxpYy92
My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTQwOSw3ICs0
MDksMTMgQEAKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3Rhc2spOwogCiAgICAgICAg
IHRoaXMuX3Rhc2sgPSB0YXNrOworICAgICAgICBjb25zdCBidWdMaXN0ID0gdGhpcy5wYXJ0KCdi
dWctbGlzdCcpOworICAgICAgICB0aGlzLnBhcnQoJ2J1Zy1saXN0Jykuc2V0VGFzayh0aGlzLl90
YXNrKTsKKyAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKIAorICAgICAgICBpZiAodGFz
ay5pc0N1c3RvbSgpKQorICAgICAgICAgICAgcmV0dXJuIHRhc2s7CisKICAgICAgICAgY29uc3Qg
cGxhdGZvcm0gPSB0YXNrLnBsYXRmb3JtKCk7CiAgICAgICAgIGNvbnN0IG1ldHJpYyA9IHRhc2su
bWV0cmljKCk7CiAgICAgICAgIGNvbnN0IGxhc3RNb2RpZmllZCA9IHBsYXRmb3JtLmxhc3RNb2Rp
ZmllZChtZXRyaWMpOwpAQCAtNDI2LDExICs0MzIsNiBAQAogICAgICAgICBjaGFydC5zZXRPdmVy
dmlld0RvbWFpbihkb21haW5bMF0sIGRvbWFpblsxXSk7CiAgICAgICAgIGNoYXJ0LnNldE1haW5E
b21haW4oZG9tYWluWzBdLCBkb21haW5bMV0pOwogCi0gICAgICAgIGNvbnN0IGJ1Z0xpc3QgPSB0
aGlzLnBhcnQoJ2J1Zy1saXN0Jyk7Ci0gICAgICAgIHRoaXMucGFydCgnYnVnLWxpc3QnKS5zZXRU
YXNrKHRoaXMuX3Rhc2spOwotCi0gICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7Ci0KICAg
ICAgICAgcmV0dXJuIHRhc2s7CiAgICAgfQogCkBAIC01MDcsMTAgKzUwOCwxMCBAQAogICAgICAg
ICB0aGlzLl9yZW5kZXJDYXVzZUFuZEZpeGVzTGF6aWx5LmV2YWx1YXRlKHRoaXMuX3N0YXJ0UG9p
bnQsIHRoaXMuX3Rhc2spOwogICAgICAgICB0aGlzLl9yZW5kZXJSZWxhdGVkVGFza3NMYXppbHku
ZXZhbHVhdGUodGhpcy5fdGFzaywgdGhpcy5fcmVsYXRlZFRhc2tzKTsKIAotICAgICAgICB0aGlz
LmNvbnRlbnQoJ2NoYXJ0LXBhbmUnKS5zdHlsZS5kaXNwbGF5ID0gdGhpcy5fdGFzayA/IG51bGwg
OiAnbm9uZSc7CisgICAgICAgIHRoaXMuY29udGVudCgnY2hhcnQtcGFuZScpLnN0eWxlLmRpc3Bs
YXkgPSB0aGlzLl90YXNrICYmICF0aGlzLl90YXNrLmlzQ3VzdG9tKCkgPyBudWxsIDogJ25vbmUn
OwogICAgICAgICB0aGlzLnBhcnQoJ2NoYXJ0LXBhbmUnKS5zZXRTaG93Rm9ybSghIXRoaXMuX3Ry
aWdnZXJhYmxlKTsKIAotICAgICAgICB0aGlzLmNvbnRlbnQoJ3Jlc3VsdHMtcGFuZScpLnN0eWxl
LmRpc3BsYXkgPSB0aGlzLl90YXNrID8gbnVsbCA6ICdub25lJzsKKyAgICAgICAgdGhpcy5jb250
ZW50KCdyZXN1bHRzLXBhbmUnKS5zdHlsZS5kaXNwbGF5ID0gdGhpcy5fdGFzayAmJiAhdGhpcy5f
dGFzay5pc0N1c3RvbSgpID8gbnVsbCA6ICdub25lJzsKICAgICAgICAgdGhpcy5wYXJ0KCdyZXN1
bHRzLXBhbmUnKS5zZXRTaG93Rm9ybSghIXRoaXMuX3RyaWdnZXJhYmxlKTsKIAogICAgICAgICBJ
bnN0cnVtZW50YXRpb24uZW5kTWVhc3VyaW5nVGltZSgnQW5hbHlzaXNUYXNrUGFnZScsICdyZW5k
ZXInKTsKQEAgLTUxOSw3ICs1MjAsNyBAQAogICAgIF9yZW5kZXJUYXNrTmFtZUFuZFN0YXR1cyh0
YXNrLCB0YXNrTmFtZSwgY2hhbmdlVHlwZSkKICAgICB7CiAgICAgICAgIHRoaXMucGFydCgnYW5h
bHlzaXMtdGFzay1uYW1lJykuc2V0VGV4dCh0YXNrTmFtZSk7Ci0gICAgICAgIGlmICh0YXNrKSB7
CisgICAgICAgIGlmICh0YXNrICYmICF0YXNrLmlzQ3VzdG9tKCkpIHsKICAgICAgICAgICAgIGNv
bnN0IGxpbmsgPSBDb21wb25lbnRCYXNlLmNyZWF0ZUxpbms7CiAgICAgICAgICAgICBjb25zdCBw
bGF0Zm9ybSA9IHRhc2sucGxhdGZvcm0oKTsKICAgICAgICAgICAgIGNvbnN0IG1ldHJpYyA9IHRh
c2subWV0cmljKCk7CkluZGV4OiBwdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS1zdGF0dXMtdmll
dy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBwdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS1zdGF0dXMtdmll
dy5qcwkocmV2aXNpb24gMjE1MTIzKQorKysgcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUtc3Rh
dHVzLXZpZXcuanMJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAKICAgICAgICAgICAg
ICAgICBlbGVtZW50KCd0ZCcsICdCdWlsZCcpLAogICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3Rk
Jywge2NvbHNwYW46IDJ9LCBbCiAgICAgICAgICAgICAgICAgICAgIHVybCA/IGxpbmsoYnVpbGRO
dW1iZXIsIGJ1aWxkLmxhYmVsKCksIHVybCwgdHJ1ZSkgOiBidWlsZE51bWJlciwKLSAgICAgICAg
ICAgICAgICAgICAgYCAoJHt0aGlzLl9mb3JtYXRUaW1lKGJ1aWxkLmJ1aWxkVGltZSgpKX0pYAor
ICAgICAgICAgICAgICAgICAgICBgICgke01ldHJpYy5mb3JtYXRUaW1lKGJ1aWxkLmJ1aWxkVGlt
ZSgpKX0pYAogICAgICAgICAgICAgICAgIF0pLAogICAgICAgICAgICAgXSkpOwogICAgICAgICB9
CkBAIC03MiwxMiArNzIsNiBAQAogICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250
ZW50KCdidWlsZC1yZXZpc2lvbicpLCB0YWJsZUNvbnRlbnQpOwogICAgIH0KIAotICAgIF9mb3Jt
YXRUaW1lKGRhdGUpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChkYXRlIGluc3RhbmNl
b2YgRGF0ZSk7Ci0gICAgICAgIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgnVCcs
ICcgJykucmVwbGFjZSgvXC5cZCtaJC8sICcnKTsKLSAgICB9Ci0KICAgICBzZXRDdXJyZW50UmVw
b3NpdG9yeShyZXBvc2l0b3J5KQogICAgIHsKICAgICAgICAgdGhpcy5fY3VycmVudFJlcG9zaXRv
cnkgPSByZXBvc2l0b3J5OwpJbmRleDogcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanMJKHJldmlzaW9uIDIxNTEy
MykKKysrIHB1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
OSw3ICsxOSw3IEBACiAgICAgfQogfQogCi12YXIgQ2hhcnRUcmVuZExpbmVUeXBlcyA9IFsKK2Nv
bnN0IENoYXJ0VHJlbmRMaW5lVHlwZXMgPSBbCiAgICAgewogICAgICAgICBpZDogMCwKICAgICAg
ICAgbGFiZWw6ICdOb25lJywKQEAgLTE5NiwxNSArMTk2LDE1IEBACiAKICAgICBfYW5hbHl6ZVJh
bmdlKHN0YXJ0UG9pbnQsIGVuZFBvaW50KQogICAgIHsKLSAgICAgICAgdmFyIHJvdXRlciA9IHRo
aXMuX2NoYXJ0c1BhZ2Uucm91dGVyKCk7Ci0gICAgICAgIHZhciBuZXdXaW5kb3cgPSB3aW5kb3cu
b3Blbihyb3V0ZXIudXJsKCdhbmFseXNpcy90YXNrL2NyZWF0ZScpLCAnX2JsYW5rJyk7CisgICAg
ICAgIGNvbnN0IHJvdXRlciA9IHRoaXMuX2NoYXJ0c1BhZ2Uucm91dGVyKCk7CisgICAgICAgIGNv
bnN0IG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKHJvdXRlci51cmwoJ2FuYWx5c2lzL3Rhc2svY3Jl
YXRlJywge2luUHJvZ3Jlc3M6IHRydWV9KSwgJ19ibGFuaycpOwogCi0gICAgICAgIHZhciBhbmFs
eXplUG9wb3ZlciA9IHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5jaGFydC1wYW5lLWFu
YWx5emUtcG9wb3ZlcicpOwotICAgICAgICB2YXIgbmFtZSA9IGFuYWx5emVQb3BvdmVyLnF1ZXJ5
U2VsZWN0b3IoJ2lucHV0JykudmFsdWU7CisgICAgICAgIGNvbnN0IGFuYWx5emVQb3BvdmVyID0g
dGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLmNoYXJ0LXBhbmUtYW5hbHl6ZS1wb3BvdmVy
Jyk7CisgICAgICAgIGNvbnN0IG5hbWUgPSBhbmFseXplUG9wb3Zlci5xdWVyeVNlbGVjdG9yKCdp
bnB1dCcpLnZhbHVlOwogICAgICAgICBBbmFseXNpc1Rhc2suY3JlYXRlKG5hbWUsIHN0YXJ0UG9p
bnQuaWQsIGVuZFBvaW50LmlkKS50aGVuKChkYXRhKSA9PiB7CiAgICAgICAgICAgICBuZXdXaW5k
b3cubG9jYXRpb24uaHJlZiA9IHJvdXRlci51cmwoJ2FuYWx5c2lzL3Rhc2svJyArIGRhdGFbJ3Rh
c2tJZCddKTsKICAgICAgICAgICAgIHRoaXMuZmV0Y2hBbmFseXNpc1Rhc2tzKHRydWUpOwotICAg
ICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKKyAgICAgICAgfSwgKGVycm9yKSA9PiB7CiAgICAg
ICAgICAgICBuZXdXaW5kb3cubG9jYXRpb24uaHJlZiA9IHJvdXRlci51cmwoJ2FuYWx5c2lzL3Rh
c2svY3JlYXRlJywge2Vycm9yOiBlcnJvcn0pOwogICAgICAgICB9KTsKICAgICB9CkBAIC0yNzIs
NyArMjcyLDYgQEAKICAgICAgICAgaWYgKGhhc1NlbGVjdGVkUG9pbnRzKSB7CiAgICAgICAgICAg
ICBhY3Rpb25zLnB1c2godGhpcy5fbWFrZVBvcG92ZXJBY3Rpb25JdGVtKGFuYWx5emVQb3BvdmVy
LCAnQW5hbHl6ZScsIGZhbHNlKSk7CiAgICAgICAgICAgICBhbmFseXplUG9wb3Zlci5vbnN1Ym1p
dCA9IHRoaXMuY3JlYXRlRXZlbnRIYW5kbGVyKCgpID0+IHsKLSAgICAgICAgICAgICAgICBjb25z
b2xlLmxvZyhzZWxlY3RlZFBvaW50cy5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgdGhpcy5f
YW5hbHl6ZVJhbmdlKHNlbGVjdGVkUG9pbnRzLmZpcnN0UG9pbnQoKSwgc2VsZWN0ZWRQb2ludHMu
bGFzdFBvaW50KCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CkluZGV4OiBw
dWJsaWMvdjMvcGFnZXMvY3JlYXRlLWFuYWx5c2lzLXRhc2stcGFnZS5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBwdWJsaWMvdjMvcGFnZXMvY3JlYXRlLWFuYWx5c2lzLXRhc2stcGFnZS5qcwkocmV2aXNpb24g
MjE1MTIzKQorKysgcHVibGljL3YzL3BhZ2VzL2NyZWF0ZS1hbmFseXNpcy10YXNrLXBhZ2UuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw4IEBACiAgICAgY29uc3RydWN0b3IoKQogICAgIHsK
ICAgICAgICAgc3VwZXIoJ0NyZWF0ZSBBbmFseXNpcyBUYXNrJyk7Ci0gICAgICAgIHRoaXMuX2Vy
cm9yTWVzc2FnZSA9IG51bGw7CisgICAgICAgIHRoaXMuX21lc3NhZ2UgPSBudWxsOworICAgICAg
ICB0aGlzLl9yZW5kZXJNZXNzYWdlTGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRlZEZ1bmN0aW9u
KHRoaXMuX3JlbmRlck1lc3NhZ2UuYmluZCh0aGlzKSk7CiAgICAgfQogCiAgICAgdGl0bGUoKSB7
IHJldHVybiAnQ3JlYXRpbmcgYSBOZXcgQW5hbHlzaXMgVGFzayc7IH0KQEAgLTEzLDQzICsxNCwx
MTEgQEAKICAgICB7CiAgICAgICAgIGlmIChzdGF0ZS5lcnJvciBpbnN0YW5jZW9mIFNldCkKICAg
ICAgICAgICAgIHN0YXRlLmVycm9yID0gQXJyYXkuZnJvbShzdGF0ZS5lcnJvci52YWx1ZXMoKSlb
MF07CisgICAgICAgIHRoaXMuX21lc3NhZ2UgPSBzdGF0ZS5lcnJvciB8fCAoc3RhdGUuaW5Qcm9n
cmVzcyA/ICdDcmVhdGluZyB0aGUgYW5hbHlzaXMgdGFzayBwYWdlLi4uJyA6ICcnKTsKKyAgICB9
CiAKLSAgICAgICAgdGhpcy5fZXJyb3JNZXNzYWdlID0gc3RhdGUuZXJyb3I7Ci0gICAgICAgIGlm
ICghaXNPcGVuKQotICAgICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKKyAgICBkaWRD
b25zdHJ1Y3RTaGFkb3dUcmVlKCkKKyAgICB7CisgICAgICAgIHRoaXMucGFydCgnY29uZmlndXJh
dG9yJykubGlzdGVuVG9BY3Rpb24oJ2NvbW1pdFNldENoYW5nZScsICgpID0+IHRoaXMuZW5xdWV1
ZVRvUmVuZGVyKCkpOworICAgICAgICB0aGlzLmNvbnRlbnQoJ3N0YXJ0LWJ1dHRvbicpLm9uY2xp
Y2sgPSB0aGlzLmNyZWF0ZUV2ZW50SGFuZGxlcigoKSA9PiB0aGlzLl9jcmVhdGVBbmFseXNpc1Rh
c2tXaXRoR3JvdXAoKSk7CiAgICAgfQogCisgICAgX2NyZWF0ZUFuYWx5c2lzVGFza1dpdGhHcm91
cCgpCisgICAgeworICAgICAgICBjb25zdCB0YXNrTmFtZUlucHV0ID0gdGhpcy5jb250ZW50KCd0
YXNrLW5hbWUnKTsKKyAgICAgICAgaWYgKCF0YXNrTmFtZUlucHV0LnJlcG9ydFZhbGlkaXR5KCkp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc3QgdGVzdEdyb3VwSW5wdXQgPSB0
aGlzLmNvbnRlbnQoJ3Rlc3QtZ3JvdXAtbmFtZScpOworICAgICAgICBpZiAoIXRlc3RHcm91cElu
cHV0LnJlcG9ydFZhbGlkaXR5KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29u
c3QgY29uZmlndXJhdG9yID0gdGhpcy5wYXJ0KCdjb25maWd1cmF0b3InKTsKKyAgICAgICAgY29u
c3QgdGVzdHMgPSBjb25maWd1cmF0b3IudGVzdHMoKTsKKyAgICAgICAgaWYgKHRlc3RzLmxlbmd0
aCAhPSAxKQorICAgICAgICAgICAgcmV0dXJuIGFsZXJ0KCdFeGFjdGx5IG9uZSB0ZXN0IG11c3Qg
YmUgc2VsZWN0ZWQnKTsKKworICAgICAgICBjb25zdCB0YXNrTmFtZSA9IHRhc2tOYW1lSW5wdXQu
dmFsdWU7CisgICAgICAgIGNvbnN0IHRlc3RHcm91cE5hbWUgPSB0ZXN0R3JvdXBJbnB1dC52YWx1
ZTsKKyAgICAgICAgY29uc3QgaXRlcmF0aW9uQ291bnQgPSB0aGlzLmNvbnRlbnQoJ2l0ZXJhdGlv
bi1jb3VudCcpLnZhbHVlOworICAgICAgICBjb25zdCBwbGF0Zm9ybSA9IGNvbmZpZ3VyYXRvci5w
bGF0Zm9ybSgpOworICAgICAgICBjb25zdCBjb21taXRTZXRzID0gY29uZmlndXJhdG9yLmNvbW1p
dFNldHMoKTsKKworICAgICAgICBUZXN0R3JvdXAuY3JlYXRlV2l0aFRhc2sodGFza05hbWUsIHBs
YXRmb3JtLCB0ZXN0c1swXSwgdGVzdEdyb3VwTmFtZSwgaXRlcmF0aW9uQ291bnQsIGNvbW1pdFNl
dHMpLnRoZW4oKHRhc2spID0+IHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCd5YXk/JywgdGFz
ayk7CisgICAgICAgICAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlcigpLnVybChgYW5hbHlzaXMv
dGFzay8ke3Rhc2suaWQoKX1gKTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCdtb3ZpbmcgdG8g
JyArIHVybCk7CisgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gdGhpcy5yb3V0ZXIoKS51cmwo
YGFuYWx5c2lzL3Rhc2svJHt0YXNrLmlkKCl9YCk7CisgICAgICAgIH0sIChlcnJvcikgPT4gewor
ICAgICAgICAgICAgYWxlcnQoJ0ZhaWxlZCB0byBjcmVhdGUgYSBuZXcgdGVzdCBncm91cDogJyAr
IGVycm9yKTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgcmVuZGVyKCkKICAgICB7CiAgICAg
ICAgIHN1cGVyLnJlbmRlcigpOwotICAgICAgICBpZiAodGhpcy5fZXJyb3JNZXNzYWdlKQotICAg
ICAgICAgICAgdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLm1lc3NhZ2UnKS50ZXh0Q29u
dGVudCA9IHRoaXMuX2Vycm9yTWVzc2FnZTsKKyAgICAgICAgY29uc3QgY29uZmlndXJhdG9yID0g
dGhpcy5wYXJ0KCdjb25maWd1cmF0b3InKTsKKyAgICAgICAgdGhpcy5fcmVuZGVyTWVzc2FnZUxh
emlseS5ldmFsdWF0ZSh0aGlzLl9tZXNzYWdlLCAhIWNvbmZpZ3VyYXRvci5jb21taXRTZXRzKCks
IGNvbmZpZ3VyYXRvci50ZXN0cygpLCBjb25maWd1cmF0b3IucGxhdGZvcm0oKSk7CiAgICAgfQog
CisgICAgX3JlbmRlck1lc3NhZ2UobWVzc2FnZSwgaGFzVmFsaWRDb21taXRTZXRzLCB0ZXN0cywg
cGxhdGZvcm0pCisgICAgeworICAgICAgICBjb25zdCBtZXNzYWdlQ29udGFpbmVyID0gdGhpcy5j
b250ZW50KCdtZXNzYWdlJyk7CisgICAgICAgIG1lc3NhZ2VDb250YWluZXIudGV4dENvbnRlbnQg
PSB0aGlzLl9tZXNzYWdlOworICAgICAgICBtZXNzYWdlQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkg
PSB0aGlzLl9tZXNzYWdlID8gbnVsbCA6ICdub25lJzsKKyAgICAgICAgdGhpcy5jb250ZW50KCdu
ZXctdGFzaycpLnN0eWxlLmRpc3BsYXkgPSB0aGlzLl9tZXNzYWdlID8gJ25vbmUnIDogbnVsbDsK
KyAgICAgICAgaWYgKHBsYXRmb3JtKQorICAgICAgICAgICAgdGhpcy5jb250ZW50KCd0ZXN0LWdy
b3VwLW5hbWUnKS52YWx1ZSA9IGAke3Rlc3RzLm1hcCgodGVzdCkgPT4gdGVzdC5uYW1lKCkpLmpv
aW4oJywgJyl9IG9uICR7cGxhdGZvcm0ubmFtZSgpfWA7CisgICAgICAgIHRoaXMuY29udGVudCgn
aXRlcmF0aW9uLXN0YXJ0LXBhbmUnKS5zdHlsZS5kaXNwbGF5ID0gIXRoaXMuX21lc3NhZ2UgJiYg
aGFzVmFsaWRDb21taXRTZXRzID8gbnVsbCA6ICdub25lJzsKKyAgICAgIH0KKwogICAgIHN0YXRp
YyBodG1sVGVtcGxhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGAKLSAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImNyZWF0ZS1hbmFseXNpcy10YXNrLWNvbnRhaW5lciI+Ci0gICAgICAgICAgICAg
ICAgPHAgY2xhc3M9Im1lc3NhZ2UiPkNyZWF0aW5nIHRoZSBhbmFseXNpcyB0YXNrIHBhZ2UuLi48
L3A+Ci0gICAgICAgICAgICA8L2Rpdj4KLWA7CisgICAgICAgICAgICA8cCBpZD0ibWVzc2FnZSI+
PC9wPgorICAgICAgICAgICAgPGRpdiBpZD0ibmV3LXRhc2siPgorICAgICAgICAgICAgICAgIDxp
bnB1dCBpZD0idGFzay1uYW1lIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iTmFtZSB0aGlzIHRh
c2siIHJlcXVpcmVkPgorICAgICAgICAgICAgICAgIDxjdXN0b20tYW5hbHlzaXMtdGFzay1jb25m
aWd1cmF0b3IgaWQ9ImNvbmZpZ3VyYXRvciI+PC9jdXN0b20tYW5hbHlzaXMtdGFzay1jb25maWd1
cmF0b3I+CisgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlcmF0aW9uLXN0YXJ0LXBhbmUiPgor
ICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9InRlc3QtZ3JvdXAtbmFtZSIgcGxhY2Vob2xk
ZXI9Ik5hbWUgdGhpcyB0ZXN0IGdyb3VwIiByZXF1aXJlZD4KKyAgICAgICAgICAgICAgICAgICAg
PGxhYmVsPjxzZWxlY3QgaWQ9Iml0ZXJhdGlvbi1jb3VudCI+CisgICAgICAgICAgICAgICAgICAg
ICAgICA8b3B0aW9uPjE8L29wdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+
Mjwvb3B0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj4zPC9vcHRpb24+Cisg
ICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHNlbGVjdGVkPjQ8L29wdGlvbj4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIDxvcHRpb24+NTwvb3B0aW9uPgorICAgICAgICAgICAgICAgICAg
ICAgICAgPG9wdGlvbj42PC9vcHRpb24+CisgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PiBp
dGVyYXRpb25zIHBlciBjb25maWd1cmF0aW9uPC9sYWJlbD4KKyAgICAgICAgICAgICAgICAgICAg
PGJ1dHRvbiBpZD0ic3RhcnQtYnV0dG9uIj5TdGFydDwvYnV0dG9uPgorICAgICAgICAgICAgICAg
IDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+YDsKICAgICB9CiAKICAgICBzdGF0aWMgY3NzVGVt
cGxhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGAKLSAgICAgICAgICAgIC5jcmVhdGUtYW5h
bHlzaXMtdGFzay1jb250YWluZXIgewotICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7Cisg
ICAgICAgICAgICAjbWVzc2FnZSB7CisgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAuY3JlYXRlLWFuYWx5c2lzLXRhc2stY29u
dGFpbmVyID4gKiB7Ci0gICAgICAgICAgICAgICAgbWFyZ2luOiAxcmVtIGF1dG87Ci0gICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgI25ldy10YXNrID4g
KiB7CisgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAxcmVtOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAuY3JlYXRlLWFuYWx5c2lz
LXRhc2sgaW5wdXQgewotICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKKyAgICAg
ICAgICAgICNuZXctdGFzayBpbnB1dCB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwJTsKKyAg
ICAgICAgICAgICAgICBtaW4td2lkdGg6IDEwcmVtOworICAgICAgICAgICAgICAgIGZvbnQtc2l6
ZTogMXJlbTsKKyAgICAgICAgICAgICAgICBmb250LXdlaWdodDogaW5oZXJpdDsKICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgI3N0YXJ0LWJ1dHRvbiB7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogYmxvY2s7CisgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMC41cmVtOworICAgICAg
ICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOworICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0
OiBpbmhlcml0OworICAgICAgICAgICAgfQogYDsKICAgICB9CiB9CkluZGV4OiBwdWJsaWMvdjMv
cGFnZXMvcGFnZS1yb3V0ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcHVibGljL3YzL3BhZ2VzL3BhZ2Ut
cm91dGVyLmpzCShyZXZpc2lvbiAyMTUxMjMpCisrKyBwdWJsaWMvdjMvcGFnZXMvcGFnZS1yb3V0
ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICAgICAgICAgICAgIGRlc3Rp
bmF0aW9uUGFnZS5vcGVuKHBhcnNlZC5zdGF0ZSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgZGVzdGluYXRpb25QYWdlLnVwZGF0ZUZyb21TZXJpYWxpemVkU3RhdGUocGFyc2VkLnN0YXRl
LCBmYWxzZSk7CisgICAgICAgIGRlc3RpbmF0aW9uUGFnZS5lbnF1ZXVlVG9SZW5kZXIoKTsKIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBzZXJ2ZXItdGVzdHMvYXBpLWJ1aWxk
LXJlcXVlc3RzLXRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNlcnZlci10ZXN0cy9hcGktYnVpbGQt
cmVxdWVzdHMtdGVzdHMuanMJKHJldmlzaW9uIDIxNTEyMykKKysrIHNlcnZlci10ZXN0cy9hcGkt
YnVpbGQtcmVxdWVzdHMtdGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAK
ICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddLCBb
XSk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXSwg
W10pOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50Wydjb21taXRzJ10sIFtd
KTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoT2JqZWN0LmtleXMoY29udGVudCkuc29y
dCgpLCBbJ2J1aWxkUmVxdWVzdHMnLCAnY29tbWl0U2V0cycsICdjb21taXRzJywgJ3N0YXR1cydd
KTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoT2JqZWN0LmtleXMoY29udGVudCkuc29y
dCgpLCBbJ2J1aWxkUmVxdWVzdHMnLCAnY29tbWl0U2V0cycsICdjb21taXRzJywgJ3N0YXR1cycs
ICd1cGxvYWRlZEZpbGVzJ10pOwogICAgICAgICB9KTsKICAgICB9KTsKIApAQCAtMzEsNyArMzEs
NyBAQAogICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRh
YmFzZSgpKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKCcvYXBpL2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtp
dCcpOwogICAgICAgICB9KS50aGVuKChjb250ZW50KSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKE9iamVjdC5rZXlzKGNvbnRlbnQpLnNvcnQoKSwgWydidWlsZFJlcXVlc3RzJywg
J2NvbW1pdFNldHMnLCAnY29tbWl0cycsICdzdGF0dXMnXSk7CisgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKE9iamVjdC5rZXlzKGNvbnRlbnQpLnNvcnQoKSwgWydidWlsZFJlcXVlc3RzJywg
J2NvbW1pdFNldHMnLCAnY29tbWl0cycsICdzdGF0dXMnLCAndXBsb2FkZWRGaWxlcyddKTsKIAog
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXS5sZW5ndGgsIDIp
OwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVswXS5pZCwg
NDAxKTsKQEAgLTg1LDcgKzg1LDcgQEAKICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tE
YXRhKFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OV2l0aFN0YXR1cygnL2FwaS9idWlsZC1y
ZXF1ZXN0cy9idWlsZC13ZWJraXQ/dXNlTGVnYWN5SWRSZXNvbHV0aW9uPXRydWUnKTsKICAgICAg
ICAgfSkudGhlbigoY29udGVudCkgPT4gewotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChP
YmplY3Qua2V5cyhjb250ZW50KS5zb3J0KCksIFsnYnVpbGRSZXF1ZXN0cycsICdjb21taXRTZXRz
JywgJ2NvbW1pdHMnLCAnc3RhdHVzJ10pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChP
YmplY3Qua2V5cyhjb250ZW50KS5zb3J0KCksIFsnYnVpbGRSZXF1ZXN0cycsICdjb21taXRTZXRz
JywgJ2NvbW1pdHMnLCAnc3RhdHVzJywgJ3VwbG9hZGVkRmlsZXMnXSk7CiAKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRTZXRzJ10ubGVuZ3RoLCAyKTsKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMF0uaWQsIDQwMSk7CkBAIC0y
MTcsMTEgKzIxNywxMSBAQAogCiAgICAgICAgICAgICBsZXQgZmlyc3RXZWJLaXRDb21taXQgPSBm
aXJzdENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KHdlYmtpdCk7CiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoZmlyc3RXZWJLaXRDb21taXQucmV2aXNpb24oKSwgJzE5MTYyMicpOwotICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKCtmaXJzdFdlYktpdENvbW1pdC50aW1lKCksIDE0NDU5NDU4
MTY4NzgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKCtmaXJzdFdlYktpdENvbW1pdC50aW1l
KCksICtuZXcgRGF0ZSgnMjAxNS0xMC0yN1QxMTozNjo1Ni44OFonKSk7CiAKICAgICAgICAgICAg
IGxldCBzZWNvbmRXZWJLaXRDb21taXQgPSBzZWNvbmRDb21taXRTZXQuY29tbWl0Rm9yUmVwb3Np
dG9yeSh3ZWJraXQpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNlY29uZFdlYktpdENvbW1p
dC5yZXZpc2lvbigpLCAnMTkyNzM2Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoK3NlY29u
ZFdlYktpdENvbW1pdC50aW1lKCksIDE0NDgyMjUzMjU2NTApOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKCtzZWNvbmRXZWJLaXRDb21taXQudGltZSgpLCArbmV3IERhdGUoJzIwMTUtMTEtMjJU
MjA6NDg6NDUuNjVaJykpOwogICAgICAgICB9KTsKICAgICB9KTsKIApAQCAtMzk2LDQgKzM5Niw1
MCBAQAogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNbN10ub3Jk
ZXIoKSwgMyk7CiAgICAgICAgIH0pOwogICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBwbGFjZSBi
dWlsZCByZXF1ZXN0cyBjcmVhdGVkIGJ5IHVzZXIgYmVmb3JlIGF1dG9tYXRpY2FsbHkgY3JlYXRl
ZCBvbmVzJywgKCkgPT4geworICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2Uo
KTsKKyAgICAgICAgY29uc3Qgc29tZVNpemUgPSAyNCAqIDEwMjQ7IC8vIGhhc2hsaWIuc2hhMjU2
KCcxJyAqIDI0ICogMTAyNCkuaGV4ZGlnZXN0KCkKKyAgICAgICAgY29uc3Qgc29tZUhhc2ggPSAn
M2ZmYWE5ZTA5ZjQ5ZDRkMjEyNTgyYzA5MmFmMmMxZGNiMmM5YjUyYzhjYTQ5YzcyZmY5OWRjYzVk
YzUwM2EyYic7CisgICAgICAgIGNvbnN0IG90aGVyU2l6ZSA9IDQyOyAvLyBoYXNobGliLnNoYTI1
NignMicgKiA0MikuaGV4ZGlnZXN0KCkKKyAgICAgICAgY29uc3Qgb3RoZXJIYXNoID0gJzY2ZTM3
OGIzZmIzNTY5MjUxNTQ0MzU4MDNjMDFhZmQxMGRhZWJiZjRhMmVkYjU4M2IzNDAzNGFhY2E3NzVh
MjYnOworICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIpLnRoZW4oKCkgPT4g
TWFuaWZlc3QuZmV0Y2goKSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gQnVpbGRS
ZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUoJ2J1aWxkLXdlYmtpdCcpOworICAgICAgICB9KS50
aGVuKChidWlsZFJlcXVlc3RzKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFVw
bG9hZGVkRmlsZS5hbGwoKSwgW10pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVx
dWVzdHMubGVuZ3RoLCA0KTsKKyAgICAgICAgICAgIGNvbnN0IHNldDAgPSBidWlsZFJlcXVlc3Rz
WzBdLmNvbW1pdFNldCgpOworICAgICAgICAgICAgY29uc3Qgc2V0MSA9IGJ1aWxkUmVxdWVzdHNb
MV0uY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1sy
XS5jb21taXRTZXQoKSwgc2V0MCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1
ZXN0c1szXS5jb21taXRTZXQoKSwgc2V0MSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KHNldDAuY3VzdG9tUm9vdHMoKSwgW10pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChz
ZXQxLmN1c3RvbVJvb3RzKCksIFtdKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCd1cGxvYWRlZF9maWxlcycsIHtpZDogMSwgZmls
ZW5hbWU6ICdzb21lLWZpbGUudGFyLmd6JywgZXh0ZW5zaW9uOiAnLnRhci5neicsIHNpemU6IHNv
bWVTaXplLCBzaGEyNTY6IHNvbWVIYXNofSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCd1
cGxvYWRlZF9maWxlcycsIHtpZDogMiwgZmlsZW5hbWU6ICdvdGhlci1maWxlLnppcCcsIGV4dGVu
c2lvbjogJy56aXAnLCBzaXplOiBvdGhlclNpemUsIHNoYTI1Njogb3RoZXJIYXNofSksCisgICAg
ICAgICAgICBdKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZGIuaW5zZXJ0
KCdjb21taXRfc2V0X3JlbGF0aW9uc2hpcHMnLCB7c2V0OiBzZXQwLmlkKCksIHJvb3RfZmlsZTog
MX0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAg
ICAgQ29tbWl0U2V0LmNsZWFyU3RhdGljTWFwKCk7CisgICAgICAgICAgICBCdWlsZFJlcXVlc3Qu
Y2xlYXJTdGF0aWNNYXAoKTsKKyAgICAgICAgICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hG
b3JUcmlnZ2VyYWJsZSgnYnVpbGQtd2Via2l0Jyk7CisgICAgICAgIH0pLnRoZW4oKGJ1aWxkUmVx
dWVzdHMpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXMgPSBVcGxvYWRlZEZp
bGUuYWxsKCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodXBsb2FkZWRGaWxlcy5sZW5ndGgs
IDEpOworCisgICAgICAgICAgICBjb25zdCBzb21lRmlsZSA9IFVwbG9hZGVkRmlsZS5maW5kQnlJ
ZCgxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzb21lRmlsZS5maWxlbmFtZSgpLCAnc29t
ZS1maWxlLnRhci5neicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVGaWxlLnNpemUo
KSwgc29tZVNpemUpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0cy5s
ZW5ndGgsIDQpOworICAgICAgICAgICAgY29uc3Qgc2V0MCA9IGJ1aWxkUmVxdWVzdHNbMF0uY29t
bWl0U2V0KCk7CisgICAgICAgICAgICBjb25zdCBzZXQxID0gYnVpbGRSZXF1ZXN0c1sxXS5jb21t
aXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzJdLmNvbW1p
dFNldCgpLCBzZXQwKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzNd
LmNvbW1pdFNldCgpLCBzZXQxKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoc2V0MC5j
dXN0b21Sb290cygpLCBbc29tZUZpbGVdKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
c2V0MS5jdXN0b21Sb290cygpLCBbXSk7CisgICAgICAgIH0pOworICAgIH0pOworCiB9KTsKSW5k
ZXg6IHNlcnZlci10ZXN0cy9hcGktY29tbWl0cy10ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzZXJ2
ZXItdGVzdHMvYXBpLWNvbW1pdHMtdGVzdHMuanMJKHJldmlzaW9uIDIxNTEyMykKKysrIHNlcnZl
ci10ZXN0cy9hcGktY29tbWl0cy10ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcg
QEAKIAogY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7CiAKK2NvbnN0IE1vY2tEYXRh
ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvbW9jay1kYXRhLmpzJyk7CiBjb25zdCBUZXN0U2VydmVy
ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMnKTsKIGNvbnN0IGFkZFNsYXZl
Rm9yUmVwb3J0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5h
ZGRTbGF2ZUZvclJlcG9ydDsKIGNvbnN0IHByZXBhcmVTZXJ2ZXJUZXN0ID0gcmVxdWlyZSgnLi9y
ZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5wcmVwYXJlU2VydmVyVGVzdDsKQEAgLTIx
Myw3ICsyMTQsNyBAQAogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0
KCJzaG91bGQgcmV0dXJuIHRoZSBvbGRlc3QgY29tbWl0IiwgKCkgPT4geworICAgICAgICBpdCgi
c2hvdWxkIHJldHVybiB0aGUgbGF0ZXN0IGNvbW1pdCIsICgpID0+IHsKICAgICAgICAgICAgIGNv
bnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7CiAgICAgICAgICAgICByZXR1cm4g
YWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdHMpLnRoZW4oKCkgPT4gewogICAgICAg
ICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT05XaXRoU3RhdHVzKCcvYXBpL3JlcG9ydC1j
b21taXRzLycsIHN1YnZlcnNpb25Db21taXRzKTsKQEAgLTIzOCw2ICsyMzksNTAgQEAKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydjb21taXRzJ11bMF1bJ3JldmlzaW9uJ10s
IHN5c3RlbVZlcnNpb25Db21taXRzWydjb21taXRzJ11bMF1bJ3JldmlzaW9uJ10pOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0pOworCisgICAgICAgIGl0KCJzaG91bGQgcmV0dXJuIHRoZSBs
YXRlc3QgY29tbWl0IGZvciBhIGdpdmVuIHBsYXRmb3JtIiwgKCkgPT4geworICAgICAgICAgICAg
Y29uc3QgbW9ja0RhdGFDb21taXRSZXBvcnRzID0geworICAgICAgICAgICAgICAgICJzbGF2ZU5h
bWUiOiAic29tZVNsYXZlIiwKKyAgICAgICAgICAgICAgICAic2xhdmVQYXNzd29yZCI6ICJzb21l
UGFzc3dvcmQiLAorICAgICAgICAgICAgICAgICJjb21taXRzIjogWworICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJXZWJLaXQiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE5MTYyMiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAidGltZSI6ICIyMDE1LTEwLTI3VDExOjM2OjU2Ljg4WiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJhY2NvdW50IjogImNhbHZhcmlzQGlnYWxpYS5j
b20ifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIjogImEgbWVzc2FnZSIsCisg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIldlYktpdCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAicmV2aXNpb24iOiAiMTkyNzM2IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1l
IjogIjIwMTUtMTEtMjJUMjA6NDg6NDUuNjVaIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJh
dXRob3IiOiB7ImFjY291bnQiOiAiYWVzdGVzQGFwcGxlLmNvbSJ9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgIm1lc3NhZ2UiOiAic29tZSBtZXNzYWdlIiwKKyAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgInJlcG9z
aXRvcnkiOiAiV2ViS2l0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIx
OTI5MDMiLAorICAgICAgICAgICAgICAgICAgICAgICAgInRpbWUiOiAiMjAxNS0xMi0wMVQyMTox
NDo0Ni45OVoiLAorICAgICAgICAgICAgICAgICAgICAgICAgImF1dGhvciI6IHsiYWNjb3VudCI6
ICJkYXJpbkBhcHBsZS5jb20ifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIjog
ImFub3RoZXIgbWVzc2FnZSIsCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb25zdCByZW1vdGUgPSBUZXN0U2VydmVy
LnJlbW90ZUFQSSgpOworICAgICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRl
c3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGFkZFNsYXZlRm9yUmVwb3J0KG1vY2tEYXRhQ29tbWl0UmVwb3J0cyk7CisgICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RKU09OV2l0
aFN0YXR1cygnL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBtb2NrRGF0YUNvbW1pdFJlcG9ydHMpOwor
ICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90
ZS5nZXRKU09OKCcvYXBpL2NvbW1pdHMvV2ViS2l0L2xhdGVzdD9wbGF0Zm9ybT0nICsgTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKSk7CisgICAgICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsK
KyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WydzdGF0dXMnXSwgJ09LJyk7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsnY29tbWl0cyddLmxlbmd0aCwgMSk7
CisgICAgICAgICAgICAgICAgY29uc3QgY29tbWl0ID0gcmVzdWx0Wydjb21taXRzJ11bMF07Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFsncmV2aXNpb24nXSwgJzE5MjczNicp
OworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRbJ3RpbWUnXSwgK25ldyBEYXRl
KCcyMDE1LTExLTIyVDIwOjQ4OjQ1LjY1WicpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKICAgICB9KTsKIAogICAgIGRlc2NyaWJlKCcvYXBpL2NvbW1pdHMvPHJlcG9zaXRvcnk+L2xh
c3QtcmVwb3J0ZWQnLCAoKSA9PiB7CkluZGV4OiBzZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGkt
Y3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc2VydmVyLXRlc3RzL3By
aXZpbGVnZWQtYXBpLWNyZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCShyZXZpc2lvbiAyMTUxMjMp
CisrKyBzZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSwxMCBAQAogJ3VzZSBzdHJpY3QnOwogCi1sZXQg
YXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7Citjb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3Nl
cnQnKTsKIAotbGV0IE1vY2tEYXRhID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvbW9jay1kYXRhLmpz
Jyk7Ci1sZXQgVGVzdFNlcnZlciA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL3Rlc3Qtc2VydmVyLmpz
Jyk7Citjb25zdCBNb2NrRGF0YSA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL21vY2stZGF0YS5qcycp
OworY29uc3QgVGVzdFNlcnZlciA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL3Rlc3Qtc2VydmVyLmpz
Jyk7Citjb25zdCBUZW1wb3JhcnlGaWxlID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvdGVtcG9yYXJ5
LWZpbGUuanMnKS5UZW1wb3JhcnlGaWxlOwogY29uc3QgYWRkU2xhdmVGb3JSZXBvcnQgPSByZXF1
aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLmFkZFNsYXZlRm9yUmVwb3J0
OwogY29uc3QgcHJlcGFyZVNlcnZlclRlc3QgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24t
b3BlcmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2ZXJUZXN0OwogCkBAIC0xMTYsNiArMTE3LDcgQEAK
IAogZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9u
ICgpIHsKICAgICBwcmVwYXJlU2VydmVyVGVzdCh0aGlzKTsKKyAgICBUZW1wb3JhcnlGaWxlLmlu
amVjdCgpOwogCiAgICAgaXQoJ3Nob3VsZCByZXR1cm4gIkludmFsaWROYW1lIiBvbiBhbiBlbXB0
eSByZXF1ZXN0JywgKCkgPT4gewogICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7fSkudGhlbigoY29udGVudCkgPT4gewpAQCAtMjYy
LDYgKzI2NCwxOCBAQAogICAgICAgICB9KTsKICAgICB9KTsKIAorICAgIGl0KCdzaG91bGQgcmV0
dXJuICJJbnZhbGlkVXBsb2FkZWRGaWxlIiB3aGVuIHJldmlzaW9uIHNldHMgY29udGFpbnMgYW4g
aW52YWxpZCBmaWxlIElEJywgKCkgPT4geworICAgICAgICByZXR1cm4gYWRkVHJpZ2dlcmFibGVB
bmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKS50aGVuKCh0YXNrSWQpID0+IHsKKyAgICAgICAgICAg
IGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmluZCgocmVwb3NpdG9yeSkgPT4gcmVw
b3NpdG9yeS5uYW1lKCkgPT0gJ1dlYktpdCcpOworICAgICAgICAgICAgY29uc3QgcmV2aXNpb25T
ZXRzID0gW3tbd2Via2l0LmlkKCldOiAnMTkxNjIyJywgJ2N1c3RvbVJvb3RzJzogWycxJ119LCB7
W3dlYmtpdC5pZCgpXTogJzEnfV07CisgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5z
ZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNr
SWQsIHJldmlzaW9uU2V0c30pLnRoZW4oKGNvbnRlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBh
c3NlcnQoZmFsc2UsICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOworICAgICAgICAgICAgfSwg
KGVycm9yKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVycm9yLCAnSW52YWxp
ZFVwbG9hZGVkRmlsZScpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwor
CiAgICAgaXQoJ3Nob3VsZCByZXR1cm4gIkludmFsaWRSZXBvc2l0b3J5IiB3aGVuIGEgcmV2aXNp
b24gc2V0IHVzZXMgYSByZXBvc2l0b3J5IG5hbWUgaW5zdGVhZCBvZiBhIHJlcG9zaXRvcnkgaWQn
LCAoKSA9PiB7CiAgICAgICAgIHJldHVybiBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3Nv
bWUgdGFzaycpLnRoZW4oKHRhc2tJZCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVn
ZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywge25hbWU6ICd0ZXN0JywgdGFz
azogdGFza0lkLCByZXZpc2lvblNldHM6IFt7J1dlYktpdCc6ICcxOTE2MjInfSwge31dfSkudGhl
bigoY29udGVudCkgPT4gewpAQCAtNDMzLDQgKzQ0Nyw4MSBAQAogICAgICAgICB9KTsKICAgICB9
KTsKIAorICAgIGl0KCdzaG91bGQgY3JlYXRlIGEgdGVzdCBncm91cCB3aXRoIGEgY3VzdG9tIHJv
b3QnLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2so
J3NvbWUgdGFzaycpLnRoZW4oKHRhc2tJZCkgPT4geworICAgICAgICAgICAgbGV0IGluc2VydGVk
R3JvdXBJZDsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdCA9IFJlcG9zaXRvcnkuYWxsKCkuZmls
dGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnV2ViS2l0JylbMF07Cisg
ICAgICAgICAgICBjb25zdCBtYWNvcyA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0
b3J5KSA9PiByZXBvc2l0b3J5Lm5hbWUoKSA9PSAnbWFjT1MnKVswXTsKKyAgICAgICAgICAgIGxl
dCB1cGxvYWRlZEZpbGU7CisgICAgICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RmlsZS5tYWtlVGVt
cG9yYXJ5RmlsZSgnc29tZS5kYXQnLCAnc29tZSBjb250ZW50JykudGhlbigoc3RyZWFtKSA9PiB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwbG9h
ZC1maWxlJywge25ld0ZpbGU6IHN0cmVhbX0sIHt1c2VGb3JtRGF0YTogdHJ1ZX0pOworICAgICAg
ICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICB1cGxvYWRlZEZp
bGUgPSByZXNwb25zZVsndXBsb2FkZWRGaWxlJ107CisgICAgICAgICAgICAgICAgY29uc3QgcmV2
aXNpb25TZXRzID0gW3tbd2Via2l0LmlkKCldOiAnMTkxNjIyJywgW21hY29zLmlkKCldOiAnMTVB
Mjg0J30sCisgICAgICAgICAgICAgICAgICAgIHtbd2Via2l0LmlkKCldOiAnMTkxNjIyJywgW21h
Y29zLmlkKCldOiAnMTVBMjg0JywgJ2N1c3RvbVJvb3RzJzogW3VwbG9hZGVkRmlsZVsnaWQnXV19
XTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3Jl
YXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNrSWQsIHJlcGV0aXRpb25D
b3VudDogMiwgcmV2aXNpb25TZXRzfSkudGhlbigoY29udGVudCkgPT4geworICAgICAgICAgICAg
ICAgICAgICBpbnNlcnRlZEdyb3VwSWQgPSBjb250ZW50Wyd0ZXN0R3JvdXBJZCddOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmZldGNoQnlUYXNrKHRhc2tJZCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KS50aGVuKCh0ZXN0R3JvdXBzKSA9PiB7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGdyb3VwLmlkKCksIGluc2VydGVkR3JvdXBJZCk7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGdyb3VwLnJlcGV0aXRpb25Db3VudCgpLCAyKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxkUmVxdWVzdHMoKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKKworICAgICAgICAgICAgICAg
IGNvbnN0IHNldDAgPSByZXF1ZXN0c1swXS5jb21taXRTZXQoKTsKKyAgICAgICAgICAgICAgICBj
b25zdCBzZXQxID0gcmVxdWVzdHNbMV0uY29tbWl0U2V0KCk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzWzJdLmNvbW1pdFNldCgpLCBzZXQwKTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10uY29tbWl0U2V0KCksIHNldDEpOworICAgICAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwoUmVwb3NpdG9yeS5zb3J0QnlOYW1lUHJlZmVycmluZ09u
ZXNXaXRoVVJMKHNldDAucmVwb3NpdG9yaWVzKCkpLCBbd2Via2l0LCBtYWNvc10pOworICAgICAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoc2V0MC5jdXN0b21Sb290cygpLCBbXSk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChSZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJy
aW5nT25lc1dpdGhVUkwoc2V0MS5yZXBvc2l0b3JpZXMoKSksIFt3ZWJraXQsIG1hY29zXSk7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChzZXQxLmN1c3RvbVJvb3RzKCksIFtVcGxv
YWRlZEZpbGUuZW5zdXJlU2luZ2xldG9uKHVwbG9hZGVkRmlsZVsnaWQnXSwgdXBsb2FkZWRGaWxl
KV0pOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJldmlzaW9uRm9yUmVwb3Np
dG9yeSh3ZWJraXQpLCAnMTkxNjIyJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNl
dDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksIHNldDEucmV2aXNpb25Gb3JSZXBvc2l0
b3J5KHdlYmtpdCkpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLmNvbW1pdEZv
clJlcG9zaXRvcnkod2Via2l0KSwgc2V0MS5jb21taXRGb3JSZXBvc2l0b3J5KHdlYmtpdCkpOwor
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZXQwLnJldmlzaW9uRm9yUmVwb3NpdG9yeSht
YWNvcyksICcxNUEyODQnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5jb21t
aXRGb3JSZXBvc2l0b3J5KG1hY29zKSwgc2V0MS5jb21taXRGb3JSZXBvc2l0b3J5KG1hY29zKSk7
CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDAucmV2aXNpb25Gb3JSZXBvc2l0b3J5
KG1hY29zKSwgc2V0MS5yZXZpc2lvbkZvclJlcG9zaXRvcnkobWFjb3MpKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQoIXNldDAuZXF1YWxzKHNldDEpKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgY3JlYXRlIGEgdGVzdCBncm91cCB3aXRo
IGFuIGFuYWx5c2lzIHRhc2snLCAoKSA9PiB7CisgICAgICAgIGxldCBpbnNlcnRlZEdyb3VwSWQ7
CisgICAgICAgIGxldCB3ZWJraXQ7CisgICAgICAgIHJldHVybiBhZGRUcmlnZ2VyYWJsZUFuZENy
ZWF0ZVRhc2soJ3NvbWUgdGFzaycpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgd2Via2l0ID0g
UmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFtZSgp
ID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dl
YmtpdC5pZCgpXTogJzE5MTYyMid9LCB7W3dlYmtpdC5pZCgpXTogJzE5MTYyMyd9XTsKKyAgICAg
ICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91
cCcsCisgICAgICAgICAgICAgICAge25hbWU6ICd0ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNr
JywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNv
bWVUZXN0SWQoKSwgcmV2aXNpb25TZXRzfSk7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4g
eworICAgICAgICAgICAgaW5zZXJ0ZWRHcm91cElkID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOwor
ICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtBbmFseXNpc1Rhc2suZmV0Y2hCeUlkKHJl
c3VsdFsndGFza0lkJ10pLCBUZXN0R3JvdXAuZmV0Y2hCeVRhc2socmVzdWx0Wyd0YXNrSWQnXSld
KTsKKyAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CisgICAgICAgICAgICBjb25zdCBbYW5h
bHlzaXNUYXNrLCB0ZXN0R3JvdXBzXSA9IHJlc3VsdDsKKworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGFuYWx5c2lzVGFzay5uYW1lKCksICdvdGhlciB0YXNrJyk7CisKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBjb25zdCBncm91
cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JvdXAuaWQoKSwg
aW5zZXJ0ZWRHcm91cElkKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChncm91cC5yZXBldGl0
aW9uQ291bnQoKSwgMSk7CisgICAgICAgICAgICBjb25zdCByZXF1ZXN0cyA9IGdyb3VwLmJ1aWxk
UmVxdWVzdHMoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIp
OworCisgICAgICAgICAgICBjb25zdCBzZXQwID0gcmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7Cisg
ICAgICAgICAgICBjb25zdCBzZXQxID0gcmVxdWVzdHNbMV0uY29tbWl0U2V0KCk7CisgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKHNldDAucmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKKyAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoc2V0MC5jdXN0b21Sb290cygpLCBbXSk7CisgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHNldDEucmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsK
KyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoc2V0MS5jdXN0b21Sb290cygpLCBbXSk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2V0MC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0
KSwgJzE5MTYyMicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNldDEucmV2aXNpb25Gb3JS
ZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjMnKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKIH0p
OwpJbmRleDogc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanMJKHJldmlzaW9uIDIxNTEyMykK
KysrIHNlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0zNywxMiArMzcsMTkgQEAKICAgICAgICAgICAgIGRiLmluc2VydCgndHJpZ2dlcmFibGVfcmVw
b3NpdG9yaWVzJywge3JlcG9zaXRvcnk6IHRoaXMubWFjb3NSZXBvc2l0b3J5SWQoKSwgZ3JvdXA6
IDIwMDF9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yaWVz
Jywge3JlcG9zaXRvcnk6IHRoaXMud2Via2l0UmVwb3NpdG9yeUlkKCksIGdyb3VwOiAyMDAxfSks
CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7aWQ6IDg3ODMyLCByZXBvc2l0b3J5
OiB0aGlzLm1hY29zUmVwb3NpdG9yeUlkKCksIHJldmlzaW9uOiAnMTAuMTEgMTVBMjg0J30pLAot
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywge2lkOiA5MzExNiwgcmVwb3NpdG9yeTog
dGhpcy53ZWJraXRSZXBvc2l0b3J5SWQoKSwgcmV2aXNpb246ICcxOTE2MjInLCB0aW1lOiAobmV3
IERhdGUoMTQ0NTk0NTgxNjg3OCkpLnRvSVNPU3RyaW5nKCl9KSwKLSAgICAgICAgICAgIGRiLmlu
c2VydCgnY29tbWl0cycsIHtpZDogOTYzMzYsIHJlcG9zaXRvcnk6IHRoaXMud2Via2l0UmVwb3Np
dG9yeUlkKCksIHJldmlzaW9uOiAnMTkyNzM2JywgdGltZTogKG5ldyBEYXRlKDE0NDgyMjUzMjU2
NTApKS50b0lTT1N0cmluZygpfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7
aWQ6IDkzMTE2LCByZXBvc2l0b3J5OiB0aGlzLndlYmtpdFJlcG9zaXRvcnlJZCgpLCByZXZpc2lv
bjogJzE5MTYyMicsIHRpbWU6ICcyMDE1LTEwLTI3VDExOjM2OjU2Ljg4Wid9KSwKKyAgICAgICAg
ICAgIGRiLmluc2VydCgnY29tbWl0cycsIHtpZDogOTYzMzYsIHJlcG9zaXRvcnk6IHRoaXMud2Vi
a2l0UmVwb3NpdG9yeUlkKCksIHJldmlzaW9uOiAnMTkyNzM2JywgdGltZTogJzIwMTUtMTEtMjJU
MjA6NDg6NDUuNjVaJ30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRzJywge2lkOiA5
NjYyOSwgcmVwb3NpdG9yeTogdGhpcy53ZWJraXRSZXBvc2l0b3J5SWQoKSwgcmV2aXNpb246ICcx
OTI5MDMnLCB0aW1lOiAnMjAxNS0xMi0wMVQyMToxNDo0Ni45OVonfSksCisgICAgICAgICAgICBk
Yi5pbnNlcnQoJ2J1aWxkcycsIHtpZDogOTAxLCBudW1iZXI6ICc5MDEnLCB0aW1lOiAnMjAxNS0x
MC0yN1QxMjowNToyNy4xWid9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRzJywge2lk
OiA5MDIsIG51bWJlcjogJzkwMicsIHRpbWU6ICcyMDE1LTEwLTI3VDEyOjA2OjU0LjJaJ30pLAor
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9jb21taXRzJywge2NvbW1pdF9idWlsZDogOTAx
LCBidWlsZF9jb21taXQ6IDkzMTE2fSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX2Nv
bW1pdHMnLCB7Y29tbWl0X2J1aWxkOiA5MDIsIGJ1aWxkX2NvbW1pdDogOTYzMzZ9KSwKICAgICAg
ICAgICAgIGRiLmluc2VydCgncGxhdGZvcm1zJywge2lkOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1J
ZCgpLCBuYW1lOiAnc29tZSBwbGF0Zm9ybSd9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgndGVz
dHMnLCB7aWQ6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgbmFtZTogJ3NvbWUgdGVzdCd9KSwKLSAg
ICAgICAgICAgIGRiLmluc2VydCgndGVzdF9tZXRyaWNzJywge2lkOiAzMDAsIHRlc3Q6IDIwMCwg
bmFtZTogJ3NvbWUgbWV0cmljJ30pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X2NvbmZp
Z3VyYXRpb25zJywge2lkOiAzMDEsIG1ldHJpYzogMzAwLCBwbGF0Zm9ybTogNjUsIHR5cGU6ICdj
dXJyZW50J30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X21ldHJpY3MnLCB7aWQ6IDMw
MCwgdGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBuYW1lOiAnc29tZSBtZXRyaWMnfSksCisg
ICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7aWQ6IDMwMSwgbWV0
cmljOiAzMDAsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCB0eXBlOiAnY3Vy
cmVudCd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgndGVzdF9ydW5zJywge2lkOiA4MDEsIGNv
bmZpZzogMzAxLCBidWlsZDogOTAxLCBtZWFuX2NhY2hlOiAxMDF9KSwKKyAgICAgICAgICAgIGRi
Lmluc2VydCgndGVzdF9ydW5zJywge2lkOiA4MDIsIGNvbmZpZzogMzAxLCBidWlsZDogOTAyLCBt
ZWFuX2NhY2hlOiA5Mn0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0cycsIHtp
ZDogNDAxfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRfcmVsYXRpb25zaGlw
cycsIHtzZXQ6IDQwMSwgY29tbWl0OiA4NzgzMn0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdj
b21taXRfc2V0X3JlbGF0aW9uc2hpcHMnLCB7c2V0OiA0MDEsIGNvbW1pdDogOTMxMTZ9KSwKQEAg
LTQ5LDcgKzU2LDkgQEAKICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldHMnLCB7aWQ6
IDQwMn0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0X3JlbGF0aW9uc2hpcHMn
LCB7c2V0OiA0MDIsIGNvbW1pdDogODc4MzJ9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgnY29t
bWl0X3NldF9yZWxhdGlvbnNoaXBzJywge3NldDogNDAyLCBjb21taXQ6IDk2MzM2fSksCi0gICAg
ICAgICAgICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rhc2tzJywge2lkOiA1MDAsIHBsYXRmb3JtOiA2
NSwgbWV0cmljOiAzMDAsIG5hbWU6ICdzb21lIHRhc2snfSksCisgICAgICAgICAgICBkYi5pbnNl
cnQoJ2FuYWx5c2lzX3Rhc2tzJywge2lkOiA1MDAsIHBsYXRmb3JtOiA2NSwgbWV0cmljOiAzMDAs
IG5hbWU6ICdzb21lIHRhc2snLAorICAgICAgICAgICAgICAgIHN0YXJ0X3J1bjogODAxLCBzdGFy
dF9ydW5fdGltZTogJzIwMTUtMTAtMjdUMTI6MDU6MjcuMVonLAorICAgICAgICAgICAgICAgIGVu
ZF9ydW46IDgwMSwgZW5kX3J1bl90aW1lOiAnMjAxNS0xMC0yN1QxMjowNToyNy4xWid9KSwKICAg
ICAgICAgICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6IDYwMCwgdGFz
azogNTAwLCBuYW1lOiAnc29tZSB0ZXN0IGdyb3VwJ30pLAogICAgICAgICAgICAgZGIuaW5zZXJ0
KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAwLCBzdGF0dXM6IHN0YXR1c0xpc3RbMF0sIHRyaWdn
ZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6
IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDAsIGNvbW1pdF9zZXQ6IDQwMX0pLAogICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAxLCBzdGF0dXM6IHN0YXR1c0xp
c3RbMV0sIHRyaWdnZXJhYmxlOiAxMDAwLCByZXBvc2l0b3J5X2dyb3VwOiAyMDAxLCBwbGF0Zm9y
bTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDEsIGNvbW1pdF9zZXQ6IDQwMn0p
LApJbmRleDogdG9vbHMvanMvcmVtb3RlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRvb2xzL2pzL3JlbW90
ZS5qcwkocmV2aXNpb24gMjE1MTIzKQorKysgdG9vbHMvanMvcmVtb3RlLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDExICsxLDEzIEBACiAndXNlIHN0cmljdCc7CiAKLWxldCBhc3NlcnQgPSByZXF1
aXJlKCdhc3NlcnQnKTsKLWxldCBodHRwID0gcmVxdWlyZSgnaHR0cCcpOwotbGV0IGh0dHBzID0g
cmVxdWlyZSgnaHR0cHMnKTsKLWxldCBxdWVyeXN0cmluZyA9IHJlcXVpcmUoJ3F1ZXJ5c3RyaW5n
Jyk7Ci1sZXQgQ29tbW9uUmVtb3RlQVBJID0gcmVxdWlyZSgnLi4vLi4vcHVibGljL3NoYXJlZC9j
b21tb24tcmVtb3RlLmpzJykuQ29tbW9uUmVtb3RlQVBJOworY29uc3QgYXNzZXJ0ID0gcmVxdWly
ZSgnYXNzZXJ0Jyk7Citjb25zdCBodHRwID0gcmVxdWlyZSgnaHR0cCcpOworY29uc3QgaHR0cHMg
PSByZXF1aXJlKCdodHRwcycpOworY29uc3QgcXVlcnlzdHJpbmcgPSByZXF1aXJlKCdxdWVyeXN0
cmluZycpOworY29uc3QgQ29tbW9uUmVtb3RlQVBJID0gcmVxdWlyZSgnLi4vLi4vcHVibGljL3No
YXJlZC9jb21tb24tcmVtb3RlLmpzJykuQ29tbW9uUmVtb3RlQVBJOwogCitnbG9iYWwuRm9ybURh
dGEgPSByZXF1aXJlKCdmb3JtLWRhdGEnKTsKKwogY2xhc3MgTm9kZVJlbW90ZUFQSSBleHRlbmRz
IENvbW1vblJlbW90ZUFQSSB7CiAgICAgY29uc3RydWN0b3Ioc2VydmVyKQogICAgIHsKSW5kZXg6
IHVuaXQtdGVzdHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB1bml0LXRl
c3RzL2FuYWx5c2lzLXRhc2stdGVzdHMuanMJKHJldmlzaW9uIDIxNTEyMykKKysrIHVuaXQtdGVz
dHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTUsNyArMTUsNiBA
QAogICAgICAgICAgICAgICAgICdidWdzJzogW10sCiAgICAgICAgICAgICAgICAgJ2J1aWxkUmVx
dWVzdENvdW50JzogJzE0JywKICAgICAgICAgICAgICAgICAnZmluaXNoZWRCdWlsZFJlcXVlc3RD
b3VudCc6ICc2JywKLSAgICAgICAgICAgICAgICAnY2F0ZWdvcnknOiAnaWRlbnRpZmllZCcsCiAg
ICAgICAgICAgICAgICAgJ2NhdXNlcyc6IFsKICAgICAgICAgICAgICAgICAgICAgJzEwNTk3NScK
ICAgICAgICAgICAgICAgICBdLApAQCAtMjQsMTAgKzIzLDEwIEBACiAgICAgICAgICAgICAgICAg
J2VuZFJ1blRpbWUnOiAxNDU0NTE1MDIwMzAzLAogICAgICAgICAgICAgICAgICdmaXhlcyc6IFtd
LAogICAgICAgICAgICAgICAgICdpZCc6ICcxMDgyJywKLSAgICAgICAgICAgICAgICAnbWV0cmlj
JzogJzI4ODQnLAorICAgICAgICAgICAgICAgICdtZXRyaWMnOiBNb2NrTW9kZWxzLnNvbWVNZXRy
aWMuaWQoKSwKICAgICAgICAgICAgICAgICAnbmFtZSc6ICdQb3RlbnRpYWwgMS4yJSByZWdyZXNz
aW9uIGJldHdlZW4gMjAxNi0wMi0wMiAyMDoyMCBhbmQgMDItMDMgMTU6NTcnLAogICAgICAgICAg
ICAgICAgICduZWVkZWQnOiBudWxsLAotICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6ICc2NScs
CisgICAgICAgICAgICAgICAgJ3BsYXRmb3JtJzogTW9ja01vZGVscy5zb21lUGxhdGZvcm0uaWQo
KSwKICAgICAgICAgICAgICAgICAncmVzdWx0JzogJ3JlZ3Jlc3Npb24nLAogICAgICAgICAgICAg
ICAgICdzZWdtZW50YXRpb25TdHJhdGVneSc6ICcxJywKICAgICAgICAgICAgICAgICAnc3RhcnRS
dW4nOiAnMzcxMTc5NDknLApAQCAtNTMsNiArNTIsMzggQEAKICAgICB9OwogfQogCitmdW5jdGlv
biBzYW1wbGVDdXN0b21BbmFseXNpc1Rhc2soKQoreworICAgIHJldHVybiB7CisgICAgICAgICdh
bmFseXNpc1Rhc2tzJzogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICdpZCc6ICcx
MDAwJywKKyAgICAgICAgICAgICAgICAnY3JlYXRlZEF0JzogMTQ1NDU5NDMzMDAwMCwKKyAgICAg
ICAgICAgICAgICAnYXV0aG9yJzogbnVsbCwKKyAgICAgICAgICAgICAgICAnYnVpbGRSZXF1ZXN0
Q291bnQnOiAnMCcsCisgICAgICAgICAgICAgICAgJ2ZpbmlzaGVkQnVpbGRSZXF1ZXN0Q291bnQn
OiAnMCcsCisgICAgICAgICAgICAgICAgJ2J1Z3MnOiBbXSwKKyAgICAgICAgICAgICAgICAnY2F1
c2VzJzogWyBdLAorICAgICAgICAgICAgICAgICdmaXhlcyc6IFtdLAorICAgICAgICAgICAgICAg
ICdzdGFydFJ1bic6IG51bGwsCisgICAgICAgICAgICAgICAgJ3N0YXJ0UnVuVGltZSc6IG51bGws
CisgICAgICAgICAgICAgICAgJ2VuZFJ1bic6IG51bGwsCisgICAgICAgICAgICAgICAgJ2VuZFJ1
blRpbWUnOiBudWxsLAorICAgICAgICAgICAgICAgICdtZXRyaWMnOiBudWxsLAorICAgICAgICAg
ICAgICAgICduYW1lJzogJ1BvdGVudGlhbCAxLjIlIHJlZ3Jlc3Npb24gYmV0d2VlbiAyMDE2LTAy
LTAyIDIwOjIwIGFuZCAwMi0wMyAxNTo1NycsCisgICAgICAgICAgICAgICAgJ25lZWRlZCc6IG51
bGwsCisgICAgICAgICAgICAgICAgJ3BsYXRmb3JtJzogbnVsbCwKKyAgICAgICAgICAgICAgICAn
cmVzdWx0JzogbnVsbCwKKyAgICAgICAgICAgICAgICAnc2VnbWVudGF0aW9uU3RyYXRlZ3knOiBu
dWxsLAorICAgICAgICAgICAgICAgICd0ZXN0UmFuZ2VTdHJhZ2VneSc6IG51bGwsCisgICAgICAg
ICAgICB9CisgICAgICAgIF0sCisgICAgICAgICdjb21taXRzJzogW10sCisgICAgICAgICdidWdz
JzogW10sCisgICAgICAgICdzdGF0dXMnOiAnT0snCisgICAgfTsKK30KKwogZnVuY3Rpb24gbWVh
c3VyZW1lbnRDbHVzdGVyKCkKIHsKICAgICByZXR1cm4gewpAQCAtMTIwLDYgKzE1MSw0MyBAQAog
ICAgIE1vY2tNb2RlbHMuaW5qZWN0KCk7CiAgICAgbGV0IHJlcXVlc3RzID0gTW9ja1JlbW90ZUFQ
SS5pbmplY3QoKTsKIAorICAgIGZ1bmN0aW9uIGxvYWRBbmFseXNpc1Rhc2tzKHJhd0RhdGEpCisg
ICAgeworICAgICAgICBBbmFseXNpc1Rhc2suX2NvbnN0cnVjdEFuYWx5c2lzVGFza3NGcm9tUmF3
RGF0YShyYXdEYXRhKTsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgIH0K
KworICAgIGRlc2NyaWJlKCdmaW5kQnlQbGF0Zm9ybUFuZE1ldHJpYycsICgpID0+IHsKKyAgICAg
ICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgYXJyYXkgd2hlbiB0aGVyZSBhcmUgbm8gYW5h
bHlzaXMgdGFza3MnLCAoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKEFuYWx5
c2lzVGFzay5maW5kQnlQbGF0Zm9ybUFuZE1ldHJpYyhNb2NrTW9kZWxzLnNvbWVQbGF0Zm9ybSwg
TW9ja01vZGVscy5zb21lTWV0cmljKSwgW10pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgn
c2hvdWxkIHJldHVybiBhbiBhcnJheSBjb250YWluaW5nIHRoZSBtYXRjaGluZyBub24tY3VzdG9t
IGFuYWx5c2lzIHRhc2tzJywgKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIGxvYWRBbmFseXNp
c1Rhc2tzKHNhbXBsZUFuYWx5c2lzVGFzaygpKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbG9hZEFuYWx5c2lzVGFza3Moc2FtcGxlQ3VzdG9tQW5hbHlzaXNUYXNrKCkpOwor
ICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgdGFza3Mg
PSBBbmFseXNpc1Rhc2suZmluZEJ5UGxhdGZvcm1BbmRNZXRyaWMoTW9ja01vZGVscy5zb21lUGxh
dGZvcm0uaWQoKSwgTW9ja01vZGVscy5zb21lTWV0cmljLmlkKCkpOworICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbCh0YXNrcy5sZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGNvbnN0IHRh
c2sgPSB0YXNrc1swXTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGFzay5pZCgpLCAx
MDgyKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGFzay5pc0N1c3RvbSgpLCBmYWxz
ZSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRhc2suaGFzUmVzdWx0cygpLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGFzay5oYXNQZW5kaW5nUmVxdWVzdHMo
KSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRhc2sucmVxdWVzdExhYmVs
KCksICc2IG9mIDE0Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRhc2suc3RhcnRN
ZWFzdXJlbWVudElkKCksIDM3MTE3OTQ5KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
dGFzay5lbmRNZWFzdXJlbWVudElkKCksIDM3MjUzNDQ4KTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwodGFzay5hdXRob3IoKSwgJycpOworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwodGFzay5idWdzKCksIFtdKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KHRhc2suY2F1c2VzKCksIFtDb21taXRMb2cuZmluZEJ5SWQoMTA1OTc1KV0pOworICAgICAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwodGFzay5maXhlcygpLCBbXSk7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbCh0YXNrLnBsYXRmb3JtKCksIE1vY2tNb2RlbHMuc29tZVBsYXRm
b3JtKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHRhc2subWV0cmljKCksIE1v
Y2tNb2RlbHMuc29tZU1ldHJpYyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbCh0
YXNrLmNoYW5nZVR5cGUoKSwgJ3JlZ3Jlc3Npb24nKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKHRhc2suY2F0ZWdvcnkoKSwgJ2ludmVzdGlnYXRlZCcpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0pOworICAgIH0pOworCiAgICAgZGVzY3JpYmUoJ2ZldGNoQWxsJywgKCkg
PT4gewogICAgICAgICBpdCgnc2hvdWxkIHJlcXVlc3QgYWxsIGFuYWx5c2lzIHRhc2tzJywgKCkg
PT4gewogICAgICAgICAgICAgbGV0IGNhbGxDb3VudCA9IDA7CkluZGV4OiB1bml0LXRlc3RzL2J1
aWxkLXJlcXVlc3QtdGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdW5pdC10ZXN0cy9idWlsZC1yZXF1
ZXN0LXRlc3RzLmpzCShyZXZpc2lvbiAyMTUxMjMpCisrKyB1bml0LXRlc3RzL2J1aWxkLXJlcXVl
c3QtdGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEwICsyMywxMiBAQAogICAgICAgICB9
XSwKICAgICAgICAgImNvbW1pdFNldHMiOiBbewogICAgICAgICAgICAgImlkIjogIjQyNTUiLAot
ICAgICAgICAgICAgImNvbW1pdHMiOiBbIjg3ODMyIiwgIjkzMTE2Il0KKyAgICAgICAgICAgICJj
b21taXRzIjogWyI4NzgzMiIsICI5MzExNiJdLAorICAgICAgICAgICAgImN1c3RvbVJvb3RzIjog
W10sCiAgICAgICAgIH0sIHsKICAgICAgICAgICAgICJpZCI6ICI0MjU2IiwKLSAgICAgICAgICAg
ICJjb21taXRzIjogWyI4NzgzMiIsICI5NjMzNiJdCisgICAgICAgICAgICAiY29tbWl0cyI6IFsi
ODc4MzIiLCAiOTYzMzYiXSwKKyAgICAgICAgICAgICJjdXN0b21Sb290cyI6IFtdLAogICAgICAg
ICB9XSwKICAgICAgICAgImNvbW1pdHMiOiBbewogICAgICAgICAgICAgImlkIjogIjg3ODMyIiwK
QEAgLTQ5LDYgKzUxLDcgQEAKICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxOTI3MzYiLAogICAg
ICAgICAgICAgInRpbWUiOiAxNDQ4MjI1MzI1NjUwCiAgICAgICAgIH1dLAorICAgICAgICAidXBs
b2FkZWRGaWxlcyI6IFtdLAogICAgICAgICAic3RhdHVzIjogIk9LIgogICAgIH07CiB9CkluZGV4
OiB1bml0LXRlc3RzL2J1aWxkYm90LXN5bmNlci10ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB1bml0
LXRlc3RzL2J1aWxkYm90LXN5bmNlci10ZXN0cy5qcwkocmV2aXNpb24gMjE1MTIzKQorKysgdW5p
dC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw3
ICsxOTIsNyBAQAogICAgIGFzc2VydChwbGF0Zm9ybSBpbnN0YW5jZW9mIFBsYXRmb3JtKTsKICAg
ICBhc3NlcnQodGVzdCBpbnN0YW5jZW9mIFRlc3QpOwogCi0gICAgbGV0IGNvbW1pdFNldCA9IENv
bW1pdFNldC5lbnN1cmVTaW5nbGV0b24oJzQxOTcnLCB7Y29tbWl0czogWworICAgIGxldCBjb21t
aXRTZXQgPSBDb21taXRTZXQuZW5zdXJlU2luZ2xldG9uKCc0MTk3Jywge2N1c3RvbVJvb3RzOiBb
XSwgY29tbWl0czogWwogICAgICAgICB7J2lkJzogJzExMTEyNycsICd0aW1lJzogMTQ1Njk1NTgw
NzMzNCwgJ3JlcG9zaXRvcnknOiBNb2NrTW9kZWxzLndlYmtpdCwgJ3JldmlzaW9uJzogJzE5NzQ2
Myd9LAogICAgICAgICB7J2lkJzogJzExMTIzNycsICd0aW1lJzogMTQ1NjkzMTg3NDAwMCwgJ3Jl
cG9zaXRvcnknOiBNb2NrTW9kZWxzLnNoYXJlZFJlcG9zaXRvcnksICdyZXZpc2lvbic6ICc4MDIy
OSd9LAogICAgICAgICB7J2lkJzogJzg4OTMwJywgJ3RpbWUnOiAwLCAncmVwb3NpdG9yeSc6IE1v
Y2tNb2RlbHMuaW9zLCAncmV2aXNpb24nOiAnMTNBNDUyJ30sCkluZGV4OiB1bml0LXRlc3RzL3Rl
c3QtZ3JvdXBzLXRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHVuaXQtdGVzdHMvdGVzdC1ncm91cHMt
dGVzdHMuanMJKHJldmlzaW9uIDIxNTEyMykKKysrIHVuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVz
dHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTE1LDkgKzE1LDggQEAKICAgICAgICAgICAgICJjcmVh
dGVkQXQiOiAxNDU4Njg4NTE0MDAwLAogICAgICAgICAgICAgImhpZGRlbiI6IGZhbHNlLAogICAg
ICAgICAgICAgImJ1aWxkUmVxdWVzdHMiOiBbIjE2OTg1IiwgIjE2OTg2IiwgIjE2OTg3IiwgIjE2
OTg4IiwgIjE2OTg5IiwgIjE2OTkwIiwgIjE2OTkxIiwgIjE2OTkyIl0sCi0gICAgICAgICAgICAi
Y29tbWl0U2V0cyI6IFsiNDI1NSIsICI0MjU2IiwgIjQyNTUiLCAiNDI1NiIsICI0MjU1IiwgIjQy
NTYiLCAiNDI1NSIsICI0MjU2Il0KLSAgICAgICAgfQotICAgICAgICBdLAorICAgICAgICAgICAg
ImNvbW1pdFNldHMiOiBbIjQyNTUiLCAiNDI1NiJdLAorICAgICAgICB9XSwKICAgICAgICAgImJ1
aWxkUmVxdWVzdHMiOiBbewogICAgICAgICAgICAgImlkIjogIjE2OTg1IiwKICAgICAgICAgICAg
ICJ0cmlnZ2VyYWJsZSI6ICIzIiwKQEAgLTY3LDE2ICs2NiwxNiBAQAogICAgICAgICAgICAgInVy
bCI6IG51bGwsCiAgICAgICAgICAgICAiYnVpbGQiOiBudWxsLAogICAgICAgICAgICAgImNyZWF0
ZWRBdCI6IDE0NTg2ODg1MTQwMDAKLSAgICAgICAgfQotICAgICAgICBdLAorICAgICAgICB9XSwK
ICAgICAgICAgImNvbW1pdFNldHMiOiBbewogICAgICAgICAgICAgImlkIjogIjQyNTUiLAotICAg
ICAgICAgICAgImNvbW1pdHMiOiBbIjg3ODMyIiwgIjkzMTE2Il0KKyAgICAgICAgICAgICJjb21t
aXRzIjogWyI4NzgzMiIsICI5MzExNiJdLAorICAgICAgICAgICAgImN1c3RvbVJvb3RzIjogW10s
CiAgICAgICAgIH0sIHsKICAgICAgICAgICAgICJpZCI6ICI0MjU2IiwKLSAgICAgICAgICAgICJj
b21taXRzIjogWyI4NzgzMiIsICI5NjMzNiJdCi0gICAgICAgIH0KLSAgICAgICAgXSwKKyAgICAg
ICAgICAgICJjb21taXRzIjogWyI4NzgzMiIsICI5NjMzNiJdLAorICAgICAgICAgICAgImN1c3Rv
bVJvb3RzIjogW10sCisgICAgICAgIH1dLAogICAgICAgICAiY29tbWl0cyI6IFt7CiAgICAgICAg
ICAgICAiaWQiOiAiODc4MzIiLAogICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiOSIsCkBAIC05
Nyw4ICs5Niw4IEBACiAgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICIxMSIsCiAgICAgICAgICAg
ICAicmV2aXNpb24iOiAiMTkyNzM2IiwKICAgICAgICAgICAgICJ0aW1lIjogMTQ0ODIyNTMyNTY1
MAotICAgICAgICB9Ci0gICAgICAgIF0sCisgICAgICAgIH1dLAorICAgICAgICAidXBsb2FkZWRG
aWxlcyI6IFtdLAogICAgICAgICAic3RhdHVzIjogIk9LIgogICAgIH07CiB9Cg==
</data>
<flag name="review"
          id="328054"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>