<?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>211581</bug_id>
          
          <creation_ts>2020-05-07 10:18:20 -0700</creation_ts>
          <short_desc>Delete code for old commit queue</short_desc>
          <delta_ts>2020-06-17 08:15:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211638</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>213296</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Aakash Jain">aakash_jain</reporter>
          <assigned_to name="Aakash Jain">aakash_jain</assigned_to>
          <cc>ap</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1650175</commentid>
    <comment_count>0</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-05-07 10:18:20 -0700</bug_when>
    <thetext>old commit-queue was decommissioned few months back in favor of commit-queue on new ews (https://ews-build.webkit.org/#/builders/Commit-Queue). We should delete the code for old commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650177</commentid>
    <comment_count>1</comment_count>
      <attachid>398755</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-05-07 10:21:22 -0700</bug_when>
    <thetext>Created attachment 398755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650191</commentid>
    <comment_count>2</comment_count>
      <attachid>398755</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-05-07 10:34:12 -0700</bug_when>
    <thetext>Comment on attachment 398755
Patch

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

rs=me. Red is beautiful.

&gt; Tools/Scripts/webkitpy/tool/steps/validatechangelogs.py:40
&gt; +# This is closely related to the ValidateReviewer step.

Is ValidateReviewer still used?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650200</commentid>
    <comment_count>3</comment_count>
      <attachid>398755</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-05-07 10:40:49 -0700</bug_when>
    <thetext>Comment on attachment 398755
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/tool/steps/validatechangelogs.py:40
&gt;&gt; +# This is closely related to the ValidateReviewer step.
&gt; 
&gt; Is ValidateReviewer still used?

Yes, ValidateChangeLogAndReviewer class in https://trac.webkit.org/browser/webkit/trunk/Tools/BuildSlaveSupport/ews-build/steps.py#L770 uses &apos;webkit-patch validate-changelog --check-oops --non-interactive&apos;.

ValidateChangelog uses ValidateReviewer when --non-interactive flag is passed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650217</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-05-07 10:54:36 -0700</bug_when>
    <thetext>I wonder if anyone uses webkit-patch validate-changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650230</commentid>
    <comment_count>5</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-05-07 11:10:47 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #4)
&gt; I wonder if anyone uses webkit-patch validate-changelog.
new commit-queue uses it (in https://trac.webkit.org/browser/webkit/trunk/Tools/BuildSlaveSupport/ews-build/steps.py#L770)

In new commit-queue, I simply used webkit-patch validate-changelog to perform changelog and reviewer validation. There is a large amount of logic which I did not want to re-implement/duplicate (so as to implement new commit-queue quickly). Especially logic to do fuzzy match for reviewer name/email/variation-of-name (e.g: matching &apos;Tim H&apos; with &apos;Tim Horton&apos;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650236</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-07 11:24:08 -0700</bug_when>
    <thetext>Committed r261319: &lt;https://trac.webkit.org/changeset/261319&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398755.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650238</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-07 11:25:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/62985206&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398755</attachid>
            <date>2020-05-07 10:21:22 -0700</date>
            <delta_ts>2020-05-07 11:24:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211581-20200507132121.patch</filename>
            <type>text/plain</type>
            <size>68079</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MTMwMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI3IEBACisyMDIwLTA1LTA3ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNv
bT4KKworICAgICAgICBEZWxldGUgY29kZSBmb3Igb2xkIGNvbW1pdCBxdWV1ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNTgxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jb25maWcvY29tbWl0dGVydmFsaWRhdG9yLnB5OiBSZW1vdmVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb21taXR0ZXJ2YWxpZGF0b3JfdW5pdHRl
c3QucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21t
aXRxdWV1ZXRhc2sucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29s
L2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHk6IFJlbW92ZWQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weToKKyAgICAgICAgKFBhdGNoUHJv
Y2Vzc2luZ1F1ZXVlLl91cGxvYWRfcmVzdWx0c19hcmNoaXZlX2Zvcl9wYXRjaCk6CisgICAgICAg
IChDb21taXRRdWV1ZSk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weToKKyAgICAgICAgKE5lZWRzVXBkYXRlU2VxdWVu
Y2UuX3J1bik6CisgICAgICAgIChUZXN0Q29tbWl0UXVldWUpOiBEZWxldGVkLgorICAgICAgICAo
QWx3YXlzQ29tbWl0UXVldWVUb29sKTogRGVsZXRlZC4KKyAgICAgICAgKFNlY29uZFRob3VnaHRz
Q29tbWl0UXVldWUpOiBEZWxldGVkLgorICAgICAgICAoQ29tbWl0UXVldWVUZXN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKHRlc3RfZGlkX3Bhc3NfdGVzdGluZ19ld3MpOiBEZWxldGVkLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZWNoYW5nZWxvZ3MucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIucHk6
CisKIDIwMjAtMDUtMDcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjYwNzY5LgpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnZhbGlkYXRvci5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVydmFs
aWRhdG9yLnB5CShyZXZpc2lvbiAyNjEzMDIpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jb25maWcvY29tbWl0dGVydmFsaWRhdG9yLnB5CShub25leGlzdGVudCkKQEAgLTEsOTYg
KzAsMCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMgQ29weXJpZ2h0IChjKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMgQ29weXJpZ2h0IChjKSAyMDEwIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSB3ZWJraXRweS5jb21t
b24uY29uZmlnIGltcG9ydCBjb21taXR0ZXJzLCB1cmxzCi0KLQotY2xhc3MgQ29tbWl0dGVyVmFs
aWRhdG9yKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QpOgotICAgICAgICBz
ZWxmLmhvc3QgPSBob3N0Ci0KLSAgICBkZWYgX2NvbnRyaWJ1dG9yc19qc29uX3BhdGgoc2VsZik6
Ci0gICAgICAgICMgY29udHJpYnV0b3JzLmpzb24gcmVzaWRlcyBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkgYXMgY29tbWl0dGVycy5weQotICAgICAgICBkaXJuYW1lID0gc2VsZi5ob3N0LmZpbGVzeXN0
ZW0uZGlybmFtZShzZWxmLmhvc3QuZmlsZXN5c3RlbS5wYXRoX3RvX21vZHVsZShjb21taXR0ZXJz
Ll9fbmFtZV9fKSkKLSAgICAgICAgcGF0aCA9IHNlbGYuaG9zdC5maWxlc3lzdGVtLmpvaW4oZGly
bmFtZSwgJ2NvbnRyaWJ1dG9ycy5qc29uJykKLSAgICAgICAgcmV0dXJuIHNlbGYuaG9zdC5maWxl
c3lzdGVtLnJlbHBhdGgocGF0aCwgc2VsZi5ob3N0LnNjbSgpLmNoZWNrb3V0X3Jvb3QpCi0KLSAg
ICBkZWYgX2ZsYWdfcGVybWlzc2lvbl9yZWplY3Rpb25fbWVzc2FnZShzZWxmLCBzZXR0ZXJfZW1h
aWwsIGZsYWdfbmFtZSk6Ci0gICAgICAgICMgVGhpcyBjb3VsZCBiZSBxdWVyaWVkIGZyb20gdGhl
IHRvb2wuCi0gICAgICAgIHF1ZXVlX25hbWUgPSAiY29tbWl0LXF1ZXVlIgotICAgICAgICBjb21t
aXR0ZXJzX2xpc3QgPSBzZWxmLl9jb250cmlidXRvcnNfanNvbl9wYXRoKCkKLSAgICAgICAgbWVz
c2FnZSA9ICIlcyBkb2VzIG5vdCBoYXZlICVzIHBlcm1pc3Npb25zIGFjY29yZGluZyB0byAlcy4i
ICUgKAotICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGVyX2VtYWlsLAotICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgdXJscy52aWV3
X3NvdXJjZV91cmwoY29tbWl0dGVyc19saXN0KSkKLSAgICAgICAgbWVzc2FnZSArPSAiXG5cbi0g
SWYgeW91IGRvIG5vdCBoYXZlICVzIHJpZ2h0cyBwbGVhc2UgcmVhZCAlcyBmb3IgaW5zdHJ1Y3Rp
b25zIG9uIGhvdyB0byB1c2UgYnVnemlsbGEgZmxhZ3MuIiAlICgKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdfbmFtZSwgdXJscy5jb250cmlidXRpb25fZ3VpZGVsaW5lcykKLSAgICAgICAg
bWVzc2FnZSArPSAiXG5cbi0gSWYgeW91IGhhdmUgJXMgcmlnaHRzIHBsZWFzZSBjb3JyZWN0IHRo
ZSBlcnJvciBpbiAlcyBieSBhZGRpbmcgeW91cnNlbGYgdG8gdGhlIGZpbGUgKG5vIHJldmlldyBu
ZWVkZWQpLiAgIiAlICgKLSAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfbmFtZSwgY29tbWl0
dGVyc19saXN0KQotICAgICAgICBtZXNzYWdlICs9ICJUaGUgJXMgcmVzdGFydHMgaXRzZWxmIGV2
ZXJ5IDIgaG91cnMuICBBZnRlciByZXN0YXJ0IHRoZSAlcyB3aWxsIGNvcnJlY3RseSByZXNwZWN0
IHlvdXIgJXMgcmlnaHRzLiIgJSAoCi0gICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZV9uYW1l
LCBxdWV1ZV9uYW1lLCBmbGFnX25hbWUpCi0gICAgICAgIHJldHVybiBtZXNzYWdlCi0KLSAgICBk
ZWYgX3ZhbGlkYXRlX3NldHRlcl9lbWFpbChzZWxmLCBwYXRjaCwgcmVzdWx0X2tleSwgcmVqZWN0
aW9uX2Z1bmN0aW9uKToKLSAgICAgICAgY29tbWl0dGVyID0gZ2V0YXR0cihwYXRjaCwgcmVzdWx0
X2tleSkoKQotICAgICAgICAjIElmIHRoZSBmbGFnIGlzIHNldCwgYW5kIHdlIGRvbid0IHJlY29n
bml6ZSB0aGUgc2V0dGVyLCByZWplY3QgdGhlIGZsYWchCi0gICAgICAgIHNldHRlcl9lbWFpbCA9
IHBhdGNoLl9hdHRhY2htZW50X2RpY3Rpb25hcnkuZ2V0KCIlc19lbWFpbCIgJSByZXN1bHRfa2V5
KQotICAgICAgICBpZiBzZXR0ZXJfZW1haWwgYW5kIG5vdCBjb21taXR0ZXI6Ci0gICAgICAgICAg
ICByZWplY3Rpb25fZnVuY3Rpb24ocGF0Y2guaWQoKSwgc2VsZi5fZmxhZ19wZXJtaXNzaW9uX3Jl
amVjdGlvbl9tZXNzYWdlKHNldHRlcl9lbWFpbCwgcmVzdWx0X2tleSkpCi0gICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBfcmVqZWN0X3BhdGNo
X2lmX2ZsYWdzX2FyZV9pbnZhbGlkKHNlbGYsIHBhdGNoKToKLSAgICAgICAgcmV0dXJuIChzZWxm
Ll92YWxpZGF0ZV9zZXR0ZXJfZW1haWwocGF0Y2gsICJyZXZpZXdlciIsIHNlbGYucmVqZWN0X3Bh
dGNoX2Zyb21fcmV2aWV3X3F1ZXVlKQotICAgICAgICAgICAgYW5kIHNlbGYuX3ZhbGlkYXRlX3Nl
dHRlcl9lbWFpbChwYXRjaCwgImNvbW1pdHRlciIsIHNlbGYucmVqZWN0X3BhdGNoX2Zyb21fY29t
bWl0X3F1ZXVlKSkKLQotICAgIGRlZiBwYXRjaGVzX2FmdGVyX3JlamVjdGluZ19pbnZhbGlkX2Nv
bW1pdGVyc19hbmRfcmV2aWV3ZXJzKHNlbGYsIHBhdGNoZXMpOgotICAgICAgICByZXR1cm4gW3Bh
dGNoIGZvciBwYXRjaCBpbiBwYXRjaGVzIGlmIHNlbGYuX3JlamVjdF9wYXRjaF9pZl9mbGFnc19h
cmVfaW52YWxpZChwYXRjaCldCi0KLSAgICBkZWYgcmVqZWN0X3BhdGNoX2Zyb21fY29tbWl0X3F1
ZXVlKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2ht
ZW50X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25h
bF9jb21tZW50X3RleHQ9Tm9uZSk6Ci0gICAgICAgIGNvbW1lbnRfdGV4dCA9ICJSZWplY3Rpbmcg
YXR0YWNobWVudCAlcyBmcm9tIGNvbW1pdC1xdWV1ZS4iICUgYXR0YWNobWVudF9pZAotICAgICAg
ICBpZiBhZGRpdGlvbmFsX2NvbW1lbnRfdGV4dDoKLSAgICAgICAgICAgIGNvbW1lbnRfdGV4dCAr
PSAiXG5cbiVzIiAlIGFkZGl0aW9uYWxfY29tbWVudF90ZXh0Ci0gICAgICAgIHNlbGYuaG9zdC5i
dWdzLnNldF9mbGFnX29uX2F0dGFjaG1lbnQoYXR0YWNobWVudF9pZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWl0LXF1ZXVlIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLSIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudF90ZXh0KQotCi0gICAgZGVm
IHJlamVjdF9wYXRjaF9mcm9tX3Jldmlld19xdWV1ZShzZWxmLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudF9pZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfY29tbWVudF90ZXh0PU5vbmUpOgotICAgICAg
ICBjb21tZW50X3RleHQgPSAiUmVqZWN0aW5nIGF0dGFjaG1lbnQgJXMgZnJvbSByZXZpZXcgcXVl
dWUuIiAlIGF0dGFjaG1lbnRfaWQKLSAgICAgICAgaWYgYWRkaXRpb25hbF9jb21tZW50X3RleHQ6
Ci0gICAgICAgICAgICBjb21tZW50X3RleHQgKz0gIlxuXG4lcyIgJSBhZGRpdGlvbmFsX2NvbW1l
bnRfdGV4dAotICAgICAgICBzZWxmLmhvc3QuYnVncy5zZXRfZmxhZ19vbl9hdHRhY2htZW50KGF0
dGFjaG1lbnRfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3JldmlldycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJy0nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bW1lbnRfdGV4dCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9j
b21taXR0ZXJ2YWxpZGF0b3JfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnZhbGlkYXRvcl91bml0dGVzdC5weQko
cmV2aXNpb24gMjYxMzAyKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmln
L2NvbW1pdHRlcnZhbGlkYXRvcl91bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDQ0ICsw
LDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0
aW9uLgotIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdW5pdHRlc3QKLQotZnJvbSB3ZWJraXRweS5j
b21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24uY29u
ZmlnLmNvbW1pdHRlcnZhbGlkYXRvciBpbXBvcnQgQ29tbWl0dGVyVmFsaWRhdG9yCi0KLQotY2xh
c3MgQ29tbWl0dGVyVmFsaWRhdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRl
c3RfZmxhZ19wZXJtaXNzaW9uX3JlamVjdGlvbl9tZXNzYWdlKHNlbGYpOgotICAgICAgICB2YWxp
ZGF0b3IgPSBDb21taXR0ZXJWYWxpZGF0b3IoTW9ja0hvc3QoKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh2YWxpZGF0b3IuX2NvbnRyaWJ1dG9yc19qc29uX3BhdGgoKSwgIlRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbiIpCi0gICAgICAgIGV4
cGVjdGVkX21lc3NzYWdlID0gIiIiZm9vQGZvby5jb20gZG9lcyBub3QgaGF2ZSByZXZpZXcgcGVy
bWlzc2lvbnMgYWNjb3JkaW5nIHRvIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1
bmsvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbnRyaWJ1dG9ycy5qc29u
LgotCi0tIElmIHlvdSBkbyBub3QgaGF2ZSByZXZpZXcgcmlnaHRzIHBsZWFzZSByZWFkIGh0dHA6
Ly93ZWJraXQub3JnL2NvZGluZy9jb250cmlidXRpbmcuaHRtbCBmb3IgaW5zdHJ1Y3Rpb25zIG9u
IGhvdyB0byB1c2UgYnVnemlsbGEgZmxhZ3MuCi0KLS0gSWYgeW91IGhhdmUgcmV2aWV3IHJpZ2h0
cyBwbGVhc2UgY29ycmVjdCB0aGUgZXJyb3IgaW4gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY29uZmlnL2NvbnRyaWJ1dG9ycy5qc29uIGJ5IGFkZGluZyB5b3Vyc2VsZiB0byB0aGUgZmls
ZSAobm8gcmV2aWV3IG5lZWRlZCkuICBUaGUgY29tbWl0LXF1ZXVlIHJlc3RhcnRzIGl0c2VsZiBl
dmVyeSAyIGhvdXJzLiAgQWZ0ZXIgcmVzdGFydCB0aGUgY29tbWl0LXF1ZXVlIHdpbGwgY29ycmVj
dGx5IHJlc3BlY3QgeW91ciByZXZpZXcgcmlnaHRzLiIiIgotICAgICAgICBzZWxmLmFzc2VydE11
bHRpTGluZUVxdWFsKHZhbGlkYXRvci5fZmxhZ19wZXJtaXNzaW9uX3JlamVjdGlvbl9tZXNzYWdl
KCJmb29AZm9vLmNvbSIsICJyZXZpZXciKSwgZXhwZWN0ZWRfbWVzc3NhZ2UpCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFzay5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFzay5weQko
cmV2aXNpb24gMjYxMzAyKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21t
aXRxdWV1ZXRhc2sucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw5MyArMCwwIEBACi0jIENvcHlyaWdo
dCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotZnJvbSB3ZWJraXRweS50b29sLmJvdC5wYXRjaGFuYWx5c2lzdGFzayBpbXBvcnQg
UGF0Y2hBbmFseXNpc1Rhc2ssIFBhdGNoQW5hbHlzaXNUYXNrRGVsZWdhdGUsIFBhdGNoSXNOb3RW
YWxpZAotCi0KLWNsYXNzIENvbW1pdFF1ZXVlVGFza0RlbGVnYXRlKFBhdGNoQW5hbHlzaXNUYXNr
RGVsZWdhdGUpOgotICAgIGRlZiBwYXJlbnRfY29tbWFuZChzZWxmKToKLSAgICAgICAgcmV0dXJu
ICJjb21taXQtcXVldWUiCi0KLSAgICBkZWYgZGlkX3Bhc3NfdGVzdGluZ19ld3Moc2VsZiwgcGF0
Y2gpOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3Qg
aW1wbGVtZW50IikKLQotCi1jbGFzcyBDb21taXRRdWV1ZVRhc2soUGF0Y2hBbmFseXNpc1Rhc2sp
OgotICAgIGRlZiB2YWxpZGF0ZShzZWxmKToKLSAgICAgICAgIyBCdWdzIG1pZ2h0IGdldCBjbG9z
ZWQsIG9yIHBhdGNoZXMgbWlnaHQgYmUgb2Jzb2xldGVkIG9yIHItJ2Qgd2hpbGUgdGhlCi0gICAg
ICAgICMgY29tbWl0LXF1ZXVlIGlzIHByb2Nlc3NpbmcuCi0gICAgICAgIHNlbGYuX3BhdGNoID0g
c2VsZi5fZGVsZWdhdGUucmVmZXRjaF9wYXRjaChzZWxmLl9wYXRjaCkKLSAgICAgICAgaWYgc2Vs
Zi5fcGF0Y2guaXNfb2Jzb2xldGUoKToKLSAgICAgICAgICAgIHNlbGYuZXJyb3IgPSAiUGF0Y2gg
aXMgb2Jzb2xldGUuIgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIHNlbGYu
X3BhdGNoLmJ1ZygpLmlzX2Nsb3NlZCgpOgotICAgICAgICAgICAgc2VsZi5lcnJvciA9ICJCdWcg
aXMgYWxyZWFkeSBjbG9zZWQuIgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlm
IG5vdCBzZWxmLl9wYXRjaC5jb21taXR0ZXIoKToKLSAgICAgICAgICAgIHNlbGYuZXJyb3IgPSAi
Tm8gcGF0Y2ggY29tbWl0dGVyIGZvdW5kLiIKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAg
ICAgICBpZiBzZWxmLl9wYXRjaC5yZXZpZXcoKSA9PSAiLSI6Ci0gICAgICAgICAgICBzZWxmLmVy
cm9yID0gIlBhdGNoIGlzIG1hcmtlZCByLS4iCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg
ICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBfdmFsaWRhdGVfY2hhbmdlbG9nKHNlbGYpOgot
ICAgICAgICByZXR1cm4gc2VsZi5fcnVuX2NvbW1hbmQoWwotICAgICAgICAgICAgInZhbGlkYXRl
LWNoYW5nZWxvZyIsCi0gICAgICAgICAgICAiLS1jaGVjay1vb3BzIiwKLSAgICAgICAgICAgICIt
LW5vbi1pbnRlcmFjdGl2ZSIsCi0gICAgICAgICAgICBzZWxmLl9wYXRjaC5pZCgpLAotICAgICAg
ICBdLAotICAgICAgICAiQ2hhbmdlTG9nIHZhbGlkYXRlZCIsCi0gICAgICAgICJDaGFuZ2VMb2cg
ZGlkIG5vdCBwYXNzIHZhbGlkYXRpb24iKQotCi0gICAgZGVmIF9kaWRfcGFzc190ZXN0c19yZWNl
bnRseShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fZGVsZWdhdGUuZGlkX3Bhc3NfdGVzdGluZ19l
d3Moc2VsZi5fcGF0Y2gpOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJu
IHNlbGYuX3Rlc3RfcGF0Y2goKQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgaWYgbm90
IHNlbGYuX2NsZWFuKCk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgbm90
IHNlbGYuX3VwZGF0ZSgpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIG5v
dCBzZWxmLl9hcHBseSgpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUo
KQotICAgICAgICBpZiBub3Qgc2VsZi5fdmFsaWRhdGVfY2hhbmdlbG9nKCk6Ci0gICAgICAgICAg
ICByZXR1cm4gc2VsZi5yZXBvcnRfZmFpbHVyZSgpCi0gICAgICAgIGlmIG5vdCBzZWxmLl9wYXRj
aC5pc19yZXZlcnQoKToKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9idWlsZCgpOgotICAgICAg
ICAgICAgICAgIGlmIG5vdCBzZWxmLl9idWlsZF93aXRob3V0X3BhdGNoKCk6Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9y
dF9mYWlsdXJlKCkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9kaWRfcGFzc190ZXN0c19yZWNl
bnRseSgpOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAjIEZJWE1FOiBX
ZSBzaG91bGQgdW5kZXJzdGFuZCB3aHkgdGhlIGxhbmQgZmFpbHVyZSBvY2N1cnJlZCBhbmQgcmV0
cnkgaWYgcG9zc2libGUuCi0gICAgICAgIGlmIG5vdCBzZWxmLl9sYW5kKCk6Ci0gICAgICAgICAg
ICByZXR1cm4gc2VsZi5yZXBvcnRfZmFpbHVyZSgpCi0gICAgICAgIHJldHVybiBUcnVlCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1p
dHF1ZXVldGFza191bml0dGVzdC5weQkocmV2aXNpb24gMjYxMzAyKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkJKG5vbmV4aXN0
ZW50KQpAQCAtMSw1ODMgKzAsMCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gZGF0ZXRpbWUg
aW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20g
d2Via2l0cHkuY29tbW9uLm5ldCBpbXBvcnQgYnVnemlsbGEKLWZyb20gd2Via2l0cHkuY29tbW9u
Lm5ldC5sYXlvdXR0ZXN0cmVzdWx0cyBpbXBvcnQgTGF5b3V0VGVzdFJlc3VsdHMKLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCi1mcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQot
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3Jlc3VsdHMKLWZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwotZnJv
bSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKLWZyb20gd2Via2l0cHkudG9v
bC5ib3QuY29tbWl0cXVldWV0YXNrIGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rv
b2wgaW1wb3J0IE1vY2tUb29sCi0KLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykK
LQotCi1jbGFzcyBNb2NrQ29tbWl0UXVldWUoQ29tbWl0UXVldWVUYXNrRGVsZWdhdGUpOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBlcnJvcl9wbGFuKToKLSAgICAgICAgc2VsZi5fZXJyb3JfcGxh
biA9IGVycm9yX3BsYW4KLSAgICAgICAgc2VsZi5fZmFpbHVyZV9zdGF0dXNfaWQgPSAwCi0gICAg
ICAgIHNlbGYuX2ZsYWt5X3Rlc3RzID0gW10KLQotICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBj
b21tYW5kKToKLSAgICAgICAgX2xvZy5pbmZvKCJydW5fd2Via2l0X3BhdGNoOiAlcyIgJSBjb21t
YW5kKQotICAgICAgICBpZiBzZWxmLl9lcnJvcl9wbGFuOgotICAgICAgICAgICAgZXJyb3IgPSBz
ZWxmLl9lcnJvcl9wbGFuLnBvcCgwKQotICAgICAgICAgICAgaWYgZXJyb3I6Ci0gICAgICAgICAg
ICAgICAgcmFpc2UgZXJyb3IKLQotICAgIGRlZiBjb21tYW5kX3Bhc3NlZChzZWxmLCBzdWNjZXNz
X21lc3NhZ2UsIHBhdGNoKToKLSAgICAgICAgX2xvZy5pbmZvKCJjb21tYW5kX3Bhc3NlZDogc3Vj
Y2Vzc19tZXNzYWdlPSclcycgcGF0Y2g9JyVzJyIgJSAoCi0gICAgICAgICAgICBzdWNjZXNzX21l
c3NhZ2UsIHBhdGNoLmlkKCkpKQotCi0gICAgZGVmIGNvbW1hbmRfZmFpbGVkKHNlbGYsIGZhaWx1
cmVfbWVzc2FnZSwgc2NyaXB0X2Vycm9yLCBwYXRjaCk6Ci0gICAgICAgIF9sb2cuaW5mbygiY29t
bWFuZF9mYWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nJXMnIHNjcmlwdF9lcnJvcj0nJXMnIHBhdGNo
PSclcyciICUgKAotICAgICAgICAgICAgZmFpbHVyZV9tZXNzYWdlLCBzY3JpcHRfZXJyb3IsIHBh
dGNoLmlkKCkpKQotICAgICAgICBzZWxmLl9mYWlsdXJlX3N0YXR1c19pZCArPSAxCi0gICAgICAg
IHJldHVybiBzZWxmLl9mYWlsdXJlX3N0YXR1c19pZAotCi0gICAgZGVmIHJlZmV0Y2hfcGF0Y2go
c2VsZiwgcGF0Y2gpOgotICAgICAgICByZXR1cm4gcGF0Y2gKLQotICAgIGRlZiB0ZXN0X3Jlc3Vs
dHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBMYXlvdXRUZXN0UmVzdWx0cyh0ZXN0X3Jlc3VsdHM9
W10sIGRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0PUZhbHNlKQotCi0gICAgZGVmIHJlcG9y
dF9mbGFreV90ZXN0cyhzZWxmLCBwYXRjaCwgZmxha3lfcmVzdWx0cywgcmVzdWx0c19hcmNoaXZl
KToKLSAgICAgICAgY3VycmVudF9mbGFreV90ZXN0cyA9IFtyZXN1bHQudGVzdF9uYW1lIGZvciBy
ZXN1bHQgaW4gZmxha3lfcmVzdWx0c10KLSAgICAgICAgc2VsZi5fZmxha3lfdGVzdHMgKz0gY3Vy
cmVudF9mbGFreV90ZXN0cwotICAgICAgICBfbG9nLmluZm8oInJlcG9ydF9mbGFreV90ZXN0czog
cGF0Y2g9JyVzJyBmbGFreV90ZXN0cz0nJXMnIGFyY2hpdmU9JyVzJyIgJSAocGF0Y2guaWQoKSwg
Y3VycmVudF9mbGFreV90ZXN0cywgcmVzdWx0c19hcmNoaXZlLmZpbGVuYW1lKSkKLQotICAgIGRl
ZiBnZXRfcmVwb3J0ZWRfZmxha3lfdGVzdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9m
bGFreV90ZXN0cwotCi0gICAgZGVmIGFyY2hpdmVfbGFzdF90ZXN0X3Jlc3VsdHMoc2VsZiwgcGF0
Y2gpOgotICAgICAgICBfbG9nLmluZm8oImFyY2hpdmVfbGFzdF90ZXN0X3Jlc3VsdHM6IHBhdGNo
PSclcyciICUgcGF0Y2guaWQoKSkKLSAgICAgICAgYXJjaGl2ZSA9IE1vY2soKQotICAgICAgICBh
cmNoaXZlLmZpbGVuYW1lID0gIm1vY2stYXJjaGl2ZS0lcy56aXAiICUgcGF0Y2guaWQoKQotICAg
ICAgICByZXR1cm4gYXJjaGl2ZQotCi0gICAgZGVmIGJ1aWxkX3N0eWxlKHNlbGYpOgotICAgICAg
ICByZXR1cm4gInJlbGVhc2UiCi0KLSAgICBkZWYgZGlkX3Bhc3NfdGVzdGluZ19ld3Moc2VsZiwg
cGF0Y2gpOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotCi1jbGFzcyBGYWlsaW5nVGVzdENvbW1p
dFF1ZXVlKE1vY2tDb21taXRRdWV1ZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGVycm9yX3Bs
YW4sIHRlc3RfZmFpbHVyZV9wbGFuKToKLSAgICAgICAgTW9ja0NvbW1pdFF1ZXVlLl9faW5pdF9f
KHNlbGYsIGVycm9yX3BsYW4pCi0gICAgICAgIHNlbGYuX3Rlc3RfcnVuX2NvdW50ZXIgPSAtMSAg
IyBTcGVjaWFsIHZhbHVlIHRvIGluZGljYXRlIHRlc3RzIGhhdmUgbmV2ZXIgYmVlbiBydW4uCi0g
ICAgICAgIHNlbGYuX3Rlc3RfZmFpbHVyZV9wbGFuID0gdGVzdF9mYWlsdXJlX3BsYW4KLQotICAg
IGRlZiBydW5fY29tbWFuZChzZWxmLCBjb21tYW5kKToKLSAgICAgICAgaWYgY29tbWFuZFswXSA9
PSAiYnVpbGQtYW5kLXRlc3QiOgotICAgICAgICAgICAgc2VsZi5fdGVzdF9ydW5fY291bnRlciAr
PSAxCi0gICAgICAgIE1vY2tDb21taXRRdWV1ZS5ydW5fY29tbWFuZChzZWxmLCBjb21tYW5kKQot
Ci0gICAgZGVmIF9tb2NrX3Rlc3RfcmVzdWx0KHNlbGYsIHRlc3RuYW1lKToKLSAgICAgICAgcmV0
dXJuIHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0KHRlc3RuYW1lLCBbdGVzdF9mYWlsdXJlcy5GYWls
dXJlVGV4dE1pc21hdGNoKCldKQotCi0gICAgZGVmIHRlc3RfcmVzdWx0cyhzZWxmKToKLSAgICAg
ICAgIyBEb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gYXNrIGZvciB0aGUgdGVzdF9yZXN1bHRzIHVudGls
IHRoZSB0ZXN0cyBoYXZlIHJ1biBhdCBsZWFzdCBvbmNlLgotICAgICAgICBhc3NlcnQoc2VsZi5f
dGVzdF9ydW5fY291bnRlciA+PSAwKQotICAgICAgICBmYWlsdXJlc19mb3JfcnVuID0gc2VsZi5f
dGVzdF9mYWlsdXJlX3BsYW5bc2VsZi5fdGVzdF9ydW5fY291bnRlcl0KLSAgICAgICAgYXNzZXJ0
KGlzaW5zdGFuY2UoZmFpbHVyZXNfZm9yX3J1biwgbGlzdCkpCi0gICAgICAgIHJlc3VsdHMgPSBM
YXlvdXRUZXN0UmVzdWx0cyh0ZXN0X3Jlc3VsdHM9bGlzdChtYXAoc2VsZi5fbW9ja190ZXN0X3Jl
c3VsdCwgZmFpbHVyZXNfZm9yX3J1bikpLCBkaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdD0o
bGVuKGZhaWx1cmVzX2Zvcl9ydW4pID49IDEwKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMKLQot
Ci1jbGFzcyBQYXRjaEFuYWx5c2lzUmVzdWx0KG9iamVjdCk6Ci0gICAgRkFJTCA9ICJGYWlsIgot
ICAgIERFRkVSID0gIkRlZmVyIgotICAgIFBBU1MgPSAiUGFzcyIKLQotCi1jbGFzcyBNb2NrU2lt
cGxlVGVzdFBsYW5Db21taXRRdWV1ZShNb2NrQ29tbWl0UXVldWUpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBmaXJzdF90ZXN0X2ZhaWx1cmVzLCBzZWNvbmRfdGVzdF9mYWlsdXJlcywgY2xlYW5f
dGVzdF9mYWlsdXJlcyk6Ci0gICAgICAgIE1vY2tDb21taXRRdWV1ZS5fX2luaXRfXyhzZWxmLCBb
XSkKLSAgICAgICAgc2VsZi5fZGlkX3J1bl9jbGVhbl90ZXN0cyA9IEZhbHNlCi0gICAgICAgIHNl
bGYuX3BhdGNoX3Rlc3RfcmVzdWx0cyA9IFtmaXJzdF90ZXN0X2ZhaWx1cmVzLCBzZWNvbmRfdGVz
dF9mYWlsdXJlc10KLSAgICAgICAgc2VsZi5fY2xlYW5fdGVzdF9yZXN1bHRzID0gW2NsZWFuX3Rl
c3RfZmFpbHVyZXNdCi0gICAgICAgIHNlbGYuX2N1cnJlbnRfdGVzdF9yZXN1bHRzID0gW10KLQot
ICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBjb21tYW5kKToKLSAgICAgICAgTW9ja0NvbW1pdFF1
ZXVlLnJ1bl9jb21tYW5kKHNlbGYsIGNvbW1hbmQpCi0gICAgICAgIGlmIGNvbW1hbmRbMF0gPT0g
ImJ1aWxkLWFuZC10ZXN0IjoKLSAgICAgICAgICAgIGlmICItLW5vLWNsZWFuIiBpbiBjb21tYW5k
OgotICAgICAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfdGVzdF9yZXN1bHRzID0gc2VsZi5fcGF0
Y2hfdGVzdF9yZXN1bHRzLnBvcCgwKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9jdXJyZW50X3Rlc3RfcmVzdWx0cyA9IHNlbGYuX2NsZWFuX3Rlc3RfcmVzdWx0cy5w
b3AoMCkKLSAgICAgICAgICAgICAgICBzZWxmLl9kaWRfcnVuX2NsZWFuX3Rlc3RzID0gVHJ1ZQot
Ci0gICAgICAgICAgICBpZiBzZWxmLl9jdXJyZW50X3Rlc3RfcmVzdWx0czoKLSAgICAgICAgICAg
ICAgICByYWlzZSBTY3JpcHRFcnJvcigiTU9DSyB0ZXN0IGZhaWx1cmUiKQotCi0gICAgZGVmIF9t
b2NrX3Rlc3RfcmVzdWx0KHNlbGYsIHRlc3RuYW1lKToKLSAgICAgICAgcmV0dXJuIHRlc3RfcmVz
dWx0cy5UZXN0UmVzdWx0KHRlc3RuYW1lLCBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlVGV4dE1pc21h
dGNoKCldKQotCi0gICAgZGVmIHRlc3RfcmVzdWx0cyhzZWxmKToKLSAgICAgICAgYXNzZXJ0KGlz
aW5zdGFuY2Uoc2VsZi5fY3VycmVudF90ZXN0X3Jlc3VsdHMsIGxpc3QpKQotICAgICAgICByZXR1
cm4gTGF5b3V0VGVzdFJlc3VsdHModGVzdF9yZXN1bHRzPWxpc3QobWFwKHNlbGYuX21vY2tfdGVz
dF9yZXN1bHQsIHNlbGYuX2N1cnJlbnRfdGVzdF9yZXN1bHRzKSksIGRpZF9leGNlZWRfdGVzdF9m
YWlsdXJlX2xpbWl0PShsZW4oc2VsZi5fY3VycmVudF90ZXN0X3Jlc3VsdHMpID49IDEwKSkKLQot
ICAgIGRlZiBkaWRfcnVuX2NsZWFuX3Rlc3RzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5f
ZGlkX3J1bl9jbGVhbl90ZXN0cwotCi0KLSMgV2UgdXNlIEdvbGRlblNjcmlwdEVycm9yIHRvIG1h
a2Ugc3VyZSB0aGF0IHRoZSBjb2RlIHVuZGVyIHRlc3QgdGhyb3dzIHRoZQotIyBjb3JyZWN0IChp
LmUuLCBnb2xkZW4pIGV4Y2VwdGlvbi4KLWNsYXNzIEdvbGRlblNjcmlwdEVycm9yKFNjcmlwdEVy
cm9yKToKLSAgICBwYXNzCi0KLQotX2xvdHNfb2ZfZmFpbGluZ190ZXN0cyA9IGxpc3QobWFwKGxh
bWJkYSBudW06ICJ0ZXN0LSVzLmh0bWwiICUgbnVtLCByYW5nZSgwLCAxMDApKSkKLQotCi1jbGFz
cyBDb21taXRRdWV1ZVRhc2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgX3J1bl9h
bmRfZXhwZWN0X3BhdGNoX2FuYWx5c2lzX3Jlc3VsdChzZWxmLCBjb21taXRfcXVldWUsIGV4cGVj
dGVkX2FuYWx5c2lzX3Jlc3VsdCwgZXhwZWN0ZWRfcmVwb3J0ZWRfZmxha3lfdGVzdHM9W10sIGV4
cGVjdF9jbGVhbl90ZXN0c190b19ydW49RmFsc2UsIGV4cGVjdGVkX2ZhaWx1cmVfc3RhdHVzX2lk
PTApOgotICAgICAgICB0b29sID0gTW9ja1Rvb2wobG9nX2V4ZWN1dGl2ZT1UcnVlKQotICAgICAg
ICBwYXRjaCA9IHRvb2wuYnVncy5mZXRjaF9hdHRhY2htZW50KDEwMDAwKQotICAgICAgICB0YXNr
ID0gQ29tbWl0UXVldWVUYXNrKGNvbW1pdF9xdWV1ZSwgcGF0Y2gpCi0KLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgcmVzdWx0ID0gdGFzay5ydW4oKQotICAgICAgICAgICAgaWYgcmVzdWx0Ogot
ICAgICAgICAgICAgICAgIGFuYWx5c2lzX3Jlc3VsdCA9IFBhdGNoQW5hbHlzaXNSZXN1bHQuUEFT
UwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhbmFseXNpc19yZXN1bHQgPSBQ
YXRjaEFuYWx5c2lzUmVzdWx0LkRFRkVSCi0gICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvcjoKLSAg
ICAgICAgICAgIGFuYWx5c2lzX3Jlc3VsdCA9IFBhdGNoQW5hbHlzaXNSZXN1bHQuRkFJTAotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5hbHlzaXNfcmVzdWx0LCBleHBlY3RlZF9hbmFseXNp
c19yZXN1bHQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJvemVuc2V0KGNvbW1pdF9xdWV1
ZS5nZXRfcmVwb3J0ZWRfZmxha3lfdGVzdHMoKSksIGZyb3plbnNldChleHBlY3RlZF9yZXBvcnRl
ZF9mbGFreV90ZXN0cykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0X3F1ZXVlLmRp
ZF9ydW5fY2xlYW5fdGVzdHMoKSwgZXhwZWN0X2NsZWFuX3Rlc3RzX3RvX3J1bikKLQotICAgICAg
ICAjIFRoZSBmYWlsdXJlIHN0YXR1cyBvbmx5IG1lYW5zIGFueXRoaW5nIGlmIHdlIGFjdHVhbGx5
IGZhaWxlZC4KLSAgICAgICAgaWYgZXhwZWN0ZWRfYW5hbHlzaXNfcmVzdWx0ID09IFBhdGNoQW5h
bHlzaXNSZXN1bHQuRkFJTDoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFzay5mYWls
dXJlX3N0YXR1c19pZCwgZXhwZWN0ZWRfZmFpbHVyZV9zdGF0dXNfaWQpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydElzSW5zdGFuY2UodGFzay5yZXN1bHRzX2Zyb21fcGF0Y2hfdGVzdF9ydW4ocGF0
Y2gpLCBMYXlvdXRUZXN0UmVzdWx0cykKLQotICAgIGRlZiBfcnVuX3Rocm91Z2hfdGFzayhzZWxm
LCBjb21taXRfcXVldWUsIGV4cGVjdGVkX2xvZ3MsIGV4cGVjdGVkX2V4Y2VwdGlvbj1Ob25lLCBl
eHBlY3RfcmV0cnk9RmFsc2UpOgotICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCi0gICAgICAg
IHRvb2wgPSBNb2NrVG9vbChsb2dfZXhlY3V0aXZlPVRydWUpCi0gICAgICAgIHBhdGNoID0gdG9v
bC5idWdzLmZldGNoX2F0dGFjaG1lbnQoMTAwMDApCi0gICAgICAgIHRhc2sgPSBDb21taXRRdWV1
ZVRhc2soY29tbWl0X3F1ZXVlLCBwYXRjaCkKLSAgICAgICAgc3VjY2VzcyA9IE91dHB1dENhcHR1
cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCB0YXNrLnJ1biwgZXhwZWN0ZWRfbG9ncz1leHBlY3Rl
ZF9sb2dzLCBleHBlY3RlZF9leGNlcHRpb249ZXhwZWN0ZWRfZXhjZXB0aW9uKQotICAgICAgICBp
ZiBub3QgZXhwZWN0ZWRfZXhjZXB0aW9uOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dWNjZXNzLCBub3QgZXhwZWN0X3JldHJ5KQotICAgICAgICByZXR1cm4gdGFzawotCi0gICAgZGVm
IHRlc3Rfc3VjY2Vzc19jYXNlKHNlbGYpOgotICAgICAgICBjb21taXRfcXVldWUgPSBNb2NrQ29t
bWl0UXVldWUoW10pCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJydW5fd2Via2l0X3BhdGNo
OiBbJ2NsZWFuJ10KLWNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0NsZWFuZWQgd29y
a2luZyBkaXJlY3RvcnknIHBhdGNoPScxMDAwMCcKLXJ1bl93ZWJraXRfcGF0Y2g6IFsndXBkYXRl
J10KLWNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J1VwZGF0ZWQgd29ya2luZyBkaXJl
Y3RvcnknIHBhdGNoPScxMDAwMCcKLXJ1bl93ZWJraXRfcGF0Y2g6IFsnYXBwbHktYXR0YWNobWVu
dCcsICctLW5vLXVwZGF0ZScsICctLW5vbi1pbnRlcmFjdGl2ZScsIDEwMDAwXQotY29tbWFuZF9w
YXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nQXBwbGllZCBwYXRjaCcgcGF0Y2g9JzEwMDAwJwotcnVu
X3dlYmtpdF9wYXRjaDogWyd2YWxpZGF0ZS1jaGFuZ2Vsb2cnLCAnLS1jaGVjay1vb3BzJywgJy0t
bm9uLWludGVyYWN0aXZlJywgMTAwMDBdCi1jb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdl
PSdDaGFuZ2VMb2cgdmFsaWRhdGVkJyBwYXRjaD0nMTAwMDAnCi1ydW5fd2Via2l0X3BhdGNoOiBb
J2J1aWxkJywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS1idWlsZC1zdHlsZT1yZWxl
YXNlJ10KLWNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0J1aWx0IHBhdGNoJyBwYXRj
aD0nMTAwMDAnCi1ydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tbm8tY2xl
YW4nLCAnLS1uby11cGRhdGUnLCAnLS10ZXN0JywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0tYnVp
bGQtc3R5bGU9cmVsZWFzZSddCi1jb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdQYXNz
ZWQgdGVzdHMnIHBhdGNoPScxMDAwMCcKLXJ1bl93ZWJraXRfcGF0Y2g6IFsnbGFuZC1hdHRhY2ht
ZW50JywgJy0tZm9yY2UtY2xlYW4nLCAnLS1ub24taW50ZXJhY3RpdmUnLCAnLS1wYXJlbnQtY29t
bWFuZD1jb21taXQtcXVldWUnLCAxMDAwMF0KLWNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3Nh
Z2U9J0xhbmRlZCBwYXRjaCcgcGF0Y2g9JzEwMDAwJwotIiIiCi0gICAgICAgIHNlbGYuX3J1bl90
aHJvdWdoX3Rhc2soY29tbWl0X3F1ZXVlLCBleHBlY3RlZF9sb2dzKQotCi0gICAgZGVmIHRlc3Rf
ZmFzdF9zdWNjZXNzX2Nhc2Uoc2VsZik6Ci0gICAgICAgIGNvbW1pdF9xdWV1ZSA9IE1vY2tDb21t
aXRRdWV1ZShbXSkKLSAgICAgICAgY29tbWl0X3F1ZXVlLmRpZF9wYXNzX3Rlc3RpbmdfZXdzID0g
bGFtYmRhIHBhdGNoOiBUcnVlCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJydW5fd2Via2l0
X3BhdGNoOiBbJ2NsZWFuJ10KLWNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0NsZWFu
ZWQgd29ya2luZyBkaXJlY3RvcnknIHBhdGNoPScxMDAwMCcKLXJ1bl93ZWJraXRfcGF0Y2g6IFsn
dXBkYXRlJ10KLWNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J1VwZGF0ZWQgd29ya2lu
ZyBkaXJlY3RvcnknIHBhdGNoPScxMDAwMCcKLXJ1bl93ZWJraXRfcGF0Y2g6IFsnYXBwbHktYXR0
YWNobWVudCcsICctLW5vLXVwZGF0ZScsICctLW5vbi1pbnRlcmFjdGl2ZScsIDEwMDAwXQotY29t
bWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nQXBwbGllZCBwYXRjaCcgcGF0Y2g9JzEwMDAw
JwotcnVuX3dlYmtpdF9wYXRjaDogWyd2YWxpZGF0ZS1jaGFuZ2Vsb2cnLCAnLS1jaGVjay1vb3Bz
JywgJy0tbm9uLWludGVyYWN0aXZlJywgMTAwMDBdCi1jb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19t
ZXNzYWdlPSdDaGFuZ2VMb2cgdmFsaWRhdGVkJyBwYXRjaD0nMTAwMDAnCi1ydW5fd2Via2l0X3Bh
dGNoOiBbJ2J1aWxkJywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS1idWlsZC1zdHls
ZT1yZWxlYXNlJ10KLWNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0J1aWx0IHBhdGNo
JyBwYXRjaD0nMTAwMDAnCi1ydW5fd2Via2l0X3BhdGNoOiBbJ2xhbmQtYXR0YWNobWVudCcsICct
LWZvcmNlLWNsZWFuJywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0tcGFyZW50LWNvbW1hbmQ9Y29t
bWl0LXF1ZXVlJywgMTAwMDBdCi1jb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdMYW5k
ZWQgcGF0Y2gnIHBhdGNoPScxMDAwMCcKLSIiIgotICAgICAgICBzZWxmLl9ydW5fdGhyb3VnaF90
YXNrKGNvbW1pdF9xdWV1ZSwgZXhwZWN0ZWRfbG9ncykKLQotICAgIGRlZiB0ZXN0X2NsZWFuX2Zh
aWx1cmUoc2VsZik6Ci0gICAgICAgIGNvbW1pdF9xdWV1ZSA9IE1vY2tDb21taXRRdWV1ZShbCi0g
ICAgICAgICAgICBTY3JpcHRFcnJvcigiTU9DSyBjbGVhbiBmYWlsdXJlIiksCi0gICAgICAgIF0p
Ci0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJydW5fd2Via2l0X3BhdGNoOiBbJ2NsZWFuJ10K
LWNvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1VuYWJsZSB0byBjbGVhbiB3b3JraW5n
IGRpcmVjdG9yeScgc2NyaXB0X2Vycm9yPSdNT0NLIGNsZWFuIGZhaWx1cmUnIHBhdGNoPScxMDAw
MCcKLSIiIgotICAgICAgICBzZWxmLl9ydW5fdGhyb3VnaF90YXNrKGNvbW1pdF9xdWV1ZSwgZXhw
ZWN0ZWRfbG9ncywgZXhwZWN0X3JldHJ5PVRydWUpCi0KLSAgICBkZWYgdGVzdF91cGRhdGVfZmFp
bHVyZShzZWxmKToKLSAgICAgICAgY29tbWl0X3F1ZXVlID0gTW9ja0NvbW1pdFF1ZXVlKFsKLSAg
ICAgICAgICAgIE5vbmUsCi0gICAgICAgICAgICBTY3JpcHRFcnJvcigiTU9DSyB1cGRhdGUgZmFp
bHVyZSIpLAotICAgICAgICBdKQotICAgICAgICBleHBlY3RlZF9sb2dzID0gIiIicnVuX3dlYmtp
dF9wYXRjaDogWydjbGVhbiddCi1jb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdDbGVh
bmVkIHdvcmtpbmcgZGlyZWN0b3J5JyBwYXRjaD0nMTAwMDAnCi1ydW5fd2Via2l0X3BhdGNoOiBb
J3VwZGF0ZSddCi1jb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdVbmFibGUgdG8gdXBk
YXRlIHdvcmtpbmcgZGlyZWN0b3J5JyBzY3JpcHRfZXJyb3I9J01PQ0sgdXBkYXRlIGZhaWx1cmUn
IHBhdGNoPScxMDAwMCcKLSIiIgotICAgICAgICBzZWxmLl9ydW5fdGhyb3VnaF90YXNrKGNvbW1p
dF9xdWV1ZSwgZXhwZWN0ZWRfbG9ncywgZXhwZWN0X3JldHJ5PVRydWUpCi0KLSAgICBkZWYgdGVz
dF9hcHBseV9mYWlsdXJlKHNlbGYpOgotICAgICAgICBjb21taXRfcXVldWUgPSBNb2NrQ29tbWl0
UXVldWUoWwotICAgICAgICAgICAgTm9uZSwKLSAgICAgICAgICAgIE5vbmUsCi0gICAgICAgICAg
ICBHb2xkZW5TY3JpcHRFcnJvcigiTU9DSyBhcHBseSBmYWlsdXJlIiksCi0gICAgICAgIF0pCi0g
ICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJydW5fd2Via2l0X3BhdGNoOiBbJ2NsZWFuJ10KLWNv
bW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0NsZWFuZWQgd29ya2luZyBkaXJlY3Rvcnkn
IHBhdGNoPScxMDAwMCcKLXJ1bl93ZWJraXRfcGF0Y2g6IFsndXBkYXRlJ10KLWNvbW1hbmRfcGFz
c2VkOiBzdWNjZXNzX21lc3NhZ2U9J1VwZGF0ZWQgd29ya2luZyBkaXJlY3RvcnknIHBhdGNoPScx
MDAwMCcKLXJ1bl93ZWJraXRfcGF0Y2g6IFsnYXBwbHktYXR0YWNobWVudCcsICctLW5vLXVwZGF0
ZScsICctLW5vbi1pbnRlcmFjdGl2ZScsIDEwMDAwXQotY29tbWFuZF9mYWlsZWQ6IGZhaWx1cmVf
bWVzc2FnZT0nUGF0Y2ggZG9lcyBub3QgYXBwbHknIHNjcmlwdF9lcnJvcj0nTU9DSyBhcHBseSBm
YWlsdXJlJyBwYXRjaD0nMTAwMDAnCi0iIiIKLSAgICAgICAgc2VsZi5fcnVuX3Rocm91Z2hfdGFz
ayhjb21taXRfcXVldWUsIGV4cGVjdGVkX2xvZ3MsIEdvbGRlblNjcmlwdEVycm9yKQotCi0gICAg
ZGVmIHRlc3RfdmFsaWRhdGVfY2hhbmdlbG9nX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIGNvbW1p
dF9xdWV1ZSA9IE1vY2tDb21taXRRdWV1ZShbCi0gICAgICAgICAgICBOb25lLAotICAgICAgICAg
ICAgTm9uZSwKLSAgICAgICAgICAgIE5vbmUsCi0gICAgICAgICAgICBHb2xkZW5TY3JpcHRFcnJv
cigiTU9DSyB2YWxpZGF0ZSBmYWlsdXJlIiksCi0gICAgICAgIF0pCi0gICAgICAgIGV4cGVjdGVk
X2xvZ3MgPSAiIiJydW5fd2Via2l0X3BhdGNoOiBbJ2NsZWFuJ10KLWNvbW1hbmRfcGFzc2VkOiBz
dWNjZXNzX21lc3NhZ2U9J0NsZWFuZWQgd29ya2luZyBkaXJlY3RvcnknIHBhdGNoPScxMDAwMCcK
LXJ1bl93ZWJraXRfcGF0Y2g6IFsndXBkYXRlJ10KLWNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21l
c3NhZ2U9J1VwZGF0ZWQgd29ya2luZyBkaXJlY3RvcnknIHBhdGNoPScxMDAwMCcKLXJ1bl93ZWJr
aXRfcGF0Y2g6IFsnYXBwbHktYXR0YWNobWVudCcsICctLW5vLXVwZGF0ZScsICctLW5vbi1pbnRl
cmFjdGl2ZScsIDEwMDAwXQotY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nQXBwbGll
ZCBwYXRjaCcgcGF0Y2g9JzEwMDAwJwotcnVuX3dlYmtpdF9wYXRjaDogWyd2YWxpZGF0ZS1jaGFu
Z2Vsb2cnLCAnLS1jaGVjay1vb3BzJywgJy0tbm9uLWludGVyYWN0aXZlJywgMTAwMDBdCi1jb21t
YW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdDaGFuZ2VMb2cgZGlkIG5vdCBwYXNzIHZhbGlk
YXRpb24nIHNjcmlwdF9lcnJvcj0nTU9DSyB2YWxpZGF0ZSBmYWlsdXJlJyBwYXRjaD0nMTAwMDAn
Ci0iIiIKLSAgICAgICAgc2VsZi5fcnVuX3Rocm91Z2hfdGFzayhjb21taXRfcXVldWUsIGV4cGVj
dGVkX2xvZ3MsIEdvbGRlblNjcmlwdEVycm9yKQotCi0gICAgZGVmIHRlc3RfYnVpbGRfZmFpbHVy
ZShzZWxmKToKLSAgICAgICAgY29tbWl0X3F1ZXVlID0gTW9ja0NvbW1pdFF1ZXVlKFsKLSAgICAg
ICAgICAgIE5vbmUsCi0gICAgICAgICAgICBOb25lLAotICAgICAgICAgICAgTm9uZSwKLSAgICAg
ICAgICAgIE5vbmUsCi0gICAgICAgICAgICBHb2xkZW5TY3JpcHRFcnJvcigiTU9DSyBidWlsZCBm
YWlsdXJlIiksCi0gICAgICAgIF0pCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJydW5fd2Vi
a2l0X3BhdGNoOiBbJ2NsZWFuJ10KLWNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0Ns
ZWFuZWQgd29ya2luZyBkaXJlY3RvcnknIHBhdGNoPScxMDAwMCcKLXJ1bl93ZWJraXRfcGF0Y2g6
IFsndXBkYXRlJ10KLWNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J1VwZGF0ZWQgd29y
a2luZyBkaXJlY3RvcnknIHBhdGNoPScxMDAwMCcKLXJ1bl93ZWJraXRfcGF0Y2g6IFsnYXBwbHkt
YXR0YWNobWVudCcsICctLW5vLXVwZGF0ZScsICctLW5vbi1pbnRlcmFjdGl2ZScsIDEwMDAwXQot
Y29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nQXBwbGllZCBwYXRjaCcgcGF0Y2g9JzEw
MDAwJwotcnVuX3dlYmtpdF9wYXRjaDogWyd2YWxpZGF0ZS1jaGFuZ2Vsb2cnLCAnLS1jaGVjay1v
b3BzJywgJy0tbm9uLWludGVyYWN0aXZlJywgMTAwMDBdCi1jb21tYW5kX3Bhc3NlZDogc3VjY2Vz
c19tZXNzYWdlPSdDaGFuZ2VMb2cgdmFsaWRhdGVkJyBwYXRjaD0nMTAwMDAnCi1ydW5fd2Via2l0
X3BhdGNoOiBbJ2J1aWxkJywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS1idWlsZC1z
dHlsZT1yZWxlYXNlJ10KLWNvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1BhdGNoIGRv
ZXMgbm90IGJ1aWxkJyBzY3JpcHRfZXJyb3I9J01PQ0sgYnVpbGQgZmFpbHVyZScgcGF0Y2g9JzEw
MDAwJwotcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZCcsICctLWZvcmNlLWNsZWFuJywgJy0tbm8t
dXBkYXRlJywgJy0tYnVpbGQtc3R5bGU9cmVsZWFzZSddCi1jb21tYW5kX3Bhc3NlZDogc3VjY2Vz
c19tZXNzYWdlPSdBYmxlIHRvIGJ1aWxkIHdpdGhvdXQgcGF0Y2gnIHBhdGNoPScxMDAwMCcKLSIi
IgotICAgICAgICBzZWxmLl9ydW5fdGhyb3VnaF90YXNrKGNvbW1pdF9xdWV1ZSwgZXhwZWN0ZWRf
bG9ncywgR29sZGVuU2NyaXB0RXJyb3IpCi0KLSAgICBkZWYgdGVzdF9yZWRfYnVpbGRfZmFpbHVy
ZShzZWxmKToKLSAgICAgICAgY29tbWl0X3F1ZXVlID0gTW9ja0NvbW1pdFF1ZXVlKFsKLSAgICAg
ICAgICAgIE5vbmUsCi0gICAgICAgICAgICBOb25lLAotICAgICAgICAgICAgTm9uZSwKLSAgICAg
ICAgICAgIE5vbmUsCi0gICAgICAgICAgICBTY3JpcHRFcnJvcigiTU9DSyBidWlsZCBmYWlsdXJl
IiksCi0gICAgICAgICAgICBTY3JpcHRFcnJvcigiTU9DSyBjbGVhbiBidWlsZCBmYWlsdXJlIiks
Ci0gICAgICAgIF0pCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJydW5fd2Via2l0X3BhdGNo
OiBbJ2NsZWFuJ10KLWNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0NsZWFuZWQgd29y
a2luZyBkaXJlY3RvcnknIHBhdGNoPScxMDAwMCcKLXJ1bl93ZWJraXRfcGF0Y2g6IFsndXBkYXRl
J10KLWNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J1VwZGF0ZWQgd29ya2luZyBkaXJl
Y3RvcnknIHBhdGNoPScxMDAwMCcKLXJ1bl93ZWJraXRfcGF0Y2g6IFsnYXBwbHktYXR0YWNobWVu
dCcsICctLW5vLXVwZGF0ZScsICctLW5vbi1pbnRlcmFjdGl2ZScsIDEwMDAwXQotY29tbWFuZF9w
YXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nQXBwbGllZCBwYXRjaCcgcGF0Y2g9JzEwMDAwJwotcnVu
X3dlYmtpdF9wYXRjaDogWyd2YWxpZGF0ZS1jaGFuZ2Vsb2cnLCAnLS1jaGVjay1vb3BzJywgJy0t
bm9uLWludGVyYWN0aXZlJywgMTAwMDBdCi1jb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdl
PSdDaGFuZ2VMb2cgdmFsaWRhdGVkJyBwYXRjaD0nMTAwMDAnCi1ydW5fd2Via2l0X3BhdGNoOiBb
J2J1aWxkJywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS1idWlsZC1zdHlsZT1yZWxl
YXNlJ10KLWNvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1BhdGNoIGRvZXMgbm90IGJ1
aWxkJyBzY3JpcHRfZXJyb3I9J01PQ0sgYnVpbGQgZmFpbHVyZScgcGF0Y2g9JzEwMDAwJwotcnVu
X3dlYmtpdF9wYXRjaDogWydidWlsZCcsICctLWZvcmNlLWNsZWFuJywgJy0tbm8tdXBkYXRlJywg
Jy0tYnVpbGQtc3R5bGU9cmVsZWFzZSddCi1jb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdl
PSdVbmFibGUgdG8gYnVpbGQgd2l0aG91dCBwYXRjaCcgc2NyaXB0X2Vycm9yPSdNT0NLIGNsZWFu
IGJ1aWxkIGZhaWx1cmUnIHBhdGNoPScxMDAwMCcKLSIiIgotICAgICAgICBzZWxmLl9ydW5fdGhy
b3VnaF90YXNrKGNvbW1pdF9xdWV1ZSwgZXhwZWN0ZWRfbG9ncywgZXhwZWN0X3JldHJ5PVRydWUp
Ci0KLSAgICBkZWYgdGVzdF9sYW5kX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIGNvbW1pdF9xdWV1
ZSA9IE1vY2tDb21taXRRdWV1ZShbCi0gICAgICAgICAgICBOb25lLAotICAgICAgICAgICAgTm9u
ZSwKLSAgICAgICAgICAgIE5vbmUsCi0gICAgICAgICAgICBOb25lLAotICAgICAgICAgICAgTm9u
ZSwKLSAgICAgICAgICAgIE5vbmUsCi0gICAgICAgICAgICBHb2xkZW5TY3JpcHRFcnJvcigiTU9D
SyBsYW5kIGZhaWx1cmUiKSwKLSAgICAgICAgXSkKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICIi
InJ1bl93ZWJraXRfcGF0Y2g6IFsnY2xlYW4nXQotY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVz
c2FnZT0nQ2xlYW5lZCB3b3JraW5nIGRpcmVjdG9yeScgcGF0Y2g9JzEwMDAwJwotcnVuX3dlYmtp
dF9wYXRjaDogWyd1cGRhdGUnXQotY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nVXBk
YXRlZCB3b3JraW5nIGRpcmVjdG9yeScgcGF0Y2g9JzEwMDAwJwotcnVuX3dlYmtpdF9wYXRjaDog
WydhcHBseS1hdHRhY2htZW50JywgJy0tbm8tdXBkYXRlJywgJy0tbm9uLWludGVyYWN0aXZlJywg
MTAwMDBdCi1jb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdBcHBsaWVkIHBhdGNoJyBw
YXRjaD0nMTAwMDAnCi1ydW5fd2Via2l0X3BhdGNoOiBbJ3ZhbGlkYXRlLWNoYW5nZWxvZycsICct
LWNoZWNrLW9vcHMnLCAnLS1ub24taW50ZXJhY3RpdmUnLCAxMDAwMF0KLWNvbW1hbmRfcGFzc2Vk
OiBzdWNjZXNzX21lc3NhZ2U9J0NoYW5nZUxvZyB2YWxpZGF0ZWQnIHBhdGNoPScxMDAwMCcKLXJ1
bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICct
LWJ1aWxkLXN0eWxlPXJlbGVhc2UnXQotY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0n
QnVpbHQgcGF0Y2gnIHBhdGNoPScxMDAwMCcKLXJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5k
LXRlc3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRlc3QnLCAnLS1ub24taW50
ZXJhY3RpdmUnLCAnLS1idWlsZC1zdHlsZT1yZWxlYXNlJ10KLWNvbW1hbmRfcGFzc2VkOiBzdWNj
ZXNzX21lc3NhZ2U9J1Bhc3NlZCB0ZXN0cycgcGF0Y2g9JzEwMDAwJwotcnVuX3dlYmtpdF9wYXRj
aDogWydsYW5kLWF0dGFjaG1lbnQnLCAnLS1mb3JjZS1jbGVhbicsICctLW5vbi1pbnRlcmFjdGl2
ZScsICctLXBhcmVudC1jb21tYW5kPWNvbW1pdC1xdWV1ZScsIDEwMDAwXQotY29tbWFuZF9mYWls
ZWQ6IGZhaWx1cmVfbWVzc2FnZT0nVW5hYmxlIHRvIGxhbmQgcGF0Y2gnIHNjcmlwdF9lcnJvcj0n
TU9DSyBsYW5kIGZhaWx1cmUnIHBhdGNoPScxMDAwMCcKLSIiIgotICAgICAgICAjIEZJWE1FOiBU
aGlzIHNob3VsZCByZWFsbHkgYmUgZXhwZWN0X3JldHJ5PVRydWUgZm9yIGEgYmV0dGVyIHVzZXIg
ZXhwZXJpYW5jZS4KLSAgICAgICAgc2VsZi5fcnVuX3Rocm91Z2hfdGFzayhjb21taXRfcXVldWUs
IGV4cGVjdGVkX2xvZ3MsIEdvbGRlblNjcmlwdEVycm9yKQotCi0gICAgZGVmIHRlc3RfZmFpbGVk
X2FyY2hpdmUoc2VsZik6Ci0gICAgICAgIGNvbW1pdF9xdWV1ZSA9IE1vY2tTaW1wbGVUZXN0UGxh
bkNvbW1pdFF1ZXVlKAotICAgICAgICAgICAgZmlyc3RfdGVzdF9mYWlsdXJlcz1bIkZhaWwxIl0s
Ci0gICAgICAgICAgICBzZWNvbmRfdGVzdF9mYWlsdXJlcz1bXSwKLSAgICAgICAgICAgIGNsZWFu
X3Rlc3RfZmFpbHVyZXM9W10pCi0KLSAgICAgICAgIyBJdCdzIHBvc3NpYmxlIGZvciB0aGUgZGVs
ZWdhdGUgdG8gZmFpbCB0byBhcmNoaXZlIGxheW91dCB0ZXN0cywKLSAgICAgICAgIyBidXQgd2Ug
c2hvdWxkbid0IHRyeSB0byByZXBvcnQgZmxha3kgdGVzdHMgd2hlbiB0aGF0IGhhcHBlbnMuCi0g
ICAgICAgIGNvbW1pdF9xdWV1ZS5hcmNoaXZlX2xhc3RfdGVzdF9yZXN1bHRzID0gbGFtYmRhIHBh
dGNoOiBOb25lCi0KLSAgICAgICAgc2VsZi5fcnVuX2FuZF9leHBlY3RfcGF0Y2hfYW5hbHlzaXNf
cmVzdWx0KGNvbW1pdF9xdWV1ZSwgUGF0Y2hBbmFseXNpc1Jlc3VsdC5QQVNTKQotCi0gICAgZGVm
IHRlc3RfZG91YmxlX2ZsYWt5X3Rlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgY29tbWl0X3F1
ZXVlID0gTW9ja1NpbXBsZVRlc3RQbGFuQ29tbWl0UXVldWUoCi0gICAgICAgICAgICBmaXJzdF90
ZXN0X2ZhaWx1cmVzPVsiRmFpbDEiXSwKLSAgICAgICAgICAgIHNlY29uZF90ZXN0X2ZhaWx1cmVz
PVsiRmFpbDIiXSwKLSAgICAgICAgICAgIGNsZWFuX3Rlc3RfZmFpbHVyZXM9WyJGYWlsMSJdKQot
Ci0gICAgICAgICMgVGhlIChzdWJ0bGUpIHBvaW50IG9mIHRoaXMgdGVzdCBpcyB0aGF0IHJlcG9y
dF9mbGFreV90ZXN0cyBkb2VzIG5vdCBnZXQKLSAgICAgICAgIyBjYWxsZWQgZm9yIHRoaXMgcnVu
LgotICAgICAgICAjIE5vdGUgYWxzbyB0aGF0IHRoZXJlIGlzIG5vIGF0dGVtcHQgdG8gcnVuIHRo
ZSB0ZXN0cyB3L28gdGhlIHBhdGNoLgotICAgICAgICBzZWxmLl9ydW5fYW5kX2V4cGVjdF9wYXRj
aF9hbmFseXNpc19yZXN1bHQoY29tbWl0X3F1ZXVlLCBQYXRjaEFuYWx5c2lzUmVzdWx0LkRFRkVS
LCBleHBlY3RlZF9yZXBvcnRlZF9mbGFreV90ZXN0cz1bIkZhaWwxIiwgIkZhaWwyIl0pCi0KLSAg
ICBkZWYgdGVzdF90ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIGNvbW1pdF9xdWV1ZSA9IE1v
Y2tTaW1wbGVUZXN0UGxhbkNvbW1pdFF1ZXVlKAotICAgICAgICAgICAgZmlyc3RfdGVzdF9mYWls
dXJlcz1bIkZhaWwxIl0sCi0gICAgICAgICAgICBzZWNvbmRfdGVzdF9mYWlsdXJlcz1bIkZhaWwx
Il0sCi0gICAgICAgICAgICBjbGVhbl90ZXN0X2ZhaWx1cmVzPVtdKQotCi0gICAgICAgIHNlbGYu
X3J1bl9hbmRfZXhwZWN0X3BhdGNoX2FuYWx5c2lzX3Jlc3VsdChjb21taXRfcXVldWUsIFBhdGNo
QW5hbHlzaXNSZXN1bHQuRkFJTCwgZXhwZWN0X2NsZWFuX3Rlc3RzX3RvX3J1bj1UcnVlLCBleHBl
Y3RlZF9mYWlsdXJlX3N0YXR1c19pZD0xKQotCi0gICAgZGVmIHRlc3RfcmVkX3Rlc3RfZmFpbHVy
ZShzZWxmKToKLSAgICAgICAgY29tbWl0X3F1ZXVlID0gTW9ja1NpbXBsZVRlc3RQbGFuQ29tbWl0
UXVldWUoCi0gICAgICAgICAgICBmaXJzdF90ZXN0X2ZhaWx1cmVzPVsiRmFpbDEiXSwKLSAgICAg
ICAgICAgIHNlY29uZF90ZXN0X2ZhaWx1cmVzPVsiRmFpbDEiXSwKLSAgICAgICAgICAgIGNsZWFu
X3Rlc3RfZmFpbHVyZXM9WyJGYWlsMSJdKQotCi0gICAgICAgIHNlbGYuX3J1bl9hbmRfZXhwZWN0
X3BhdGNoX2FuYWx5c2lzX3Jlc3VsdChjb21taXRfcXVldWUsIFBhdGNoQW5hbHlzaXNSZXN1bHQu
UEFTUywgZXhwZWN0X2NsZWFuX3Rlc3RzX3RvX3J1bj1UcnVlKQotCi0gICAgZGVmIHRlc3RfZmly
c3RfZmFpbHVyZV9saW1pdChzZWxmKToKLSAgICAgICAgY29tbWl0X3F1ZXVlID0gTW9ja1NpbXBs
ZVRlc3RQbGFuQ29tbWl0UXVldWUoCi0gICAgICAgICAgICBmaXJzdF90ZXN0X2ZhaWx1cmVzPV9s
b3RzX29mX2ZhaWxpbmdfdGVzdHMsCi0gICAgICAgICAgICBzZWNvbmRfdGVzdF9mYWlsdXJlcz1b
XSwKLSAgICAgICAgICAgIGNsZWFuX3Rlc3RfZmFpbHVyZXM9W10pCi0KLSAgICAgICAgc2VsZi5f
cnVuX2FuZF9leHBlY3RfcGF0Y2hfYW5hbHlzaXNfcmVzdWx0KGNvbW1pdF9xdWV1ZSwgUGF0Y2hB
bmFseXNpc1Jlc3VsdC5ERUZFUiwgZXhwZWN0X2NsZWFuX3Rlc3RzX3RvX3J1bj1UcnVlLCBleHBl
Y3RlZF9mYWlsdXJlX3N0YXR1c19pZD0xKQotCi0gICAgZGVmIHRlc3RfZmlyc3RfZmFpbHVyZV9s
aW1pdF93aXRoX3NvbWVfdHJlZV9yZWRuZXNzKHNlbGYpOgotICAgICAgICBjb21taXRfcXVldWUg
PSBNb2NrU2ltcGxlVGVzdFBsYW5Db21taXRRdWV1ZSgKLSAgICAgICAgICAgIGZpcnN0X3Rlc3Rf
ZmFpbHVyZXM9X2xvdHNfb2ZfZmFpbGluZ190ZXN0cywKLSAgICAgICAgICAgIHNlY29uZF90ZXN0
X2ZhaWx1cmVzPVsiRmFpbDEiLCAiRmFpbDIiLCAiRmFpbDMiXSwKLSAgICAgICAgICAgIGNsZWFu
X3Rlc3RfZmFpbHVyZXM9WyJGYWlsMSIsICJGYWlsMiIsICJGYWlsMyJdKQotCi0gICAgICAgIHNl
bGYuX3J1bl9hbmRfZXhwZWN0X3BhdGNoX2FuYWx5c2lzX3Jlc3VsdChjb21taXRfcXVldWUsIFBh
dGNoQW5hbHlzaXNSZXN1bHQuREVGRVIsIGV4cGVjdF9jbGVhbl90ZXN0c190b19ydW49VHJ1ZSwg
ZXhwZWN0ZWRfZmFpbHVyZV9zdGF0dXNfaWQ9MSkKLQotICAgIGRlZiB0ZXN0X3NlY29uZF9mYWls
dXJlX2xpbWl0KHNlbGYpOgotICAgICAgICAjIFRoZXJlIG5lZWQgdG8gYmUgc29tZSBmYWlsdXJl
cyBpbiB0aGUgZmlyc3Qgc2V0IG9mIHRlc3RzLCBvciBpdCB3b24ndCBldmVuIG1ha2UgaXQgdG8g
dGhlIHNlY29uZCB0ZXN0LgotICAgICAgICBjb21taXRfcXVldWUgPSBNb2NrU2ltcGxlVGVzdFBs
YW5Db21taXRRdWV1ZSgKLSAgICAgICAgICAgIGZpcnN0X3Rlc3RfZmFpbHVyZXM9WyJGYWlsMSIs
ICJGYWlsMiIsICJGYWlsMyJdLAotICAgICAgICAgICAgc2Vjb25kX3Rlc3RfZmFpbHVyZXM9X2xv
dHNfb2ZfZmFpbGluZ190ZXN0cywKLSAgICAgICAgICAgIGNsZWFuX3Rlc3RfZmFpbHVyZXM9WyJG
YWlsMSIsICJGYWlsMiIsICJGYWlsMyJdKQotCi0gICAgICAgIHNlbGYuX3J1bl9hbmRfZXhwZWN0
X3BhdGNoX2FuYWx5c2lzX3Jlc3VsdChjb21taXRfcXVldWUsIFBhdGNoQW5hbHlzaXNSZXN1bHQu
REVGRVIsIGV4cGVjdF9jbGVhbl90ZXN0c190b19ydW49VHJ1ZSwgZXhwZWN0ZWRfZmFpbHVyZV9z
dGF0dXNfaWQ9MikKLQotICAgIGRlZiB0ZXN0X3RyZWVfZmFpbHVyZV9saW1pdF93aXRoX3BhdGNo
X3RoYXRfcG90ZW50aWFsbHlfZml4ZXNfc29tZV9yZWRuZXNzKHNlbGYpOgotICAgICAgICBjb21t
aXRfcXVldWUgPSBNb2NrU2ltcGxlVGVzdFBsYW5Db21taXRRdWV1ZSgKLSAgICAgICAgICAgIGZp
cnN0X3Rlc3RfZmFpbHVyZXM9WyJGYWlsMSIsICJGYWlsMiIsICJGYWlsMyJdLAotICAgICAgICAg
ICAgc2Vjb25kX3Rlc3RfZmFpbHVyZXM9WyJGYWlsMSIsICJGYWlsMiIsICJGYWlsMyJdLAotICAg
ICAgICAgICAgY2xlYW5fdGVzdF9mYWlsdXJlcz1fbG90c19vZl9mYWlsaW5nX3Rlc3RzKQotCi0g
ICAgICAgICMgVW5mb3J0dW5hdGVseSB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgdGhlIGNsZWFuIGJ1
aWxkIHdpbGwgcmFuZG9tbHkgZmFpbCBlbm91Z2ggdGVzdHMgdG8gaGl0IHRoZSBmYWlsdXJlIGxp
bWl0LgotICAgICAgICAjIFdpdGggdGhhdCBpbiBtaW5kLCB3ZSBjYW4ndCBhY3R1YWxseSBrbm93
IHRoYXQgdGhpcyBwYXRjaCBpcyBnb29kIG9yIGJhZCB1bnRpbCB3ZSBzZWUgYSBjbGVhbiBydW4g
dGhhdCBkb2Vzbid0Ci0gICAgICAgICMgZXhjZWVkIHRoZSBmYWlsdXJlIGxpbWl0LgotICAgICAg
ICBzZWxmLl9ydW5fYW5kX2V4cGVjdF9wYXRjaF9hbmFseXNpc19yZXN1bHQoY29tbWl0X3F1ZXVl
LCBQYXRjaEFuYWx5c2lzUmVzdWx0LkRFRkVSLCBleHBlY3RfY2xlYW5fdGVzdHNfdG9fcnVuPVRy
dWUpCi0KLSAgICBkZWYgdGVzdF9maXJzdF9hbmRfc2Vjb25kX2ZhaWx1cmVfbGltaXQoc2VsZik6
Ci0gICAgICAgIGNvbW1pdF9xdWV1ZSA9IE1vY2tTaW1wbGVUZXN0UGxhbkNvbW1pdFF1ZXVlKAot
ICAgICAgICAgICAgZmlyc3RfdGVzdF9mYWlsdXJlcz1fbG90c19vZl9mYWlsaW5nX3Rlc3RzLAot
ICAgICAgICAgICAgc2Vjb25kX3Rlc3RfZmFpbHVyZXM9X2xvdHNfb2ZfZmFpbGluZ190ZXN0cywK
LSAgICAgICAgICAgIGNsZWFuX3Rlc3RfZmFpbHVyZXM9W10pCi0KLSAgICAgICAgc2VsZi5fcnVu
X2FuZF9leHBlY3RfcGF0Y2hfYW5hbHlzaXNfcmVzdWx0KGNvbW1pdF9xdWV1ZSwgUGF0Y2hBbmFs
eXNpc1Jlc3VsdC5GQUlMLCBleHBlY3RfY2xlYW5fdGVzdHNfdG9fcnVuPVRydWUsIGV4cGVjdGVk
X2ZhaWx1cmVfc3RhdHVzX2lkPTEpCi0KLSAgICBkZWYgdGVzdF9maXJzdF9hbmRfY2xlYW5fZmFp
bHVyZV9saW1pdChzZWxmKToKLSAgICAgICAgY29tbWl0X3F1ZXVlID0gTW9ja1NpbXBsZVRlc3RQ
bGFuQ29tbWl0UXVldWUoCi0gICAgICAgICAgICBmaXJzdF90ZXN0X2ZhaWx1cmVzPV9sb3RzX29m
X2ZhaWxpbmdfdGVzdHMsCi0gICAgICAgICAgICBzZWNvbmRfdGVzdF9mYWlsdXJlcz1bXSwKLSAg
ICAgICAgICAgIGNsZWFuX3Rlc3RfZmFpbHVyZXM9X2xvdHNfb2ZfZmFpbGluZ190ZXN0cykKLQot
ICAgICAgICBzZWxmLl9ydW5fYW5kX2V4cGVjdF9wYXRjaF9hbmFseXNpc19yZXN1bHQoY29tbWl0
X3F1ZXVlLCBQYXRjaEFuYWx5c2lzUmVzdWx0LkRFRkVSLCBleHBlY3RfY2xlYW5fdGVzdHNfdG9f
cnVuPVRydWUpCi0KLSAgICBkZWYgdGVzdF9maXJzdF9zZWNvbmRfYW5kX2NsZWFuX2ZhaWx1cmVf
bGltaXQoc2VsZik6Ci0gICAgICAgIGNvbW1pdF9xdWV1ZSA9IE1vY2tTaW1wbGVUZXN0UGxhbkNv
bW1pdFF1ZXVlKAotICAgICAgICAgICAgZmlyc3RfdGVzdF9mYWlsdXJlcz1fbG90c19vZl9mYWls
aW5nX3Rlc3RzLAotICAgICAgICAgICAgc2Vjb25kX3Rlc3RfZmFpbHVyZXM9X2xvdHNfb2ZfZmFp
bGluZ190ZXN0cywKLSAgICAgICAgICAgIGNsZWFuX3Rlc3RfZmFpbHVyZXM9X2xvdHNfb2ZfZmFp
bGluZ190ZXN0cykKLQotICAgICAgICBzZWxmLl9ydW5fYW5kX2V4cGVjdF9wYXRjaF9hbmFseXNp
c19yZXN1bHQoY29tbWl0X3F1ZXVlLCBQYXRjaEFuYWx5c2lzUmVzdWx0LkRFRkVSLCBleHBlY3Rf
Y2xlYW5fdGVzdHNfdG9fcnVuPVRydWUpCi0KLSAgICBkZWYgdGVzdF9yZWRfdHJlZV9wYXRjaF9y
ZWplY3Rpb24oc2VsZik6Ci0gICAgICAgIGNvbW1pdF9xdWV1ZSA9IE1vY2tTaW1wbGVUZXN0UGxh
bkNvbW1pdFF1ZXVlKAotICAgICAgICAgICAgZmlyc3RfdGVzdF9mYWlsdXJlcz1bIkZhaWwxIiwg
IkZhaWwyIl0sCi0gICAgICAgICAgICBzZWNvbmRfdGVzdF9mYWlsdXJlcz1bIkZhaWwxIiwgIkZh
aWwyIl0sCi0gICAgICAgICAgICBjbGVhbl90ZXN0X2ZhaWx1cmVzPVsiRmFpbDEiXSkKLQotICAg
ICAgICAjIGZhaWx1cmVfc3RhdHVzX2lkIHNob3VsZCBiZSBvZiB0aGUgdGVzdCB3aXRoIHBhdGNo
ICgxKSwgbm90IHRoZSB0ZXN0IHdpdGhvdXQgcGF0Y2ggKDIpLgotICAgICAgICBzZWxmLl9ydW5f
YW5kX2V4cGVjdF9wYXRjaF9hbmFseXNpc19yZXN1bHQoY29tbWl0X3F1ZXVlLCBQYXRjaEFuYWx5
c2lzUmVzdWx0LkZBSUwsIGV4cGVjdF9jbGVhbl90ZXN0c190b19ydW49VHJ1ZSwgZXhwZWN0ZWRf
ZmFpbHVyZV9zdGF0dXNfaWQ9MSkKLQotICAgIGRlZiB0ZXN0X3R3b19mbGFreV90ZXN0cyhzZWxm
KToKLSAgICAgICAgY29tbWl0X3F1ZXVlID0gTW9ja1NpbXBsZVRlc3RQbGFuQ29tbWl0UXVldWUo
Ci0gICAgICAgICAgICBmaXJzdF90ZXN0X2ZhaWx1cmVzPVsiRmFpbDEiXSwKLSAgICAgICAgICAg
IHNlY29uZF90ZXN0X2ZhaWx1cmVzPVsiRmFpbDIiXSwKLSAgICAgICAgICAgIGNsZWFuX3Rlc3Rf
ZmFpbHVyZXM9WyJGYWlsMSIsICJGYWlsMiJdKQotCi0gICAgICAgICMgRklYTUU6IFRoaXMgc2hv
dWxkIHBhc3MsIGJ1dCBhcyBvZiByaWdodCBub3csIGl0IGRlZmVycy4KLSAgICAgICAgc2VsZi5f
cnVuX2FuZF9leHBlY3RfcGF0Y2hfYW5hbHlzaXNfcmVzdWx0KGNvbW1pdF9xdWV1ZSwgUGF0Y2hB
bmFseXNpc1Jlc3VsdC5ERUZFUiwgZXhwZWN0ZWRfcmVwb3J0ZWRfZmxha3lfdGVzdHM9WyJGYWls
MSIsICJGYWlsMiJdKQotCi0gICAgZGVmIHRlc3Rfb25lX2ZsYWt5X3Rlc3Qoc2VsZik6Ci0gICAg
ICAgIGNvbW1pdF9xdWV1ZSA9IE1vY2tTaW1wbGVUZXN0UGxhbkNvbW1pdFF1ZXVlKAotICAgICAg
ICAgICAgZmlyc3RfdGVzdF9mYWlsdXJlcz1bIkZhaWwxIl0sCi0gICAgICAgICAgICBzZWNvbmRf
dGVzdF9mYWlsdXJlcz1bXSwKLSAgICAgICAgICAgIGNsZWFuX3Rlc3RfZmFpbHVyZXM9W10pCi0K
LSAgICAgICAgc2VsZi5fcnVuX2FuZF9leHBlY3RfcGF0Y2hfYW5hbHlzaXNfcmVzdWx0KGNvbW1p
dF9xdWV1ZSwgUGF0Y2hBbmFseXNpc1Jlc3VsdC5QQVNTLCBleHBlY3RlZF9yZXBvcnRlZF9mbGFr
eV90ZXN0cz1bIkZhaWwxIl0pCi0KLSAgICBkZWYgdGVzdF92ZXJ5X2ZsYWt5X3BhdGNoKHNlbGYp
OgotICAgICAgICBjb21taXRfcXVldWUgPSBNb2NrU2ltcGxlVGVzdFBsYW5Db21taXRRdWV1ZSgK
LSAgICAgICAgICAgIGZpcnN0X3Rlc3RfZmFpbHVyZXM9WyJGYWlsMSIsICJGYWlsMiIsICJGYWls
MyIsICJGYWlsNCIsICJGYWlsNSJdLAotICAgICAgICAgICAgc2Vjb25kX3Rlc3RfZmFpbHVyZXM9
WyJGYWlsNiIsICJGYWlsNyIsICJGYWlsOCIsICJGYWlsOSIsICJGYWlsMTAiXSwKLSAgICAgICAg
ICAgIGNsZWFuX3Rlc3RfZmFpbHVyZXM9W10pCi0KLSAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91
bGQgYWN0dWFsbHkgZmFpbCwgYnV0IHJpZ2h0IG5vdyBpdCBkZWZlcnMKLSAgICAgICAgc2VsZi5f
cnVuX2FuZF9leHBlY3RfcGF0Y2hfYW5hbHlzaXNfcmVzdWx0KGNvbW1pdF9xdWV1ZSwgUGF0Y2hB
bmFseXNpc1Jlc3VsdC5ERUZFUiwgZXhwZWN0ZWRfcmVwb3J0ZWRfZmxha3lfdGVzdHM9WyJGYWls
MSIsICJGYWlsMiIsICJGYWlsMyIsICJGYWlsNCIsICJGYWlsNSIsICJGYWlsNiIsICJGYWlsNyIs
ICJGYWlsOCIsICJGYWlsOSIsICJGYWlsMTAiXSkKLQotICAgIGRlZiB0ZXN0X3ZlcnlfZmxha3lf
cGF0Y2hfd2l0aF9zb21lX3RyZWVfcmVkbmVzcyhzZWxmKToKLSAgICAgICAgY29tbWl0X3F1ZXVl
ID0gTW9ja1NpbXBsZVRlc3RQbGFuQ29tbWl0UXVldWUoCi0gICAgICAgICAgICBmaXJzdF90ZXN0
X2ZhaWx1cmVzPVsiUHJlRXhpc3RpbmdGYWlsMSIsICJQcmVFeGlzdGluZ0ZhaWwyIiwgIkZhaWwx
IiwgIkZhaWwyIiwgIkZhaWwzIiwgIkZhaWw0IiwgIkZhaWw1Il0sCi0gICAgICAgICAgICBzZWNv
bmRfdGVzdF9mYWlsdXJlcz1bIlByZUV4aXN0aW5nRmFpbDEiLCAiUHJlRXhpc3RpbmdGYWlsMiIs
ICJGYWlsNiIsICJGYWlsNyIsICJGYWlsOCIsICJGYWlsOSIsICJGYWlsMTAiXSwKLSAgICAgICAg
ICAgIGNsZWFuX3Rlc3RfZmFpbHVyZXM9WyJQcmVFeGlzdGluZ0ZhaWwxIiwgIlByZUV4aXN0aW5n
RmFpbDIiXSkKLQotICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBhY3R1YWxseSBmYWlsLCBi
dXQgcmlnaHQgbm93IGl0IGRlZmVycwotICAgICAgICBzZWxmLl9ydW5fYW5kX2V4cGVjdF9wYXRj
aF9hbmFseXNpc19yZXN1bHQoY29tbWl0X3F1ZXVlLCBQYXRjaEFuYWx5c2lzUmVzdWx0LkRFRkVS
LCBleHBlY3RfY2xlYW5fdGVzdHNfdG9fcnVuPVRydWUsIGV4cGVjdGVkX3JlcG9ydGVkX2ZsYWt5
X3Rlc3RzPVsiRmFpbDEiLCAiRmFpbDIiLCAiRmFpbDMiLCAiRmFpbDQiLCAiRmFpbDUiLCAiRmFp
bDYiLCAiRmFpbDciLCAiRmFpbDgiLCAiRmFpbDkiLCAiRmFpbDEwIl0pCi0KLSAgICBkZWYgdGVz
dF9kaWZmZXJlbnRfdGVzdF9mYWlsdXJlcyhzZWxmKToKLSAgICAgICAgY29tbWl0X3F1ZXVlID0g
TW9ja1NpbXBsZVRlc3RQbGFuQ29tbWl0UXVldWUoCi0gICAgICAgICAgICBmaXJzdF90ZXN0X2Zh
aWx1cmVzPVsiRmFpbDEiLCAiRmFpbDIiLCAiRmFpbDMiLCAiRmFpbDQiLCAiRmFpbDUiLCAiRmFp
bDYiXSwKLSAgICAgICAgICAgIHNlY29uZF90ZXN0X2ZhaWx1cmVzPVsiRmFpbDEiLCAiRmFpbDIi
LCAiRmFpbDMiLCAiRmFpbDQiLCAiRmFpbDUiXSwKLSAgICAgICAgICAgIGNsZWFuX3Rlc3RfZmFp
bHVyZXM9W10pCi0KLSAgICAgICAgc2VsZi5fcnVuX2FuZF9leHBlY3RfcGF0Y2hfYW5hbHlzaXNf
cmVzdWx0KGNvbW1pdF9xdWV1ZSwgUGF0Y2hBbmFseXNpc1Jlc3VsdC5GQUlMLCBleHBlY3RfY2xl
YW5fdGVzdHNfdG9fcnVuPVRydWUsIGV4cGVjdGVkX3JlcG9ydGVkX2ZsYWt5X3Rlc3RzPVsiRmFp
bDYiXSwgZXhwZWN0ZWRfZmFpbHVyZV9zdGF0dXNfaWQ9MSkKLQotICAgIGRlZiB0ZXN0X2RpZmZl
cmVudF90ZXN0X2ZhaWx1cmVzX3dpdGhfc29tZV90cmVlX3JlZG5lc3Moc2VsZik6Ci0gICAgICAg
IGNvbW1pdF9xdWV1ZSA9IE1vY2tTaW1wbGVUZXN0UGxhbkNvbW1pdFF1ZXVlKAotICAgICAgICAg
ICAgZmlyc3RfdGVzdF9mYWlsdXJlcz1bIlByZUV4aXN0aW5nRmFpbDEiLCAiUHJlRXhpc3RpbmdG
YWlsMiIsICJGYWlsMSIsICJGYWlsMiIsICJGYWlsMyIsICJGYWlsNCIsICJGYWlsNSIsICJGYWls
NiJdLAotICAgICAgICAgICAgc2Vjb25kX3Rlc3RfZmFpbHVyZXM9WyJQcmVFeGlzdGluZ0ZhaWwx
IiwgIlByZUV4aXN0aW5nRmFpbDIiLCAiRmFpbDEiLCAiRmFpbDIiLCAiRmFpbDMiLCAiRmFpbDQi
LCAiRmFpbDUiXSwKLSAgICAgICAgICAgIGNsZWFuX3Rlc3RfZmFpbHVyZXM9WyJQcmVFeGlzdGlu
Z0ZhaWwxIiwgIlByZUV4aXN0aW5nRmFpbDIiXSkKLQotICAgICAgICBzZWxmLl9ydW5fYW5kX2V4
cGVjdF9wYXRjaF9hbmFseXNpc19yZXN1bHQoY29tbWl0X3F1ZXVlLCBQYXRjaEFuYWx5c2lzUmVz
dWx0LkZBSUwsIGV4cGVjdF9jbGVhbl90ZXN0c190b19ydW49VHJ1ZSwgZXhwZWN0ZWRfcmVwb3J0
ZWRfZmxha3lfdGVzdHM9WyJGYWlsNiJdLCBleHBlY3RlZF9mYWlsdXJlX3N0YXR1c19pZD0xKQot
Ci0gICAgZGVmIHRlc3RfZGlmZmVyZW50X3Rlc3RfZmFpbHVyZXNfd2l0aF9zb21lX3RyZWVfcmVk
bmVzc19hbmRfc29tZV9maXhlcyhzZWxmKToKLSAgICAgICAgY29tbWl0X3F1ZXVlID0gTW9ja1Np
bXBsZVRlc3RQbGFuQ29tbWl0UXVldWUoCi0gICAgICAgICAgICBmaXJzdF90ZXN0X2ZhaWx1cmVz
PVsiUHJlRXhpc3RpbmdGYWlsMSIsICJGYWlsMSIsICJGYWlsMiIsICJGYWlsMyIsICJGYWlsNCIs
ICJGYWlsNSIsICJGYWlsNiJdLAotICAgICAgICAgICAgc2Vjb25kX3Rlc3RfZmFpbHVyZXM9WyJQ
cmVFeGlzdGluZ0ZhaWwxIiwgIkZhaWwxIiwgIkZhaWwyIiwgIkZhaWwzIiwgIkZhaWw0IiwgIkZh
aWw1Il0sCi0gICAgICAgICAgICBjbGVhbl90ZXN0X2ZhaWx1cmVzPVsiUHJlRXhpc3RpbmdGYWls
MSIsICJQcmVFeGlzdGluZ0ZhaWwyIl0pCi0KLSAgICAgICAgc2VsZi5fcnVuX2FuZF9leHBlY3Rf
cGF0Y2hfYW5hbHlzaXNfcmVzdWx0KGNvbW1pdF9xdWV1ZSwgUGF0Y2hBbmFseXNpc1Jlc3VsdC5G
QUlMLCBleHBlY3RfY2xlYW5fdGVzdHNfdG9fcnVuPVRydWUsIGV4cGVjdGVkX3JlcG9ydGVkX2Zs
YWt5X3Rlc3RzPVsiRmFpbDYiXSwgZXhwZWN0ZWRfZmFpbHVyZV9zdGF0dXNfaWQ9MSkKLQotICAg
IGRlZiB0ZXN0X21pbGRseV9mbGFreV9wYXRjaChzZWxmKToKLSAgICAgICAgY29tbWl0X3F1ZXVl
ID0gTW9ja1NpbXBsZVRlc3RQbGFuQ29tbWl0UXVldWUoCi0gICAgICAgICAgICBmaXJzdF90ZXN0
X2ZhaWx1cmVzPVsiRmFpbDEiXSwKLSAgICAgICAgICAgIHNlY29uZF90ZXN0X2ZhaWx1cmVzPVsi
RmFpbDIiXSwKLSAgICAgICAgICAgIGNsZWFuX3Rlc3RfZmFpbHVyZXM9W10pCi0KLSAgICAgICAg
c2VsZi5fcnVuX2FuZF9leHBlY3RfcGF0Y2hfYW5hbHlzaXNfcmVzdWx0KGNvbW1pdF9xdWV1ZSwg
UGF0Y2hBbmFseXNpc1Jlc3VsdC5ERUZFUiwgZXhwZWN0X2NsZWFuX3Rlc3RzX3RvX3J1bj1GYWxz
ZSwgZXhwZWN0ZWRfcmVwb3J0ZWRfZmxha3lfdGVzdHM9WyJGYWlsMSIsICJGYWlsMiJdKQotCi0g
ICAgZGVmIHRlc3RfbWlsZGx5X2ZsYWt5X3BhdGNoX3dpdGhfc29tZV90cmVlX3JlZG5lc3Moc2Vs
Zik6Ci0gICAgICAgIGNvbW1pdF9xdWV1ZSA9IE1vY2tTaW1wbGVUZXN0UGxhbkNvbW1pdFF1ZXVl
KAotICAgICAgICAgICAgZmlyc3RfdGVzdF9mYWlsdXJlcz1bIlByZUV4aXN0aW5nRmFpbDEiLCAi
UHJlRXhpc3RpbmdGYWlsMiIsICJGYWlsMSJdLAotICAgICAgICAgICAgc2Vjb25kX3Rlc3RfZmFp
bHVyZXM9WyJQcmVFeGlzdGluZ0ZhaWwxIiwgIlByZUV4aXN0aW5nRmFpbDIiLCAiRmFpbDIiXSwK
LSAgICAgICAgICAgIGNsZWFuX3Rlc3RfZmFpbHVyZXM9WyJQcmVFeGlzdGluZ0ZhaWwxIiwgIlBy
ZUV4aXN0aW5nRmFpbDIiXSkKLQotICAgICAgICBzZWxmLl9ydW5fYW5kX2V4cGVjdF9wYXRjaF9h
bmFseXNpc19yZXN1bHQoY29tbWl0X3F1ZXVlLCBQYXRjaEFuYWx5c2lzUmVzdWx0LkRFRkVSLCBl
eHBlY3RfY2xlYW5fdGVzdHNfdG9fcnVuPVRydWUsIGV4cGVjdGVkX3JlcG9ydGVkX2ZsYWt5X3Rl
c3RzPVsiRmFpbDEiLCAiRmFpbDIiXSkKLQotICAgIGRlZiB0ZXN0X21pbGRseV9mbGFreV9wYXRj
aF93aXRoX3NvbWVfdHJlZV9yZWRuZXNzX2FuZF9mbGFraW5lc3Moc2VsZik6Ci0gICAgICAgIGNv
bW1pdF9xdWV1ZSA9IE1vY2tTaW1wbGVUZXN0UGxhbkNvbW1pdFF1ZXVlKAotICAgICAgICAgICAg
Zmlyc3RfdGVzdF9mYWlsdXJlcz1bIlByZUV4aXN0aW5nRmFpbDEiLCAiUHJlRXhpc3RpbmdGYWls
MiIsICJGYWlsMSJdLAotICAgICAgICAgICAgc2Vjb25kX3Rlc3RfZmFpbHVyZXM9WyJQcmVFeGlz
dGluZ0ZhaWwxIiwgIlByZUV4aXN0aW5nRmFpbDIiXSwKLSAgICAgICAgICAgIGNsZWFuX3Rlc3Rf
ZmFpbHVyZXM9WyJQcmVFeGlzdGluZ0ZhaWwxIiwgIlByZUV4aXN0aW5nRmFpbDIiLCAiRmFpbDIi
XSkKLQotICAgICAgICBzZWxmLl9ydW5fYW5kX2V4cGVjdF9wYXRjaF9hbmFseXNpc19yZXN1bHQo
Y29tbWl0X3F1ZXVlLCBQYXRjaEFuYWx5c2lzUmVzdWx0LkRFRkVSLCBleHBlY3RfY2xlYW5fdGVz
dHNfdG9fcnVuPVRydWUsIGV4cGVjdGVkX3JlcG9ydGVkX2ZsYWt5X3Rlc3RzPVsiRmFpbDEiXSkK
LQotICAgIGRlZiB0ZXN0X3RyZWVfbW9yZV9yZWRfdGhhbl9wYXRjaChzZWxmKToKLSAgICAgICAg
Y29tbWl0X3F1ZXVlID0gTW9ja1NpbXBsZVRlc3RQbGFuQ29tbWl0UXVldWUoCi0gICAgICAgICAg
ICBmaXJzdF90ZXN0X2ZhaWx1cmVzPVsiRmFpbDEiLCAiRmFpbDIiLCAiRmFpbDMiXSwKLSAgICAg
ICAgICAgIHNlY29uZF90ZXN0X2ZhaWx1cmVzPVsiRmFpbDEiLCAiRmFpbDIiLCAiRmFpbDMiXSwK
LSAgICAgICAgICAgIGNsZWFuX3Rlc3RfZmFpbHVyZXM9WyJGYWlsMSIsICJGYWlsMiIsICJGYWls
MyIsICJGYWlsNCJdKQotCi0gICAgICAgIHNlbGYuX3J1bl9hbmRfZXhwZWN0X3BhdGNoX2FuYWx5
c2lzX3Jlc3VsdChjb21taXRfcXVldWUsIFBhdGNoQW5hbHlzaXNSZXN1bHQuUEFTUywgZXhwZWN0
X2NsZWFuX3Rlc3RzX3RvX3J1bj1UcnVlKQotCi0gICAgZGVmIF9leHBlY3RfdmFsaWRhdGUoc2Vs
ZiwgcGF0Y2gsIGlzX3ZhbGlkKToKLSAgICAgICAgY2xhc3MgTW9ja0RlbGVnYXRlKG9iamVjdCk6
Ci0gICAgICAgICAgICBkZWYgcmVmZXRjaF9wYXRjaChzZWxmLCBwYXRjaCk6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHBhdGNoCi0KLSAgICAgICAgdGFzayA9IENvbW1pdFF1ZXVlVGFzayhNb2Nr
RGVsZWdhdGUoKSwgcGF0Y2gpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFzay52YWxpZGF0
ZSgpLCBpc192YWxpZCkKLQotICAgIGRlZiBfbW9ja19wYXRjaChzZWxmLCBhdHRhY2htZW50X2Rp
Y3Q9e30sIGJ1Z19kaWN0PXsnYnVnX3N0YXR1cyc6ICdORVcnfSwgY29tbWl0dGVyPSJmYWtlIik6
Ci0gICAgICAgIGJ1ZyA9IGJ1Z3ppbGxhLkJ1ZyhidWdfZGljdCwgTm9uZSkKLSAgICAgICAgcGF0
Y2ggPSBidWd6aWxsYS5BdHRhY2htZW50KGF0dGFjaG1lbnRfZGljdCwgYnVnKQotICAgICAgICBw
YXRjaC5fY29tbWl0dGVyID0gY29tbWl0dGVyCi0gICAgICAgIHJldHVybiBwYXRjaAotCi0gICAg
ZGVmIHRlc3RfdmFsaWRhdGUoc2VsZik6Ci0gICAgICAgIHNlbGYuX2V4cGVjdF92YWxpZGF0ZShz
ZWxmLl9tb2NrX3BhdGNoKCksIFRydWUpCi0gICAgICAgIHNlbGYuX2V4cGVjdF92YWxpZGF0ZShz
ZWxmLl9tb2NrX3BhdGNoKHsnaXNfb2Jzb2xldGUnOiBUcnVlfSksIEZhbHNlKQotICAgICAgICBz
ZWxmLl9leHBlY3RfdmFsaWRhdGUoc2VsZi5fbW9ja19wYXRjaChidWdfZGljdD17J2J1Z19zdGF0
dXMnOiAnQ0xPU0VEJ30pLCBGYWxzZSkKLSAgICAgICAgc2VsZi5fZXhwZWN0X3ZhbGlkYXRlKHNl
bGYuX21vY2tfcGF0Y2goY29tbWl0dGVyPU5vbmUpLCBGYWxzZSkKLSAgICAgICAgc2VsZi5fZXhw
ZWN0X3ZhbGlkYXRlKHNlbGYuX21vY2tfcGF0Y2goeydyZXZpZXcnOiAnLSd9KSwgRmFsc2UpCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkJ
KHJldmlzaW9uIDI2MTMwMikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9xdWV1ZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEzICszNywxMSBAQCBpbXBvcnQgdHJh
Y2ViYWNrCiAKIGZyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCiAKLWZyb20gd2Via2l0
cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJ2YWxpZGF0b3IgaW1wb3J0IENvbW1pdHRlclZhbGlk
YXRvcgogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLnBvcnRzIGltcG9ydCBEZXByZWNhdGVk
UG9ydAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBBdHRhY2htZW50
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJv
cgogZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBCeXRl
c0lPCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmJvdGluZm8gaW1wb3J0IEJvdEluZm8KLWZyb20g
d2Via2l0cHkudG9vbC5ib3QuY29tbWl0cXVldWV0YXNrIGltcG9ydCBDb21taXRRdWV1ZVRhc2ss
IENvbW1pdFF1ZXVlVGFza0RlbGVnYXRlCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmZsYWt5dGVz
dHJlcG9ydGVyIGltcG9ydCBGbGFreVRlc3RSZXBvcnRlcgogZnJvbSB3ZWJraXRweS50b29sLmJv
dC5sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlciBpbXBvcnQgTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXIK
IGZyb20gd2Via2l0cHkudG9vbC5ib3QucGF0Y2hhbmFseXNpc3Rhc2sgaW1wb3J0IFVuYWJsZVRv
QXBwbHlQYXRjaCwgUGF0Y2hJc05vdFZhbGlkCkBAIC0yOTAsMTIzICsyODgsNiBAQCBjbGFzcyBQ
YXRjaFByb2Nlc3NpbmdRdWV1ZShBYnN0cmFjdFBhdGNoCiAgICAgICAgICAgICBzZWxmLl90b29s
LmJ1Z3MuYWRkX2F0dGFjaG1lbnRfdG9fYnVnKHBhdGNoLmJ1Z19pZCgpLCByZXN1bHRzX2FyY2hp
dmVfZmlsZSwgZGVzY3JpcHRpb24sIGZpbGVuYW1lPSJsYXlvdXQtdGVzdC1yZXN1bHRzLnppcCIs
IGNvbW1lbnRfdGV4dD1jb21tZW50X3RleHQpCiAKIAotY2xhc3MgQ29tbWl0UXVldWUoUGF0Y2hQ
cm9jZXNzaW5nUXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlciwgQ29tbWl0UXVldWVUYXNr
RGVsZWdhdGUpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb21taXRfcXVldWVfdGFza19jbGFz
cz1Db21taXRRdWV1ZVRhc2spOgotICAgICAgICBzZWxmLl9jb21taXRfcXVldWVfdGFza19jbGFz
cyA9IGNvbW1pdF9xdWV1ZV90YXNrX2NsYXNzCi0gICAgICAgIFBhdGNoUHJvY2Vzc2luZ1F1ZXVl
Ll9faW5pdF9fKHNlbGYpCi0KLSAgICBuYW1lID0gImNvbW1pdC1xdWV1ZSIKLSAgICBwb3J0X25h
bWUgPSAibWFjIgotCi0gICAgIyBBYnN0cmFjdFBhdGNoUXVldWUgbWV0aG9kcwotCi0gICAgZGVm
IGJlZ2luX3dvcmtfcXVldWUoc2VsZik6Ci0gICAgICAgIFBhdGNoUHJvY2Vzc2luZ1F1ZXVlLmJl
Z2luX3dvcmtfcXVldWUoc2VsZikKLSAgICAgICAgc2VsZi5jb21taXR0ZXJfdmFsaWRhdG9yID0g
Q29tbWl0dGVyVmFsaWRhdG9yKHNlbGYuX3Rvb2wpCi0gICAgICAgIHNlbGYuX2xheW91dF90ZXN0
X3Jlc3VsdHNfcmVhZGVyID0gTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXIoc2VsZi5fdG9vbCwgc2Vs
Zi5fcG9ydC5yZXN1bHRzX2RpcmVjdG9yeSgpLCBzZWxmLl9sb2dfZGlyZWN0b3J5KCkpCi0KLSAg
ICBkZWYgbmV4dF93b3JrX2l0ZW0oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9uZXh0X3Bh
dGNoKCkKLQotICAgIGRlZiBwcm9jZXNzX3dvcmtfaXRlbShzZWxmLCBwYXRjaCk6Ci0gICAgICAg
IHNlbGYuX2NjX3dhdGNoZXJzKHBhdGNoLmJ1Z19pZCgpKQotICAgICAgICB0YXNrID0gc2VsZi5f
Y29tbWl0X3F1ZXVlX3Rhc2tfY2xhc3Moc2VsZiwgcGF0Y2gpCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIGlmIHRhc2sucnVuKCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZGlkX3Bhc3MocGF0
Y2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgICAgIHNlbGYuX3VubG9j
a19wYXRjaChwYXRjaCkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBleGNlcHQg
UGF0Y2hJc05vdFZhbGlkIGFzIGVycm9yOgotICAgICAgICAgICAgc2VsZi5fZGlkX2Vycm9yKHBh
dGNoLCAiJXMgZGlkIG5vdCBwcm9jZXNzIHBhdGNoLiBSZWFzb246ICVzIiAlIChzZWxmLm5hbWUs
IGVycm9yLmZhaWx1cmVfbWVzc2FnZSkpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAg
ICAgZXhjZXB0IFNjcmlwdEVycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBzZWxmLl9jYW5fYWNj
ZXNzX2J1ZyhwYXRjaC5idWdfaWQoKSk6Ci0gICAgICAgICAgICAgICAgdmFsaWRhdG9yID0gQ29t
bWl0dGVyVmFsaWRhdG9yKHNlbGYuX3Rvb2wpCi0gICAgICAgICAgICAgICAgdmFsaWRhdG9yLnJl
amVjdF9wYXRjaF9mcm9tX2NvbW1pdF9xdWV1ZShwYXRjaC5pZCgpLCBzZWxmLl9lcnJvcl9tZXNz
YWdlX2Zvcl9idWcodGFzaywgcGF0Y2gsIGUpKQotICAgICAgICAgICAgcmVzdWx0c19hcmNoaXZl
ID0gdGFzay5yZXN1bHRzX2FyY2hpdmVfZnJvbV9wYXRjaF90ZXN0X3J1bihwYXRjaCkKLSAgICAg
ICAgICAgIGlmIHJlc3VsdHNfYXJjaGl2ZToKLSAgICAgICAgICAgICAgICBzZWxmLl91cGxvYWRf
cmVzdWx0c19hcmNoaXZlX2Zvcl9wYXRjaChwYXRjaCwgcmVzdWx0c19hcmNoaXZlKQotICAgICAg
ICAgICAgc2VsZi5fZGlkX2ZhaWwocGF0Y2gpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQot
ICAgIGRlZiBfZmFpbGluZ190ZXN0c19tZXNzYWdlKHNlbGYsIHRhc2ssIHBhdGNoKToKLSAgICAg
ICAgcmVzdWx0cyA9IHRhc2sucmVzdWx0c19mcm9tX3BhdGNoX3Rlc3RfcnVuKHBhdGNoKQotCi0g
ICAgICAgIGlmIG5vdCByZXN1bHRzOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAg
ICBpZiByZXN1bHRzLmRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0KCk6Ci0gICAgICAgICAg
ICByZXR1cm4gIk51bWJlciBvZiB0ZXN0IGZhaWx1cmVzIGV4Y2VlZGVkIHRoZSBmYWlsdXJlIGxp
bWl0LiIKLSAgICAgICAgcmV0dXJuICJOZXcgZmFpbGluZyB0ZXN0czpcbiVzIiAlICJcbiIuam9p
bihyZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSkKLQotICAgIGRlZiBfZXJyb3JfbWVzc2FnZV9mb3Jf
YnVnKHNlbGYsIHRhc2ssIHBhdGNoLCBzY3JpcHRfZXJyb3IpOgotICAgICAgICBtZXNzYWdlID0g
c2VsZi5fZmFpbGluZ190ZXN0c19tZXNzYWdlKHRhc2ssIHBhdGNoKQotICAgICAgICBpZiBub3Qg
bWVzc2FnZToKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBzY3JpcHRfZXJyb3IubWVzc2FnZV93aXRo
X291dHB1dChvdXRwdXRfbGltaXQ9NTAwMCkKLSAgICAgICAgcmVzdWx0c19saW5rID0gc2VsZi5f
dG9vbC5zdGF0dXNfc2VydmVyLnJlc3VsdHNfdXJsX2Zvcl9zdGF0dXModGFzay5mYWlsdXJlX3N0
YXR1c19pZCkKLSAgICAgICAgcmV0dXJuICIlc1xuRnVsbCBvdXRwdXQ6ICVzIiAlIChtZXNzYWdl
LCByZXN1bHRzX2xpbmspCi0KLSAgICBkZWYgaGFuZGxlX3VuZXhwZWN0ZWRfZXJyb3Ioc2VsZiwg
cGF0Y2gsIG1lc3NhZ2UpOgotICAgICAgICBzZWxmLmNvbW1pdHRlcl92YWxpZGF0b3IucmVqZWN0
X3BhdGNoX2Zyb21fY29tbWl0X3F1ZXVlKHBhdGNoLmlkKCksIG1lc3NhZ2UpCi0KLSAgICAjIENv
bW1pdFF1ZXVlVGFza0RlbGVnYXRlIG1ldGhvZHMKLQotICAgIGRlZiBydW5fY29tbWFuZChzZWxm
LCBjb21tYW5kKToKLSAgICAgICAgc2VsZi5ydW5fd2Via2l0X3BhdGNoKGNvbW1hbmQgKyBbc2Vs
Zi5fZGVwcmVjYXRlZF9wb3J0LmZsYWcoKV0pCi0KLSAgICBkZWYgY29tbWFuZF9wYXNzZWQoc2Vs
ZiwgbWVzc2FnZSwgcGF0Y2gpOgotICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzKG1lc3NhZ2Us
IHBhdGNoPXBhdGNoKQotCi0gICAgZGVmIGNvbW1hbmRfZmFpbGVkKHNlbGYsIG1lc3NhZ2UsIHNj
cmlwdF9lcnJvciwgcGF0Y2gpOgotICAgICAgICBmYWlsdXJlX2xvZyA9IHNlbGYuX2xvZ19mcm9t
X3NjcmlwdF9lcnJvcl9mb3JfdXBsb2FkKHNjcmlwdF9lcnJvcikKLSAgICAgICAgcmV0dXJuIHNl
bGYuX3VwZGF0ZV9zdGF0dXMobWVzc2FnZSwgcGF0Y2g9cGF0Y2gsIHJlc3VsdHNfZmlsZT1mYWls
dXJlX2xvZykKLQotICAgIGRlZiBleHBlY3RlZF9mYWlsdXJlcyhzZWxmKToKLSAgICAgICAgcmV0
dXJuIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVzCi0KLSAgICBkZWYgdGVzdF9yZXN1bHRzKHNlbGYp
OgotICAgICAgICByZXR1cm4gc2VsZi5fbGF5b3V0X3Rlc3RfcmVzdWx0c19yZWFkZXIucmVzdWx0
cygpCi0KLSAgICBkZWYgYXJjaGl2ZV9sYXN0X3Rlc3RfcmVzdWx0cyhzZWxmLCBwYXRjaCk6Ci0g
ICAgICAgIHJldHVybiBzZWxmLl9sYXlvdXRfdGVzdF9yZXN1bHRzX3JlYWRlci5hcmNoaXZlKHBh
dGNoKQotCi0gICAgZGVmIHJlZmV0Y2hfcGF0Y2goc2VsZiwgcGF0Y2gpOgotICAgICAgICByZXR1
cm4gc2VsZi5fdG9vbC5idWdzLmZldGNoX2F0dGFjaG1lbnQocGF0Y2guaWQoKSkKLQotICAgIGRl
ZiByZXBvcnRfZmxha3lfdGVzdHMoc2VsZiwgcGF0Y2gsIGZsYWt5X3Rlc3RfcmVzdWx0cywgcmVz
dWx0c19hcmNoaXZlPU5vbmUpOgotICAgICAgICByZXBvcnRlciA9IEZsYWt5VGVzdFJlcG9ydGVy
KHNlbGYuX3Rvb2wsIHNlbGYubmFtZSkKLSAgICAgICAgcmVwb3J0ZXIucmVwb3J0X2ZsYWt5X3Rl
c3RzKHBhdGNoLCBmbGFreV90ZXN0X3Jlc3VsdHMsIHJlc3VsdHNfYXJjaGl2ZSkKLQotICAgIGRl
ZiBkaWRfcGFzc190ZXN0aW5nX2V3cyhzZWxmLCBwYXRjaCk6Ci0gICAgICAgICMgT25seSBNYWMg
YW5kIE1hYyBXSzIgcnVuIHRlc3RzCi0gICAgICAgICMgRklYTUU6IFdlIHNob3VsZG4ndCBoYXZl
IHRvIGhhcmQtY29kZSBpdCBoZXJlLgotICAgICAgICBwYXRjaF9zdGF0dXMgPSBzZWxmLl90b29s
LnN0YXR1c19zZXJ2ZXIucGF0Y2hfc3RhdHVzCi0gICAgICAgIHJldHVybiBwYXRjaF9zdGF0dXMo
Im1hYy1ld3MiLCBwYXRjaC5pZCgpKSA9PSBzZWxmLl9wYXNzX3N0YXR1cyBvciBwYXRjaF9zdGF0
dXMoIm1hYy13azItZXdzIiwgcGF0Y2guaWQoKSkgPT0gc2VsZi5fcGFzc19zdGF0dXMKLQotICAg
ICMgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyIG1ldGhvZHMKLQotICAgIEBjbGFzc21ldGhvZAot
ICAgIGRlZiBoYW5kbGVfc2NyaXB0X2Vycm9yKGNscywgdG9vbCwgc3RhdGUsIHNjcmlwdF9lcnJv
cik6Ci0gICAgICAgICMgSGl0dGluZyB0aGlzIGVycm9yIGhhbmRsZXIgc2hvdWxkIGJlIHByZXR0
eSByYXJlLiAgSXQgZG9lcyBvY2N1ciwKLSAgICAgICAgIyBob3dldmVyLCB3aGVuIGEgcGF0Y2gg
bm8gbG9uZ2VyIGFwcGxpZXMgdG8gdG9wLW9mLXRyZWUgaW4gdGhlIGZpbmFsCi0gICAgICAgICMg
bGFuZCBzdGVwLgotICAgICAgICBfbG9nLmVycm9yKHNjcmlwdF9lcnJvci5tZXNzYWdlX3dpdGhf
b3V0cHV0KG91dHB1dF9saW1pdD01MDAwKSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBo
YW5kbGVfY2hlY2tvdXRfbmVlZHNfdXBkYXRlKGNscywgdG9vbCwgc3RhdGUsIG9wdGlvbnMsIGVy
cm9yKToKLSAgICAgICAgbWVzc2FnZSA9ICJUZXN0cyBwYXNzZWQsIGJ1dCBjb21taXQgZmFpbGVk
IChjaGVja291dCBvdXQgb2YgZGF0ZSkuICBVcGRhdGluZywgdGhlbiBsYW5kaW5nIHdpdGhvdXQg
YnVpbGRpbmcgb3IgcmUtcnVubmluZyB0ZXN0cy4iCi0gICAgICAgIHRvb2wuc3RhdHVzX3NlcnZl
ci51cGRhdGVfc3RhdHVzKGNscy5uYW1lLCBtZXNzYWdlLCBzdGF0ZVsicGF0Y2giXSkKLSAgICAg
ICAgIyBUaGUgb25seSB0aW1lIHdoZW4gd2UgZmluZCBvdXQgdGhhdCBvdXQgY2hlY2tvdXQgbmVl
ZHMgdXBkYXRlIGlzCi0gICAgICAgICMgd2hlbiB3ZSB3ZXJlIHJlYWR5IHRvIGFjdHVhbGx5IHB1
bGwgdGhlIHRyaWdnZXIgYW5kIGxhbmQgdGhlIHBhdGNoLgotICAgICAgICAjIFJhdGhlciB0aGFu
IHNwaW5uaW5nIGluIHRoZSBtYXN0ZXIgcHJvY2Vzcywgd2UgcmV0cnkgd2l0aG91dAotICAgICAg
ICAjIGJ1aWxkaW5nIG9yIHRlc3RpbmcsIHdoaWNoIGlzIG11Y2ggZmFzdGVyLgotICAgICAgICBv
cHRpb25zLmJ1aWxkID0gRmFsc2UKLSAgICAgICAgb3B0aW9ucy50ZXN0ID0gRmFsc2UKLSAgICAg
ICAgb3B0aW9ucy51cGRhdGUgPSBUcnVlCi0gICAgICAgIHJhaXNlIFRyeUFnYWluKCkKLQotCiBj
bGFzcyBBYnN0cmFjdFJldmlld1F1ZXVlKFBhdGNoUHJvY2Vzc2luZ1F1ZXVlLCBTdGVwU2VxdWVu
Y2VFcnJvckhhbmRsZXIpOgogICAgICIiIlRoaXMgaXMgdGhlIGJhc2UtY2xhc3MgZm9yIHRoZSBF
V1MgcXVldWVzIGFuZCB0aGUgc3R5bGUtcXVldWUuIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG9wdGlvbnM9Tm9uZSk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcXVldWVzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2MTMwMikKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDIwICs0Niw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLm5l
dC5zdGF0dXNzZXJ2ZXJfbW8KIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9j
a1Rvb2wsIE1vY2tPcHRpb25zCiAKIAotY2xhc3MgVGVzdENvbW1pdFF1ZXVlKENvbW1pdFF1ZXVl
KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdG9vbD1Ob25lKToKLSAgICAgICAgQ29tbWl0UXVl
dWUuX19pbml0X18oc2VsZikKLSAgICAgICAgaWYgdG9vbDoKLSAgICAgICAgICAgIHNlbGYuYmlu
ZF90b190b29sKHRvb2wpCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25m
aXJtPUZhbHNlLCBwYXJlbnRfY29tbWFuZD0iY29tbWl0LXF1ZXVlIiwgcG9ydD1Ob25lKQotCi0g
ICAgZGVmIGJlZ2luX3dvcmtfcXVldWUoc2VsZik6Ci0gICAgICAgIG91dHB1dF9jYXB0dXJlID0g
T3V0cHV0Q2FwdHVyZSgpCi0gICAgICAgIG91dHB1dF9jYXB0dXJlLmNhcHR1cmVfb3V0cHV0KCkK
LSAgICAgICAgQ29tbWl0UXVldWUuYmVnaW5fd29ya19xdWV1ZShzZWxmKQotICAgICAgICBvdXRw
dXRfY2FwdHVyZS5yZXN0b3JlX291dHB1dCgpCi0KLQogY2xhc3MgVGVzdFF1ZXVlKEFic3RyYWN0
UGF0Y2hRdWV1ZSk6CiAgICAgbmFtZSA9ICJ0ZXN0LXF1ZXVlIgogCkBAIC0xNjcsMjgxICsxNTMs
NiBAQCBjbGFzcyBOZWVkc1VwZGF0ZVNlcXVlbmNlKFN0ZXBTZXF1ZW5jZSk6CiAgICAgICAgIHJh
aXNlIENoZWNrb3V0TmVlZHNVcGRhdGUoW10sIDEsICIiLCBOb25lKQogCiAKLWNsYXNzIEFsd2F5
c0NvbW1pdFF1ZXVlVG9vbChvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAg
ICAgc2VsZi5zdGF0dXNfc2VydmVyID0gTW9ja1N0YXR1c1NlcnZlcigpCi0KLSAgICBkZWYgY29t
bWFuZF9ieV9uYW1lKHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1cm4gQ29tbWl0UXVldWUKLQot
Ci1jbGFzcyBTZWNvbmRUaG91Z2h0c0NvbW1pdFF1ZXVlKFRlc3RDb21taXRRdWV1ZSk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHRvb2w9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX3JlamVjdF9wYXRj
aCA9IEZhbHNlCi0gICAgICAgIFRlc3RDb21taXRRdWV1ZS5fX2luaXRfXyhzZWxmLCB0b29sKQot
Ci0gICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGNvbW1hbmQpOgotICAgICAgICAjIFdlIHdhbnQg
dG8gcmVqZWN0IHRoZSBwYXRjaCBhZnRlciB0aGUgZmlyc3QgdmFsaWRhdGlvbiwKLSAgICAgICAg
IyBzbyB3YWl0IHRvIHJlamVjdCBpdCB1bnRpbCBhZnRlciBzb21lIG90aGVyIGNvbW1hbmQgaGFz
IHJ1bi4KLSAgICAgICAgc2VsZi5fcmVqZWN0X3BhdGNoID0gVHJ1ZQotICAgICAgICByZXR1cm4g
Q29tbWl0UXVldWUucnVuX2NvbW1hbmQoc2VsZiwgY29tbWFuZCkKLQotICAgIGRlZiByZWZldGNo
X3BhdGNoKHNlbGYsIHBhdGNoKToKLSAgICAgICAgaWYgbm90IHNlbGYuX3JlamVjdF9wYXRjaDoK
LSAgICAgICAgICAgIHJldHVybiBzZWxmLl90b29sLmJ1Z3MuZmV0Y2hfYXR0YWNobWVudChwYXRj
aC5pZCgpKQotCi0gICAgICAgIGF0dGFjaG1lbnRfZGljdGlvbmFyeSA9IHsKLSAgICAgICAgICAg
ICJpZCI6IHBhdGNoLmlkKCksCi0gICAgICAgICAgICAiYnVnX2lkIjogcGF0Y2guYnVnX2lkKCks
Ci0gICAgICAgICAgICAibmFtZSI6ICJSZWplY3RlZCIsCi0gICAgICAgICAgICAiaXNfb2Jzb2xl
dGUiOiBUcnVlLAotICAgICAgICAgICAgImlzX3BhdGNoIjogRmFsc2UsCi0gICAgICAgICAgICAi
cmV2aWV3IjogIi0iLAotICAgICAgICAgICAgInJldmlld2VyX2VtYWlsIjogImZvb0BiYXIuY29t
IiwKLSAgICAgICAgICAgICJjb21taXQtcXVldWUiOiAiLSIsCi0gICAgICAgICAgICAiY29tbWl0
dGVyX2VtYWlsIjogImZvb0BiYXIuY29tIiwKLSAgICAgICAgICAgICJhdHRhY2hlcl9lbWFpbCI6
ICJDb250cmlidXRlcjEiLAotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBBdHRhY2htZW50KGF0
dGFjaG1lbnRfZGljdGlvbmFyeSwgTm9uZSkKLQotCi1jbGFzcyBDb21taXRRdWV1ZVRlc3QoUXVl
dWVzVGVzdCk6Ci0gICAgZGVmIF9tb2NrX3Rlc3RfcmVzdWx0KHNlbGYsIHRlc3RuYW1lKToKLSAg
ICAgICAgcmV0dXJuIHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0KHRlc3RuYW1lLCBbdGVzdF9mYWls
dXJlcy5GYWlsdXJlVGV4dE1pc21hdGNoKCldKQotCi0gICAgZGVmIHRlc3RfY29tbWl0X3F1ZXVl
KHNlbGYpOgotICAgICAgICB0b29sID0gTW9ja1Rvb2woKQotICAgICAgICB0b29sLmZpbGVzeXN0
ZW0ud3JpdGVfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRz
Lmpzb24nLCAnJykgICMgT3RoZXJ3aXNlIHRoZSBjb21taXQtcXVldWUgd2lsbCBoaXQgYSBLZXlF
cnJvciB0cnlpbmcgdG8gcmVhZCB0aGUgcmVzdWx0cyBmcm9tIHRoZSBNb2NrRmlsZVN5c3RlbS4K
LSAgICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL3dlYmtpdF91bml0X3Rlc3RzX291dHB1dC54bWwnLCAnJykKLSAgICAgICAgZXhw
ZWN0ZWRfbG9ncyA9IHsKLSAgICAgICAgICAgICJiZWdpbl93b3JrX3F1ZXVlIjogc2VsZi5fZGVm
YXVsdF9iZWdpbl93b3JrX3F1ZXVlX2xvZ3MoImNvbW1pdC1xdWV1ZSIpLAotICAgICAgICAgICAg
InByb2Nlc3Nfd29ya19pdGVtIjogIiIiUnVubmluZzogd2Via2l0LXBhdGNoIGNsZWFuIC0tcG9y
dD1tYWMKLU1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBDbGVhbmVkIHdvcmtpbmcg
ZGlyZWN0b3J5Ci1SdW5uaW5nOiB3ZWJraXQtcGF0Y2ggdXBkYXRlIC0tcG9ydD1tYWMKLU1PQ0s6
IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBVcGRhdGVkIHdvcmtpbmcgZGlyZWN0b3J5Ci1S
dW5uaW5nOiB3ZWJraXQtcGF0Y2ggYXBwbHktYXR0YWNobWVudCAtLW5vLXVwZGF0ZSAtLW5vbi1p
bnRlcmFjdGl2ZSAxMDAwMCAtLXBvcnQ9bWFjCi1NT0NLOiB1cGRhdGVfc3RhdHVzOiBjb21taXQt
cXVldWUgQXBwbGllZCBwYXRjaAotUnVubmluZzogd2Via2l0LXBhdGNoIHZhbGlkYXRlLWNoYW5n
ZWxvZyAtLWNoZWNrLW9vcHMgLS1ub24taW50ZXJhY3RpdmUgMTAwMDAgLS1wb3J0PW1hYwotTU9D
SzogdXBkYXRlX3N0YXR1czogY29tbWl0LXF1ZXVlIENoYW5nZUxvZyB2YWxpZGF0ZWQKLVJ1bm5p
bmc6IHdlYmtpdC1wYXRjaCBidWlsZCAtLW5vLWNsZWFuIC0tbm8tdXBkYXRlIC0tYnVpbGQtc3R5
bGU9cmVsZWFzZSAtLXBvcnQ9bWFjCi1NT0NLOiB1cGRhdGVfc3RhdHVzOiBjb21taXQtcXVldWUg
QnVpbHQgcGF0Y2gKLVJ1bm5pbmc6IHdlYmtpdC1wYXRjaCBidWlsZC1hbmQtdGVzdCAtLW5vLWNs
ZWFuIC0tbm8tdXBkYXRlIC0tdGVzdCAtLW5vbi1pbnRlcmFjdGl2ZSAtLWJ1aWxkLXN0eWxlPXJl
bGVhc2UgLS1wb3J0PW1hYwotTU9DSzogdXBkYXRlX3N0YXR1czogY29tbWl0LXF1ZXVlIFBhc3Nl
ZCB0ZXN0cwotUnVubmluZzogd2Via2l0LXBhdGNoIGxhbmQtYXR0YWNobWVudCAtLWZvcmNlLWNs
ZWFuIC0tbm9uLWludGVyYWN0aXZlIC0tcGFyZW50LWNvbW1hbmQ9Y29tbWl0LXF1ZXVlIDEwMDAw
IC0tcG9ydD1tYWMKLU1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBMYW5kZWQgcGF0
Y2gKLU1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBQYXNzCi1NT0NLOiByZWxlYXNl
X3dvcmtfaXRlbTogY29tbWl0LXF1ZXVlIDEwMDAwCi0iIiIsCi0gICAgICAgICAgICAiaGFuZGxl
X3NjcmlwdF9lcnJvciI6ICJTY3JpcHRFcnJvciBlcnJvciBtZXNzYWdlXG5cbk1PQ0sgb3V0cHV0
XG4iLAotICAgICAgICAgICAgImhhbmRsZV91bmV4cGVjdGVkX2Vycm9yIjogIk1PQ0sgc2V0dGlu
ZyBmbGFnICdjb21taXQtcXVldWUnIHRvICctJyBvbiBhdHRhY2htZW50ICcxMDAwMCcgd2l0aCBj
b21tZW50ICdSZWplY3RpbmcgYXR0YWNobWVudCAxMDAwMCBmcm9tIGNvbW1pdC1xdWV1ZS5cblxu
TW9jayBlcnJvciBtZXNzYWdlJ1xuIiwKLSAgICAgICAgfQotICAgICAgICBzZWxmLmFzc2VydF9x
dWV1ZV9vdXRwdXRzKENvbW1pdFF1ZXVlKCksIHRvb2w9dG9vbCwgZXhwZWN0ZWRfbG9ncz1leHBl
Y3RlZF9sb2dzKQotCi0gICAgZGVmIHRlc3RfY29tbWl0X3F1ZXVlX2ZhaWx1cmUoc2VsZik6Ci0g
ICAgICAgIGV4cGVjdGVkX2xvZ3MgPSB7Ci0gICAgICAgICAgICAiYmVnaW5fd29ya19xdWV1ZSI6
IHNlbGYuX2RlZmF1bHRfYmVnaW5fd29ya19xdWV1ZV9sb2dzKCJjb21taXQtcXVldWUiKSwKLSAg
ICAgICAgICAgICJwcm9jZXNzX3dvcmtfaXRlbSI6ICIiIk1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNv
bW1pdC1xdWV1ZSBDbGVhbmVkIHdvcmtpbmcgZGlyZWN0b3J5Ci1NT0NLOiB1cGRhdGVfc3RhdHVz
OiBjb21taXQtcXVldWUgVXBkYXRlZCB3b3JraW5nIGRpcmVjdG9yeQotTU9DSzogdXBkYXRlX3N0
YXR1czogY29tbWl0LXF1ZXVlIFBhdGNoIGRvZXMgbm90IGFwcGx5Ci1NT0NLIHNldHRpbmcgZmxh
ZyAnY29tbWl0LXF1ZXVlJyB0byAnLScgb24gYXR0YWNobWVudCAnMTAwMDAnIHdpdGggY29tbWVu
dCAnUmVqZWN0aW5nIGF0dGFjaG1lbnQgMTAwMDAgZnJvbSBjb21taXQtcXVldWUuXG5cbk1PQ0sg
c2NyaXB0IGVycm9yCi1GdWxsIG91dHB1dDogaHR0cDovL2R1bW15X3VybCcKLU1PQ0s6IHVwZGF0
ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBGYWlsCi1NT0NLOiByZWxlYXNlX3dvcmtfaXRlbTogY29t
bWl0LXF1ZXVlIDEwMDAwCi0iIiIsCi0gICAgICAgICAgICAiaGFuZGxlX3NjcmlwdF9lcnJvciI6
ICJTY3JpcHRFcnJvciBlcnJvciBtZXNzYWdlXG5cbk1PQ0sgb3V0cHV0XG4iLAotICAgICAgICAg
ICAgImhhbmRsZV91bmV4cGVjdGVkX2Vycm9yIjogIk1PQ0sgc2V0dGluZyBmbGFnICdjb21taXQt
cXVldWUnIHRvICctJyBvbiBhdHRhY2htZW50ICcxMDAwMCcgd2l0aCBjb21tZW50ICdSZWplY3Rp
bmcgYXR0YWNobWVudCAxMDAwMCBmcm9tIGNvbW1pdC1xdWV1ZS5cblxuTW9jayBlcnJvciBtZXNz
YWdlJ1xuIiwKLSAgICAgICAgfQotICAgICAgICBxdWV1ZSA9IENvbW1pdFF1ZXVlKCkKLQotICAg
ICAgICBkZWYgbW9ja19ydW5fd2Via2l0X3BhdGNoKGNvbW1hbmQpOgotICAgICAgICAgICAgaWYg
Y29tbWFuZFswXSA9PSAnY2xlYW4nIG9yIGNvbW1hbmRbMF0gPT0gJ3VwZGF0ZSc6Ci0gICAgICAg
ICAgICAgICAgIyBXZSB3YW50IGNsZWFuaW5nIHRvIHN1Y2NlZWQgc28gd2UgY2FuIGVycm9yIG91
dCBvbiBhIHN0ZXAKLSAgICAgICAgICAgICAgICAjIHRoYXQgY2F1c2VzIHRoZSBjb21taXQtcXVl
dWUgdG8gcmVqZWN0IHRoZSBwYXRjaC4KLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAg
ICAgIHJhaXNlIFNjcmlwdEVycm9yKCdNT0NLIHNjcmlwdCBlcnJvcicpCi0KLSAgICAgICAgcXVl
dWUucnVuX3dlYmtpdF9wYXRjaCA9IG1vY2tfcnVuX3dlYmtpdF9wYXRjaAotICAgICAgICBzZWxm
LmFzc2VydF9xdWV1ZV9vdXRwdXRzKHF1ZXVlLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3Mp
Ci0KLSAgICBkZWYgdGVzdF9jb21taXRfcXVldWVfZmFpbHVyZV93aXRoX2ZhaWxpbmdfdGVzdHMo
c2VsZik6Ci0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSB7Ci0gICAgICAgICAgICAiYmVnaW5fd29y
a19xdWV1ZSI6IHNlbGYuX2RlZmF1bHRfYmVnaW5fd29ya19xdWV1ZV9sb2dzKCJjb21taXQtcXVl
dWUiKSwKLSAgICAgICAgICAgICJwcm9jZXNzX3dvcmtfaXRlbSI6ICIiIk1PQ0s6IHVwZGF0ZV9z
dGF0dXM6IGNvbW1pdC1xdWV1ZSBDbGVhbmVkIHdvcmtpbmcgZGlyZWN0b3J5Ci1NT0NLOiB1cGRh
dGVfc3RhdHVzOiBjb21taXQtcXVldWUgVXBkYXRlZCB3b3JraW5nIGRpcmVjdG9yeQotTU9DSzog
dXBkYXRlX3N0YXR1czogY29tbWl0LXF1ZXVlIFBhdGNoIGRvZXMgbm90IGFwcGx5Ci1NT0NLIHNl
dHRpbmcgZmxhZyAnY29tbWl0LXF1ZXVlJyB0byAnLScgb24gYXR0YWNobWVudCAnMTAwMDAnIHdp
dGggY29tbWVudCAnUmVqZWN0aW5nIGF0dGFjaG1lbnQgMTAwMDAgZnJvbSBjb21taXQtcXVldWUu
XG5cbk5ldyBmYWlsaW5nIHRlc3RzOgotbW9ja190ZXN0X25hbWUuaHRtbAotRnVsbCBvdXRwdXQ6
IGh0dHA6Ly9kdW1teV91cmwnCi1NT0NLOiB1cGRhdGVfc3RhdHVzOiBjb21taXQtcXVldWUgRmFp
bAotTU9DSzogcmVsZWFzZV93b3JrX2l0ZW06IGNvbW1pdC1xdWV1ZSAxMDAwMAotIiIiLAotICAg
ICAgICAgICAgImhhbmRsZV9zY3JpcHRfZXJyb3IiOiAiU2NyaXB0RXJyb3IgZXJyb3IgbWVzc2Fn
ZVxuXG5NT0NLIG91dHB1dFxuIiwKLSAgICAgICAgICAgICJoYW5kbGVfdW5leHBlY3RlZF9lcnJv
ciI6ICJNT0NLIHNldHRpbmcgZmxhZyAnY29tbWl0LXF1ZXVlJyB0byAnLScgb24gYXR0YWNobWVu
dCAnMTAwMDAnIHdpdGggY29tbWVudCAnUmVqZWN0aW5nIGF0dGFjaG1lbnQgMTAwMDAgZnJvbSBj
b21taXQtcXVldWUuXG5cbk1vY2sgZXJyb3IgbWVzc2FnZSdcbiIsCi0gICAgICAgIH0KLQotICAg
ICAgICBjbGFzcyBNb2NrQ29tbWl0UXVldWVUYXNrKENvbW1pdFF1ZXVlVGFzayk6Ci0gICAgICAg
ICAgICBkZWYgcmVzdWx0c19mcm9tX3BhdGNoX3Rlc3RfcnVuKHNlbGYsIHBhdGNoKToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gTGF5b3V0VGVzdFJlc3VsdHMoW3Rlc3RfcmVzdWx0cy5UZXN0UmVz
dWx0KCJtb2NrX3Rlc3RfbmFtZS5odG1sIiwgZmFpbHVyZXM9W3Rlc3RfZmFpbHVyZXMuRmFpbHVy
ZVRleHRNaXNtYXRjaCgpXSldLCBkaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdD1GYWxzZSkK
LQotICAgICAgICBxdWV1ZSA9IENvbW1pdFF1ZXVlKE1vY2tDb21taXRRdWV1ZVRhc2spCi0KLSAg
ICAgICAgZGVmIG1vY2tfcnVuX3dlYmtpdF9wYXRjaChjb21tYW5kKToKLSAgICAgICAgICAgIGlm
IGNvbW1hbmRbMF0gPT0gJ2NsZWFuJyBvciBjb21tYW5kWzBdID09ICd1cGRhdGUnOgotICAgICAg
ICAgICAgICAgICMgV2Ugd2FudCBjbGVhbmluZyB0byBzdWNjZWVkIHNvIHdlIGNhbiBlcnJvciBv
dXQgb24gYSBzdGVwCi0gICAgICAgICAgICAgICAgIyB0aGF0IGNhdXNlcyB0aGUgY29tbWl0LXF1
ZXVlIHRvIHJlamVjdCB0aGUgcGF0Y2guCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAg
ICAgICByYWlzZSBTY3JpcHRFcnJvcignTU9DSyBzY3JpcHQgZXJyb3InKQotCi0gICAgICAgIHF1
ZXVlLnJ1bl93ZWJraXRfcGF0Y2ggPSBtb2NrX3J1bl93ZWJraXRfcGF0Y2gKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfcXVldWVfb3V0cHV0cyhxdWV1ZSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dz
KQotCi0gICAgZGVmIHRlc3RfcmV2ZXJ0KHNlbGYpOgotICAgICAgICB0b29sID0gTW9ja1Rvb2wo
KQotICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvdG1wL2xheW91dC10
ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nLCAnJykgICMgT3RoZXJ3aXNlIHRoZSBjb21t
aXQtcXVldWUgd2lsbCBoaXQgYSBLZXlFcnJvciB0cnlpbmcgdG8gcmVhZCB0aGUgcmVzdWx0cyBm
cm9tIHRoZSBNb2NrRmlsZVN5c3RlbS4KLSAgICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3Rl
eHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3dlYmtpdF91bml0X3Rlc3RzX291dHB1
dC54bWwnLCAnJykKLSAgICAgICAgdG9vbC5idWlsZGJvdC5saWdodF90cmVlX29uX2ZpcmUoKQot
ICAgICAgICBleHBlY3RlZF9sb2dzID0gewotICAgICAgICAgICAgImJlZ2luX3dvcmtfcXVldWUi
OiBzZWxmLl9kZWZhdWx0X2JlZ2luX3dvcmtfcXVldWVfbG9ncygiY29tbWl0LXF1ZXVlIiksCi0g
ICAgICAgICAgICAicHJvY2Vzc193b3JrX2l0ZW0iOiAiIiJSdW5uaW5nOiB3ZWJraXQtcGF0Y2gg
Y2xlYW4gLS1wb3J0PSUocG9ydClzCi1NT0NLOiB1cGRhdGVfc3RhdHVzOiBjb21taXQtcXVldWUg
Q2xlYW5lZCB3b3JraW5nIGRpcmVjdG9yeQotUnVubmluZzogd2Via2l0LXBhdGNoIHVwZGF0ZSAt
LXBvcnQ9JShwb3J0KXMKLU1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBVcGRhdGVk
IHdvcmtpbmcgZGlyZWN0b3J5Ci1SdW5uaW5nOiB3ZWJraXQtcGF0Y2ggYXBwbHktYXR0YWNobWVu
dCAtLW5vLXVwZGF0ZSAtLW5vbi1pbnRlcmFjdGl2ZSAxMDAwMCAtLXBvcnQ9JShwb3J0KXMKLU1P
Q0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBBcHBsaWVkIHBhdGNoCi1SdW5uaW5nOiB3
ZWJraXQtcGF0Y2ggdmFsaWRhdGUtY2hhbmdlbG9nIC0tY2hlY2stb29wcyAtLW5vbi1pbnRlcmFj
dGl2ZSAxMDAwMCAtLXBvcnQ9JShwb3J0KXMKLU1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1x
dWV1ZSBDaGFuZ2VMb2cgdmFsaWRhdGVkCi1SdW5uaW5nOiB3ZWJraXQtcGF0Y2ggYnVpbGQgLS1u
by1jbGVhbiAtLW5vLXVwZGF0ZSAtLWJ1aWxkLXN0eWxlPXJlbGVhc2UgLS1wb3J0PSUocG9ydClz
Ci1NT0NLOiB1cGRhdGVfc3RhdHVzOiBjb21taXQtcXVldWUgQnVpbHQgcGF0Y2gKLVJ1bm5pbmc6
IHdlYmtpdC1wYXRjaCBidWlsZC1hbmQtdGVzdCAtLW5vLWNsZWFuIC0tbm8tdXBkYXRlIC0tdGVz
dCAtLW5vbi1pbnRlcmFjdGl2ZSAtLWJ1aWxkLXN0eWxlPXJlbGVhc2UgLS1wb3J0PSUocG9ydClz
Ci1NT0NLOiB1cGRhdGVfc3RhdHVzOiBjb21taXQtcXVldWUgUGFzc2VkIHRlc3RzCi1SdW5uaW5n
OiB3ZWJraXQtcGF0Y2ggbGFuZC1hdHRhY2htZW50IC0tZm9yY2UtY2xlYW4gLS1ub24taW50ZXJh
Y3RpdmUgLS1wYXJlbnQtY29tbWFuZD1jb21taXQtcXVldWUgMTAwMDAgLS1wb3J0PSUocG9ydClz
Ci1NT0NLOiB1cGRhdGVfc3RhdHVzOiBjb21taXQtcXVldWUgTGFuZGVkIHBhdGNoCi1NT0NLOiB1
cGRhdGVfc3RhdHVzOiBjb21taXQtcXVldWUgUGFzcwotTU9DSzogcmVsZWFzZV93b3JrX2l0ZW06
IGNvbW1pdC1xdWV1ZSAxMDAwMAotIiIiICUgeyJwb3J0IjogIm1hYyJ9LAotICAgICAgICAgICAg
ImhhbmRsZV9zY3JpcHRfZXJyb3IiOiAiU2NyaXB0RXJyb3IgZXJyb3IgbWVzc2FnZVxuXG5NT0NL
IG91dHB1dFxuIiwKLSAgICAgICAgICAgICJoYW5kbGVfdW5leHBlY3RlZF9lcnJvciI6ICJNT0NL
IHNldHRpbmcgZmxhZyAnY29tbWl0LXF1ZXVlJyB0byAnLScgb24gYXR0YWNobWVudCAnMTAwMDAn
IHdpdGggY29tbWVudCAnUmVqZWN0aW5nIGF0dGFjaG1lbnQgMTAwMDAgZnJvbSBjb21taXQtcXVl
dWUuXG5cbk1vY2sgZXJyb3IgbWVzc2FnZSdcbiIsCi0gICAgICAgIH0KLSAgICAgICAgc2VsZi5h
c3NlcnRfcXVldWVfb3V0cHV0cyhDb21taXRRdWV1ZSgpLCB0b29sPXRvb2wsIGV4cGVjdGVkX2xv
Z3M9ZXhwZWN0ZWRfbG9ncykKLQotICAgIGRlZiB0ZXN0X3JldmVydF9sYW5kcyhzZWxmKToKLSAg
ICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgdG9vbC5idWlsZGJvdC5saWdodF90cmVl
X29uX2ZpcmUoKQotICAgICAgICByZXZlcnRfcGF0Y2ggPSB0b29sLmJ1Z3MuZmV0Y2hfYXR0YWNo
bWVudCgxMDAwNSkgICMgX3BhdGNoNiwgYSByZXZlcnQgcGF0Y2guCi0gICAgICAgIGFzc2VydChy
ZXZlcnRfcGF0Y2guaXNfcmV2ZXJ0KCkpCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSB7Ci0gICAg
ICAgICAgICAiYmVnaW5fd29ya19xdWV1ZSI6IHNlbGYuX2RlZmF1bHRfYmVnaW5fd29ya19xdWV1
ZV9sb2dzKCJjb21taXQtcXVldWUiKSwKLSAgICAgICAgICAgICJwcm9jZXNzX3dvcmtfaXRlbSI6
ICIiIlJ1bm5pbmc6IHdlYmtpdC1wYXRjaCBjbGVhbiAtLXBvcnQ9JShwb3J0KXMKLU1PQ0s6IHVw
ZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBDbGVhbmVkIHdvcmtpbmcgZGlyZWN0b3J5Ci1SdW5u
aW5nOiB3ZWJraXQtcGF0Y2ggdXBkYXRlIC0tcG9ydD0lKHBvcnQpcwotTU9DSzogdXBkYXRlX3N0
YXR1czogY29tbWl0LXF1ZXVlIFVwZGF0ZWQgd29ya2luZyBkaXJlY3RvcnkKLVJ1bm5pbmc6IHdl
YmtpdC1wYXRjaCBhcHBseS1hdHRhY2htZW50IC0tbm8tdXBkYXRlIC0tbm9uLWludGVyYWN0aXZl
IDEwMDA1IC0tcG9ydD0lKHBvcnQpcwotTU9DSzogdXBkYXRlX3N0YXR1czogY29tbWl0LXF1ZXVl
IEFwcGxpZWQgcGF0Y2gKLVJ1bm5pbmc6IHdlYmtpdC1wYXRjaCB2YWxpZGF0ZS1jaGFuZ2Vsb2cg
LS1jaGVjay1vb3BzIC0tbm9uLWludGVyYWN0aXZlIDEwMDA1IC0tcG9ydD0lKHBvcnQpcwotTU9D
SzogdXBkYXRlX3N0YXR1czogY29tbWl0LXF1ZXVlIENoYW5nZUxvZyB2YWxpZGF0ZWQKLVJ1bm5p
bmc6IHdlYmtpdC1wYXRjaCBsYW5kLWF0dGFjaG1lbnQgLS1mb3JjZS1jbGVhbiAtLW5vbi1pbnRl
cmFjdGl2ZSAtLXBhcmVudC1jb21tYW5kPWNvbW1pdC1xdWV1ZSAxMDAwNSAtLXBvcnQ9JShwb3J0
KXMKLU1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBMYW5kZWQgcGF0Y2gKLU1PQ0s6
IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBQYXNzCi1NT0NLOiByZWxlYXNlX3dvcmtfaXRl
bTogY29tbWl0LXF1ZXVlIDEwMDA1Ci0iIiIgJSB7InBvcnQiOiAibWFjIn0sCi0gICAgICAgICAg
ICAiaGFuZGxlX3NjcmlwdF9lcnJvciI6ICJTY3JpcHRFcnJvciBlcnJvciBtZXNzYWdlXG5cbk1P
Q0sgb3V0cHV0XG4iLAotICAgICAgICAgICAgImhhbmRsZV91bmV4cGVjdGVkX2Vycm9yIjogIk1P
Q0sgc2V0dGluZyBmbGFnICdjb21taXQtcXVldWUnIHRvICctJyBvbiBhdHRhY2htZW50ICcxMDAw
NScgd2l0aCBjb21tZW50ICdSZWplY3RpbmcgYXR0YWNobWVudCAxMDAwNSBmcm9tIGNvbW1pdC1x
dWV1ZS5cblxuTW9jayBlcnJvciBtZXNzYWdlJ1xuIiwKLSAgICAgICAgfQotICAgICAgICBzZWxm
LmFzc2VydF9xdWV1ZV9vdXRwdXRzKENvbW1pdFF1ZXVlKCksIHRvb2w9dG9vbCwgd29ya19pdGVt
PXJldmVydF9wYXRjaCwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQotCi0gICAgZGVmIHRl
c3Rfbm9uX3ZhbGlkX3BhdGNoKHNlbGYpOgotICAgICAgICB0b29sID0gTW9ja1Rvb2woKQotICAg
ICAgICBwYXRjaCA9IHRvb2wuYnVncy5mZXRjaF9hdHRhY2htZW50KDEwMDA3KSAgIyBfcGF0Y2g4
LCByZXNvbHZlZCBidWcsIHdpdGhvdXQgcmV2aWV3IGZsYWcsIG5vdCBtYXJrZWQgb2Jzb2xldGUg
KG1heWJlIGFscmVhZHkgbGFuZGVkKQotICAgICAgICBleHBlY3RlZF9sb2dzID0gewotICAgICAg
ICAgICAgImJlZ2luX3dvcmtfcXVldWUiOiBzZWxmLl9kZWZhdWx0X2JlZ2luX3dvcmtfcXVldWVf
bG9ncygiY29tbWl0LXF1ZXVlIiksCi0gICAgICAgICAgICAicHJvY2Vzc193b3JrX2l0ZW0iOiAi
IiJNT0NLOiB1cGRhdGVfc3RhdHVzOiBjb21taXQtcXVldWUgRXJyb3I6IGNvbW1pdC1xdWV1ZSBk
aWQgbm90IHByb2Nlc3MgcGF0Y2guIFJlYXNvbjogQnVnIGlzIGFscmVhZHkgY2xvc2VkLgotTU9D
SzogcmVsZWFzZV93b3JrX2l0ZW06IGNvbW1pdC1xdWV1ZSAxMDAwNwotIiIiLAotICAgICAgICB9
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X3F1ZXVlX291dHB1dHMoQ29tbWl0UXVldWUoKSwgdG9vbD10
b29sLCB3b3JrX2l0ZW09cGF0Y2gsIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKLQotICAg
IGRlZiB0ZXN0X2F1dG9fcmV0cnkoc2VsZik6Ci0gICAgICAgIHF1ZXVlID0gQ29tbWl0UXVldWUo
KQotICAgICAgICBvcHRpb25zID0gTW9jaygpCi0gICAgICAgIG9wdGlvbnMucGFyZW50X2NvbW1h
bmQgPSAiY29tbWl0LXF1ZXVlIgotICAgICAgICB0b29sID0gQWx3YXlzQ29tbWl0UXVldWVUb29s
KCkKLSAgICAgICAgc2VxdWVuY2UgPSBOZWVkc1VwZGF0ZVNlcXVlbmNlKE5vbmUpCi0KLSAgICAg
ICAgZXhwZWN0ZWRfbG9ncyA9ICIiIkNvbW1pdCBmYWlsZWQgYmVjYXVzZSB0aGUgY2hlY2tvdXQg
aXMgb3V0IG9mIGRhdGUuIFBsZWFzZSB1cGRhdGUgYW5kIHRyeSBhZ2Fpbi4KLU1PQ0s6IHVwZGF0
ZV9zdGF0dXM6IGNvbW1pdC1xdWV1ZSBUZXN0cyBwYXNzZWQsIGJ1dCBjb21taXQgZmFpbGVkIChj
aGVja291dCBvdXQgb2YgZGF0ZSkuICBVcGRhdGluZywgdGhlbiBsYW5kaW5nIHdpdGhvdXQgYnVp
bGRpbmcgb3IgcmUtcnVubmluZyB0ZXN0cy4KLSIiIgotICAgICAgICBzdGF0ZSA9IHsncGF0Y2gn
OiBOb25lfQotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc2Vx
dWVuY2UucnVuX2FuZF9oYW5kbGVfZXJyb3JzLCBbdG9vbCwgb3B0aW9ucywgc3RhdGVdLCBleHBl
Y3RlZF9leGNlcHRpb249VHJ5QWdhaW4sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKLQot
ICAgICAgICBzZWxmLmFzc2VydFRydWUob3B0aW9ucy51cGRhdGUpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2Uob3B0aW9ucy5idWlsZCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcHRpb25z
LnRlc3QpCi0KLSAgICBkZWYgdGVzdF9tYW51YWxfcmVqZWN0X2R1cmluZ19wcm9jZXNzaW5nKHNl
bGYpOgotICAgICAgICBxdWV1ZSA9IFNlY29uZFRob3VnaHRzQ29tbWl0UXVldWUoTW9ja1Rvb2wo
KSkKLSAgICAgICAgcXVldWUuYmVnaW5fd29ya19xdWV1ZSgpCi0gICAgICAgIHF1ZXVlLl90b29s
LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVs
bF9yZXN1bHRzLmpzb24nLCAnJykgICMgT3RoZXJ3aXNlIHRoZSBjb21taXQtcXVldWUgd2lsbCBo
aXQgYSBLZXlFcnJvciB0cnlpbmcgdG8gcmVhZCB0aGUgcmVzdWx0cyBmcm9tIHRoZSBNb2NrRmls
ZVN5c3RlbS4KLSAgICAgICAgcXVldWUuX3Rvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUo
Jy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy93ZWJraXRfdW5pdF90ZXN0c19vdXRwdXQueG1sJywg
JycpCi0gICAgICAgIHF1ZXVlLl9vcHRpb25zID0gTW9jaygpCi0gICAgICAgIHF1ZXVlLl9vcHRp
b25zLnBvcnQgPSBOb25lCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJSdW5uaW5nOiB3ZWJr
aXQtcGF0Y2ggY2xlYW4gLS1wb3J0PW1hYwotTU9DSzogdXBkYXRlX3N0YXR1czogY29tbWl0LXF1
ZXVlIENsZWFuZWQgd29ya2luZyBkaXJlY3RvcnkKLU1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1p
dC1xdWV1ZSBFcnJvcjogY29tbWl0LXF1ZXVlIGRpZCBub3QgcHJvY2VzcyBwYXRjaC4gUmVhc29u
OiBQYXRjaCBpcyBvYnNvbGV0ZS4KLU1PQ0s6IHJlbGVhc2Vfd29ya19pdGVtOiBjb21taXQtcXVl
dWUgMTAwMDAKLSIiIgotICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCi0gICAgICAgIE91dHB1
dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBxdWV1ZS5wcm9jZXNzX3dvcmtfaXRlbSwg
W1F1ZXVlc1Rlc3QubW9ja193b3JrX2l0ZW1dLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3Mp
Ci0KLSAgICBkZWYgdGVzdF9yZXBvcnRfZmxha3lfdGVzdHMoc2VsZik6Ci0gICAgICAgIHF1ZXVl
ID0gVGVzdENvbW1pdFF1ZXVlKE1vY2tUb29sKCkpCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAi
IiJNT0NLIGJ1ZyBjb21tZW50OiBidWdfaWQ9NTAwMDIsIGNjPU5vbmUsIHNlZV9hbHNvPU5vbmUK
LS0tLSBCZWdpbiBjb21tZW50IC0tLQotVGhlIGNvbW1pdC1xdWV1ZSBqdXN0IHNhdyBmb28vYmFy
Lmh0bWwgZmxha2UgKHRleHQgZGlmZikgd2hpbGUgcHJvY2Vzc2luZyBhdHRhY2htZW50IDEwMDAw
IG9uIGJ1ZyA1MDAwMC4KLVBvcnQ6IE1vY2tQb3J0ICBQbGF0Zm9ybTogTW9ja1BsYXRmb3JtIDEu
MAotLS0tIEVuZCBjb21tZW50IC0tLQotCi1NT0NLIGFkZF9hdHRhY2htZW50X3RvX2J1ZzogYnVn
X2lkPTUwMDAyLCBkZXNjcmlwdGlvbj1GYWlsdXJlIGRpZmYgZnJvbSBib3QgZmlsZW5hbWU9ZmFp
bHVyZS5kaWZmIG1pbWV0eXBlPU5vbmUKLU1PQ0sgYnVnIGNvbW1lbnQ6IGJ1Z19pZD01MDAwMiwg
Y2M9Tm9uZSwgc2VlX2Fsc289Tm9uZQotLS0tIEJlZ2luIGNvbW1lbnQgLS0tCi1UaGUgY29tbWl0
LXF1ZXVlIGp1c3Qgc2F3IGJhci9iYXouaHRtbCBmbGFrZSAodGV4dCBkaWZmKSB3aGlsZSBwcm9j
ZXNzaW5nIGF0dGFjaG1lbnQgMTAwMDAgb24gYnVnIDUwMDAwLgotUG9ydDogTW9ja1BvcnQgIFBs
YXRmb3JtOiBNb2NrUGxhdGZvcm0gMS4wCi0tLS0gRW5kIGNvbW1lbnQgLS0tCi0KLWJhci9iYXot
ZGlmZnMudHh0IGRvZXMgbm90IGV4aXN0IGluIHJlc3VsdHMgYXJjaGl2ZSwgdXBsb2FkaW5nIGVu
dGlyZSBhcmNoaXZlLgotTU9DSyBhZGRfYXR0YWNobWVudF90b19idWc6IGJ1Z19pZD01MDAwMiwg
ZGVzY3JpcHRpb249QXJjaGl2ZSBvZiBsYXlvdXQtdGVzdC1yZXN1bHRzIGZyb20gYm90IGZpbGVu
YW1lPWxheW91dC10ZXN0LXJlc3VsdHMuemlwIG1pbWV0eXBlPU5vbmUKLU1PQ0sgYnVnIGNvbW1l
bnQ6IGJ1Z19pZD01MDAwMCwgY2M9Tm9uZSwgc2VlX2Fsc289Tm9uZQotLS0tIEJlZ2luIGNvbW1l
bnQgLS0tCi1UaGUgY29tbWl0LXF1ZXVlIGVuY291bnRlcmVkIHRoZSBmb2xsb3dpbmcgZmxha3kg
dGVzdHMgd2hpbGUgcHJvY2Vzc2luZyBhdHRhY2htZW50IDEwMDAwOgotCi1mb28vYmFyLmh0bWwg
YnVnIDUwMDAyIChhdXRob3I6IGFiYXJ0aEB3ZWJraXQub3JnKQotYmFyL2Jhei5odG1sIGJ1ZyA1
MDAwMiAoYXV0aG9yOiBhYmFydGhAd2Via2l0Lm9yZykKLVRoZSBjb21taXQtcXVldWUgaXMgY29u
dGludWluZyB0byBwcm9jZXNzIHlvdXIgcGF0Y2guCi0tLS0gRW5kIGNvbW1lbnQgLS0tCi0KLSIi
IgotICAgICAgICB0ZXN0X25hbWVzID0gWyJmb28vYmFyLmh0bWwiLCAiYmFyL2Jhei5odG1sIl0K
LSAgICAgICAgdGVzdF9yZXN1bHRzID0gW3NlbGYuX21vY2tfdGVzdF9yZXN1bHQobmFtZSkgZm9y
IG5hbWUgaW4gdGVzdF9uYW1lc10KLQotICAgICAgICBjbGFzcyBNb2NrWmlwRmlsZShvYmplY3Qp
OgotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgICAgIHNlbGYu
ZnAgPSBTdHJpbmdJTygpCi0KLSAgICAgICAgICAgIGRlZiByZWFkKHNlbGYsIHBhdGgpOgotICAg
ICAgICAgICAgICAgIHJldHVybiAiIgotCi0gICAgICAgICAgICBkZWYgbmFtZWxpc3Qoc2VsZik6
Ci0gICAgICAgICAgICAgICAgIyBUaGlzIGlzIGludGVudGlvbmFsbHkgbWlzc2luZyBvbmUgZGlm
ZnMudHh0IHRvIGV4ZXJjaXNlIHRoZSAidXBsb2FkIHRoZSB3aG9sZSB6aXAiIGNvZGVwYXRoLgot
ICAgICAgICAgICAgICAgIHJldHVybiBbJ2Zvby9iYXItZGlmZnMudHh0J10KLQotICAgICAgICBP
dXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcXVldWUucmVwb3J0X2ZsYWt5X3Rl
c3RzLCBbUXVldWVzVGVzdC5tb2NrX3dvcmtfaXRlbSwgdGVzdF9yZXN1bHRzLCBNb2NrWmlwRmls
ZSgpXSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQotCi0gICAgZGVmIHRlc3RfZGlkX3Bh
c3NfdGVzdGluZ19ld3Moc2VsZik6Ci0gICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCi0gICAgICAg
IHBhdGNoID0gdG9vbC5idWdzLmZldGNoX2F0dGFjaG1lbnQoMTAwMDApCi0gICAgICAgIHF1ZXVl
ID0gVGVzdENvbW1pdFF1ZXVlKHRvb2wpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocXVldWUu
ZGlkX3Bhc3NfdGVzdGluZ19ld3MocGF0Y2gpKQotCi0KIGNsYXNzIFN0eWxlUXVldWVUZXN0KFF1
ZXVlc1Rlc3QpOgogICAgIGRlZiB0ZXN0X3N0eWxlX3F1ZXVlX3dpdGhfc3R5bGVfZXhjZXB0aW9u
KHNlbGYpOgogICAgICAgICBleHBlY3RlZF9sb2dzID0gewpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlY2hhbmdlbG9ncy5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVjaGFuZ2Vsb2dzLnB5CShy
ZXZpc2lvbiAyNjEzMDIpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFs
aWRhdGVjaGFuZ2Vsb2dzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGZyb20g
d2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmRpZmZfcGFyc2UKIF9sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcihfX25hbWVfXykKIAogCi0jIFRoaXMgaXMgY2xvc2VseSByZWxhdGVkIHRvIHRoZSBWYWxp
ZGF0ZVJldmlld2VyIHN0ZXAgYW5kIHRoZSBDb21taXR0ZXJWYWxpZGF0b3IgY2xhc3MuCisjIFRo
aXMgaXMgY2xvc2VseSByZWxhdGVkIHRvIHRoZSBWYWxpZGF0ZVJldmlld2VyIHN0ZXAuCiAjIFdl
IG1heSB3YW50IHRvIHVuaWZ5IG1vcmUgb2YgdGhpcyBjb2RlIGluIG9uZSBwbGFjZS4KIGNsYXNz
IFZhbGlkYXRlQ2hhbmdlTG9ncyhBYnN0cmFjdFN0ZXApOgogICAgIEBjbGFzc21ldGhvZApJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRl
cmV2aWV3ZXIucHkJKHJldmlzaW9uIDI2MTMwMikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICsz
Niw2IEBAIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5vcHRpb25zIGltcG9ydCAKIF9sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCi0jIEZJWE1FOiBTb21lIG9mIHRoaXMgbG9n
aWMgc2hvdWxkIHByb2JhYmx5IGJlIHVuaWZpZWQgd2l0aCBDb21taXR0ZXJWYWxpZGF0b3I/CiBj
bGFzcyBWYWxpZGF0ZVJldmlld2VyKEFic3RyYWN0U3RlcCk6CiAgICAgQGNsYXNzbWV0aG9kCiAg
ICAgZGVmIG9wdGlvbnMoY2xzKToK
</data>

          </attachment>
      

    </bug>

</bugzilla>