<?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>220180</bug_id>
          
          <creation_ts>2020-12-27 17:24:28 -0800</creation_ts>
          <short_desc>Remove some unused variables from webkitpy</short_desc>
          <delta_ts>2021-01-05 13:09:21 -0800</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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1716749</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-12-27 17:24:28 -0800</bug_when>
    <thetext>Address some of the more obvious linter warnings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716750</commentid>
    <comment_count>1</comment_count>
      <attachid>416826</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-12-27 17:28:41 -0800</bug_when>
    <thetext>Created attachment 416826
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717057</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-03 17:25:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/72782271&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717140</commentid>
    <comment_count>3</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-01-04 09:12:04 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=416826&amp;action=review

rs=me

&gt; Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py:158
&gt;            test_dir: absolute path to the LayoutTests directory.

Should delete this line as well.

&gt; Tools/Scripts/webkitpy/tool/commands/upload.py:-511
&gt; -        bug_id = tool.bugs.create_bug(bug_title, comment_text, options.component, diff, &quot;Patch&quot;, cc=options.cc, mark_for_review=options.review, mark_for_commit_queue=options.request_commit)

Maybe we could add a log statement here to log the bug_id (either user visible or at DEBUG level). Not sure how helpful that would be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717313</commentid>
    <comment_count>4</comment_count>
      <attachid>416826</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-01-05 08:28:13 -0800</bug_when>
    <thetext>Comment on attachment 416826
proposed patch

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

I don&apos;t think we should be changing some of the style checker ones without just removing the classes in question

&gt; Tools/Scripts/webkitpy/style/checkers/jsonchecker.py:34
&gt; +    def __init__(self, handle_style_error):

If this class isn&apos;t accepting a file path, what is it even doing? Seems like the better approach on this one would be to make it actually work, which I think would be be done by reading the file in, then printing the json with an indent of 4 and comparing.

&gt; Tools/Scripts/webkitpy/style/checkers/watchlist.py:40
&gt; +    def __init__(self, handle_style_error):

If this class isn&apos;t accepting a file path, what is it even doing?

&gt; Tools/Scripts/webkitpy/style/checkers/xml.py:34
&gt;          self._handle_style_error = handle_style_error

If this class isn&apos;t accepting a file_path, what is it even doing?

&gt; Tools/Scripts/webkitpy/tool/steps/suggestreviewers_unittest.py:48
&gt; +        OutputCapture()

Should just remove this entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717381</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-01-05 10:18:04 -0800</bug_when>
    <thetext>&gt; If this class isn&apos;t accepting a file path, what is it even doing?

These checkers use the lines argument, and don&apos;t need a file path. There can be an argument for keeping a uniform interface for all checkers though.

I&apos;m going to revert this part for now, because it&apos;s also incorrect - JSONChecker has subclasses that are still created with a file path argument, and are thus completely broken by this patch. And there are zero unit tests for any of them, so test-webkitpy didn&apos;t tell me about the mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717389</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-01-05 10:36:38 -0800</bug_when>
    <thetext>Committed https://trac.webkit.org/r271158</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717438</commentid>
    <comment_count>7</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2021-01-05 12:42:35 -0800</bug_when>
    <thetext>This broke `run-builtins-generator-tests`:

Traceback (most recent call last):
  File &quot;./Tools/Scripts/run-builtins-generator-tests&quot;, line 48, in &lt;module&gt;
    sys.exit(main(sys.argv))
  File &quot;./Tools/Scripts/run-builtins-generator-tests&quot;, line 45, in main
    return BuiltinsGeneratorTests(reset_results, executive.Executive()).main()
  File &quot;/Volumes/Data/slave/catalina-release-tests-wk2/build/Tools/Scripts/webkitpy/codegen/main.py&quot;, line 161, in main
    if not self.run_tests(input_directory, reference_directory):
  File &quot;/Volumes/Data/slave/catalina-release-tests-wk2/build/Tools/Scripts/webkitpy/codegen/main.py&quot;, line 148, in run_tests
    if not self.run_test(reference_directory, &quot;WebCoreJSBuiltins.h&quot;, separately_generated_files, self.wrappers_builtin_test):
  File &quot;/Volumes/Data/slave/catalina-release-tests-wk2/build/Tools/Scripts/webkitpy/codegen/main.py&quot;, line 114, in run_test
    if generate_builtin_callback(test_name, test_files, work_directory):
TypeError: wrappers_builtin_test() takes exactly 3 arguments (4 given)


https://build.webkit.org/builders/Apple-Catalina-Release-WK2-Tests/builds/10897/steps/builtins-generator-tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717444</commentid>
    <comment_count>8</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2021-01-05 13:09:21 -0800</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #7)
&gt; This broke `run-builtins-generator-tests`
Reverted the relevant part of r271158 in r271173.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416826</attachid>
            <date>2020-12-27 17:28:41 -0800</date>
            <delta_ts>2021-01-05 08:28:13 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>unused_variables.txt</filename>
            <type>text/plain</type>
            <size>55298</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3MTA5OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY4IEBACisyMDIwLTEyLTI3ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBzb21lIHVudXNlZCB2YXJpYWJsZXMgZnJvbSB3ZWJraXRweQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTgwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvd2ViZHJpdmVyX2JlbmNobWFya19ydW5uZXIucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL3dlYnNlcnZlcl9i
ZW5jaG1hcmtfcnVubmVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29kZWdlbi9t
YWluLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5n
ZWxvZy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVj
a291dC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20v
Z2l0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9z
dm4ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRl
cnMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbnRyaWJ1
dGlvbmFyZWFzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL21lc3NhZ2Vf
cG9vbC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3Qv
YnVpbGRib3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2NyZWRl
bnRpYWxzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFz
aGxvZ3MucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1
dGl2ZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcHJvZmls
ZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXIucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9nZW5lcmF0ZV94Y2ZpbGVsaXN0c19saWIvYXBw
bGljYXRpb24ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9nZW5lcmF0ZV94Y2ZpbGVs
aXN0c19saWIvZ2VuZXJhdG9ycy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3Nl
cnZlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJz
L2h0dHBfc2VydmVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3ZpZXdzL2J1aWxkYm90X3Jlc3VsdHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJlYW0ucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3BvcnQvZGV2aWNlX3BvcnQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2ZhY3RvcnkucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtk
ZXRlY3Rvcl92YWxncmluZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2Vy
dmVyX3Byb2Nlc3MucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY29udHJpYnV0
b3JzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanMucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc29uY2hlY2tlci5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzb25jaGVja2Vy
X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
d2F0Y2hsaXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
d2F0Y2hsaXN0X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMveG1sLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMveG1sX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qv
bGF5b3V0dGVzdHJlc3VsdHNyZWFkZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90
b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvYm90L3F1ZXVlZW5naW5lLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9kb3dubG9hZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9tdWx0aWNvbW1hbmR0b29sLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dG9vbC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2NvbW1pdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvY29uZmlybWRpZmYucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL2hhc2xhbmRlZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvcHJlcGFyZWNoYW5nZWxvZy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvcHJvbXB0Zm9yYnVnb3J0aXRsZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvc29ydHhjb2RlcHJvamVjdGZpbGVzLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9zdWdnZXN0cmV2aWV3ZXJzX3VuaXR0ZXN0LnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5OgorCiAyMDIwLTEyLTIzICBE
ZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBTaW11bGF0ZWQgUHl0aG9u
IGNyYXNoIGR1cmluZyB0ZXN0IHJ1bnMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVu
Y2htYXJrX3J1bm5lci93ZWJkcml2ZXJfYmVuY2htYXJrX3J1bm5lci5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvd2ViZHJpdmVyX2JlbmNo
bWFya19ydW5uZXIucHkJKHJldmlzaW9uIDI3MTA2NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvYmVuY2htYXJrX3J1bm5lci93ZWJkcml2ZXJfYmVuY2htYXJrX3J1bm5lci5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMTgsNyArMTgsNiBAQCBjbGFzcyBXZWJEcml2ZXJCZW5jaG1hcmtSdW5uZXIo
QmVuY2htYXJrCiAKICAgICBkZWYgX3J1bl9vbmVfdGVzdChzZWxmLCB3ZWJfcm9vdCwgdGVzdF9m
aWxlKToKICAgICAgICAgZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuc3VwcG9ydC51aSBpbXBvcnQg
V2ViRHJpdmVyV2FpdAotICAgICAgICByZXN1bHQgPSBOb25lCiAgICAgICAgIHRyeToKICAgICAg
ICAgICAgIHVybCA9ICdmaWxlOi8ve3Jvb3R9L3twbGFuX25hbWV9L3t0ZXN0X2ZpbGV9Jy5mb3Jt
YXQocm9vdD13ZWJfcm9vdCwgcGxhbl9uYW1lPXNlbGYuX3BsYW5fbmFtZSwgdGVzdF9maWxlPXRl
c3RfZmlsZSkKICAgICAgICAgICAgIGRyaXZlciA9IHNlbGYuX2Jyb3dzZXJfZHJpdmVyLmxhdW5j
aF9kcml2ZXIodXJsLCBzZWxmLl9wbGFuWydvcHRpb25zJ10sIHNlbGYuX2J1aWxkX2Rpciwgc2Vs
Zi5fYnJvd3Nlcl9wYXRoKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtf
cnVubmVyL3dlYnNlcnZlcl9iZW5jaG1hcmtfcnVubmVyLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci93ZWJzZXJ2ZXJfYmVuY2htYXJrX3J1
bm5lci5weQkocmV2aXNpb24gMjcxMDY2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5j
aG1hcmtfcnVubmVyL3dlYnNlcnZlcl9iZW5jaG1hcmtfcnVubmVyLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw2IEBAIGNsYXNzIFdlYlNlcnZlckJlbmNobWFya1J1bm5lcihCZW5jaG1h
cmsKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIF9ydW5fb25lX3Rlc3Qoc2VsZiwg
d2ViX3Jvb3QsIHRlc3RfZmlsZSk6Ci0gICAgICAgIHJlc3VsdCA9IE5vbmUKICAgICAgICAgdHJ5
OgogICAgICAgICAgICAgc2VsZi5faHR0cF9zZXJ2ZXJfZHJpdmVyLnNlcnZlKHdlYl9yb290KQog
ICAgICAgICAgICAgdXJsID0gdXJsam9pbihzZWxmLl9odHRwX3NlcnZlcl9kcml2ZXIuYmFzZV91
cmwoKSwgc2VsZi5fcGxhbl9uYW1lICsgJy8nICsgdGVzdF9maWxlKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb2RlZ2VuL21haW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb2RlZ2VuL21haW4ucHkJKHJldmlzaW9uIDI3MTA2NikKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29kZWdlbi9tYWluLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyAr
MTAxLDcgQEAgY2xhc3MgQnVpbHRpbnNHZW5lcmF0b3JUZXN0czoKICAgICAgICAgY29tYmluZWRf
b3V0cHV0cyA9IG91dHB1dF9tb2RlID09ICJDb21iaW5lZCIKICAgICAgICAgcmV0dXJuIHNlbGYu
Z2VuZXJhdGVfZnJvbV9qc19idWlsdGlucyh0ZXN0X2ZpbGVzLCB3b3JrX2RpcmVjdG9yeSwgZnJh
bWV3b3JrX25hbWU9ZnJhbWV3b3JrX25hbWUsIGNvbWJpbmVkX291dHB1dHM9Y29tYmluZWRfb3V0
cHV0cykKIAotICAgIGRlZiB3cmFwcGVyc19idWlsdGluX3Rlc3Qoc2VsZiwgdGVzdF9uYW1lLCB0
ZXN0X2ZpbGVzLCB3b3JrX2RpcmVjdG9yeSk6CisgICAgZGVmIHdyYXBwZXJzX2J1aWx0aW5fdGVz
dChzZWxmLCB0ZXN0X2ZpbGVzLCB3b3JrX2RpcmVjdG9yeSk6CiAgICAgICAgIHJldHVybiBzZWxm
LmdlbmVyYXRlX2Zyb21fanNfYnVpbHRpbnModGVzdF9maWxlcywgd29ya19kaXJlY3RvcnksIGZy
YW1ld29ya19uYW1lPSJXZWJDb3JlIiwgZ2VuZXJhdGVfd3JhcHBlcnM9VHJ1ZSkKIAogICAgIGRl
ZiBydW5fdGVzdChzZWxmLCByZWZlcmVuY2VfZGlyZWN0b3J5LCB0ZXN0X25hbWUsIHRlc3RfZmls
ZXMsIGdlbmVyYXRlX2J1aWx0aW5fY2FsbGJhY2spOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbWVzc2FnZV9wb29sLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL21lc3NhZ2VfcG9vbC5weQkocmV2aXNpb24gMjcxMDY2KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbWVzc2FnZV9wb29sLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yNjgsNyArMjY4LDYgQEAgY2xhc3MgX1dvcmtlcihtdWx0aXByb2Nlc3NpbmcuUHJvY2Vz
cyk6CiAgICAgICAgICAgICBzZWxmLl9zZXRfdXBfbG9nZ2luZygpCiAKICAgICAgICAgd29ya2Vy
ID0gc2VsZi5fd29ya2VyCi0gICAgICAgIGV4Y2VwdGlvbl9tc2cgPSAiIgogICAgICAgICBfbG9n
LmRlYnVnKCIlcyBzdGFydGluZyIgJSBzZWxmLm5hbWUpCiAKICAgICAgICAgdHJ5OgpAQCAtMjg2
LDkgKzI4NSw5IEBAIGNsYXNzIF9Xb3JrZXIobXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MpOgogICAg
ICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgZXhpdGluZyIgJSBzZWxmLm5hbWUpCiAgICAgICAgIGV4
Y2VwdCBxdWV1ZS5FbXB0eToKICAgICAgICAgICAgIGFzc2VydCBGYWxzZSwgJyVzOiByYW4gb3V0
IG9mIG1lc3NhZ2VzIGluIHdvcmtlciBxdWV1ZS4nICUgc2VsZi5uYW1lCi0gICAgICAgIGV4Y2Vw
dCBLZXlib2FyZEludGVycnVwdCBhcyBlOgorICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1
cHQ6CiAgICAgICAgICAgICBzZWxmLl9yYWlzZShzeXMuZXhjX2luZm8oKSkKLSAgICAgICAgZXhj
ZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAg
ICAgc2VsZi5fcmFpc2Uoc3lzLmV4Y19pbmZvKCkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAg
ICAgICB0cnk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9j
aGFuZ2Vsb2cucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvY2hhbmdlbG9nLnB5CShyZXZpc2lvbiAyNzEwNjYpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkJKHdvcmtpbmcgY29weSkKQEAg
LTMyMSw3ICszMjEsNyBAQCBjbGFzcyBDaGFuZ2VMb2cob2JqZWN0KToKICAgICBkZWYgcGFyc2Vf
bGF0ZXN0X2VudHJ5X2Zyb21fZmlsZShjbHMsIGNoYW5nZWxvZ19maWxlKToKICAgICAgICAgdHJ5
OgogICAgICAgICAgICAgcmV0dXJuIG5leHQoY2xzLnBhcnNlX2VudHJpZXNfZnJvbV9maWxlKGNo
YW5nZWxvZ19maWxlKSkKLSAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZToKKyAgICAg
ICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAg
c3ZuX2JsYW1lX3JlZ2V4cCA9IHJlLmNvbXBpbGUocideKFxzKig/UDxyZXZpc2lvbj5cZCspIFte
IF0rKVxzKig/UDxsaW5lPi4qP1xuKScpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9jaGVja291dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weQkocmV2aXNpb24gMjcxMDY2KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHkJKHdvcmtp
bmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNyBAQCBjbGFzcyBDaGVja291dChvYmplY3QpOgogICAg
IGRlZiBidWdfaWRfZm9yX3RoaXNfY29tbWl0KHNlbGYsIGdpdF9jb21taXQsIGNoYW5nZWRfZmls
ZXM9Tm9uZSk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBwYXJzZV9idWdfaWRf
ZnJvbV9jaGFuZ2Vsb2coc2VsZi5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2Nv
bW1pdCwgY2hhbmdlZF9maWxlcykubWVzc2FnZSgpKQotICAgICAgICBleGNlcHQgU2NyaXB0RXJy
b3IgYXMgZToKKyAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yOgogICAgICAgICAgICAgcGFzcyAg
IyBXZSBtaWdodCBub3QgaGF2ZSBDaGFuZ2VMb2dzLgogCiAgICAgZGVmIGFwcGx5X3BhdGNoKHNl
bGYsIHBhdGNoKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L3NjbS9naXQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvc2NtL2dpdC5weQkocmV2aXNpb24gMjcxMDY2KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL2dpdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTEz
LDcgKzExMyw3IEBAIGNsYXNzIEdpdChTQ00sIFNWTlJlcG9zaXRvcnkpOgogICAgICAgICB0cnk6
CiAgICAgICAgICAgICBleGVjdXRpdmUgPSBleGVjdXRpdmUgb3IgRXhlY3V0aXZlKCkKICAgICAg
ICAgICAgIHJldHVybiBleGVjdXRpdmUucnVuX2NvbW1hbmQoW2Nscy5leGVjdXRhYmxlX25hbWUs
ICdyZXYtcGFyc2UnLCAnLS1pcy1pbnNpZGUtd29yay10cmVlJ10sIGN3ZD1wYXRoLCBpZ25vcmVf
ZXJyb3JzPVRydWUpLnJzdHJpcCgpID09ICJ0cnVlIgotICAgICAgICBleGNlcHQgT1NFcnJvciBh
cyBlOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICMgVGhlIFdpbmRvd3Mg
Ym90cyBzZWVtIHRvIHRocm91Z2ggYSBXaW5kb3dzRXJyb3Igd2hlbiBnaXQgaXNuJ3QgaW5zdGFs
bGVkLgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKQEAgLTEyMiw3ICsxMjIsNyBAQCBjbGFz
cyBHaXQoU0NNLCBTVk5SZXBvc2l0b3J5KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZXhl
Y3V0aXZlID0gZXhlY3V0aXZlIG9yIEV4ZWN1dGl2ZSgpCiAgICAgICAgICAgICByZXR1cm4gZXhl
Y3V0aXZlLnJ1bl9jb21tYW5kKFtjbHMuZXhlY3V0YWJsZV9uYW1lLCAnY2xvbmUnLCAnLXYnLCB1
cmwsIGRpcmVjdG9yeV0sIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKLSAgICAgICAgZXhjZXB0IE9TRXJy
b3IgYXMgZToKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gRmFs
c2UKIAogICAgIGRlZiBmaW5kX2NoZWNrb3V0X3Jvb3Qoc2VsZiwgcGF0aCk6CkBAIC0zODYsNyAr
Mzg2LDcgQEAgY2xhc3MgR2l0KFNDTSwgU1ZOUmVwb3NpdG9yeSk6CiAgICAgZGVmIF9zdHJpbmdf
dG9faW50X29yX25vbmUoc2VsZiwgc3RyaW5nKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAg
cmV0dXJuIGludChzdHJpbmcpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAg
ICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIEBt
ZW1vaXplZApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2Nt
L3N2bi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY20vc3ZuLnB5CShyZXZpc2lvbiAyNzEwNjYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9zY20vc3ZuLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyAr
MTAyLDcgQEAgY2xhc3MgU1ZOKFNDTSwgU1ZOUmVwb3NpdG9yeSk6CiAgICAgICAgICAgICBzdm5f
aW5mb19hcmdzID0gW2Nscy5leGVjdXRhYmxlX25hbWUsICdpbmZvJ10KICAgICAgICAgICAgIGV4
aXRfY29kZSA9IGV4ZWN1dGl2ZS5ydW5fY29tbWFuZChzdm5faW5mb19hcmdzLCBjd2Q9cGF0aCwg
cmV0dXJuX2V4aXRfY29kZT1UcnVlKQogICAgICAgICAgICAgcmV0dXJuIChleGl0X2NvZGUgPT0g
MCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6
CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBmaW5kX3V1aWQoc2VsZiwgcGF0
aCk6CkBAIC0yNDgsNyArMjQ4LDcgQEAgY2xhc3MgU1ZOKFNDTSwgU1ZOUmVwb3NpdG9yeSk6CiAg
ICAgICAgIGxvZ19jb21tYW5kID0gWydsb2cnLCAnLS1xdWlldCcsICctLWxpbWl0PSVzJyAlIGxp
bWl0LCBwYXRoXQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBsb2dfb3V0cHV0ID0gc2VsZi5f
cnVuX3N2bihsb2dfY29tbWFuZCwgY3dkPXNlbGYuY2hlY2tvdXRfcm9vdCkKLSAgICAgICAgZXhj
ZXB0IFNjcmlwdEVycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvcjoKICAgICAg
ICAgICAgIHJldHVybiBbXQogICAgICAgICBmb3IgbGluZSBpbiBsb2dfb3V0cHV0LnNwbGl0bGlu
ZXMoKToKICAgICAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCdecig/UDxyZXZpc2lvbj5cZCsp
ICcsIGxpbmUpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29t
bWl0dGVycy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
b25maWcvY29tbWl0dGVycy5weQkocmV2aXNpb24gMjcxMDY2KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnMucHkJKHdvcmtpbmcgY29weSkKQEAgLTIx
Myw3ICsyMTMsNiBAQCBjbGFzcyBDb21taXR0ZXJMaXN0KG9iamVjdCk6CiAgICAgICAgIHNlbGYu
X3Jldmlld2VycyA9IFtdCiAKICAgICAgICAgZm9yIG5hbWUsIGRhdGEgaW4gY29udHJpYnV0b3Jz
Lml0ZW1zKCk6Ci0gICAgICAgICAgICBjb250cmlidXRvciA9IE5vbmUKICAgICAgICAgICAgIHN0
YXR1cyA9IGRhdGEuZ2V0KCdzdGF0dXMnKQogICAgICAgICAgICAgaWYgc3RhdHVzID09ICJyZXZp
ZXdlciI6CiAgICAgICAgICAgICAgICAgY29udHJpYnV0b3IgPSBSZXZpZXdlcihuYW1lLCBkYXRh
LmdldCgnZW1haWxzJyksIGRhdGEuZ2V0KCduaWNrcycpLCBkYXRhLmdldCgnYWxpYXNlcycpLCBk
YXRhLmdldCgnZXhwZXJ0aXNlJykpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jb25maWcvY29udHJpYnV0aW9uYXJlYXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbnRyaWJ1dGlvbmFyZWFzLnB5CShyZXZpc2lvbiAy
NzEwNjYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29udHJpYnV0
aW9uYXJlYXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTIwMSw3ICsyMDEsNiBAQCBjbGFzcyBDb250
cmlidXRpb25BcmVhcyhvYmplY3QpOgogICAgICAgICBhcmVhcyA9IHNldCgpCiAgICAgICAgIGZv
ciBmaWxlX3BhdGggaW4gdG91Y2hlZF9maWxlczoKICAgICAgICAgICAgIHNwbGl0X2ZpbGVfcGF0
aCA9IHNlbGYuX3NwbGl0X3BhdGgoZmlsZV9wYXRoKQotICAgICAgICAgICAgdG9rZW5pemVkX2Zp
bGVfcGF0aCA9IE5vbmUKICAgICAgICAgICAgIHRva2VuaXplZF9maWxlX3BhdGggPSBzdW0oW3Nl
bGYuX3NwbGl0X2NhbWVsY2FzZSh0b2tlbiwgbGFtYmRhIHg6IHgubG93ZXIoKSkgZm9yIHRva2Vu
IGluIHNwbGl0X2ZpbGVfcGF0aF0sIFtdKQogICAgICAgICAgICAgZm9yIGFyZWEgaW4gc2VsZi5f
Y29udHJpYnV0aW9uX2FyZWFzOgogICAgICAgICAgICAgICAgIGlmIGFyZWEubWF0Y2hlcyhzcGxp
dF9maWxlX3BhdGgpIG9yIGFyZWEubWF0Y2hlcyh0b2tlbml6ZWRfZmlsZV9wYXRoKToKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFscy5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvY3JlZGVudGlhbHMucHkJ
KHJldmlzaW9uIDI3MTA2NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9j
cmVkZW50aWFscy5weQkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBjbGFzcyBDcmVk
ZW50aWFscyhvYmplY3QpOgogICAgICAgICAgICAgICAgIHJldHVybiAoTm9uZSwgTm9uZSkKICAg
ICAgICAgICAgIHJldHVybiAoR2l0LnJlYWRfZ2l0X2NvbmZpZyhzZWxmLmdpdF9wcmVmaXggKyAi
dXNlcm5hbWUiKSwKICAgICAgICAgICAgICAgICAgICAgR2l0LnJlYWRfZ2l0X2NvbmZpZyhzZWxm
LmdpdF9wcmVmaXggKyAicGFzc3dvcmQiKSkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToK
KyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAjIENhdGNoIGFuZCBpZ25vcmUg
T1NFcnJvciBleGNlcHRpb25zIHN1Y2ggYXMgIm5vIHN1Y2ggZmlsZQogICAgICAgICAgICAgIyBv
ciBkaXJlY3RvcnkiIChPU0Vycm9yIGVycm5vIDIpLCB3aGljaCBpbXBseSB0aGF0IHRoZSBHaXQK
ICAgICAgICAgICAgICMgY29tbWFuZCBjYW5ub3QgYmUgZm91bmQvaXMgbm90IGluc3RhbGxlZC4K
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJv
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVp
bGRib3QvYnVpbGRib3QucHkJKHJldmlzaW9uIDI3MTA2NikKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdC5weQkod29ya2luZyBjb3B5KQpAQCAt
MTM3LDcgKzEzNyw3IEBAIGNsYXNzIEJ1aWxkZXIob2JqZWN0KToKICAgICAgICAgZGVmIHByZWRp
Y2F0ZShmb3JtKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXR1cm4gZm9y
bS5maW5kX2NvbnRyb2woInVzZXJuYW1lIikKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCiAKICAgICAgICAgaWYgbm90IHNlbGYuX2Jyb3dzZXI6CkBAIC00MzYsNyArNDM2
LDYgQEAgY2xhc3MgQnVpbGRCb3Qob2JqZWN0KToKIAogICAgIGRlZiBmYWlsdXJlX21hcChzZWxm
KToKICAgICAgICAgZmFpbHVyZV9tYXAgPSBGYWlsdXJlTWFwKCkKLSAgICAgICAgcmV2aXNpb25f
dG9fZmFpbGluZ19ib3RzID0ge30KICAgICAgICAgZm9yIGJ1aWxkZXJfc3RhdHVzIGluIHNlbGYu
YnVpbGRlcl9zdGF0dXNlcygpOgogICAgICAgICAgICAgaWYgYnVpbGRlcl9zdGF0dXNbImlzX2dy
ZWVuIl06CiAgICAgICAgICAgICAgICAgY29udGludWUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weQkocmV2aXNpb24gMjcxMDY2
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weQko
d29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBDcmFzaExvZ3Mob2JqZWN0KToK
ICAgICAgICAgaWYgc2VsZi5faG9zdC5wbGF0Zm9ybS5pc19tYWMoKSBvciBzZWxmLl9ob3N0LnBs
YXRmb3JtLmlzX2lvcygpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRfbmV3ZXN0X2xv
Z19kYXJ3aW4ocHJvY2Vzc19uYW1lLCBwaWQsIGluY2x1ZGVfZXJyb3JzLCBuZXdlcl90aGFuKQog
ICAgICAgICBlbGlmIHNlbGYuX2hvc3QucGxhdGZvcm0uaXNfd2luKCk6Ci0gICAgICAgICAgICBy
ZXR1cm4gc2VsZi5fZmluZF9uZXdlc3RfbG9nX3dpbihwcm9jZXNzX25hbWUsIHBpZCwgaW5jbHVk
ZV9lcnJvcnMsIG5ld2VyX3RoYW4pCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZmluZF9uZXdl
c3RfbG9nX3dpbihwaWQsIGluY2x1ZGVfZXJyb3JzLCBuZXdlcl90aGFuKQogICAgICAgICByZXR1
cm4gTm9uZQogCiAgICAgZGVmIGZpbmRfYWxsX2xvZ3Moc2VsZiwgaW5jbHVkZV9lcnJvcnM9RmFs
c2UsIG5ld2VyX3RoYW49Tm9uZSk6CkBAIC0xMDAsNyArMTAwLDcgQEAgY2xhc3MgQ3Jhc2hMb2dz
KG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gZXJyb3JzCiAgICAgICAgIHJldHVybiBOb25l
CiAKLSAgICBkZWYgX2ZpbmRfbmV3ZXN0X2xvZ193aW4oc2VsZiwgcHJvY2Vzc19uYW1lLCBwaWQs
IGluY2x1ZGVfZXJyb3JzLCBuZXdlcl90aGFuKToKKyAgICBkZWYgX2ZpbmRfbmV3ZXN0X2xvZ193
aW4oc2VsZiwgcGlkLCBpbmNsdWRlX2Vycm9ycywgbmV3ZXJfdGhhbik6CiAgICAgICAgIGRlZiBp
c19jcmFzaF9sb2coZnMsIGRpcnBhdGgsIGJhc2VuYW1lKToKICAgICAgICAgICAgIGlmIHNlbGYu
X2NyYXNoX2xvZ3NfdG9fc2tpcCBhbmQgZnMuam9pbihkaXJwYXRoLCBiYXNlbmFtZSkgaW4gc2Vs
Zi5fY3Jhc2hfbG9nc190b19za2lwOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZl
LnB5CShyZXZpc2lvbiAyNzEwNjYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vZXhlY3V0aXZlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyArMjk3LDcgQEAgY2xh
c3MgRXhlY3V0aXZlKEFic3RyYWN0RXhlY3V0aXZlKToKICAgICAgICAgICAgICAgICAgICAgaWYg
cHJvY2Vzc19uYW1lX2ZpbHRlcihwcm9jZXNzX25hbWUpOgogICAgICAgICAgICAgICAgICAgICAg
ICAgcnVubmluZ19waWRzLmFwcGVuZChpbnQocGlkKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYucGlkX3RvX3N5c3RlbV9waWRbaW50KHBpZCldID0gaW50KHdpbnBpZCkKLSAgICAgICAg
ICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBW
YWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICB3aXRoIHNlbGYucG9wZW4oWydwcycsICctZW8nLCAncGlkLGNvbW0nXSwgc3Rkb3V0
PXNlbGYuUElQRSwgc3RkZXJyPXNlbGYuUElQRSkgYXMgcHNfcHJvY2VzczoKQEAgLTMwOSw3ICsz
MDksNyBAQCBjbGFzcyBFeGVjdXRpdmUoQWJzdHJhY3RFeGVjdXRpdmUpOgogICAgICAgICAgICAg
ICAgICAgICAgICAgcGlkLCBwcm9jZXNzX25hbWUgPSBsaW5lLnN0cmlwKCkuc3BsaXQoYicgJywg
MSkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHByb2Nlc3NfbmFtZV9maWx0ZXIoc3RyaW5n
X3V0aWxzLmRlY29kZShwcm9jZXNzX25hbWUsIHRhcmdldF90eXBlPXN0cikpOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ1bm5pbmdfcGlkcy5hcHBlbmQoaW50KHBpZCkpCi0gICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogCiAgICAg
ICAgIHJldHVybiBzb3J0ZWQocnVubmluZ19waWRzKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL3Byb2ZpbGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wcm9maWxlci5weQkocmV2aXNpb24gMjcxMDY2KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3Byb2ZpbGVyLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIFByb2ZpbGVyKG9iamVjdCk6CiAgICAg
IyBVc2VkIGJ5IFByb2ZpbGVyRmFjdG9yeSB0byBsb29rdXAgYSBwcm9maWxlciBmcm9tIHRoZSAt
LXByb2ZpbGVyPU5BTUUgb3B0aW9uLgogICAgIG5hbWUgPSBOb25lCiAKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgaG9zdCwgZXhlY3V0YWJsZV9wYXRoLCBvdXRwdXRfZGlyLCBpZGVudGlmaWVyPU5v
bmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBleGVjdXRhYmxlX3BhdGgsIG91dHB1
dF9kaXIpOgogICAgICAgICBzZWxmLl9ob3N0ID0gaG9zdAogICAgICAgICBzZWxmLl9leGVjdXRh
YmxlX3BhdGggPSBleGVjdXRhYmxlX3BhdGgKICAgICAgICAgc2VsZi5fb3V0cHV0X2RpciA9IG91
dHB1dF9kaXIKQEAgLTkyLDcgKzkyLDcgQEAgY2xhc3MgUHJvZmlsZXIob2JqZWN0KToKIAogY2xh
c3MgU2luZ2xlRmlsZU91dHB1dFByb2ZpbGVyKFByb2ZpbGVyKToKICAgICBkZWYgX19pbml0X18o
c2VsZiwgaG9zdCwgZXhlY3V0YWJsZV9wYXRoLCBvdXRwdXRfZGlyLCBvdXRwdXRfc3VmZml4LCBp
ZGVudGlmaWVyPU5vbmUpOgotICAgICAgICBzdXBlcihTaW5nbGVGaWxlT3V0cHV0UHJvZmlsZXIs
IHNlbGYpLl9faW5pdF9fKGhvc3QsIGV4ZWN1dGFibGVfcGF0aCwgb3V0cHV0X2RpciwgaWRlbnRp
ZmllcikKKyAgICAgICAgc3VwZXIoU2luZ2xlRmlsZU91dHB1dFByb2ZpbGVyLCBzZWxmKS5fX2lu
aXRfXyhob3N0LCBleGVjdXRhYmxlX3BhdGgsIG91dHB1dF9kaXIpCiAgICAgICAgICMgRklYTUU6
IEN1cnJlbnRseSBhbGwgcmVwb3J0cyBhcmUga2VwdCBhcyB0ZXN0LiosIHVudGlsIHdlIGZpeCB0
aGF0LCBzZWFyY2ggdXAgdG8gMTAwMCBuYW1lcyBiZWZvcmUgZ2l2aW5nIHVwLgogICAgICAgICBz
ZWxmLl9vdXRwdXRfcGF0aCA9IHNlbGYuX2hvc3Qud29ya3NwYWNlLmZpbmRfdW51c2VkX2ZpbGVu
YW1lKHNlbGYuX291dHB1dF9kaXIsIHNlbGYuX2lkZW50aWZpZXIsIG91dHB1dF9zdWZmaXgsIHNl
YXJjaF9saW1pdD0xMDAwKQogICAgICAgICBhc3NlcnQoc2VsZi5fb3V0cHV0X3BhdGgpCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weQkocmV2aXNp
b24gMjcxMDY2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXIu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTEwNywxNCArMTA3LDE0IEBAIGNsYXNzIFVzZXIob2JqZWN0
KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzICs9IHJhbmdlKGludChwYXJ0
c1swXSkgLSAxLCBpbnQocGFydHNbMV0pKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLmFwcGVuZChpbnQodmFsdWUpIC0g
MSkKLSAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlcnI6CisgICAgICAgICAg
ICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAK
ICAgICAgICAgICAgICAgICByZXR1cm4gW2xpc3RfaXRlbXNbaV0gZm9yIGkgaW4gaW5kaWNlc10K
ICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAg
ICAgICByZXN1bHQgPSBpbnQoY2xzLnByb21wdCgiRW50ZXIgYSBudW1iZXI6ICIsIHJhd19pbnB1
dD1yYXdfaW5wdXQpKSAtIDEKLSAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBl
cnI6CisgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxpc3RfaXRlbXNbcmVzdWx0XQog
CkBAIC0xNTgsNyArMTU4LDcgQEAgY2xhc3MgVXNlcihvYmplY3QpOgogICAgICAgICAgICAgIyBO
b3RlOiBOb3QgdGhyZWFkIHNhZmU6IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCiAg
ICAgICAgICAgICBjaGlsZF9wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbcGFnZXJdLCBzdGRp
bj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgICAgICBjaGlsZF9wcm9jZXNzLmNvbW11bmljYXRl
KGlucHV0PW1lc3NhZ2UpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgIGV4
Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgcGFzcwogCiAgICAgZGVmIGNvbmZpcm0oc2VsZiwg
bWVzc2FnZT1Ob25lLCBkZWZhdWx0PURFRkFVTFRfWUVTLCByYXdfaW5wdXQ9aW5wdXRfZnVuYyk6
CkBAIC0xNzQsNyArMTc0LDcgQEAgY2xhc3MgVXNlcihvYmplY3QpOgogICAgICAgICB0cnk6CiAg
ICAgICAgICAgICB3ZWJicm93c2VyLmdldCgpCiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAg
ICAgICBleGNlcHQgd2ViYnJvd3Nlci5FcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgd2ViYnJv
d3Nlci5FcnJvcjoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVmIG9wZW5fdXJs
KHNlbGYsIHVybCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2dlbmVyYXRlX3hjZmls
ZWxpc3RzX2xpYi9hcHBsaWNhdGlvbi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2dlbmVyYXRlX3hjZmlsZWxpc3RzX2xpYi9hcHBsaWNhdGlvbi5weQkocmV2aXNpb24g
MjcxMDY2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9nZW5lcmF0ZV94Y2ZpbGVsaXN0c19s
aWIvYXBwbGljYXRpb24ucHkJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBjbGFz
cyBBcHBsaWNhdGlvbihvYmplY3QpOgogCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAg
ICAgZnVuYyA9IHNlbGYuZGlzcGF0Y2hbYXJncy5jb21tYW5kXQotICAgICAgICAgICAgZXhjZXB0
IEtleUVycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAg
ICAgICAgcmFpc2UgdXRpbC5JbnZhbGlkQ29tbWFuZEVycm9yKGFyZ3MuY29tbWFuZCkKIAogICAg
ICAgICAgICAgcmV0dXJuIGZ1bmMoKQpAQCAtMTM5LDcgKzEzOSw3IEBAIGNsYXNzIEFwcGxpY2F0
aW9uKG9iamVjdCk6CiAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgogICAgICAgICAgICAgcmFp
c2UKIAotICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBleGNlcHQg
QmFzZUV4Y2VwdGlvbjoKICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQogICAgICAg
ICAgICAgcmV0dXJuIG9zLkVYX1NPRlRXQVJFCiAKQEAgLTMyOSw3ICszMjksNyBAQCBzcGVjaWZp
ZWQgb24gdGhlIGNvbW1hbmQtbGluZToKICAgICAgICAgICAgIHNlbGYuX2xvZ19wcm9ncmVzcygi
R2VuZXJhdGluZyAueGNmaWxlbGlzdHMgZm9yIHt9L3t9L3t9Ii5mb3JtYXQoKnRyaXBsZSkpCiAg
ICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9ycyA9IGNvcmVfb3BlcmF0
aW9uKGdlbmVyYXRvciwgZ2VuZXJhdG9ycykKLSAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKICAgICAgICAgICAg
ICAgICAjIFRPRE86IFR1cm4gdGhlIHRyYWNlYmFjayBpbnRvIGEgc3RyaW5nLCBhbmQgdGhlbiBh
bGxvdwogICAgICAgICAgICAgICAgICMgdGhpcyBmaWVsZCB0byBiZSBwaWNrbGVkIGFuZCBwcmlu
dGVkIGJ5IHRoZSBjYWxsaW5nCiAgICAgICAgICAgICAgICAgIyBjb250ZXh0LiBSaWdodCBub3cs
IHBpY2tsaW5nIHJhaXNlcyBhbiBleGNlcHRpb24gaWYgaXQKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvZ2VuZXJhdGVfeGNmaWxlbGlzdHNfbGliL2dlbmVyYXRvcnMucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9nZW5lcmF0ZV94Y2ZpbGVsaXN0c19saWIvZ2Vu
ZXJhdG9ycy5weQkocmV2aXNpb24gMjcxMDY2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9n
ZW5lcmF0ZV94Y2ZpbGVsaXN0c19saWIvZ2VuZXJhdG9ycy5weQkod29ya2luZyBjb3B5KQpAQCAt
MTQ2LDcgKzE0Niw3IEBAIGNsYXNzIEJhc2VHZW5lcmF0b3Iob2JqZWN0KToKICAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yID0gcGlja2xlLmxvYWQocGlja2xlX2ZpbGUpCiAgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5hcHBsaWNhdGlvbiA9IHNlbGYuYXBwbGljYXRpb24KICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoZ2VuZXJhdG9yKQotICAgICAgICAgICAg
ICAgIGV4Y2VwdCBFT0ZFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBFT0ZFcnJv
cjoKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0
b3JzCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL21hbmFnZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQkocmV2aXNpb24gMjcxMDY2KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQko
d29ya2luZyBjb3B5KQpAQCAtNjE0LDcgKzYxNCw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToK
ICAgICAgICAgICAgICAgICByZXNwb25zZV90ZXh0ID0gcmVzcG9uc2UucmVhZCgpCiAgICAgICAg
ICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICByZXNwb25zZV9qc29uID0ganNvbi5s
b2FkcyhyZXNwb25zZV90ZXh0KQotICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFz
IGVycm9yOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAg
ICAgICAgICBfbG9nLmVycm9yKCJKU09OIHVwbG9hZCBmYWlsZWQ7IGZhaWxlZCB0byBwYXJzZSB0
aGUgcmVzcG9uc2U6ICVzIiwgcmVzcG9uc2VfdGV4dCkKICAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJv
bGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQko
cmV2aXNpb24gMjcxMDY2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xOTQs
NyArMTk0LDYgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcihvYmplY3QpOgogICAgICAgICAgICAg
ICB3aGljaCBodG1sIGZpbGUgaXMgdXNlZCBmb3IgcHJvZHVjaW5nIHRoZSBkcml2ZXJfb3V0cHV0
LgogICAgICAgICAiIiIKICAgICAgICAgZmFpbHVyZXMgPSBbXQotICAgICAgICBmcyA9IHNlbGYu
X2ZpbGVzeXN0ZW0KICAgICAgICAgaWYgZHJpdmVyX291dHB1dC50aW1lb3V0OgogICAgICAgICAg
ICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZVRpbWVvdXQoYm9vbChyZWZl
cmVuY2VfZmlsZW5hbWUpKSkKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIu
cHkJKHJldmlzaW9uIDI3MTA2NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC05MCw3
ICs5MCw3IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl8KIAogICAg
ICAgICAjIEZJWE1FOiBXZSBzaG91bGRuJ3QgYmUgY2FsbGluZyBhIHByb3RlY3RlZCBtZXRob2Qg
b2YgX3BvcnRfb2JqIQogICAgICAgICBleGVjdXRhYmxlID0gc2VsZi5fcG9ydF9vYmouX3BhdGhf
dG9fYXBhY2hlKCkKLSAgICAgICAgY29uZmlnX2ZpbGVfcGF0aCA9IHNlbGYuX2NvcHlfYXBhY2hl
X2NvbmZpZ19maWxlKHNlbGYudGVzdHNfZGlyLCBvdXRwdXRfZGlyKQorICAgICAgICBjb25maWdf
ZmlsZV9wYXRoID0gc2VsZi5fY29weV9hcGFjaGVfY29uZmlnX2ZpbGUob3V0cHV0X2RpcikKIAog
ICAgICAgICBzdGFydF9jbWQgPSBbZXhlY3V0YWJsZSwKICAgICAgICAgICAgICctZicsIGNvbmZp
Z19maWxlX3BhdGgsCkBAIC0xNTIsNyArMTUyLDcgQEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0
dHBkKGh0dHBfc2VydmVyXwogICAgICAgICBzZWxmLl9zdGFydF9jbWQgPSBzdGFydF9jbWQKICAg
ICAgICAgc2VsZi5fc3RvcF9jbWQgPSBzdG9wX2NtZAogCi0gICAgZGVmIF9jb3B5X2FwYWNoZV9j
b25maWdfZmlsZShzZWxmLCB0ZXN0X2Rpciwgb3V0cHV0X2Rpcik6CisgICAgZGVmIF9jb3B5X2Fw
YWNoZV9jb25maWdfZmlsZShzZWxmLCBvdXRwdXRfZGlyKToKICAgICAgICAgIiIiQ29weSBhcGFj
aGUgY29uZmlnIGZpbGUgYW5kIHJldHVybnMgdGhlIHBhdGggdG8gdXNlLgogICAgICAgICBBcmdz
OgogICAgICAgICAgIHRlc3RfZGlyOiBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBMYXlvdXRUZXN0cyBk
aXJlY3RvcnkuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2
ZXJzL2h0dHBfc2VydmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXIucHkJKHJldmlzaW9uIDI3MTA2NikKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXIu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKF9fbmFtZV9fKQogCiBjbGFzcyBMaWdodHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2
ZXJCYXNlKToKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaiwgb3V0cHV0X2Rpciwg
YmFja2dyb3VuZD1GYWxzZSwgcG9ydD1Ob25lLAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0
X29iaiwgb3V0cHV0X2RpciwgcG9ydD1Ob25lLAogICAgICAgICAgICAgICAgICByb290PU5vbmUs
IHJ1bl9iYWNrZ3JvdW5kPU5vbmUsIGFkZGl0aW9uYWxfZGlycz1Ob25lLAogICAgICAgICAgICAg
ICAgICBsYXlvdXRfdGVzdHNfZGlyPU5vbmUpOgogICAgICAgICAiIiJBcmdzOgpAQCAtMTk0LDcg
KzE5NCw3IEBAIGNsYXNzIExpZ2h0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnYKICAgICAg
ICAgZm9yIGxvZ19wcmVmaXggaW4gKCdhY2Nlc3MubG9nLScsICdlcnJvci5sb2ctJyk6CiAgICAg
ICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2xvZ19maWxlcyhzZWxm
Ll9vdXRwdXRfZGlyLCBsb2dfcHJlZml4KQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMg
ZToKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIF9sb2cud2Fy
bmluZygnRmFpbGVkIHRvIHJlbW92ZSBvbGQgJXMgJXMgZmlsZXMnICUgKHNlbGYuX25hbWUsIGxv
Z19wcmVmaXgpKQogCiAgICAgZGVmIF9zcGF3bl9wcm9jZXNzKHNlbGYpOgpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvYnVpbGRib3RfcmVzdWx0cy5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9i
dWlsZGJvdF9yZXN1bHRzLnB5CShyZXZpc2lvbiAyNzEwNjYpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9idWlsZGJvdF9yZXN1bHRzLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0xNDcsNyArMTQ3LDYgQEAgY2xhc3MgQnVpbGRCb3RQcmludGVyKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdHNqc29ucGFyc2VyLnJlc3VsdF9mb3Jf
dGVzdChzdW1tYXJpemVkX3Jlc3VsdHNbJ3Rlc3RzJ10sIHRlc3QpCiAgICAgICAgICAgICAgICAg
ICAgIGFjdHVhbCA9IHJlc3VsdFsnYWN0dWFsJ10uc3BsaXQoIiAiKQogICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZCA9IHJlc3VsdFsnZXhwZWN0ZWQnXS5zcGxpdCgiICIpCi0gICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IFRlc3RFeHBlY3RhdGlvbnMuRVhQRUNUQVRJT05TW2tleS5sb3dl
cigpXQogICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBjbGVhbiB0aGlzIHVwIG9uY2UgdGhl
IG9sZCBzeW50YXggaXMgZ29uZQogICAgICAgICAgICAgICAgICAgICBuZXdfZXhwZWN0YXRpb25z
X2xpc3QgPSBbVGVzdEV4cGVjdGF0aW9uUGFyc2VyLl9pbnZlcnRlZF9leHBlY3RhdGlvbl90b2tl
bnNbZXhwXSBmb3IgZXhwIGluIGxpc3Qoc2V0KGFjdHVhbCkgfCBzZXQoZXhwZWN0ZWQpKV0KICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnQoIiAgJXMgWyAlcyBdIiAlICh0ZXN0LCAiICIu
am9pbihuZXdfZXhwZWN0YXRpb25zX2xpc3QpKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtLnB5
CShyZXZpc2lvbiAyNzEwNjYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy92aWV3cy9tZXRlcmVkX3N0cmVhbS5weQkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw2
IEBAIGNsYXNzIE1ldGVyZWRTdHJlYW0ob2JqZWN0KToKICAgICAgICAgc2VsZi53cml0ZShzZWxm
Ll9lbnN1cmVfbmV3bGluZSh0eHQpLCBub3csIHBpZCkKIAogICAgIGRlZiBfZXJhc2VfbGFzdF9w
YXJ0aWFsX2xpbmUoc2VsZik6Ci0gICAgICAgIG51bV9jaGFycyA9IGxlbihzZWxmLl9sYXN0X3Bh
cnRpYWxfbGluZSkKICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlKHNlbGYuX2VyYXN1cmUoc2Vs
Zi5fbGFzdF9wYXJ0aWFsX2xpbmUpKQogICAgICAgICBzZWxmLl9sYXN0X3BhcnRpYWxfbGluZSA9
ICcnCiAgICAgICAgIHNlbGYuX3N0cmVhbS5mbHVzaCgpCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkJKHJldmlzaW9u
IDI3MTA2NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVy
ZnRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw3ICsxODUsNiBAQCBjbGFzcyBQZXJmVGVz
dChvYmplY3QpOgogICAgICAgICBpZiBzZWxmLnJ1bl9mYWlsZWQob3V0cHV0KToKICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgIGN1cnJlbnRfbWV0cmljID0gTm9uZQogICAgICAg
ICBmb3IgbGluZSBpbiByZS5zcGxpdCgnXG4nLCBvdXRwdXQudGV4dCk6CiAgICAgICAgICAgICBk
ZXNjcmlwdGlvbl9tYXRjaCA9IHNlbGYuX2Rlc2NyaXB0aW9uX3JlZ2V4Lm1hdGNoKGxpbmUpCiAg
ICAgICAgICAgICBpZiBkZXNjcmlwdGlvbl9tYXRjaDoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9kZXZpY2VfcG9ydC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZGV2aWNlX3BvcnQucHkJKHJldmlzaW9uIDI3MTA2NikKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9kZXZpY2VfcG9ydC5weQkod29ya2luZyBjb3B5KQpAQCAtMjUw
LDcgKzI1MCw2IEBAIGNsYXNzIERldmljZVBvcnQoRGFyd2luUG9ydCk6CiAgICAgICAgICAgICBt
b2RlbCArPSB1JyB7fScuZm9ybWF0KGRldmljZV90eXBlLmhhcmR3YXJlX3R5cGUpCiAKICAgICAg
ICAgdmVyc2lvbiA9IHNlbGYuZGV2aWNlX3ZlcnNpb24oKQotICAgICAgICB2ZXJzaW9uX25hbWUg
PSBOb25lCiAgICAgICAgIGZvciB0YWJsZSBpbiBbSU5URVJOQUxfVEFCTEUsIFBVQkxJQ19UQUJM
RV06CiAgICAgICAgICAgICB2ZXJzaW9uX25hbWUgPSBWZXJzaW9uTmFtZU1hcC5tYXAoc2VsZi5o
b3N0LnBsYXRmb3JtKS50b19uYW1lKHZlcnNpb24sIHBsYXRmb3JtPWRldmljZV90eXBlLnNvZnR3
YXJlX3ZhcmlhbnQubG93ZXIoKSwgdGFibGU9dGFibGUpCiAgICAgICAgICAgICBpZiB2ZXJzaW9u
X25hbWU6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFjdG9yeS5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFjdG9yeS5weQkocmV2aXNp
b24gMjcxMDY2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ZhY3RvcnkucHkJKHdv
cmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQCBjbGFzcyBQb3J0RmFjdG9yeShvYmplY3Qp
OgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0KToKICAgICAgICAgc2VsZi5faG9zdCA9IGhv
c3QKIAotICAgIGRlZiBfZGVmYXVsdF9wb3J0KHNlbGYsIG9wdGlvbnMpOgorICAgIGRlZiBfZGVm
YXVsdF9wb3J0KHNlbGYpOgogICAgICAgICBwbGF0Zm9ybSA9IHNlbGYuX2hvc3QucGxhdGZvcm0K
ICAgICAgICAgaWYgcGxhdGZvcm0uaXNfbGludXgoKSBvciBwbGF0Zm9ybS5pc19mcmVlYnNkKCk6
CiAgICAgICAgICAgICByZXR1cm4gJ2d0aycKQEAgLTE0MSw3ICsxNDEsNyBAQCBjbGFzcyBQb3J0
RmFjdG9yeShvYmplY3QpOgogICAgICAgICAiIiJSZXR1cm5zIGFuIG9iamVjdCBpbXBsZW1lbnRp
bmcgdGhlIFBvcnQgaW50ZXJmYWNlLiBJZgogICAgICAgICBwb3J0X25hbWUgaXMgTm9uZSwgdGhp
cyByb3V0aW5lIGF0dGVtcHRzIHRvIGd1ZXNzIGF0IHRoZSBtb3N0CiAgICAgICAgIGFwcHJvcHJp
YXRlIHBvcnQgb24gdGhpcyBwbGF0Zm9ybS4iIiIKLSAgICAgICAgcG9ydF9uYW1lID0gcG9ydF9u
YW1lIG9yIHNlbGYuX2RlZmF1bHRfcG9ydChvcHRpb25zKQorICAgICAgICBwb3J0X25hbWUgPSBw
b3J0X25hbWUgb3Igc2VsZi5fZGVmYXVsdF9wb3J0KCkKIAogICAgICAgICBjbGFzc2VzID0gW10K
ICAgICAgICAgZm9yIHBvcnRfY2xhc3MgaW4gc2VsZi5QT1JUX0NMQVNTRVM6CkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdmFsZ3JpbmQu
cHkJKHJldmlzaW9uIDI3MTA2NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFr
ZGV0ZWN0b3JfdmFsZ3JpbmQucHkJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw4ICsxMDksNiBAQCBj
bGFzcyBWYWxncmluZEVycm9yOgogICAgICAgICAgICAgICAgIGZyYW1lcyA9IGdhdGhlcl9mcmFt
ZXMoc3RhY2ssIHNvdXJjZV9kaXIpCiAgICAgICAgICAgICAgICAgc2VsZi5fYmFja3RyYWNlcy5h
cHBlbmQoW2Rlc2NyaXB0aW9uLCBmcmFtZXNdKQogICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9u
ID0gTm9uZQotICAgICAgICAgICAgICAgIHN0YWNrID0gTm9uZQotICAgICAgICAgICAgICAgIGZy
YW1lcyA9IE5vbmUKICAgICAgICAgICAgIGVsaWYgZGVzY3JpcHRpb24gYW5kIG5vZGUubG9jYWxO
YW1lICE9IE5vbmU6CiAgICAgICAgICAgICAgICAgIyBUaGUgbGFzdGVzdCBkZXNjcmlwdGlvbiBo
YXMgbm8gc3RhY2ssIGUuZy4gIkFkZHJlc3MgMHgyOCBpcyB1bmtub3duIi4KICAgICAgICAgICAg
ICAgICBzZWxmLl9hZGRpdGlvbmFsLmFwcGVuZChkZXNjcmlwdGlvbikKQEAgLTIyMiw3ICsyMjAs
NiBAQCBjbGFzcyBMZWFrRGV0ZWN0b3JWYWxncmluZChvYmplY3QpOgogICAgICAgICB0cnk6CiAg
ICAgICAgICAgICBwYXJzZWRfc3RyaW5nID0gcGFyc2VTdHJpbmcobGVha3Nfb3V0cHV0KQogICAg
ICAgICBleGNlcHQgRXhwYXRFcnJvciBhcyBlOgotICAgICAgICAgICAgcGFyc2VfZmFpbGVkID0g
VHJ1ZQogICAgICAgICAgICAgX2xvZy5lcnJvcigiY291bGQgbm90IHBhcnNlICVzOiAlcyIgJSAo
c3RyaW5nX3V0aWxzLmRlY29kZShsZWFrc19vdXRwdXQsIHRhcmdldF90eXBlPXN0ciksIGUpKQog
ICAgICAgICAgICAgcmV0dXJuCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9z
ZXJ2ZXJfcHJvY2Vzcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvc2VydmVyX3Byb2Nlc3MucHkJKHJldmlzaW9uIDI3MTA2NikKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQkod29ya2luZyBjb3B5KQpAQCAtMTg2LDcg
KzE4Niw3IEBAIGNsYXNzIFNlcnZlclByb2Nlc3Mob2JqZWN0KToKICAgICAgICAgdHJ5OgogICAg
ICAgICAgICAgc2VsZi5fcHJvYy5zdGRpbi53cml0ZShzdHJpbmdfdXRpbHMuZW5jb2RlKGJ5dGVz
KSkKICAgICAgICAgICAgIHNlbGYuX3Byb2Muc3RkaW4uZmx1c2goKQotICAgICAgICBleGNlcHQg
KElPRXJyb3IsIFZhbHVlRXJyb3IpIGFzIGU6CisgICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgVmFs
dWVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnN0b3AoMC4wKQogICAgICAgICAgICAgIyBzdG9w
KCkgY2FsbHMgX3Jlc2V0KCksIHNvIHdlIGhhdmUgdG8gc2V0IGNyYXNoZWQgdG8gVHJ1ZSBhZnRl
ciBjYWxsaW5nIHN0b3AoKQogICAgICAgICAgICAgIyB1bmxlc3Mgd2UgYWxyZWFkeSBrbm93IHRo
YXQgdGhpcyBpcyBhIHRpbWVvdXQuCkBAIC0zMTQsNyArMzE0LDcgQEAgY2xhc3MgU2VydmVyUHJv
Y2VzcyhvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBfbG9nLmRlYnVnKCd7fSBiZWNhdXNl
IG9mIG5vIGRhdGEgd2hpbGUgcmVhZGluZyBzdGRvdXQgZm9yIHRoZSBzZXJ2ZXIgcHJvY2Vzcy4n
LmZvcm1hdChzZWxmLl9jcmFzaF9tZXNzYWdlKSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
Y3Jhc2hlZCA9IFRydWUKICAgICAgICAgICAgICAgICBzZWxmLl9lcnJvciArPSBkYXRhCi0gICAg
ICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAg
ICAgICAgIyBXZSBjYW4gaWdub3JlIHRoZSBJT0Vycm9ycyBiZWNhdXNlIHdlIHdpbGwgZGV0ZWN0
IGlmIHRoZSBzdWJwb3JjZXNzIGNyYXNoZWQKICAgICAgICAgICAgICMgdGhlIG5leHQgdGltZSB0
aHJvdWdoIHRoZSBsb29wIGluIF9yZWFkKCkKICAgICAgICAgICAgIHBhc3MKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkJKHJldmlzaW9uIDI3MTA2NikKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQkod29ya2luZyBjb3B5KQpAQCAt
NzIxLDcgKzcyMSw3IEBAIGNsYXNzIENoZWNrZXJEaXNwYXRjaGVyKG9iamVjdCk6CiAgICAgICAg
ICAgICBlbGlmIGJhc2VuYW1lID09ICdDU1NQcm9wZXJ0aWVzLmpzb24nOgogICAgICAgICAgICAg
ICAgIGNoZWNrZXIgPSBKU09OQ1NTUHJvcGVydGllc0NoZWNrZXIoZmlsZV9wYXRoLCBoYW5kbGVf
c3R5bGVfZXJyb3IpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNoZWNrZXIg
PSBKU09OQ2hlY2tlcihmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcikKKyAgICAgICAgICAg
ICAgICBjaGVja2VyID0gSlNPTkNoZWNrZXIoaGFuZGxlX3N0eWxlX2Vycm9yKQogICAgICAgICBl
bGlmIGZpbGVfdHlwZSA9PSBGaWxlVHlwZS5QWVRIT046CiAgICAgICAgICAgICBweXRob24zX3Bh
dGhzID0gWydUb29scy9yZXN1bHRzZGJweSddCiAgICAgICAgICAgICBmb3IgcGFydGlhbCBpbiBw
eXRob24zX3BhdGhzOgpAQCAtNzMyLDcgKzczMiw3IEBAIGNsYXNzIENoZWNrZXJEaXNwYXRjaGVy
KG9iamVjdCk6CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGNoZWNrZXIgPSBQ
eXRob25DaGVja2VyKGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQogICAgICAgICBlbGlm
IGZpbGVfdHlwZSA9PSBGaWxlVHlwZS5YTUw6Ci0gICAgICAgICAgICBjaGVja2VyID0gWE1MQ2hl
Y2tlcihmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcikKKyAgICAgICAgICAgIGNoZWNrZXIg
PSBYTUxDaGVja2VyKGhhbmRsZV9zdHlsZV9lcnJvcikKICAgICAgICAgZWxpZiBmaWxlX3R5cGUg
PT0gRmlsZVR5cGUuWENPREVQUk9KOgogICAgICAgICAgICAgY2hlY2tlciA9IFhjb2RlUHJvamVj
dEZpbGVDaGVja2VyKGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQogICAgICAgICBlbGlm
IGZpbGVfdHlwZSA9PSBGaWxlVHlwZS5QTkc6CkBAIC03NDgsNyArNzQ4LDcgQEAgY2xhc3MgQ2hl
Y2tlckRpc3BhdGNoZXIob2JqZWN0KToKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAg
ICAgY2hlY2tlciA9IFRleHRDaGVja2VyKGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQog
ICAgICAgICBlbGlmIGZpbGVfdHlwZSA9PSBGaWxlVHlwZS5XQVRDSExJU1Q6Ci0gICAgICAgICAg
ICBjaGVja2VyID0gV2F0Y2hMaXN0Q2hlY2tlcihmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJv
cikKKyAgICAgICAgICAgIGNoZWNrZXIgPSBXYXRjaExpc3RDaGVja2VyKGhhbmRsZV9zdHlsZV9l
cnJvcikKICAgICAgICAgZWxpZiBmaWxlX3R5cGUgPT0gRmlsZVR5cGUuRkVBVFVSRURFRklORVM6
CiAgICAgICAgICAgICBjaGVja2VyID0gRmVhdHVyZURlZmluZXNDaGVja2VyKGZpbGVfcGF0aCwg
aGFuZGxlX3N0eWxlX2Vycm9yKQogICAgICAgICBlbGlmIGZpbGVfdHlwZSA9PSBGaWxlVHlwZS5T
REtWQVJJQU5UOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9j
b250cmlidXRvcnMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy9jb250cmlidXRvcnMucHkJKHJldmlzaW9uIDI3MTA2NikKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY29udHJpYnV0b3JzLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIENvbnRyaWJ1dG9yc0NoZWNrZXIoSlNPTkNoZWNr
ZXIpOgogICAgICIiIlByb2Nlc3NlcyBjb250cmlidXRvcnMuanNvbiBsaW5lcyIiIgogCiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKToKLSAgICAg
ICAgc3VwZXIoQ29udHJpYnV0b3JzQ2hlY2tlciwgc2VsZikuX19pbml0X18oZmlsZV9wYXRoLCBo
YW5kbGVfc3R5bGVfZXJyb3IpCisgICAgICAgIHN1cGVyKENvbnRyaWJ1dG9yc0NoZWNrZXIsIHNl
bGYpLl9faW5pdF9fKGhhbmRsZV9zdHlsZV9lcnJvcikKICAgICAgICAgc2VsZi5fZmlsZV9wYXRo
ID0gZmlsZV9wYXRoCiAKICAgICBkZWYgY2hlY2soc2VsZiwgbGluZXMpOgpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qcy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzLnB5CShyZXZpc2lvbiAyNzEwNjYp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC01OCwxOCArNTgsMTUgQEAgY2xhc3MgU2luZ2xlUXVvdGVDaGVja2VyKG9iamVj
dCk6CiAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvciA9IGhhbmRsZV9zdHlsZV9lcnJv
cgogCiAgICAgZGVmIGNoZWNrKHNlbGYsIGxpbmVzKToKLSAgICAgICAgaW5fbXVsdGlsaW5lX2Nv
bW1lbnQgPSBGYWxzZQogICAgICAgICBsaW5lX251bWJlciA9IDAKICAgICAgICAgZm9yIGxpbmUg
aW4gbGluZXM6CiAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCiAgICAgICAgICAgICBs
aW5lX251bWJlciA9IGxpbmVfbnVtYmVyICsgMQogCiAgICAgICAgICAgICBpZiAobGluZS5lbmRz
d2l0aCgiKi8iKSk6Ci0gICAgICAgICAgICAgICAgaW5fbXVsdGlsaW5lX2NvbW1lbnQgPSBGYWxz
ZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGlmIChsaW5lLnN0YXJ0
c3dpdGgoIi8qIikgb3IgbGluZS5zdGFydHN3aXRoKCIqIikpOgotICAgICAgICAgICAgICAgIGlu
X211bHRpbGluZV9jb21tZW50ID0gVHJ1ZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAg
ICAgICAgICAgICMgUmVtb3ZlICJkb3VibGUgcXVvdGVkIiBzdHJpbmdzLgpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc29uY2hlY2tlci5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzb25jaGVja2VyLnB5
CShyZXZpc2lvbiAyNzEwNjYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL2pzb25jaGVja2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNz
IEpTT05DaGVja2VyKG9iamVjdCk6CiAKICAgICBjYXRlZ29yaWVzID0gc2V0KCgnanNvbi9zeW50
YXgnLCkpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVf
ZXJyb3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYW5kbGVfc3R5bGVfZXJyb3IpOgogICAg
ICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IgPSBoYW5kbGVfc3R5bGVfZXJyb3IKICAgICAg
ICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yLnR1cm5fb2ZmX2xpbmVfZmlsdGVyaW5nKCkKIApJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc29uY2hlY2tlcl91
bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL2pzb25jaGVja2VyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzEwNjYpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzb25jaGVja2VyX3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIEpTT05DaGVja2VyVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSkKICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBlcnJv
cjogJWQgJXMgJWQgJXMnICUgKGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVz
c2FnZSkpCiAKICAgICAgICAgZXJyb3JfaGFuZGxlciA9IE1vY2tFcnJvckhhbmRsZXIoaGFuZGxl
X3N0eWxlX2Vycm9yKQotICAgICAgICBjaGVja2VyID0ganNvbmNoZWNrZXIuSlNPTkNoZWNrZXIo
J2Zvby5qc29uJywgZXJyb3JfaGFuZGxlcikKKyAgICAgICAgY2hlY2tlciA9IGpzb25jaGVja2Vy
LkpTT05DaGVja2VyKGVycm9yX2hhbmRsZXIpCiAgICAgICAgIGNoZWNrZXIuY2hlY2soanNvbl9k
YXRhLnNwbGl0KCdcbicpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZXJyb3JfaGFuZGxlci50
dXJuZWRfb2ZmX2ZpbHRlcmluZykKIApAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBKU09OQ2hlY2tl
clRlc3QodW5pdHRlc3QuVGVzdENhc2UpCiAgICAgICAgIGVycm9yX2hhbmRsZXIgPSBNb2NrRXJy
b3JIYW5kbGVyKGhhbmRsZV9zdHlsZV9lcnJvcikKICAgICAgICAgZXJyb3JfaGFuZGxlci5oYWRf
ZXJyb3IgPSBGYWxzZQogCi0gICAgICAgIGNoZWNrZXIgPSBqc29uY2hlY2tlci5KU09OQ2hlY2tl
cignZm9vLmpzb24nLCBlcnJvcl9oYW5kbGVyKQorICAgICAgICBjaGVja2VyID0ganNvbmNoZWNr
ZXIuSlNPTkNoZWNrZXIoZXJyb3JfaGFuZGxlcikKICAgICAgICAgY2hlY2tlci5jaGVjayhqc29u
X2RhdGEuc3BsaXQoJ1xuJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlcnJvcl9oYW5kbGVy
LmhhZF9lcnJvcikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVycm9yX2hhbmRsZXIudHVybmVk
X29mZl9maWx0ZXJpbmcpCkBAIC05MCw3ICs5MCw3IEBAIGNsYXNzIEpTT05DaGVja2VyVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSkKIAogICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CiAgICAgICAgIGVy
cm9yX2hhbmRsZXIgPSBNb2NrRXJyb3JIYW5kbGVyKHNlbGYubW9ja19oYW5kbGVfc3R5bGVfZXJy
b3IpCi0gICAgICAgIGNoZWNrZXIgPSBqc29uY2hlY2tlci5KU09OQ2hlY2tlcignZm9vLmpzb24n
LCBlcnJvcl9oYW5kbGVyKQorICAgICAgICBjaGVja2VyID0ganNvbmNoZWNrZXIuSlNPTkNoZWNr
ZXIoZXJyb3JfaGFuZGxlcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGVja2VyLl9oYW5k
bGVfc3R5bGVfZXJyb3IsIGVycm9yX2hhbmRsZXIpCiAKICAgICBkZWYgdGVzdF9ub19lcnJvcihz
ZWxmKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvd2F0Y2hs
aXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvd2F0Y2hsaXN0LnB5CShyZXZpc2lvbiAyNzEwNjYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL3dhdGNobGlzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNyBAQCBjbGFzcyBXYXRjaExpc3RDaGVja2VyKG9iamVjdCk6CiAKICAgICAiIiJQcm9jZXNz
ZXMgdGhlIHdhdGNoIGxpc3QgZm9yIGNoZWNraW5nIHN0eWxlLiIiIgogCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgaGFuZGxlX3N0eWxlX2Vycm9yKToKICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxl
X2Vycm9yID0gaGFuZGxlX3N0eWxlX2Vycm9yCiAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9l
cnJvci50dXJuX29mZl9saW5lX2ZpbHRlcmluZygpCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvd2F0Y2hsaXN0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvd2F0Y2hsaXN0X3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAyNzEwNjYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL3dhdGNobGlzdF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgs
NyBAQCBjbGFzcyBXYXRjaExpc3RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICAgICBl
cnJvcl9oYW5kbGVyID0gTW9ja0Vycm9ySGFuZGxlcihoYW5kbGVfc3R5bGVfZXJyb3IpCiAgICAg
ICAgIGVycm9yX2hhbmRsZXIuaGFkX2Vycm9yID0gRmFsc2UKLSAgICAgICAgY2hlY2tlciA9IHdh
dGNobGlzdC5XYXRjaExpc3RDaGVja2VyKCd3YXRjaGxpc3QnLCBlcnJvcl9oYW5kbGVyKQorICAg
ICAgICBjaGVja2VyID0gd2F0Y2hsaXN0LldhdGNoTGlzdENoZWNrZXIoZXJyb3JfaGFuZGxlcikK
ICAgICAgICAgY2hlY2tlci5jaGVjayhbJ3siREVGSU5USU9OUyI6IHt9fSddKQogICAgICAgICBz
ZWxmLmFzc2VydFRydWUoZXJyb3JfaGFuZGxlci5oYWRfZXJyb3IpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShlcnJvcl9oYW5kbGVyLnR1cm5lZF9vZmZfZmlsdGVyaW5nKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy94bWwucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy94bWwucHkJKHJldmlzaW9uIDI3MTA2
NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMveG1sLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIGZyb20geG1sLnBhcnNlcnMgaW1wb3J0IGV4cGF0
CiBjbGFzcyBYTUxDaGVja2VyKG9iamVjdCk6CiAgICAgIiIiUHJvY2Vzc2VzIFhNTCBsaW5lcyBm
b3IgY2hlY2tpbmcgc3R5bGUuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV9wYXRo
LCBoYW5kbGVfc3R5bGVfZXJyb3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYW5kbGVfc3R5
bGVfZXJyb3IpOgogICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IgPSBoYW5kbGVfc3R5
bGVfZXJyb3IKICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yLnR1cm5fb2ZmX2xpbmVf
ZmlsdGVyaW5nKCkKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy94bWxfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy94bWxfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3MTA2NikKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMveG1sX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFhNTENoZWNrZXJUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBlcnJvcjogJWQgJXMg
JWQgJXMnICUgKGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSkpCiAK
ICAgICAgICAgZXJyb3JfaGFuZGxlciA9IE1vY2tFcnJvckhhbmRsZXIoaGFuZGxlX3N0eWxlX2Vy
cm9yKQotICAgICAgICBjaGVja2VyID0geG1sLlhNTENoZWNrZXIoJ2Zvby54bWwnLCBlcnJvcl9o
YW5kbGVyKQorICAgICAgICBjaGVja2VyID0geG1sLlhNTENoZWNrZXIoZXJyb3JfaGFuZGxlcikK
ICAgICAgICAgY2hlY2tlci5jaGVjayh4bWxfZGF0YS5zcGxpdCgnXG4nKSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGVycm9yX2hhbmRsZXIudHVybmVkX29mZl9maWx0ZXJpbmcpCiAKQEAgLTYw
LDcgKzYwLDcgQEAgY2xhc3MgWE1MQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICBlcnJvcl9oYW5kbGVyID0gTW9ja0Vycm9ySGFuZGxlcihoYW5kbGVfc3R5bGVfZXJyb3Ip
CiAgICAgICAgIGVycm9yX2hhbmRsZXIuaGFkX2Vycm9yID0gRmFsc2UKIAotICAgICAgICBjaGVj
a2VyID0geG1sLlhNTENoZWNrZXIoJ2Zvby54bWwnLCBlcnJvcl9oYW5kbGVyKQorICAgICAgICBj
aGVja2VyID0geG1sLlhNTENoZWNrZXIoZXJyb3JfaGFuZGxlcikKICAgICAgICAgY2hlY2tlci5j
aGVjayh4bWxfZGF0YS5zcGxpdCgnXG4nKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVycm9y
X2hhbmRsZXIuaGFkX2Vycm9yKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZXJyb3JfaGFuZGxl
ci50dXJuZWRfb2ZmX2ZpbHRlcmluZykKQEAgLTc2LDcgKzc2LDcgQEAgY2xhc3MgWE1MQ2hlY2tl
clRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKICAg
ICAgICAgZXJyb3JfaGFuZGxlciA9IE1vY2tFcnJvckhhbmRsZXIoc2VsZi5tb2NrX2hhbmRsZV9z
dHlsZV9lcnJvcikKLSAgICAgICAgY2hlY2tlciA9IHhtbC5YTUxDaGVja2VyKCdmb28ueG1sJywg
ZXJyb3JfaGFuZGxlcikKKyAgICAgICAgY2hlY2tlciA9IHhtbC5YTUxDaGVja2VyKGVycm9yX2hh
bmRsZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tlci5faGFuZGxlX3N0eWxlX2Vy
cm9yLCBlcnJvcl9oYW5kbGVyKQogCiAgICAgZGVmIHRlc3RfbWlzc2luZ19jbG9zaW5nX3RhZyhz
ZWxmKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tdWx0aWNvbW1hbmR0b29s
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tdWx0aWNvbW1h
bmR0b29sLnB5CShyZXZpc2lvbiAyNzEwNjYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvbXVsdGljb21tYW5kdG9vbC5weQkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw3IEBA
IGNsYXNzIE11bHRpQ29tbWFuZFRvb2wob2JqZWN0KToKICAgICAgICAgICAgIHRyeToKICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBjb21tYW5kLmNoZWNrX2FyZ3VtZW50c19hbmRfZXhlY3V0ZShv
cHRpb25zLCBhcmdzLCBzZWxmKQogICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBl
eGNlcHQgVHJ5QWdhaW4gYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBUcnlBZ2FpbjoKICAgICAg
ICAgICAgICAgICBwYXNzCiAKICAgICAgICAgc2VsZi5jb21tYW5kX2NvbXBsZXRlZCgpCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2xheW91dHRlc3RyZXN1bHRzcmVhZGVy
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvbGF5b3V0
dGVzdHJlc3VsdHNyZWFkZXIucHkJKHJldmlzaW9uIDI3MTA2NikKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9ib3QvbGF5b3V0dGVzdHJlc3VsdHNyZWFkZXIucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXIoQWJzdHJh
Y3RUZQogICAgIGRlZiBfcmVhZF9maWxlX2NvbnRlbnRzKHNlbGYsIHBhdGgpOgogICAgICAgICB0
cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5faG9zdC5maWxlc3lzdGVtLnJlYWRfdGV4dF9m
aWxlKHBhdGgpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6ICAjIEZpbGUgZG9lcyBub3Qg
ZXhpc3Qgb3IgY2FuJ3QgYmUgcmVhZC4KKyAgICAgICAgZXhjZXB0IElPRXJyb3I6ICAjIEZpbGUg
ZG9lcyBub3QgZXhpc3Qgb3IgY2FuJ3QgYmUgcmVhZC4KICAgICAgICAgICAgIHJldHVybiBOb25l
CiAKICAgICAjIEZJWE1FOiBUaGlzIGxvZ2ljIHNob3VsZCBtb3ZlIHRvIHRoZSBwb3J0IG9iamVj
dC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rh
c2sucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRj
aGFuYWx5c2lzdGFzay5weQkocmV2aXNpb24gMjcxMDY2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weQkod29ya2luZyBjb3B5KQpAQCAtMjQy
LDcgKzI0Miw2IEBAIGNsYXNzIFBhdGNoQW5hbHlzaXNUYXNrKG9iamVjdCk6CiAgICAgICAgIGlm
IHNlbGYuX3Rlc3QoKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHNlY29uZF9y
ZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUudGVzdF9yZXN1bHRzKCkKLSAgICAgICAgc2Vjb25kX3Nj
cmlwdF9lcnJvciA9IHNlbGYuX3NjcmlwdF9lcnJvcgogICAgICAgICBpZiBzZWNvbmRfcmVzdWx0
cyBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9ib3QvcXVldWVlbmdpbmUucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9xdWV1ZWVuZ2luZS5weQkocmV2aXNpb24gMjcxMDY2
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9xdWV1ZWVuZ2luZS5weQkod29y
a2luZyBjb3B5KQpAQCAtMTEyLDEzICsxMTIsMTMgQEAgY2xhc3MgUXVldWVFbmdpbmU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgZmFpbHVyZSB3aGVuIHByb2Nlc3NpbmcgcGF0Y2ghICBQbGVhc2UgZmls
ZSBhIGJ1ZyBhZ2FpbnN0IHdlYmtpdC1wYXRjaC5cbiVzIiAlIGUubWVzc2FnZV93aXRoX291dHB1
dChvdXRwdXRfbGltaXQ9NTAwMCkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVsZWdhdGUu
aGFuZGxlX3VuZXhwZWN0ZWRfZXJyb3Iod29ya19pdGVtLCBtZXNzYWdlKQotICAgICAgICAgICAg
ZXhjZXB0IFRlcm1pbmF0ZVF1ZXVlIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgVGVybWluYXRl
UXVldWU6CiAgICAgICAgICAgICAgICAgc2VsZi5fc3RvcHBpbmcoIlRlcm1pbmF0ZVF1ZXVlIGV4
Y2VwdGlvbiByZWNlaXZlZC4iKQogICAgICAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgICAg
ICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBLZXli
b2FyZEludGVycnVwdDoKICAgICAgICAgICAgICAgICBzZWxmLl9zdG9wcGluZygiVXNlciB0ZXJt
aW5hdGVkIHF1ZXVlLiIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAg
ICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCiAgICAgICAgICAgICAgICAgIyBEb24n
dCB0cnkgdGVsbCB0aGUgc3RhdHVzIGJvdCwgaW4gY2FzZSB0ZWxsaW5nIGl0IGNhdXNlcyBhbiBl
eGNlcHRpb24uCiAgICAgICAgICAgICAgICAgc2VsZi5fc2xlZXAoIkV4Y2VwdGlvbiB3aGlsZSBw
cmVwYXJpbmcgcXVldWUiKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL2Rvd25sb2FkLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9kb3dubG9hZC5weQkocmV2aXNpb24gMjcxMDY2KQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0x
OTIsNyArMTkyLDYgQEAgY2xhc3MgQWJzdHJhY3RQYXRjaFNlcXVlbmNpbmdDb21tYW5kKEFicwog
ICAgIG1haW5fc3RlcHMgPSBOb25lCiAKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAg
IG9wdGlvbnMgPSBbXQogICAgICAgICBzZWxmLl9wcmVwYXJlX3NlcXVlbmNlID0gU3RlcFNlcXVl
bmNlKHNlbGYucHJlcGFyZV9zdGVwcykKICAgICAgICAgc2VsZi5fbWFpbl9zZXF1ZW5jZSA9IFN0
ZXBTZXF1ZW5jZShzZWxmLm1haW5fc3RlcHMpCiAgICAgICAgIG9wdGlvbnMgPSBzb3J0ZWQoc2V0
KHNlbGYuX3ByZXBhcmVfc2VxdWVuY2Uub3B0aW9ucygpICsgc2VsZi5fbWFpbl9zZXF1ZW5jZS5v
cHRpb25zKCkpLCBrZXk9bGFtYmRhIG9wdGlvbjogb3B0aW9uLmRlc3QpCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5p
bmdzeXN0ZW0ucHkJKHJldmlzaW9uIDI3MTA2NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHkJKHdvcmtpbmcgY29weSkKQEAgLTk1
LDExICs5NSwxMSBAQCBjbGFzcyBBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbShBYnN0cmFjCiAg
ICAgICAgIHRyeToKICAgICAgICAgICAgIHN1Y2NlZWRlZCA9IHRhc2sucnVuKCkKICAgICAgICAg
ICAgIHJldHVybiBzdWNjZWVkZWQKLSAgICAgICAgZXhjZXB0IFBhdGNoSXNOb3RWYWxpZCBhcyBl
cnJvcjoKKyAgICAgICAgZXhjZXB0IFBhdGNoSXNOb3RWYWxpZDoKICAgICAgICAgICAgIHJldHVy
biBGYWxzZQotICAgICAgICBleGNlcHQgVW5hYmxlVG9BcHBseVBhdGNoIGFzIGU6CisgICAgICAg
IGV4Y2VwdCBVbmFibGVUb0FwcGx5UGF0Y2g6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg
ICAgICAgZXhjZXB0IFBhdGNoSXNOb3RBcHBsaWNhYmxlIGFzIGU6CisgICAgICAgIGV4Y2VwdCBQ
YXRjaElzTm90QXBwbGljYWJsZToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBl
eGNlcHQgU2NyaXB0RXJyb3IgYXMgZToKICAgICAgICAgICAgIHNlbGYuX3Bvc3RfcmVqZWN0X21l
c3NhZ2Vfb25fYnVnKHNlbGYuX3Rvb2wsIHBhdGNoLCB0YXNrLmZhaWx1cmVfc3RhdHVzX2lkLCBz
ZWxmLl9mYWlsaW5nX3Rlc3RzX21lc3NhZ2UodGFzaywgcGF0Y2gpKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5CShyZXZpc2lvbiAyNzEw
NjYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIEFic3RyYWN0UXVldWUoQ29tbWFu
ZCwgUXVldWVFbmdpbmUKICAgICBkZWYgX2NjX3dhdGNoZXJzKHNlbGYsIGJ1Z19pZCk6CiAgICAg
ICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX3Rvb2wuYnVncy5hZGRfY2NfdG9fYnVnKGJ1Z19p
ZCwgc2VsZi53YXRjaGVycykKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCiAg
ICAgICAgICAgICBfbG9nLmVycm9yKCJGYWlsZWQgdG8gQ0Mgd2F0Y2hlcnMuIikKIApJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3Vn
Z2VzdG5vbWluYXRpb25zLnB5CShyZXZpc2lvbiAyNzEwNjYpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yMTMsNyArMjEzLDcgQEAgY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKEFic3RyYWN0Q29t
bWl0TAogICAgICAgICBmb3IgY29tbWl0X21lc3NhZ2UgaW4gc2VsZi5fcmVjZW50X2NvbW1pdF9t
ZXNzYWdlcygpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuX2NvdW50
X2NvbW1pdChzZWxmLl9wYXJzZV9jb21taXRfbWVzc2FnZShjb21taXRfbWVzc2FnZSksIGFuYWx5
c2lzKQotICAgICAgICAgICAgZXhjZXB0IENvbW1pdExvZ0Vycm9yIGFzIGV4Y2VwdGlvbjoKKyAg
ICAgICAgICAgIGV4Y2VwdCBDb21taXRMb2dFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51
ZQogICAgICAgICByZXR1cm4gYW5hbHlzaXNbJ2NvdW50ZXJzX2J5X2VtYWlsJ10KIApAQCAtMjYz
LDcgKzI2Myw2IEBAIGNsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhBYnN0cmFjdENvbW1pdEwKICAg
ICAgICAgZm9yIGF1dGhvcl9lbWFpbCwgY291bnRlciBpbiBjb3VudGVyczoKICAgICAgICAgICAg
IGlmIGF1dGhvcl9lbWFpbCAhPSBjb3VudGVyWydsYXRlc3RfZW1haWwnXToKICAgICAgICAgICAg
ICAgICBjb250aW51ZQotICAgICAgICAgICAgY29udHJpYnV0b3IgPSBzZWxmLl9jb21taXR0ZXJf
bGlzdC5jb250cmlidXRvcl9ieV9lbWFpbChhdXRob3JfZW1haWwpCiAgICAgICAgICAgICBhdXRo
b3JfbmFtZSA9IGNvdW50ZXJbJ2xhdGVzdF9uYW1lJ10KICAgICAgICAgICAgIHBhdGNoX2NvdW50
ID0gY291bnRlclsnY291bnQnXQogICAgICAgICAgICAgY291bnRlclsnbmFtZXMnXSA9IGNvdW50
ZXJbJ25hbWVzJ10gLSBzZXQoW2F1dGhvcl9uYW1lXSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQkocmV2aXNpb24gMjcxMDY2KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQkod29ya2luZyBj
b3B5KQpAQCAtODEsNyArODEsNiBAQCBjbGFzcyBDbGVhblBlbmRpbmdDb21taXQoQ29tbWFuZCk6
CiAgICAgICAgIHJldHVybiBqb2luX3dpdGhfc2VwYXJhdG9ycyh3aGF0X3dhc19jbGVhcmVkKQog
CiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIGNv
bW1pdHRlcnMgPSBDb21taXR0ZXJMaXN0KCkKICAgICAgICAgZm9yIGJ1Z19pZCBpbiB0b29sLmJ1
Z3MucXVlcmllcy5mZXRjaF9idWdfaWRzX2Zyb21fcGVuZGluZ19jb21taXRfbGlzdCgpOgogICAg
ICAgICAgICAgYnVnID0gc2VsZi5fdG9vbC5idWdzLmZldGNoX2J1ZyhidWdfaWQpCiAgICAgICAg
ICAgICBwYXRjaGVzID0gYnVnLnBhdGNoZXMoaW5jbHVkZV9vYnNvbGV0ZT1UcnVlKQpAQCAtNDc3
LDggKzQ3Niw2IEBAIGNsYXNzIENyZWF0ZUJ1ZyhDb21tYW5kKToKIAogICAgICAgICBjb21taXRf
aWQgPSBjb21taXRfaWRzWzBdCiAKLSAgICAgICAgYnVnX3RpdGxlID0gIiIKLSAgICAgICAgY29t
bWVudF90ZXh0ID0gIiIKICAgICAgICAgaWYgb3B0aW9ucy5wcm9tcHQ6CiAgICAgICAgICAgICAo
YnVnX3RpdGxlLCBjb21tZW50X3RleHQpID0gc2VsZi5wcm9tcHRfZm9yX2J1Z190aXRsZV9hbmRf
Y29tbWVudCgpCiAgICAgICAgIGVsc2U6CkBAIC00OTgsOCArNDk1LDYgQEAgY2xhc3MgQ3JlYXRl
QnVnKENvbW1hbmQpOgogICAgICAgICAgICAgUG9zdENvbW1pdHMuZXhlY3V0ZShzZWxmLCBvcHRp
b25zLCBjb21taXRfaWRzWzE6XSwgdG9vbCkKIAogICAgIGRlZiBjcmVhdGVfYnVnX2Zyb21fcGF0
Y2goc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIGJ1Z190aXRsZSA9ICIiCi0g
ICAgICAgIGNvbW1lbnRfdGV4dCA9ICIiCiAgICAgICAgIGlmIG9wdGlvbnMucHJvbXB0OgogICAg
ICAgICAgICAgKGJ1Z190aXRsZSwgY29tbWVudF90ZXh0KSA9IHNlbGYucHJvbXB0X2Zvcl9idWdf
dGl0bGVfYW5kX2NvbW1lbnQoKQogICAgICAgICBlbHNlOgpAQCAtNTA4LDcgKzUwMyw3IEBAIGNs
YXNzIENyZWF0ZUJ1ZyhDb21tYW5kKToKICAgICAgICAgICAgIGNvbW1lbnRfdGV4dCA9IGNvbW1p
dF9tZXNzYWdlLmJvZHkobHN0cmlwPVRydWUpCiAKICAgICAgICAgZGlmZiA9IHRvb2wuc2NtKCku
Y3JlYXRlX3BhdGNoKG9wdGlvbnMuZ2l0X2NvbW1pdCkKLSAgICAgICAgYnVnX2lkID0gdG9vbC5i
dWdzLmNyZWF0ZV9idWcoYnVnX3RpdGxlLCBjb21tZW50X3RleHQsIG9wdGlvbnMuY29tcG9uZW50
LCBkaWZmLCAiUGF0Y2giLCBjYz1vcHRpb25zLmNjLCBtYXJrX2Zvcl9yZXZpZXc9b3B0aW9ucy5y
ZXZpZXcsIG1hcmtfZm9yX2NvbW1pdF9xdWV1ZT1vcHRpb25zLnJlcXVlc3RfY29tbWl0KQorICAg
ICAgICB0b29sLmJ1Z3MuY3JlYXRlX2J1ZyhidWdfdGl0bGUsIGNvbW1lbnRfdGV4dCwgb3B0aW9u
cy5jb21wb25lbnQsIGRpZmYsICJQYXRjaCIsIGNjPW9wdGlvbnMuY2MsIG1hcmtfZm9yX3Jldmll
dz1vcHRpb25zLnJldmlldywgbWFya19mb3JfY29tbWl0X3F1ZXVlPW9wdGlvbnMucmVxdWVzdF9j
b21taXQpCiAKICAgICBkZWYgcHJvbXB0X2Zvcl9idWdfdGl0bGVfYW5kX2NvbW1lbnQoc2VsZik6
CiAgICAgICAgIGJ1Z190aXRsZSA9IFVzZXIucHJvbXB0KCJCdWcgdGl0bGU6ICIpCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxp
bmVzZXJ2ZXIucHkJKHJldmlzaW9uIDI3MTA2NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcg
KzcxLDYgQEAgZGVmIF9yZWJhc2VsaW5lX3Rlc3QodGVzdF9maWxlLCBiYXNlbGluZQogICAgIGZp
bGVzeXN0ZW0gPSB0ZXN0X2NvbmZpZy5maWxlc3lzdGVtCiAgICAgc2NtID0gdGVzdF9jb25maWcu
c2NtCiAgICAgbGF5b3V0X3Rlc3RzX2RpcmVjdG9yeSA9IHRlc3RfY29uZmlnLmxheW91dF90ZXN0
c19kaXJlY3RvcnkKLSAgICByZXN1bHRzX2RpcmVjdG9yeSA9IHRlc3RfY29uZmlnLnJlc3VsdHNf
ZGlyZWN0b3J5CiAgICAgdGFyZ2V0X2V4cGVjdGF0aW9uc19kaXJlY3RvcnkgPSBmaWxlc3lzdGVt
LmpvaW4oCiAgICAgICAgIGxheW91dF90ZXN0c19kaXJlY3RvcnksICdwbGF0Zm9ybScsIGJhc2Vs
aW5lX3RhcmdldCwgdGVzdF9kaXJlY3RvcnkpCiAgICAgdGVzdF9yZXN1bHRzX2RpcmVjdG9yeSA9
IHRlc3RfY29uZmlnLmZpbGVzeXN0ZW0uam9pbigKQEAgLTE3OSw4ICsxNzgsNiBAQCBkZWYgZ2V0
X3Rlc3RfYmFzZWxpbmVzKHRlc3RfZmlsZSwgdGVzdF9jCiAgICAgICAgIGRlZiBwbGF0Zm9ybV9m
cm9tX2RpcmVjdG9yeShzZWxmLCBkaXJlY3RvcnkpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X3BsYXRmb3Jtc19ieV9kaXJlY3RvcnlbZGlyZWN0b3J5XQogCi0gICAgdGVzdF9wYXRoID0gdGVz
dF9jb25maWcuZmlsZXN5c3RlbS5qb2luKHRlc3RfY29uZmlnLmxheW91dF90ZXN0c19kaXJlY3Rv
cnksIHRlc3RfZmlsZSkKLQogICAgIGhvc3QgPSB0ZXN0X2NvbmZpZy5ob3N0CiAgICAgaG9zdC5p
bml0aWFsaXplX3NjbSgpCiAgICAgYWxsX3BsYXRmb3Jtc19wb3J0ID0gQWxsUGxhdGZvcm1zUG9y
dChob3N0KQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NvbW1pdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0
LnB5CShyZXZpc2lvbiAyNzEwNjYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvY29tbWl0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIENvbW1p
dChBYnN0cmFjdFN0ZXApOgogICAgICAgICBhcmdzLmV4dGVuZCh0ZXN0X2V4cGVjdGF0aW9uc19m
aWxlcykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVu
X2FuZF90aHJvd19pZl9mYWlsKHNlbGYuX3Rvb2wuZGVwcmVjYXRlZF9wb3J0KCkuY2hlY2tfd2Vi
a2l0X3N0eWxlX2NvbW1hbmQoKSArIGFyZ3MsIGN3ZD1zZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0
X3Jvb3QpCi0gICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciBhcyBlOgorICAgICAgICBleGNlcHQg
U2NyaXB0RXJyb3I6CiAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm5vbl9pbnRlcmFjdGl2
ZToKICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgaWYgbm90IHNlbGYuX3Rvb2wu
dXNlci5jb25maXJtKCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY29udGludWU/IiwgZGVmYXVs
dD0ibiIpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NvbmZpcm1k
aWZmLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9j
b25maXJtZGlmZi5weQkocmV2aXNpb24gMjcxMDY2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL2NvbmZpcm1kaWZmLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02Miw5ICs2Miw5
IEBAIGNsYXNzIENvbmZpcm1EaWZmKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICAjIFdlIHJl
dHVybiB0aGUgcHJldHR5X2RpZmZfZmlsZSBoZXJlIGJlY2F1c2Ugd2UgbmVlZCB0byBrZWVwIHRo
ZQogICAgICAgICAgICAgIyBmaWxlIGFsaXZlIHVudGlsIHRoZSB1c2VyIGhhcyBoYWQgYSBjaGFu
Y2UgdG8gY29uZmlybSB0aGUgZGlmZi4KICAgICAgICAgICAgIHJldHVybiBwcmV0dHlfZGlmZl9m
aWxlCi0gICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgU2Ny
aXB0RXJyb3I6CiAgICAgICAgICAgICBfbG9nLndhcm5pbmcoIlByZXR0eVBhdGNoIGZhaWxlZC4g
IDooIikKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IE9TRXJy
b3I6CiAgICAgICAgICAgICBfbG9nLndhcm5pbmcoIlByZXR0eVBhdGNoIHVuYXZhaWxhYmxlLiIp
CiAKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZC5weQkocmV2aXNpb24gMjcxMDY2KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZC5weQkod29ya2luZyBjb3B5
KQpAQCAtODEsNyArODEsNyBAQCBjbGFzcyBIYXNMYW5kZWQoY29uZmlybWRpZmYuQ29uZmlybURp
ZmYpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBleGVjdXRpdmUucnVuX2NvbW1h
bmQoCiAgICAgICAgICAgICAgICAgWyJpbnRlcmRpZmYiLCBkaWZmMV9wYXRjaC5uYW1lLCBkaWZm
Ml9wYXRjaC5uYW1lXSwgZGVjb2RlX291dHB1dD1GYWxzZSkKLSAgICAgICAgZXhjZXB0IFNjcmlw
dEVycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvcjoKICAgICAgICAgICAgIF9s
b2cud2FybmluZygiVW5hYmxlIHRvIGZpbmQgaW50ZXJkaWZmIHV0aWwgKHBhcnQgb2YgR05VIGRp
ZmZ0b29scyBwYWNrYWdlKSB3aGljaCBpcyByZXF1aXJlZC4iKQogICAgICAgICAgICAgcmFpc2UK
IApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vs
b2cucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3By
ZXBhcmVjaGFuZ2Vsb2cucHkJKHJldmlzaW9uIDI3MTA2NikKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0x
MjUsNyArMTI1LDcgQEAgY2xhc3MgUHJlcGFyZUNoYW5nZUxvZyhBYnN0cmFjdFN0ZXApOgogCiAg
ICAgICAgIHRyeToKICAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1
bl9hbmRfdGhyb3dfaWZfZmFpbChhcmdzLCBzZWxmLl9vcHRpb25zLnF1aWV0LCBjd2Q9c2VsZi5f
dG9vbC5zY20oKS5jaGVja291dF9yb290KQotICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IgYXMg
ZToKKyAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yOgogICAgICAgICAgICAgX2xvZy5lcnJvcigi
VW5hYmxlIHRvIHByZXBhcmUgQ2hhbmdlTG9ncy4iKQogICAgICAgICAgICAgc3lzLmV4aXQoMSkK
IApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3Byb21wdGZvcmJ1Z29y
dGl0bGUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L3Byb21wdGZvcmJ1Z29ydGl0bGUucHkJKHJldmlzaW9uIDI3MTA2NikKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcm9tcHRmb3JidWdvcnRpdGxlLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFByb21wdEZvckJ1Z09yVGl0bGUoQWJzdHJhY3RT
dGVwKToKICAgICAgICAgIyBPdGhlcndpc2Ugd2UgYXNzdW1lIGl0J3MgYSBidWcgc3ViamVjdC4K
ICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3RhdGVbImJ1Z19pZCJdID0gaW50KHVzZXJfcmVz
cG9uc2UpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIFR5cGVFcnJvcjoKKyAgICAgICAg
ZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICBwYXJzZWRfdXJsID0gTm9uZQogICAgICAg
ICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHBhcnNlZF91cmwgPSB1cmxwYXJzZSh1c2VyX3Jl
c3BvbnNlKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3NvcnR4Y29k
ZXByb2plY3RmaWxlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvc29ydHhjb2RlcHJvamVjdGZpbGVzLnB5CShyZXZpc2lvbiAyNzEwNjYpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvc29ydHhjb2RlcHJvamVjdGZpbGVzLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw2IEBAIGNsYXNzIFNvcnRYY29kZVByb2plY3RG
aWxlcyhBYnN0cmFjdFN0ZXAKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAg
ICAgIG91dHB1dCA9IHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChh
cmdzLCBzZWxmLl9vcHRpb25zLnF1aWV0LCBjd2Q9c2VsZi5fdG9vbC5zY20oKS5jaGVja291dF9y
b290KQogICAgICAgICAgICAgICAgICAgICBzZWxmLmRpZF9tb2RpZnlfY2hlY2tvdXQoc3RhdGUp
Ci0gICAgICAgICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yIGFzIGU6CisgICAgICAgICAgICAg
ICAgZXhjZXB0IFNjcmlwdEVycm9yOgogICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCJV
bmFibGUgdG8gc29ydCBtb2RpZmllZCB4Y29kZSBwcm9qZWN0cy4iKQogICAgICAgICAgICAgICAg
ICAgICBzeXMuZXhpdCgxKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L3N1Z2dlc3RyZXZpZXdlcnNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL3N1Z2dlc3RyZXZpZXdlcnNfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI3MTA2NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9zdWdnZXN0
cmV2aWV3ZXJzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIGNs
YXNzIFN1Z2dlc3RSZXZpZXdlcnNUZXN0KHVuaXR0ZXN0LlRlc3QKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLCAnJykKIAogICAgIGRlZiB0ZXN0
X2Jhc2ljKHNlbGYpOgotICAgICAgICBjYXB0dXJlID0gT3V0cHV0Q2FwdHVyZSgpCisgICAgICAg
IE91dHB1dENhcHR1cmUoKQogICAgICAgICBzdGVwID0gU3VnZ2VzdFJldmlld2VycyhNb2NrVG9v
bCgpLCBNb2NrT3B0aW9ucyhzdWdnZXN0X3Jldmlld2Vycz1UcnVlLCBnaXRfY29tbWl0PU5vbmUp
KQogICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0
dXJlZDoKICAgICAgICAgICAgIHN0ZXAucnVuKGRpY3QoYnVnX2lkPScxMjMnKSkKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weQkocmV2aXNpb24gMjcx
MDY2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weQkod29y
a2luZyBjb3B5KQpAQCAtMjM5LDcgKzIzOSw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtVGVzdEV4cG9y
dGVyKG9iamVjdCk6CiAgICAgICAgIGhlYWRlcnMgPSB7J0FjY2VwdCc6ICdhcHBsaWNhdGlvbi92
bmQuZ2l0aHViLnYzK2pzb24nLCAnQXV0aG9yaXphdGlvbic6ICd0b2tlbiB7fScuZm9ybWF0KHRv
a2VuKX0KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLl9ob3N0Lndl
Yi5yZXF1ZXN0KG1ldGhvZD0nR0VUJywgdXJsPXVybCwgZGF0YT1Ob25lLCBoZWFkZXJzPWhlYWRl
cnMpCi0gICAgICAgIGV4Y2VwdCBIVFRQRXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IEhUVFBF
cnJvcjoKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiT0F1dGggdG9rZW4gaXMgbm90IHZh
bGlkIikKICAgICAgICAgZGF0YSA9IGpzb24ubG9hZChyZXNwb25zZSkKICAgICAgICAgbG9naW4g
PSBkYXRhLmdldCgnbG9naW4nLCBOb25lKQpAQCAtMjU0LDcgKzI1NCw2IEBAIGNsYXNzIFdlYlBs
YXRmb3JtVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fZ2l0LnNl
dF9sb2NhbF9jb25maWcoJ2dpdGh1Yi51c2VybmFtZScsIHVzZXJuYW1lKQogCiAgICAgZGVmIF9l
bnN1cmVfd3B0X3JlcG9zaXRvcnkoc2VsZiwgdXJsLCB3cHRfcmVwb3NpdG9yeV9kaXJlY3Rvcnks
IGdpdENsYXNzKToKLSAgICAgICAgZ2l0ID0gTm9uZQogICAgICAgICBpZiBub3Qgc2VsZi5fZmls
ZXN5c3RlbS5leGlzdHMod3B0X3JlcG9zaXRvcnlfZGlyZWN0b3J5KToKICAgICAgICAgICAgIF9s
b2cuaW5mbygnQ2xvbmluZyAlcyBpbnRvICVzLi4uJyAlICh1cmwsIHdwdF9yZXBvc2l0b3J5X2Rp
cmVjdG9yeSkpCiAgICAgICAgICAgICBnaXRDbGFzcy5jbG9uZSh1cmwsIHdwdF9yZXBvc2l0b3J5
X2RpcmVjdG9yeSwgc2VsZi5faG9zdC5leGVjdXRpdmUpCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5CShyZXZpc2lvbiAyNzEwNjYp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2UucHkJKHdv
cmtpbmcgY29weSkKQEAgLTYzNyw4ICs2MzcsNiBAQCBjbGFzcyBTaW11bGF0ZWREZXZpY2Uob2Jq
ZWN0KToKICAgICAgICAgZGVmIF9sb2dfZGVidWdfZXJyb3IoZXJyb3IpOgogICAgICAgICAgICAg
X2xvZy5kZWJ1ZyhlcnJvci5tZXNzYWdlX3dpdGhfb3V0cHV0KCkpCiAKLSAgICAgICAgb3V0cHV0
ID0gTm9uZQotCiAgICAgICAgIHdpdGggVGltZW91dCh0aW1lb3V0LCBoYW5kbGVyPVJ1bnRpbWVF
cnJvcih1J1RpbWVkIG91dCB3YWl0aW5nIGZvciBwcm9jZXNzIHRvIG9wZW4ge30gb24ge30nLmZv
cm1hdChidW5kbGVfaWQsIHNlbGYudWRpZCkpLCBwYXRjaD1GYWxzZSk6CiAgICAgICAgICAgICB3
aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuZXhlY3V0aXZlLnJ1bl9j
b21tYW5kKAo=
</data>
<flag name="review"
          id="434553"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="434616"
          type_id="3"
          status="-"
          setter="jbedard"
    />
          </attachment>
      

    </bug>

</bugzilla>