<?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>223101</bug_id>
          
          <creation_ts>2021-03-11 16:22:54 -0800</creation_ts>
          <short_desc>[resultsdbpy] Save identifiers in commit table</short_desc>
          <delta_ts>2021-03-16 17:53:46 -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=223224</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=221860</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>dewei_zhu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1738699</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-03-11 16:22:54 -0800</bug_when>
    <thetext>Commits should be saved with identifiers, hashes and revisions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738700</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-11 16:23:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/75338338&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738701</commentid>
    <comment_count>2</comment_count>
      <attachid>422989</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-03-11 16:25:17 -0800</bug_when>
    <thetext>Created attachment 422989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739039</commentid>
    <comment_count>3</comment_count>
      <attachid>423085</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-03-12 15:10:28 -0800</bug_when>
    <thetext>Created attachment 423085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739050</commentid>
    <comment_count>4</comment_count>
      <attachid>423085</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-03-12 15:48:36 -0800</bug_when>
    <thetext>Comment on attachment 423085
Patch

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

&gt; Tools/Scripts/libraries/resultsdbpy/resultsdbpy/model/commit_context.py:390
&gt; +                (&apos;identifier&apos;, lambda commit: str(commit)),

This can be just `str`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739730</commentid>
    <comment_count>5</comment_count>
      <attachid>423262</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-03-15 16:47:27 -0700</bug_when>
    <thetext>Created attachment 423262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739743</commentid>
    <comment_count>6</comment_count>
      <attachid>423262</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-03-15 17:11:33 -0700</bug_when>
    <thetext>Comment on attachment 423262
Patch

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

&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/commit.py:156
&gt; +        print(&apos;{} vs {}&apos;.format(hash_from_id, revision_from_id))

Do we expect this print here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739749</commentid>
    <comment_count>7</comment_count>
      <attachid>423262</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-03-15 17:14:57 -0700</bug_when>
    <thetext>Comment on attachment 423262
Patch

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

&gt;&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/commit.py:156
&gt;&gt; +        print(&apos;{} vs {}&apos;.format(hash_from_id, revision_from_id))
&gt; 
&gt; Do we expect this print here?

No, I also broke this change out into an independent one: https://bugs.webkit.org/show_bug.cgi?id=223224 (although tests will fail without it, so the independent one needs to land first)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739990</commentid>
    <comment_count>8</comment_count>
      <attachid>423346</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-03-16 09:58:18 -0700</bug_when>
    <thetext>Created attachment 423346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740023</commentid>
    <comment_count>9</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2021-03-16 10:43:20 -0700</bug_when>
    <thetext>r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740308</commentid>
    <comment_count>10</comment_count>
      <attachid>423414</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-03-16 16:54:20 -0700</bug_when>
    <thetext>Created attachment 423414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740327</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-16 17:53:45 -0700</bug_when>
    <thetext>Committed r274542: &lt;https://commits.webkit.org/r274542&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 423414.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422989</attachid>
            <date>2021-03-11 16:25:17 -0800</date>
            <delta_ts>2021-03-12 15:10:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223101-20210311162516.patch</filename>
            <type>text/plain</type>
            <size>29347</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3NDMwOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY3IEBACisyMDIxLTAzLTExICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIFNhdmUgaWRlbnRpZmllcnMgaW4gY29tbWl0IHRh
YmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMx
MDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1MzM4MzM4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUAorCisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJv
bGxlci5weToKKyAgICAgICAgKENvbW1pdENvbnRyb2xsZXIucmVnaXN0ZXIpOgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdXBs
b2FkX2NvbnRyb2xsZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChVcGxvYWRDb250cm9sbGVyUG9z
dFRlc3QudGVzdF91cGxvYWRfcGFydGlhbCk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQucHk6CisgICAgICAg
IChDb21taXRDb250ZXh0LkNvbW1pdE1vZGVsTWsyKToKKyAgICAgICAgKENvbW1pdENvbnRleHQu
Q29tbWl0TW9kZWxNazIudG9fY29tbWl0KToKKyAgICAgICAgKENvbW1pdENvbnRleHQpOgorICAg
ICAgICAoQ29tbWl0Q29udGV4dC5Db21taXRCeVJlZik6CisgICAgICAgIChDb21taXRDb250ZXh0
LkNvbW1pdEJ5VXVpZEFzY2VuZGluZ01rMik6CisgICAgICAgIChDb21taXRDb250ZXh0LkNvbW1p
dEJ5VXVpZERlc2NlbmRpbmdNazIpOgorICAgICAgICAoQ29tbWl0Q29udGV4dC5fX2luaXRfXyk6
CisgICAgICAgIChDb21taXRDb250ZXh0LmZpbmRfY29tbWl0c19ieV9yZWYpOgorICAgICAgICAo
Q29tbWl0Q29udGV4dC5yZWdpc3Rlcl9jb21taXQpOgorICAgICAgICAoQ29tbWl0Q29udGV4dC5y
ZWdpc3Rlcl9wYXJ0aWFsX2NvbW1pdCk6CisgICAgICAgIChDb21taXRDb250ZXh0LnVybCk6Cisg
ICAgICAgIChDb21taXRDb250ZXh0LnJlZ2lzdGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC9jb21taXRfY29udGV4dF91bml0dGVzdC5weToKKyAgICAgICAgKENvbW1pdENv
bnRleHRUZXN0LmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSk6CisgICAgICAgIChDb21taXRD
b250ZXh0VGVzdC50ZXN0X2NvbW1pdF9mcm9tX3N0YXNoX3JlcG8pOgorICAgICAgICAoQ29tbWl0
Q29udGV4dFRlc3QudGVzdF9jb21taXRfZnJvbV9zdm5fcmVwbyk6CisgICAgICAgICogU2NyaXB0
cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9ja19tb2RlbF9mYWN0
b3J5LnB5OgorICAgICAgICAoTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUpOgorICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnku
cHk6CisgICAgICAgIChSZXBvc2l0b3J5LmNvbW1pdCk6CisgICAgICAgIChTdGFzaFJlcG9zaXRv
cnkuY29tbWl0KToKKyAgICAgICAgKFdlYktpdFJlcG9zaXRvcnkuY29tbWl0KToKKyAgICAgICAg
KiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9yZXBvc2l0
b3J5X3VuaXR0ZXN0LnB5OgorICAgICAgICAoUmVwb3NpdG9yeVRlc3QudGVzdF9zdm4pOgorICAg
ICAgICAoUmVwb3NpdG9yeVRlc3QudGVzdF9yZWZfc3ZuKToKKyAgICAgICAgKFJlcG9zaXRvcnlU
ZXN0LnRlc3Rfc3Rhc2gpOgorICAgICAgICAoUmVwb3NpdG9yeVRlc3QpOgorICAgICAgICAoUmVw
b3NpdG9yeVRlc3QudGVzdF9yZWZfc3Rhc2gpOgorICAgICAgICAoUmVwb3NpdG9yeVRlc3QudGVz
dF9jb2xsaWRpbmdfdGltZXN0YW1wc19zdGFzaCk6CisgICAgICAgIChSZXBvc2l0b3J5VGVzdC50
ZXN0X2JyYW5jaF9zdGFzaCk6CisgICAgICAgIChSZXBvc2l0b3J5VGVzdC50ZXN0X2JyYW5jaF9z
dm4pOiBEZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L2NvbW1pdC5weToKKyAgICAgICAgKENvbW1pdCk6CisgICAgICAgIChDb21taXQu
ZnJvbV9qc29uKToKKworMjAyMS0wMy0xMCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgW2dpdC13ZWJraXRdIE1ha2UgaWRlbnRpZmllciBsYXN0IHN0cmlu
ZyBpbiAnZmluZCcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMzAzMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzUyNzIxMDA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS9zZXR1cC5weTogQnVtcCB2ZXJzaW9uLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5OiBEaXR0by4KKyAg
ICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFt
L2ZpbmQucHk6CisgICAgICAgIChJbmZvLm1haW4pOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZmluZF91bml0dGVzdC5weToKKwogMjAy
MS0wMy0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEludHJv
ZHVjZSBXb3JrUXVldWU6Om1haW4oKSB0byBnZXQgdGhlIG1haW4gdGhyZWFkJ3Mgd29yayBxdWV1
ZQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
Y29udHJvbGxlci9jb21taXRfY29udHJvbGxlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9j
b250cm9sbGVyLnB5CShyZXZpc2lvbiAyNzQyOTYpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI2LDcgKzI2LDcgQEAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QK
IGZyb20gZmxhc2sgaW1wb3J0IGFib3J0LCBqc29uaWZ5LCByZXF1ZXN0CiBmcm9tIHJlc3VsdHNk
YnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21taXQKIGZyb20gd2Via2l0Zmxhc2tweS51
dGlsIGltcG9ydCBBc3NlcnRSZXF1ZXN0LCBxdWVyeV9hc19rd2FyZ3MsIGxpbWl0X2Zvcl9xdWVy
eQotZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgU2NtQmFzZQorZnJvbSB3ZWJraXRzY21weSBpbXBv
cnQgU2NtQmFzZSwgQ29tbWl0IGFzIFNjbUNvbW1pdAogCiAKIGRlZiBfZmluZF9jb21wYXJpc29u
KGNvbW1pdF9jb250ZXh0LCByZXBvc2l0b3J5X2lkLCBicmFuY2gsIGlkLCB1dWlkLCB0aW1lc3Rh
bXAsIHByaW9yaXR5PW1pbik6CkBAIC0yNzMsMzUgKzI3Myw1OSBAQCBjbGFzcyBDb21taXRDb250
cm9sbGVyKEhhc0NvbW1pdENvbnRleHQpCiAgICAgICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNj
cmlwdGlvbj0nRXhwZWN0ZWQgdXBsb2FkZWQgZGF0YSB0byBiZSBqc29uJykKIAogICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0LnJlZ2lzdGVyX2NvbW1pdChDb21t
aXQuZnJvbV9qc29uKGNvbW1pdCkpCi0gICAgICAgICAgICBpZiBpc19lbmRwb2ludDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4ganNvbmlmeSh7J3N0YXR1cyc6ICdvayd9KQotICAgICAgICAgICAg
cmV0dXJuIENvbW1pdC5mcm9tX2pzb24oY29tbWl0KQorICAgICAgICAgICAgY2FuZGlkYXRlID0g
U2NtQ29tbWl0LmZyb21fanNvbihjb21taXQpCisKKyAgICAgICAgICAgICMgQ29tbWl0IG5lZWRz
IHRvIGJlIHN1ZmZpY2llbnRseSBkZWZpbmVkCisgICAgICAgICAgICBpZiBjYW5kaWRhdGUucmVw
b3NpdG9yeV9pZCBhbmQgY2FuZGlkYXRlLmJyYW5jaCBhbmQgY2FuZGlkYXRlLnRpbWVzdGFtcCBh
bmQgKGNhbmRpZGF0ZS5yZXZpc2lvbiBvciBjYW5kaWRhdGUuaGFzaCk6CisgICAgICAgICAgICAg
ICAgc2VsZi5jb21taXRfY29udGV4dC5yZWdpc3Rlcl9jb21taXQoY2FuZGlkYXRlKQorICAgICAg
ICAgICAgICAgIGlmIGlzX2VuZHBvaW50OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNv
bmlmeSh7J3N0YXR1cyc6ICdvayd9KQorICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGUK
ICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAg
cmVxdWlyZWRfYXJncyA9IFsncmVwb3NpdG9yeV9pZCcsICdpZCddCi0gICAgICAgIG9wdGlvbmFs
X2FyZ3MgPSBbJ2JyYW5jaCddCisgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBbJ3JlcG9zaXRvcnlf
aWQnXQogICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CiAgICAgICAgICAgICBpZiBh
cmcgbm90IGluIGNvbW1pdDoKICAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9u
PWYiJ3thcmd9JyByZXF1aXJlZCB0byBkZWZpbmUgY29tbWl0IikKIAorICAgICAgICBoYXNfcmVm
ID0gRmFsc2UKKyAgICAgICAgb25lX29mX2FyZ3MgPSBbJ2lkJywgJ3JlZicsICdoYXNoJywgJ3Jl
dmlzaW9uJywgJ2lkZW50aWZpZXInXQorICAgICAgICBmb3IgYXJnIGluIG9uZV9vZl9hcmdzOgor
ICAgICAgICAgICAgaWYgYXJnIGluIGNvbW1pdDoKKyAgICAgICAgICAgICAgICBpZiBoYXNfcmVm
OgorICAgICAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdNdWx0aXBsZSBj
b21taXQgcmVmZXJlbmNlcyBzcGVjaWZpZWQnKQorICAgICAgICAgICAgICAgIGhhc19yZWYgPSBU
cnVlCisgICAgICAgIGlmIG5vdCBoYXNfcmVmOgorICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNj
cmlwdGlvbj0nTm8gY29tbWl0IHJlZmVyZW5jZSBzcGVjaWZpZWQnKQorCisKICAgICAgICAgZm9y
IGFyZyBpbiBjb21taXQua2V5cygpOgotICAgICAgICAgICAgaWYgYXJnIGluIHJlcXVpcmVkX2Fy
Z3MgKyBvcHRpb25hbF9hcmdzOgorICAgICAgICAgICAgaWYgYXJnIGluIHJlcXVpcmVkX2FyZ3Mg
b3IgYXJnIGluIG9uZV9vZl9hcmdzOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAg
ICAgICBpZiBhcmcgaW4gWyd0aW1lc3RhbXAnLCAnb3JkZXInLCAnY29tbWl0dGVyJywgJ21lc3Nh
Z2UnXToKKyAgICAgICAgICAgIGlmIGFyZyBpbiBbJ2JyYW5jaCcsICd0aW1lc3RhbXAnLCAnb3Jk
ZXInLCAnY29tbWl0dGVyJywgJ21lc3NhZ2UnXToKICAgICAgICAgICAgICAgICBhYm9ydCg0MDAs
IGRlc2NyaXB0aW9uPSdOb3QgZW5vdWdoIGFyZ3VtZW50cyBwcm92aWRlZCB0byBkZWZpbmUgYSBj
b21taXQsIGJ1dCB0b28gbWFueSB0byBzZWFyY2ggZm9yIGEgY29tbWl0JykKICAgICAgICAgICAg
IGFib3J0KDQwMCwgZGVzY3JpcHRpb249ZiIne2FyZ30nIGlzIG5vdCB2YWxpZCBmb3IgZGVmaW5p
bmcgY29tbWl0cyIpCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29tbWl0ID0gc2VsZi5j
b21taXRfY29udGV4dC5yZWdpc3Rlcl9jb21taXRfd2l0aF9yZXBvX2FuZF9pZCgKKyAgICAgICAg
ICAgIGNvbW1pdCA9IHNlbGYuY29tbWl0X2NvbnRleHQucmVnaXN0ZXJfcGFydGlhbF9jb21taXQo
CiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1jb21taXQuZ2V0KCdyZXBvc2l0b3J5X2lk
JyksCi0gICAgICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5nZXQoJ2JyYW5jaCcpLAotICAgICAg
ICAgICAgICAgIGNvbW1pdF9pZD1jb21taXQuZ2V0KCdpZCcpLAorICAgICAgICAgICAgICAgIHJl
Zj1jb21taXQuZ2V0KCdpZCcpIG9yIGNvbW1pdC5nZXQoJ3JlZicpLAorICAgICAgICAgICAgICAg
IGhhc2g9Y29tbWl0LmdldCgnaGFzaCcpLAorICAgICAgICAgICAgICAgIHJldmlzaW9uPWNvbW1p
dC5nZXQoJ3JldmlzaW9uJyksCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1jb21taXQuZ2V0
KCdpZGVudGlmaWVyJyksCiAgICAgICAgICAgICApCiAgICAgICAgIGV4Y2VwdCAoUnVudGltZUVy
cm9yLCBTY21CYXNlLkV4Y2VwdGlvbikgYXMgZXJyb3I6CiAgICAgICAgICAgICBhYm9ydCg0MDQs
IGRlc2NyaXB0aW9uPXN0cihlcnJvcikpCiAKICAgICAgICAgaWYgaXNfZW5kcG9pbnQ6CiAgICAg
ICAgICAgICByZXR1cm4ganNvbmlmeSh7J3N0YXR1cyc6ICdvayd9KQotICAgICAgICByZXR1cm4g
Y29tbWl0CisgICAgICAgIHJldHVybiBDb21taXQoCisgICAgICAgICAgICByZXBvc2l0b3J5X2lk
PWNvbW1pdC5yZXBvc2l0b3J5X2lkLAorICAgICAgICAgICAgaWQ9Y29tbWl0LnJldmlzaW9uIG9y
IGNvbW1pdC5oYXNoLAorICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5icmFuY2gsCisgICAgICAg
ICAgICB0aW1lc3RhbXA9Y29tbWl0LnRpbWVzdGFtcCwKKyAgICAgICAgICAgIG9yZGVyPWNvbW1p
dC5vcmRlciwKKyAgICAgICAgICAgIGNvbW1pdHRlcj1jb21taXQuYXV0aG9yLmVtYWlsIGlmIGNv
bW1pdC5hdXRob3IgZWxzZSBOb25lLAorICAgICAgICAgICAgbWVzc2FnZT1jb21taXQubWVzc2Fn
ZSwKKyAgICAgICAgKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlcl91bml0dGVzdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL3VwbG9hZF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzQy
OTYpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9j
b250cm9sbGVyL3VwbG9hZF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC04NSw2ICs4NSw3IEBAIGNsYXNzIFVwbG9hZENvbnRyb2xsZXJQb3N0VGVzdChGbGFza1Rlc3QK
ICAgICAgICAgICAgIHRpbWVzdGFtcD1pbnQodGltZS50aW1lKCkpLAogICAgICAgICApCiAgICAg
ICAgIHJlc3BvbnNlID0gY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS91cGxvYWQnLCBkYXRh
PXN0cihqc29uLmR1bXBzKHVwbG9hZF9kaWN0KSkpCisgICAgICAgIHByaW50KHJlc3BvbnNlLmpz
b24oKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAw
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVsnc3RhdHVzJ10sICdv
aycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydwcm9jZXNzaW5n
J11bJ3B5dGhvbi10ZXN0cyddLCBkaWN0KHN0YXR1cz0nb2snKSkKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0LnB5CShyZXZpc2lvbiAyNzQyOTYpCisrKyBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb21t
aXRfY29udGV4dC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChD
KSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMCw3ICszMCw3IEBAIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRh
dGV0aW1lCiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21taXQK
IGZyb20gcmVzdWx0c2RicHkubW9kZWwucmVwb3NpdG9yeSBpbXBvcnQgUmVwb3NpdG9yeQogCi1m
cm9tIHdlYmtpdHNjbXB5IGltcG9ydCBTY21CYXNlCitmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBT
Y21CYXNlLCBDb21taXQgYXMgU2NtQ29tbWl0LCBDb250cmlidXRvcgogCiAKIGNsYXNzIENvbW1p
dENvbnRleHQob2JqZWN0KToKQEAgLTY1LDYgKzY1LDQzIEBAIGNsYXNzIENvbW1pdENvbnRleHQo
b2JqZWN0KToKICAgICAgICAgdXVpZCA9IGNvbHVtbnMuQmlnSW50KHByaW1hcnlfa2V5PVRydWUs
IHJlcXVpcmVkPVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQogICAgICAgICBjb21taXRf
aWQgPSBjb2x1bW5zLlRleHQocmVxdWlyZWQ9VHJ1ZSkKIAorICAgIGNsYXNzIENvbW1pdE1vZGVs
TWsyKE1vZGVsKToKKyAgICAgICAgcmVwb3NpdG9yeV9pZCA9IGNvbHVtbnMuVGV4dChwYXJ0aXRp
b25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisgICAgICAgIHBlb3BsZSA9IGNvbHVtbnMuVGV4
dChyZXF1aXJlZD1GYWxzZSkKKyAgICAgICAgbWVzc2FnZSA9IGNvbHVtbnMuVGV4dChyZXF1aXJl
ZD1GYWxzZSkKKworICAgICAgICBpZGVudGlmaWVyID0gY29sdW1ucy5UZXh0KHJlcXVpcmVkPUZh
bHNlKQorICAgICAgICBoYXNoID0gY29sdW1ucy5UZXh0KHJlcXVpcmVkPUZhbHNlKQorICAgICAg
ICByZXZpc2lvbiA9IGNvbHVtbnMuU21hbGxJbnQocmVxdWlyZWQ9RmFsc2UpCisKKyAgICAgICAg
ZGVmIHRvX2NvbW1pdChzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBTY21Db21taXQoCisgICAg
ICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1zZWxmLnJlcG9zaXRvcnlfaWQsIGJyYW5jaD1zZWxm
LmJyYW5jaCwKKyAgICAgICAgICAgICAgICB0aW1lc3RhbXA9c2VsZi51dWlkIC8vIENvbW1pdC5U
SU1FU1RBTVBfVE9fVVVJRF9NVUxUSVBMSUVSLAorICAgICAgICAgICAgICAgIG9yZGVyPXNlbGYu
dXVpZCAlIENvbW1pdC5USU1FU1RBTVBfVE9fVVVJRF9NVUxUSVBMSUVSLAorICAgICAgICAgICAg
ICAgIGF1dGhvcj1zZWxmLnBlb3BsZS5nZXQoJ2F1dGhvcicpIGlmIHNlbGYucGVvcGxlIGVsc2Ug
Tm9uZSwKKyAgICAgICAgICAgICAgICBtZXNzYWdlPXNlbGYubWVzc2FnZSwKKyAgICAgICAgICAg
ICAgICBpZGVudGlmaWVyPXNlbGYuaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICBoYXNoPXNl
bGYuaGFzaCwKKyAgICAgICAgICAgICAgICByZXZpc2lvbj1zZWxmLnJldmlzaW9uLAorICAgICAg
ICAgICAgKQorCisgICAgY2xhc3MgQ29tbWl0QnlSZWYoQ29tbWl0TW9kZWxNazIpOgorICAgICAg
ICBfX3RhYmxlX25hbWVfXyA9ICdjb21taXRzX3JlZl90b19vYmplY3QnCisgICAgICAgIHJlZiA9
IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQorICAgICAgICB1
dWlkID0gY29sdW1ucy5CaWdJbnQocmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgYnJhbmNoID0gY29s
dW1ucy5UZXh0KHJlcXVpcmVkPVRydWUpCisKKyAgICBjbGFzcyBDb21taXRCeVV1aWRBc2NlbmRp
bmdNazIoQ29tbWl0TW9kZWxNazIpOgorICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdjb21taXRz
X3V1aWRfdG9fb2JqZWN0X2FzY2VuZGluZycKKyAgICAgICAgYnJhbmNoID0gY29sdW1ucy5UZXh0
KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgdXVpZCA9IGNvbHVt
bnMuQmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUsIGNsdXN0ZXJpbmdfb3Jk
ZXI9J0FTQycpCisKKyAgICBjbGFzcyBDb21taXRCeVV1aWREZXNjZW5kaW5nTWsyKENvbW1pdE1v
ZGVsTWsyKToKKyAgICAgICAgX190YWJsZV9uYW1lX18gPSAnY29tbWl0c191dWlkX3RvX29iamVj
dF9kZXNjZW5kaW5nJworICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tl
eT1UcnVlLCByZXF1aXJlZD1UcnVlKQorICAgICAgICB1dWlkID0gY29sdW1ucy5CaWdJbnQocHJp
bWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSwgY2x1c3RlcmluZ19vcmRlcj0nREVTQycpCisK
ICAgICBjbGFzcyBCcmFuY2hlcyhNb2RlbCk6CiAgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2Nv
bW1pdF9icmFuY2hlcycKICAgICAgICAgcmVwb3NpdG9yeV9pZCA9IGNvbHVtbnMuVGV4dChwYXJ0
aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCkBAIC04MiwxMCArMTE5LDExIEBAIGNsYXNz
IENvbW1pdENvbnRleHQob2JqZWN0KToKICAgICAgICAgc2VsZi5jYWNoZV90aW1lb3V0ID0gY2Fj
aGVfdGltZW91dAogCiAgICAgICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAgIHNlbGYuY2Fzc2Fu
ZHJhLmNyZWF0ZV90YWJsZShzZWxmLkNvbW1pdEJ5SUQpCi0gICAgICAgICAgICBzZWxmLmNhc3Nh
bmRyYS5jcmVhdGVfdGFibGUoc2VsZi5Db21taXRCeVV1aWRBc2NlbmRpbmcpCi0gICAgICAgICAg
ICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5Db21taXRCeVV1aWREZXNjZW5kaW5n
KQotICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYuQnJhbmNoZXMp
CisgICAgICAgICAgICBmb3Igb2xkIGluIFtzZWxmLkNvbW1pdEJ5SUQsIHNlbGYuQ29tbWl0QnlV
dWlkQXNjZW5kaW5nLCBzZWxmLkNvbW1pdEJ5VXVpZERlc2NlbmRpbmddOgorICAgICAgICAgICAg
ICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShvbGQpCisKKyAgICAgICAgICAgIGZvciB0
YWJsZSBpbiBbc2VsZi5Db21taXRCeVJlZiwgc2VsZi5Db21taXRCeVV1aWRBc2NlbmRpbmdNazIs
IHNlbGYuQ29tbWl0QnlVdWlkRGVzY2VuZGluZ01rMiwgc2VsZi5CcmFuY2hlc106CisgICAgICAg
ICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHRhYmxlKQogCiAgICAgZGVmIF9f
ZW50ZXJfXyhzZWxmKToKICAgICAgICAgc2VsZi5jYXNzYW5kcmEuX19lbnRlcl9fKCkKQEAgLTE2
OSw2ICsyMDcsMjIgQEAgY2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgogICAgICAgICAgICAg
Y2FsbGJhY2ssCiAgICAgICAgICkKIAorICAgIGRlZiBmaW5kX2NvbW1pdHNfYnlfcmVmKHNlbGYs
IHJlcG9zaXRvcnlfaWQsIHJlZiwgbGltaXQ9MTAwKToKKyAgICAgICAgIyBGSVhNRTogU2hvdWxk
IHVzZSB0aGUgcmVkaXMgY2FjaGUsIGJ1dCB0aGUgcmVkaXMgY2FjaGUgZG9lc24ndCBzdXBwb3J0
IG5ldy1zdHlsZSBjb21taXRzIHlldAorICAgICAgICB3aXRoIHNlbGY6CisgICAgICAgICAgICBp
ZiBpc2luc3RhbmNlKHJlZiwgaW50KSBvciByZWYuaXNkaWdpdCgpOgorICAgICAgICAgICAgICAg
IHJldHVybiBbbW9kZWwudG9fY29tbWl0KCkgZm9yIG1vZGVsIGluIHNlbGYuY2Fzc2FuZHJhLnNl
bGVjdF9mcm9tX3RhYmxlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLkNvbW1pdEJ5UmVmLl9f
dGFibGVfbmFtZV9fLCBsaW1pdD1saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9y
eV9pZD1yZXBvc2l0b3J5X2lkLCByZWY9J3J7fScuZm9ybWF0KHJlZiksCisgICAgICAgICAgICAg
ICAgKV0KKworICAgICAgICAgICAgIyBGSVhNRTogU0FTSSBpbmRlY2llcyBhcmUgdGhlIGNhbm9p
Y2FsIHdheSB0byBzb2x2ZSB0aGlzIHByb2JsZW0sIGJ1dCByZXF1aXJlIENhc3NhbmRyYSAzLjQg
d2hpY2gKKyAgICAgICAgICAgICMgaGFzbid0IGJlZW4gZGVwbG95ZWQgdG8gb3VyIGRhdGFjZW50
ZXJzIHlldC4gVGhpcyB3b3JrcyBmb3IgY29tbWl0cywgYnV0IGlzIGxlc3MgdHJhbnNwYXJlbnQu
CisgICAgICAgICAgICByZXR1cm4gW21vZGVsLnRvX2NvbW1pdCgpIGZvciBtb2RlbCBpbiBzZWxm
LmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZSgKKyAgICAgICAgICAgICAgICBzZWxmLkNvbW1p
dEJ5UmVmLl9fdGFibGVfbmFtZV9fLCBsaW1pdD1saW1pdCwKKyAgICAgICAgICAgICAgICByZXBv
c2l0b3J5X2lkPXJlcG9zaXRvcnlfaWQsIHJlZl9fZ3RlPXJlZi5sb3dlcigpLCByZWZfX2x0ZT0o
cmVmLmxvd2VyKCkgKyAnZycpLAorICAgICAgICAgICAgKV0KKwogICAgIGRlZiBmaW5kX2NvbW1p
dHNfYnlfdXVpZChzZWxmLCByZXBvc2l0b3J5X2lkLCBicmFuY2gsIHV1aWQsIGxpbWl0PTEwMCk6
CiAgICAgICAgIGlmIGJyYW5jaCBpcyBOb25lOgogICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5y
ZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uZGVmYXVsdF9icmFuY2gKQEAgLTI5OSw0NiArMzUz
LDgyIEBAIGNsYXNzIENvbW1pdENvbnRleHQob2JqZWN0KToKICAgICAgICAgICAgICldCiAKICAg
ICBkZWYgcmVnaXN0ZXJfY29tbWl0KHNlbGYsIGNvbW1pdCk6Ci0gICAgICAgIGlmIG5vdCBpc2lu
c3RhbmNlKGNvbW1pdCwgQ29tbWl0KToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4
cGVjdGVkIHR5cGUge0NvbW1pdH0sIGdvdCB7dHlwZShjb21taXQpfScpCisgICAgICAgIGlmIG5v
dCBpc2luc3RhbmNlKGNvbW1pdCwgU2NtQ29tbWl0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVF
cnJvcihmJ0V4cGVjdGVkIHR5cGUge1NjbUNvbW1pdH0sIGdvdCB7dHlwZShjb21taXQpfScpCiAK
ICAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICAgaWYgY29tbWl0LnJlcG9zaXRvcnlfaWQg
bm90IGluIHNlbGYucmVwb3NpdG9yaWVzOgogICAgICAgICAgICAgICAgIHNlbGYucmVwb3NpdG9y
aWVzW2NvbW1pdC5yZXBvc2l0b3J5X2lkXSA9IFJlcG9zaXRvcnkoa2V5PWNvbW1pdC5yZXBvc2l0
b3J5X2lkKQogCi0gICAgICAgICAgICBmb3IgdGFibGUgaW4gW3NlbGYuQ29tbWl0QnlJRCwgc2Vs
Zi5Db21taXRCeVV1aWRBc2NlbmRpbmcsIHNlbGYuQ29tbWl0QnlVdWlkRGVzY2VuZGluZ106Cisg
ICAgICAgICAgICBmb3Igb2xkIGluIFtzZWxmLkNvbW1pdEJ5SUQsIHNlbGYuQ29tbWl0QnlVdWlk
QXNjZW5kaW5nLCBzZWxmLkNvbW1pdEJ5VXVpZERlc2NlbmRpbmddOgorICAgICAgICAgICAgICAg
IHNlbGYuY2Fzc2FuZHJhLmluc2VydF9yb3coCisgICAgICAgICAgICAgICAgICAgIG9sZC5fX3Rh
YmxlX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1jb21taXQucmVw
b3NpdG9yeV9pZCwKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5icmFuY2gsCisg
ICAgICAgICAgICAgICAgICAgIGNvbW1pdF9pZD1zdHIoY29tbWl0LnJldmlzaW9uKS5sb3dlcigp
IGlmIGNvbW1pdC5yZXZpc2lvbiBlbHNlIGNvbW1pdC5oYXNoLAorICAgICAgICAgICAgICAgICAg
ICB1dWlkPWNvbW1pdC51dWlkLAorICAgICAgICAgICAgICAgICAgICBjb21taXR0ZXI9Y29tbWl0
LmF1dGhvci5lbWFpbCBpZiBjb21taXQuYXV0aG9yIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgbWVzc2FnZT1jb21taXQubWVzc2FnZSwKKyAgICAgICAgICAgICAgICApCisKKyAgICAg
ICAgICAgIGZvciB0YWJsZSBpbiBbc2VsZi5Db21taXRCeVV1aWRBc2NlbmRpbmdNazIsIHNlbGYu
Q29tbWl0QnlVdWlkRGVzY2VuZGluZ01rMiwgc2VsZi5CcmFuY2hlc106CiAgICAgICAgICAgICAg
ICAgc2VsZi5jYXNzYW5kcmEuaW5zZXJ0X3JvdygKICAgICAgICAgICAgICAgICAgICAgdGFibGUu
X190YWJsZV9uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9Y29tbWl0
LnJlcG9zaXRvcnlfaWQsIGJyYW5jaD1jb21taXQuYnJhbmNoLAotICAgICAgICAgICAgICAgICAg
ICBjb21taXRfaWQ9c3RyKGNvbW1pdC5pZCkubG93ZXIoKSwgdXVpZD1jb21taXQudXVpZCwKLSAg
ICAgICAgICAgICAgICAgICAgY29tbWl0dGVyPWNvbW1pdC5jb21taXR0ZXIsIG1lc3NhZ2U9Y29t
bWl0Lm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9Y29tbWl0LnJl
cG9zaXRvcnlfaWQsCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1jb21taXQuYnJhbmNoLAor
ICAgICAgICAgICAgICAgICAgICByZXZpc2lvbj1jb21taXQucmV2aXNpb24sCisgICAgICAgICAg
ICAgICAgICAgIGhhc2g9Y29tbWl0Lmhhc2gsCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZp
ZXI9c3RyKGNvbW1pdCkgaWYgY29tbWl0LmlkZW50aWZpZXIgZWxzZSBOb25lLAorICAgICAgICAg
ICAgICAgICAgICB1dWlkPWNvbW1pdC51dWlkLAorICAgICAgICAgICAgICAgICAgICBjb21taXR0
ZXI9anNvbi5kdW1wcyhjb21taXQuYXV0aG9yLCBjbHM9Q29udHJpYnV0b3IuRW5jb2RlcikgaWYg
Y29tbWl0LmF1dGhvciBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9Y29t
bWl0Lm1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBmb3Iga2V5LCBy
ZWZfZ2VuIGluICgKKyAgICAgICAgICAgICAgICAoJ3JldmlzaW9uJywgbGFtYmRhIGNvbW1pdDog
J3J7fScuZm9ybWF0KGNvbW1pdC5yZXZpc2lvbikpLAorICAgICAgICAgICAgICAgICgnaGFzaCcs
IGxhbWJkYSBjb21taXQ6IGNvbW1pdC5oYXNoKSwKKyAgICAgICAgICAgICAgICAoJ2lkZW50aWZp
ZXInLCBsYW1iZGEgY29tbWl0OiBzdHIoY29tbWl0KSksCisgICAgICAgICAgICApOgorICAgICAg
ICAgICAgICAgIGlmIG5vdCBnZXRhdHRyKGNvbW1pdCwga2V5KToKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKKworICAgICAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmluc2VydF9yb3co
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuQ29tbWl0QnlSZWYuX190YWJsZV9uYW1lX18sCisg
ICAgICAgICAgICAgICAgICAgIHJlZj1yZWZfZ2VuKGNvbW1pdCksCisgICAgICAgICAgICAgICAg
ICAgIHJlcG9zaXRvcnlfaWQ9Y29tbWl0LnJlcG9zaXRvcnlfaWQsCisgICAgICAgICAgICAgICAg
ICAgIGJyYW5jaD1jb21taXQuYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICByZXZpc2lvbj1j
b21taXQucmV2aXNpb24sCisgICAgICAgICAgICAgICAgICAgIGhhc2g9Y29tbWl0Lmhhc2gsCisg
ICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9c3RyKGNvbW1pdCkgaWYgY29tbWl0LmlkZW50
aWZpZXIgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAgICB1dWlkPWNvbW1pdC51dWlkLAor
ICAgICAgICAgICAgICAgICAgICBjb21taXR0ZXI9anNvbi5kdW1wcyhjb21taXQuYXV0aG9yLCBj
bHM9Q29udHJpYnV0b3IuRW5jb2RlcikgaWYgY29tbWl0LmF1dGhvciBlbHNlIE5vbmUsCisgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2U9Y29tbWl0Lm1lc3NhZ2UsCisgICAgICAgICAgICAgICAg
KQorCiAgICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5pbnNlcnRfcm93KAogICAgICAgICAgICAg
ICAgIHNlbGYuQnJhbmNoZXMuX190YWJsZV9uYW1lX18sCiAgICAgICAgICAgICAgICAgcmVwb3Np
dG9yeV9pZD1jb21taXQucmVwb3NpdG9yeV9pZCwgYnJhbmNoPWNvbW1pdC5icmFuY2gsCiAgICAg
ICAgICAgICApCiAgICAgICAgICAgICByZXR1cm4gY29tbWl0CiAKLSAgICBkZWYgcmVnaXN0ZXJf
Y29tbWl0X3dpdGhfcmVwb19hbmRfaWQoc2VsZiwgcmVwb3NpdG9yeV9pZCwgYnJhbmNoLCBjb21t
aXRfaWQpOgotICAgICAgICBpZiBicmFuY2ggaXMgTm9uZToKLSAgICAgICAgICAgIGJyYW5jaCA9
IHNlbGYucmVwb3NpdG9yaWVzW3JlcG9zaXRvcnlfaWRdLmRlZmF1bHRfYnJhbmNoCisgICAgZGVm
IHJlZ2lzdGVyX3BhcnRpYWxfY29tbWl0KHNlbGYsIHJlcG9zaXRvcnlfaWQsIHJlZj1Ob25lLCBy
ZXZpc2lvbj1Ob25lLCBoYXNoPU5vbmUsIGlkZW50aWZpZXI9Tm9uZSk6CiAgICAgICAgIGlmIHJl
cG9zaXRvcnlfaWQgbm90IGluIHNlbGYucmVwb3NpdG9yaWVzOgogICAgICAgICAgICAgcmFpc2Ug
UnVudGltZUVycm9yKCd7fSBpcyBub3QgYSByZWNvZ25pemVkIHJlcG9zaXRvcnknKQogCiAgICAg
ICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAgIGNvbW1pdHMgPSBzZWxmLmZpbmRfY29tbWl0c19i
eV9pZChyZXBvc2l0b3J5X2lkPXJlcG9zaXRvcnlfaWQsIGJyYW5jaD1icmFuY2gsIGNvbW1pdF9p
ZD1jb21taXRfaWQpCisgICAgICAgICAgICBjb21taXRzID0gc2VsZi5maW5kX2NvbW1pdHNfYnlf
cmVmKHJlcG9zaXRvcnlfaWQ9cmVwb3NpdG9yeV9pZCwgcmVmPXJlZiBvciByZXZpc2lvbiBvciBo
YXNoIG9yIGlkZW50aWZpZXIpCiAgICAgICAgICAgICBpZiBsZW4oY29tbWl0cykgPiAxOgotICAg
ICAgICAgICAgICAgIHJhaXNlIFNjbUJhc2UuRXhjZXB0aW9uKGYnTXVsdGlwbGUgY29tbWl0cyB3
aXRoIHRoZSBpZCB7Y29tbWl0X2lkfSBleGlzdCBpbiB7cmVwb3NpdG9yeV9pZH0gb24ge2JyYW5j
aH0nKQorICAgICAgICAgICAgICAgIHJhaXNlIFNjbUJhc2UuRXhjZXB0aW9uKGYnTXVsdGlwbGUg
Y29tbWl0cyB3aXRoIHRoZSBpZCB7cmVmIG9yIHJldmlzaW9uIG9yIGhhc2ggb3IgaWRlbnRpZmll
cn0gZXhpc3QgaW4ge3JlcG9zaXRvcnlfaWR9JykKICAgICAgICAgICAgIGlmIGNvbW1pdHM6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1pdHNbMF0KLSAgICAgICAgICAgIGNvbW1pdCA9IHNl
bGYucmVwb3NpdG9yaWVzW3JlcG9zaXRvcnlfaWRdLmNvbW1pdF9mb3JfaWQoY29tbWl0X2lkKQor
ICAgICAgICAgICAgY29tbWl0ID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uY29t
bWl0KHJlZj1yZWYsIHJldmlzaW9uPXJldmlzaW9uLCBoYXNoPWhhc2gsIGlkZW50aWZpZXI9aWRl
bnRpZmllciwgZmFzdD1UcnVlKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVnaXN0ZXJfY29t
bWl0KGNvbW1pdCkKIAogICAgIGRlZiB1cmwoc2VsZiwgY29tbWl0KToKLSAgICAgICAgaWYgbm90
IGlzaW5zdGFuY2UoY29tbWl0LCBDb21taXQpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShj
b21taXQsIENvbW1pdCkgYW5kIG5vdCBpc2luc3RhbmNlKGNvbW1pdCwgU2NtQ29tbWl0KToKICAg
ICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5cGUge0NvbW1pdH0sIGdvdCB7
dHlwZShjb21taXQpfScpCiAKICAgICAgICAgcmVwbyA9IHNlbGYucmVwb3NpdG9yaWVzLmdldChj
b21taXQucmVwb3NpdG9yeV9pZCkKICAgICAgICAgaWYgcmVwbzoKLSAgICAgICAgICAgIHJldHVy
biByZXBvLnVybF9mb3JfY29tbWl0KGNvbW1pdC5pZCkKKyAgICAgICAgICAgIHJldHVybiByZXBv
LnVybF9mb3JfY29tbWl0KGNvbW1pdC5pZCBpZiBpc2luc3RhbmNlKGNvbW1pdCwgQ29tbWl0KSBl
bHNlIGNvbW1pdC5oYXNoIG9yIGNvbW1pdC5yZXZpc2lvbikKICAgICAgICAgcmV0dXJuIE5vbmUK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21v
ZGVsL2NvbW1pdF9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzQyOTYpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb21taXRfY29udGV4dF91bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMsOCBAQCBjbGFzcyBDb21taXRDb250ZXh0VGVz
dChXYWl0Rm9yRG9ja2VyVGVzCiAgICAgICAgICAgICAgICAgZm9yIGtleSwgcmVwb3NpdG9yeSBp
biBkaWN0KHNhZmFyaT1zYWZhcmksIHdlYmtpdD13ZWJraXQpLml0ZW1zKCk6CiAgICAgICAgICAg
ICAgICAgICAgIGZvciBicmFuY2gsIGNvbW1pdHMgaW4gcmVwb3NpdG9yeS5jb21taXRzLml0ZW1z
KCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29tbWl0IGluIGNvbW1pdHM6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb21taXRfd2l0
aF9yZXBvX2FuZF9pZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LCBicmFu
Y2gsIGNvbW1pdC5oYXNoIG9yIGNvbW1pdC5yZXZpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX3BhcnRpYWxfY29tbWl0KAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrZXksIHJlZj1jb21taXQuaGFzaCBvciBjb21taXQucmV2
aXNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogCiAgICAgQFdhaXRGb3JEb2Nr
ZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywg
bW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCkBAIC0xODMsNyArMTgzLDcgQEAg
Y2xhc3MgQ29tbWl0Q29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlcwogICAgIGRlZiB0ZXN0X2Nv
bW1pdF9mcm9tX3N0YXNoX3JlcG8oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1D
YXNzYW5kcmFDb250ZXh0KToKICAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgp
LCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgogICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFi
YXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICAgICAgc2VsZi5k
YXRhYmFzZS5yZWdpc3Rlcl9jb21taXRfd2l0aF9yZXBvX2FuZF9pZCgnc2FmYXJpJywgJ21haW4n
LCAnZDhiY2UyNmZhNjVjJykKKyAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJfcGFy
dGlhbF9jb21taXQoJ3NhZmFyaScsIGhhc2g9J2Q4YmNlMjZmYTY1YycpCiAgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIFtzZWxmLnN0YXNoX3JlcG9zaXRvcnku
Y29tbWl0X2Zvcl9pZChpZD0nZDhiY2UyNmZhNjVjJyldLAogICAgICAgICAgICAgICAgIHNlbGYu
ZGF0YWJhc2UuZmluZF9jb21taXRzX2J5X2lkKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5j
aD0nbWFpbicsIGNvbW1pdF9pZD0nZDhiY2UyNmZhNjVjJyksCkBAIC0xOTMsNyArMTkzLDcgQEAg
Y2xhc3MgQ29tbWl0Q29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlcwogICAgIGRlZiB0ZXN0X2Nv
bW1pdF9mcm9tX3N2bl9yZXBvKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fz
c2FuZHJhQ29udGV4dCk6CiAgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwg
TW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKICAgICAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFz
ZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgICAgIHNlbGYuZGF0
YWJhc2UucmVnaXN0ZXJfY29tbWl0X3dpdGhfcmVwb19hbmRfaWQoJ3dlYmtpdCcsICd0cnVuaycs
IDYpCisgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX3BhcnRpYWxfY29tbWl0KCd3
ZWJraXQnLCByZXZpc2lvbj02KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAg
ICAgICAgICAgICBbc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTYpXSwKICAg
ICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5
X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgY29tbWl0X2lkPTYpLApJbmRleDogVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9ja19tb2Rl
bF9mYWN0b3J5LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vY2tfbW9kZWxfZmFjdG9yeS5weQkocmV2aXNpb24g
Mjc0Mjk2KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvbW9kZWwvbW9ja19tb2RlbF9mYWN0b3J5LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEs
NCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkyLDggKzkyLDggQEAgY2xhc3Mg
TW9ja01vZGVsRmFjdG9yeShvYmplY3QpOgogICAgICAgICAgICAgICAgIGZvciBrZXksIHJlcG9z
aXRvcnkgaW4gZGljdChzYWZhcmk9c2FmYXJpLCB3ZWJraXQ9d2Via2l0KS5pdGVtcygpOgogICAg
ICAgICAgICAgICAgICAgICBmb3IgYnJhbmNoLCBjb21taXRzIGluIHJlcG9zaXRvcnkuY29tbWl0
cy5pdGVtcygpOgogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRz
OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLmNvbW1pdF9jb250ZXh0LnJlZ2lz
dGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrZXksIGJyYW5jaCwgY29tbWl0Lmhhc2ggb3IgY29tbWl0LnJldmlzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLmNvbW1pdF9jb250ZXh0LnJlZ2lzdGVyX3BhcnRp
YWxfY29tbWl0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksIGhhc2g9Y29t
bWl0Lmhhc2gsIHJldmlzaW9uPWNvbW1pdC5yZXZpc2lvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApCiAgICAgICAgIHJldHVybiBtb2RlbAogCkluZGV4OiBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9yZXBvc2l0b3J5LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L21vZGVsL3JlcG9zaXRvcnkucHkJKHJldmlzaW9uIDI3NDI5NikKKysrIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnkucHkJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDkgQEAgY2xhc3MgUmVwb3NpdG9yeShvYmplY3QpOgog
ICAgIGRlZiBjb21taXRfZm9yX2lkKHNlbGYsIGlkKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVt
ZW50ZWRFcnJvcigpCiAKKyAgICBkZWYgY29tbWl0KHNlbGYsIHJlZj1Ob25lLCByZXZpc2lvbj1O
b25lLCBoYXNoPU5vbmUsIGlkZW50aWZpZXI9Tm9uZSwgZmFzdD1UcnVlKToKKyAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisKICAgICBkZWYgdXJsX2Zvcl9jb21taXQoc2VsZiwg
Y29tbWl0KToKICAgICAgICAgcmV0dXJuIE5vbmUKIApAQCAtNTgsNiArNjEsMTMgQEAgY2xhc3Mg
U3Rhc2hSZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogICAgICAgICAgICAgbWVzc2FnZT1jb21taXQu
bWVzc2FnZSwKICAgICAgICAgKQogCisgICAgZGVmIGNvbW1pdChzZWxmLCByZWY9Tm9uZSwgcmV2
aXNpb249Tm9uZSwgaGFzaD1Ob25lLCBpZGVudGlmaWVyPU5vbmUsIGZhc3Q9VHJ1ZSk6CisgICAg
ICAgIGlmIGlkZW50aWZpZXI6CisgICAgICAgICAgICBmYXN0ID0gRmFsc2UKKyAgICAgICAgaWYg
cmVmOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVtb3RlLmZpbmQocmVmLCBpbmNsdWRlX2lk
ZW50aWZpZXI9bm90IGZhc3QpCisgICAgICAgIHJldHVybiBzZWxmLnJlbW90ZS5jb21taXQocmV2
aXNpb249cmV2aXNpb24sIGhhc2g9aGFzaCwgaWRlbnRpZmllcj1pZGVudGlmaWVyLCBpbmNsdWRl
X2lkZW50aWZpZXI9bm90IGZhc3QpCisKICAgICBkZWYgdXJsX2Zvcl9jb21taXQoc2VsZiwgY29t
bWl0KToKICAgICAgICAgcmV0dXJuIGYne3NlbGYucmVtb3RlLnVybH0vY29tbWl0cy97Y29tbWl0
fScKIApAQCAtODMsNSArOTMsMTQgQEAgY2xhc3MgV2ViS2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5
KToKICAgICAgICAgICAgIG1lc3NhZ2U9Y29tbWl0Lm1lc3NhZ2UsCiAgICAgICAgICkKIAorICAg
IGRlZiBjb21taXQoc2VsZiwgcmVmPU5vbmUsIHJldmlzaW9uPU5vbmUsIGhhc2g9Tm9uZSwgaWRl
bnRpZmllcj1Ob25lLCBmYXN0PVRydWUpOgorICAgICAgICBpZiBpZGVudGlmaWVyOgorICAgICAg
ICAgICAgZmFzdCA9IEZhbHNlCisgICAgICAgIGlmIHJlZjoKKyAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2UocmVmLCBpbnQpIG9yIHJlZi5pc2RpZ2l0KCk6CisgICAgICAgICAgICAgICAgcmVmID0g
J3J7fScuZm9ybWF0KHJlZikKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJlbW90ZS5maW5kKHJl
ZiwgaW5jbHVkZV9pZGVudGlmaWVyPW5vdCBmYXN0KQorICAgICAgICByZXR1cm4gc2VsZi5yZW1v
dGUuY29tbWl0KHJldmlzaW9uPXJldmlzaW9uLCBoYXNoPWhhc2gsIGlkZW50aWZpZXI9aWRlbnRp
ZmllciwgaW5jbHVkZV9pZGVudGlmaWVyPW5vdCBmYXN0KQorCiAgICAgZGVmIHVybF9mb3JfY29t
bWl0KHNlbGYsIGNvbW1pdCk6CiAgICAgICAgIHJldHVybiBmJ2h0dHBzOi8vY29tbWl0cy53ZWJr
aXQub3JnL3J7Y29tbWl0fScKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnlfdW5pdHRlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwv
cmVwb3NpdG9yeV91bml0dGVzdC5weQkocmV2aXNpb24gMjc0Mjk2KQorKysgVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeV91bml0
dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMSwxNSArMzEsMTUgQEAgY2xhc3MgUmVwb3NpdG9yeVRlc3QoV2FpdEZv
ckRvY2tlclRlc3RDYQogICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CiAg
ICAgICAgICAgICBzdm5fcmVwbyA9IFdlYktpdFJlcG9zaXRvcnkoKQogICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKCd3ZWJraXQnLCBzdm5fcmVwby5rZXkpCi0gICAgICAgICAgICBjb21taXQg
PSBzdm5fcmVwby5jb21taXRfZm9yX2lkKDYpCisgICAgICAgICAgICBjb21taXQgPSBzdm5fcmVw
by5jb21taXQocmV2aXNpb249NikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0
LnV1aWQsIDE2MDE2Mzk5MDAwMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0
Lm1lc3NhZ2UsICc2dGggY29tbWl0JykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29t
bWl0LmJyYW5jaCwgJ3RydW5rJykKIAotICAgIGRlZiB0ZXN0X2JyYW5jaF9zdm4oc2VsZik6Cisg
ICAgZGVmIHRlc3RfcmVmX3N2bihzZWxmKToKICAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5
LndlYmtpdCgpOgogICAgICAgICAgICAgc3ZuX3JlcG8gPSBXZWJLaXRSZXBvc2l0b3J5KCkKLSAg
ICAgICAgICAgIGNvbW1pdCA9IHN2bl9yZXBvLmNvbW1pdF9mb3JfaWQoNykKKyAgICAgICAgICAg
IGNvbW1pdCA9IHN2bl9yZXBvLmNvbW1pdChyZWY9NykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY29tbWl0LnV1aWQsIDE2MDE2NDA5MDAwMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY29tbWl0Lm1lc3NhZ2UsICc3dGggY29tbWl0JykKICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY29tbWl0LmJyYW5jaCwgJ2JyYW5jaC1hJykKQEAgLTQ4LDE1ICs0OCwyMyBAQCBj
bGFzcyBSZXBvc2l0b3J5VGVzdChXYWl0Rm9yRG9ja2VyVGVzdENhCiAgICAgICAgIHdpdGggTW9j
a01vZGVsRmFjdG9yeS5zYWZhcmkoKSBhcyBzYWZhcmk6CiAgICAgICAgICAgICBnaXRfcmVwbyA9
IFN0YXNoUmVwb3NpdG9yeSgnaHR0cHM6Ly97fScuZm9ybWF0KHNhZmFyaS5yZW1vdGUpKQogICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc2FmYXJpJywgZ2l0X3JlcG8ua2V5KQotICAgICAg
ICAgICAgY29tbWl0ID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgnMWFiZTI1YjQ0M2U5JykKKyAg
ICAgICAgICAgIGNvbW1pdCA9IGdpdF9yZXBvLmNvbW1pdChoYXNoPScxYWJlMjViNDQzZTknKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQudXVpZCwgMTYwMTY2MzAwMDAwKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQuYnJhbmNoLCAnbWFpbicpCisKKyAg
ICBkZWYgdGVzdF9yZWZfc3Rhc2goc2VsZik6CisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9y
eS5zYWZhcmkoKSBhcyBzYWZhcmk6CisgICAgICAgICAgICBnaXRfcmVwbyA9IFN0YXNoUmVwb3Np
dG9yeSgnaHR0cHM6Ly97fScuZm9ybWF0KHNhZmFyaS5yZW1vdGUpKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnc2FmYXJpJywgZ2l0X3JlcG8ua2V5KQorICAgICAgICAgICAgY29tbWl0
ID0gZ2l0X3JlcG8uY29tbWl0KHJlZj0nMWFiZTI1YjQ0M2U5JykKICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY29tbWl0LnV1aWQsIDE2MDE2NjMwMDAwMCkKICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY29tbWl0LmJyYW5jaCwgJ21haW4nKQogCiAgICAgZGVmIHRlc3RfY29sbGlk
aW5nX3RpbWVzdGFtcHNfc3Rhc2goc2VsZik6CiAgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9y
eS5zYWZhcmkoKSBhcyBzYWZhcmk6CiAgICAgICAgICAgICBnaXRfcmVwbyA9IFN0YXNoUmVwb3Np
dG9yeSgnaHR0cHM6Ly97fScuZm9ybWF0KHNhZmFyaS5yZW1vdGUpKQotICAgICAgICAgICAgY29t
bWl0MSA9IGdpdF9yZXBvLmNvbW1pdF9mb3JfaWQoJ2JhZTVkMWU5MDk5OScpCi0gICAgICAgICAg
ICBjb21taXQyID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgnZDhiY2UyNmZhNjVjJykKKyAgICAg
ICAgICAgIGNvbW1pdDEgPSBnaXRfcmVwby5jb21taXQoaGFzaD0nYmFlNWQxZTkwOTk5JykKKyAg
ICAgICAgICAgIGNvbW1pdDIgPSBnaXRfcmVwby5jb21taXQoaGFzaD0nZDhiY2UyNmZhNjVjJykK
IAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQxLnRpbWVzdGFtcCwgY29tbWl0
Mi50aW1lc3RhbXApCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNvbW1pdDEudXVp
ZCwgY29tbWl0Mi51dWlkKQpAQCAtNjcsNiArNzUsNiBAQCBjbGFzcyBSZXBvc2l0b3J5VGVzdChX
YWl0Rm9yRG9ja2VyVGVzdENhCiAgICAgZGVmIHRlc3RfYnJhbmNoX3N0YXNoKHNlbGYpOgogICAg
ICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCkgYXMgc2FmYXJpOgogICAgICAgICAg
ICAgZ2l0X3JlcG8gPSBTdGFzaFJlcG9zaXRvcnkoJ2h0dHBzOi8ve30nLmZvcm1hdChzYWZhcmku
cmVtb3RlKSkKLSAgICAgICAgICAgIGNvbW1pdCA9IGdpdF9yZXBvLmNvbW1pdF9mb3JfaWQoJzYy
MTY1MmFkZDdmYycpCisgICAgICAgICAgICBjb21taXQgPSBnaXRfcmVwby5jb21taXQoaGFzaD0n
NjIxNjUyYWRkN2ZjJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LnV1aWQs
IDE2MDE2NjYwMDAwMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LmJyYW5j
aCwgJ2JyYW5jaC1hJykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L2NvbW1pdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9jb21taXQucHkJKHJldmlzaW9uIDI3NDI5NikK
KysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbW1p
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDYgKzE0NiwyOCBAQCBjbGFzcyBDb21taXQob2Jq
ZWN0KToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIid7fScgY2Fubm90IGJlIGNvbnZl
cnRlZCB0byBhIGNvbW1pdCBvYmplY3QiLmZvcm1hdChhcmcpKQogICAgICAgICByZXR1cm4gTm9u
ZQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fanNvbihjbHMsIGRhdGEpOgorICAg
ICAgICBkYXRhID0gZGF0YSBpZiBpc2luc3RhbmNlKGRhdGEsIGRpY3QpIGVsc2UganNvbi5sb2Fk
cyhkYXRhKQorICAgICAgICBoYXNoX2Zyb21faWQgPSBOb25lCisgICAgICAgIHJldmlzaW9uX2Zy
b21faWQgPSBjbHMuX3BhcnNlX3JldmlzaW9uKGRhdGEuZ2V0KCdpZCcpKQorICAgICAgICBpZiBu
b3QgcmV2aXNpb25fZnJvbV9pZDoKKyAgICAgICAgICAgIGhhc2hfZnJvbV9pZCA9IGNscy5fcGFy
c2VfaGFzaChkYXRhLmdldCgnaWQnKSkKKyAgICAgICAgcHJpbnQoJ3t9IHZzIHt9Jy5mb3JtYXQo
aGFzaF9mcm9tX2lkLCByZXZpc2lvbl9mcm9tX2lkKSkKKworICAgICAgICByZXR1cm4gY2xzKAor
ICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1kYXRhLmdldCgncmVwb3NpdG9yeV9pZCcpLAorICAg
ICAgICAgICAgYnJhbmNoPWRhdGEuZ2V0KCdicmFuY2gnKSwKKyAgICAgICAgICAgIGhhc2g9ZGF0
YS5nZXQoJ2hhc2gnLCBoYXNoX2Zyb21faWQpLAorICAgICAgICAgICAgcmV2aXNpb249ZGF0YS5n
ZXQoJ3JldmlzaW9uJywgcmV2aXNpb25fZnJvbV9pZCksCisgICAgICAgICAgICB0aW1lc3RhbXA9
ZGF0YS5nZXQoJ3RpbWVzdGFtcCcpLAorICAgICAgICAgICAgaWRlbnRpZmllcj1kYXRhLmdldCgn
aWRlbnRpZmllcicpLAorICAgICAgICAgICAgYnJhbmNoX3BvaW50PWRhdGEuZ2V0KCdicmFuY2hf
cG9pbnQnKSwKKyAgICAgICAgICAgIG9yZGVyPWRhdGEuZ2V0KCdvcmRlcicpLAorICAgICAgICAg
ICAgYXV0aG9yPWRhdGEuZ2V0KCdhdXRob3InLCBkYXRhLmdldCgnY29tbWl0dGVyJykpLAorICAg
ICAgICAgICAgbWVzc2FnZT1kYXRhLmdldCgnbWVzc2FnZScpLAorICAgICAgICApCisKICAgICBk
ZWYgX19pbml0X18oCiAgICAgICAgIHNlbGYsCiAgICAgICAgIGhhc2g9Tm9uZSwKQEAgLTE4NCwx
NiArMjA2LDIyIEBAIGNsYXNzIENvbW1pdChvYmplY3QpOgogICAgICAgICAgICAgICAgICksCiAg
ICAgICAgICAgICApCiAKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh0aW1lc3RhbXAsIHNpeC5zdHJp
bmdfdHlwZXMpIGFuZCB0aW1lc3RhbXAuaXNkaWdpdCgpOgorICAgICAgICAgICAgdGltZXN0YW1w
ID0gaW50KHRpbWVzdGFtcCkKICAgICAgICAgaWYgdGltZXN0YW1wIGFuZCBub3QgaXNpbnN0YW5j
ZSh0aW1lc3RhbXAsIGludCk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkV4cGVjdGVk
ICd0aW1lc3RhbXAnIHRvIGJlIG9mIHR5cGUgaW50LCBnb3QgJ3t9JyIuZm9ybWF0KHRpbWVzdGFt
cCkpCiAgICAgICAgIHNlbGYudGltZXN0YW1wID0gdGltZXN0YW1wCiAKKyAgICAgICAgaWYgaXNp
bnN0YW5jZShvcmRlciwgc2l4LnN0cmluZ190eXBlcykgYW5kIG9yZGVyLmlzZGlnaXQoKToKKyAg
ICAgICAgICAgIG9yZGVyID0gaW50KG9yZGVyKQogICAgICAgICBpZiBvcmRlciBhbmQgbm90IGlz
aW5zdGFuY2Uob3JkZXIsIGludCk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkV4cGVj
dGVkICdvcmRlcicgdG8gYmUgb2YgdHlwZSBpbnQsIGdvdCAne30nIi5mb3JtYXQob3JkZXIpKQog
ICAgICAgICBzZWxmLm9yZGVyID0gb3JkZXIgb3IgMAogCiAgICAgICAgIGlmIGF1dGhvciBhbmQg
aXNpbnN0YW5jZShhdXRob3IsIGRpY3QpIGFuZCBhdXRob3IuZ2V0KCduYW1lJyk6CiAgICAgICAg
ICAgICBzZWxmLmF1dGhvciA9IENvbnRyaWJ1dG9yKGF1dGhvci5nZXQoJ25hbWUnKSwgYXV0aG9y
LmdldCgnZW1haWxzJykpCisgICAgICAgIGVsaWYgYXV0aG9yIGFuZCBpc2luc3RhbmNlKGF1dGhv
ciwgc2l4LnN0cmluZ190eXBlcykgYW5kICdAJyBpbiBhdXRob3I6CisgICAgICAgICAgICBzZWxm
LmF1dGhvciA9IENvbnRyaWJ1dG9yKGF1dGhvciwgYXV0aG9yKQogICAgICAgICBlbGlmIGF1dGhv
ciBhbmQgbm90IGlzaW5zdGFuY2UoYXV0aG9yLCBDb250cmlidXRvcik6CiAgICAgICAgICAgICBy
YWlzZSBUeXBlRXJyb3IoIkV4cGVjdGVkICdhdXRob3InIHRvIGJlIG9mIHR5cGUge30sIGdvdCAn
e30nIi5mb3JtYXQoQ29udHJpYnV0b3IsIGF1dGhvcikpCiAgICAgICAgIGVsc2U6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423085</attachid>
            <date>2021-03-12 15:10:28 -0800</date>
            <delta_ts>2021-03-15 16:47:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223101-20210312151026.patch</filename>
            <type>text/plain</type>
            <size>28785</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3NDM3MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDUzIEBACisyMDIxLTAzLTExICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIFNhdmUgaWRlbnRpZmllcnMgaW4gY29tbWl0IHRh
YmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMx
MDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1MzM4MzM4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUAorCisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJv
bGxlci5weToKKyAgICAgICAgKENvbW1pdENvbnRyb2xsZXIucmVnaXN0ZXIpOgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdXBs
b2FkX2NvbnRyb2xsZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChVcGxvYWRDb250cm9sbGVyUG9z
dFRlc3QudGVzdF91cGxvYWRfcGFydGlhbCk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQucHk6CisgICAgICAg
IChDb21taXRDb250ZXh0LkNvbW1pdE1vZGVsTWsyKToKKyAgICAgICAgKENvbW1pdENvbnRleHQu
Q29tbWl0TW9kZWxNazIudG9fY29tbWl0KToKKyAgICAgICAgKENvbW1pdENvbnRleHQpOgorICAg
ICAgICAoQ29tbWl0Q29udGV4dC5Db21taXRCeVJlZik6CisgICAgICAgIChDb21taXRDb250ZXh0
LkNvbW1pdEJ5VXVpZEFzY2VuZGluZ01rMik6CisgICAgICAgIChDb21taXRDb250ZXh0LkNvbW1p
dEJ5VXVpZERlc2NlbmRpbmdNazIpOgorICAgICAgICAoQ29tbWl0Q29udGV4dC5fX2luaXRfXyk6
CisgICAgICAgIChDb21taXRDb250ZXh0LmZpbmRfY29tbWl0c19ieV9yZWYpOgorICAgICAgICAo
Q29tbWl0Q29udGV4dC5yZWdpc3Rlcl9jb21taXQpOgorICAgICAgICAoQ29tbWl0Q29udGV4dC5y
ZWdpc3Rlcl9wYXJ0aWFsX2NvbW1pdCk6CisgICAgICAgIChDb21taXRDb250ZXh0LnVybCk6Cisg
ICAgICAgIChDb21taXRDb250ZXh0LnJlZ2lzdGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC9jb21taXRfY29udGV4dF91bml0dGVzdC5weToKKyAgICAgICAgKENvbW1pdENv
bnRleHRUZXN0LmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSk6CisgICAgICAgIChDb21taXRD
b250ZXh0VGVzdC50ZXN0X2NvbW1pdF9mcm9tX3N0YXNoX3JlcG8pOgorICAgICAgICAoQ29tbWl0
Q29udGV4dFRlc3QudGVzdF9jb21taXRfZnJvbV9zdm5fcmVwbyk6CisgICAgICAgICogU2NyaXB0
cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9ja19tb2RlbF9mYWN0
b3J5LnB5OgorICAgICAgICAoTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUpOgorICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnku
cHk6CisgICAgICAgIChSZXBvc2l0b3J5LmNvbW1pdCk6CisgICAgICAgIChTdGFzaFJlcG9zaXRv
cnkuY29tbWl0KToKKyAgICAgICAgKFdlYktpdFJlcG9zaXRvcnkuY29tbWl0KToKKyAgICAgICAg
KiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9yZXBvc2l0
b3J5X3VuaXR0ZXN0LnB5OgorICAgICAgICAoUmVwb3NpdG9yeVRlc3QudGVzdF9zdm4pOgorICAg
ICAgICAoUmVwb3NpdG9yeVRlc3QudGVzdF9yZWZfc3ZuKToKKyAgICAgICAgKFJlcG9zaXRvcnlU
ZXN0LnRlc3Rfc3Rhc2gpOgorICAgICAgICAoUmVwb3NpdG9yeVRlc3QpOgorICAgICAgICAoUmVw
b3NpdG9yeVRlc3QudGVzdF9yZWZfc3Rhc2gpOgorICAgICAgICAoUmVwb3NpdG9yeVRlc3QudGVz
dF9jb2xsaWRpbmdfdGltZXN0YW1wc19zdGFzaCk6CisgICAgICAgIChSZXBvc2l0b3J5VGVzdC50
ZXN0X2JyYW5jaF9zdGFzaCk6CisgICAgICAgIChSZXBvc2l0b3J5VGVzdC50ZXN0X2JyYW5jaF9z
dm4pOiBEZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L2NvbW1pdC5weToKKyAgICAgICAgKENvbW1pdCk6CisgICAgICAgIChDb21taXQu
ZnJvbV9qc29uKToKKwogMjAyMS0wMy0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgRW5hYmxlIHZpZGVvIGNhcHR1cmUgaW4gR1BVUHJvY2VzcyBieSBkZWZh
dWx0IG9uIGlPUwpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJvbGxlci5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVy
L2NvbW1pdF9jb250cm9sbGVyLnB5CShyZXZpc2lvbiAyNzQzNzApCisrKyBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250
cm9sbGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIw
MTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI2LDcgQEAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVm
YXVsdGRpY3QKIGZyb20gZmxhc2sgaW1wb3J0IGFib3J0LCBqc29uaWZ5LCByZXF1ZXN0CiBmcm9t
IHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21taXQKIGZyb20gd2Via2l0
Zmxhc2tweS51dGlsIGltcG9ydCBBc3NlcnRSZXF1ZXN0LCBxdWVyeV9hc19rd2FyZ3MsIGxpbWl0
X2Zvcl9xdWVyeQotZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgU2NtQmFzZQorZnJvbSB3ZWJraXRz
Y21weSBpbXBvcnQgU2NtQmFzZSwgQ29tbWl0IGFzIFNjbUNvbW1pdAogCiAKIGRlZiBfZmluZF9j
b21wYXJpc29uKGNvbW1pdF9jb250ZXh0LCByZXBvc2l0b3J5X2lkLCBicmFuY2gsIGlkLCB1dWlk
LCB0aW1lc3RhbXAsIHByaW9yaXR5PW1pbik6CkBAIC0yNzMsMzUgKzI3Myw1OSBAQCBjbGFzcyBD
b21taXRDb250cm9sbGVyKEhhc0NvbW1pdENvbnRleHQpCiAgICAgICAgICAgICAgICAgYWJvcnQo
NDAwLCBkZXNjcmlwdGlvbj0nRXhwZWN0ZWQgdXBsb2FkZWQgZGF0YSB0byBiZSBqc29uJykKIAog
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0LnJlZ2lzdGVyX2Nv
bW1pdChDb21taXQuZnJvbV9qc29uKGNvbW1pdCkpCi0gICAgICAgICAgICBpZiBpc19lbmRwb2lu
dDoKLSAgICAgICAgICAgICAgICByZXR1cm4ganNvbmlmeSh7J3N0YXR1cyc6ICdvayd9KQotICAg
ICAgICAgICAgcmV0dXJuIENvbW1pdC5mcm9tX2pzb24oY29tbWl0KQorICAgICAgICAgICAgY2Fu
ZGlkYXRlID0gU2NtQ29tbWl0LmZyb21fanNvbihjb21taXQpCisKKyAgICAgICAgICAgICMgQ29t
bWl0IG5lZWRzIHRvIGJlIHN1ZmZpY2llbnRseSBkZWZpbmVkCisgICAgICAgICAgICBpZiBjYW5k
aWRhdGUucmVwb3NpdG9yeV9pZCBhbmQgY2FuZGlkYXRlLmJyYW5jaCBhbmQgY2FuZGlkYXRlLnRp
bWVzdGFtcCBhbmQgKGNhbmRpZGF0ZS5yZXZpc2lvbiBvciBjYW5kaWRhdGUuaGFzaCk6CisgICAg
ICAgICAgICAgICAgc2VsZi5jb21taXRfY29udGV4dC5yZWdpc3Rlcl9jb21taXQoY2FuZGlkYXRl
KQorICAgICAgICAgICAgICAgIGlmIGlzX2VuZHBvaW50OgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4ganNvbmlmeSh7J3N0YXR1cyc6ICdvayd9KQorICAgICAgICAgICAgICAgIHJldHVybiBj
YW5kaWRhdGUKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAK
LSAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsncmVwb3NpdG9yeV9pZCcsICdpZCddCi0gICAgICAg
IG9wdGlvbmFsX2FyZ3MgPSBbJ2JyYW5jaCddCisgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBbJ3Jl
cG9zaXRvcnlfaWQnXQogICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CiAgICAgICAg
ICAgICBpZiBhcmcgbm90IGluIGNvbW1pdDoKICAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRl
c2NyaXB0aW9uPWYiJ3thcmd9JyByZXF1aXJlZCB0byBkZWZpbmUgY29tbWl0IikKIAorICAgICAg
ICBoYXNfcmVmID0gRmFsc2UKKyAgICAgICAgb25lX29mX2FyZ3MgPSBbJ2lkJywgJ3JlZicsICdo
YXNoJywgJ3JldmlzaW9uJywgJ2lkZW50aWZpZXInXQorICAgICAgICBmb3IgYXJnIGluIG9uZV9v
Zl9hcmdzOgorICAgICAgICAgICAgaWYgYXJnIGluIGNvbW1pdDoKKyAgICAgICAgICAgICAgICBp
ZiBoYXNfcmVmOgorICAgICAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdN
dWx0aXBsZSBjb21taXQgcmVmZXJlbmNlcyBzcGVjaWZpZWQnKQorICAgICAgICAgICAgICAgIGhh
c19yZWYgPSBUcnVlCisgICAgICAgIGlmIG5vdCBoYXNfcmVmOgorICAgICAgICAgICAgYWJvcnQo
NDAwLCBkZXNjcmlwdGlvbj0nTm8gY29tbWl0IHJlZmVyZW5jZSBzcGVjaWZpZWQnKQorCisKICAg
ICAgICAgZm9yIGFyZyBpbiBjb21taXQua2V5cygpOgotICAgICAgICAgICAgaWYgYXJnIGluIHJl
cXVpcmVkX2FyZ3MgKyBvcHRpb25hbF9hcmdzOgorICAgICAgICAgICAgaWYgYXJnIGluIHJlcXVp
cmVkX2FyZ3Mgb3IgYXJnIGluIG9uZV9vZl9hcmdzOgogICAgICAgICAgICAgICAgIGNvbnRpbnVl
Ci0gICAgICAgICAgICBpZiBhcmcgaW4gWyd0aW1lc3RhbXAnLCAnb3JkZXInLCAnY29tbWl0dGVy
JywgJ21lc3NhZ2UnXToKKyAgICAgICAgICAgIGlmIGFyZyBpbiBbJ2JyYW5jaCcsICd0aW1lc3Rh
bXAnLCAnb3JkZXInLCAnY29tbWl0dGVyJywgJ21lc3NhZ2UnXToKICAgICAgICAgICAgICAgICBh
Ym9ydCg0MDAsIGRlc2NyaXB0aW9uPSdOb3QgZW5vdWdoIGFyZ3VtZW50cyBwcm92aWRlZCB0byBk
ZWZpbmUgYSBjb21taXQsIGJ1dCB0b28gbWFueSB0byBzZWFyY2ggZm9yIGEgY29tbWl0JykKICAg
ICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249ZiIne2FyZ30nIGlzIG5vdCB2YWxpZCBm
b3IgZGVmaW5pbmcgY29tbWl0cyIpCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29tbWl0
ID0gc2VsZi5jb21taXRfY29udGV4dC5yZWdpc3Rlcl9jb21taXRfd2l0aF9yZXBvX2FuZF9pZCgK
KyAgICAgICAgICAgIGNvbW1pdCA9IHNlbGYuY29tbWl0X2NvbnRleHQucmVnaXN0ZXJfcGFydGlh
bF9jb21taXQoCiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1jb21taXQuZ2V0KCdyZXBv
c2l0b3J5X2lkJyksCi0gICAgICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5nZXQoJ2JyYW5jaCcp
LAotICAgICAgICAgICAgICAgIGNvbW1pdF9pZD1jb21taXQuZ2V0KCdpZCcpLAorICAgICAgICAg
ICAgICAgIHJlZj1jb21taXQuZ2V0KCdpZCcpIG9yIGNvbW1pdC5nZXQoJ3JlZicpLAorICAgICAg
ICAgICAgICAgIGhhc2g9Y29tbWl0LmdldCgnaGFzaCcpLAorICAgICAgICAgICAgICAgIHJldmlz
aW9uPWNvbW1pdC5nZXQoJ3JldmlzaW9uJyksCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1j
b21taXQuZ2V0KCdpZGVudGlmaWVyJyksCiAgICAgICAgICAgICApCiAgICAgICAgIGV4Y2VwdCAo
UnVudGltZUVycm9yLCBTY21CYXNlLkV4Y2VwdGlvbikgYXMgZXJyb3I6CiAgICAgICAgICAgICBh
Ym9ydCg0MDQsIGRlc2NyaXB0aW9uPXN0cihlcnJvcikpCiAKICAgICAgICAgaWYgaXNfZW5kcG9p
bnQ6CiAgICAgICAgICAgICByZXR1cm4ganNvbmlmeSh7J3N0YXR1cyc6ICdvayd9KQotICAgICAg
ICByZXR1cm4gY29tbWl0CisgICAgICAgIHJldHVybiBDb21taXQoCisgICAgICAgICAgICByZXBv
c2l0b3J5X2lkPWNvbW1pdC5yZXBvc2l0b3J5X2lkLAorICAgICAgICAgICAgaWQ9Y29tbWl0LnJl
dmlzaW9uIG9yIGNvbW1pdC5oYXNoLAorICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5icmFuY2gs
CisgICAgICAgICAgICB0aW1lc3RhbXA9Y29tbWl0LnRpbWVzdGFtcCwKKyAgICAgICAgICAgIG9y
ZGVyPWNvbW1pdC5vcmRlciwKKyAgICAgICAgICAgIGNvbW1pdHRlcj1jb21taXQuYXV0aG9yLmVt
YWlsIGlmIGNvbW1pdC5hdXRob3IgZWxzZSBOb25lLAorICAgICAgICAgICAgbWVzc2FnZT1jb21t
aXQubWVzc2FnZSwKKyAgICAgICAgKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlcl91bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9jb250cm9sbGVyL3VwbG9hZF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAyNzQzNzApCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9jb250cm9sbGVyL3VwbG9hZF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC04NSw2ICs4NSw3IEBAIGNsYXNzIFVwbG9hZENvbnRyb2xsZXJQb3N0VGVzdChG
bGFza1Rlc3QKICAgICAgICAgICAgIHRpbWVzdGFtcD1pbnQodGltZS50aW1lKCkpLAogICAgICAg
ICApCiAgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS91cGxv
YWQnLCBkYXRhPXN0cihqc29uLmR1bXBzKHVwbG9hZF9kaWN0KSkpCisgICAgICAgIHByaW50KHJl
c3BvbnNlLmpzb24oKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNf
Y29kZSwgMjAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVsnc3Rh
dHVzJ10sICdvaycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydw
cm9jZXNzaW5nJ11bJ3B5dGhvbi10ZXN0cyddLCBkaWN0KHN0YXR1cz0nb2snKSkKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1p
dF9jb250ZXh0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0LnB5CShyZXZpc2lvbiAyNzQz
NzApCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9t
b2RlbC9jb21taXRfY29udGV4dC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMg
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwog
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw3ICszMCw3IEBAIGZyb20gZGF0ZXRpbWUg
aW1wb3J0IGRhdGV0aW1lCiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9y
dCBDb21taXQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwucmVwb3NpdG9yeSBpbXBvcnQgUmVwb3Np
dG9yeQogCi1mcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBTY21CYXNlCitmcm9tIHdlYmtpdHNjbXB5
IGltcG9ydCBTY21CYXNlLCBDb21taXQgYXMgU2NtQ29tbWl0LCBDb250cmlidXRvcgogCiAKIGNs
YXNzIENvbW1pdENvbnRleHQob2JqZWN0KToKQEAgLTY1LDYgKzY1LDQzIEBAIGNsYXNzIENvbW1p
dENvbnRleHQob2JqZWN0KToKICAgICAgICAgdXVpZCA9IGNvbHVtbnMuQmlnSW50KHByaW1hcnlf
a2V5PVRydWUsIHJlcXVpcmVkPVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQogICAgICAg
ICBjb21taXRfaWQgPSBjb2x1bW5zLlRleHQocmVxdWlyZWQ9VHJ1ZSkKIAorICAgIGNsYXNzIENv
bW1pdE1vZGVsTWsyKE1vZGVsKToKKyAgICAgICAgcmVwb3NpdG9yeV9pZCA9IGNvbHVtbnMuVGV4
dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisgICAgICAgIHBlb3BsZSA9IGNv
bHVtbnMuVGV4dChyZXF1aXJlZD1GYWxzZSkKKyAgICAgICAgbWVzc2FnZSA9IGNvbHVtbnMuVGV4
dChyZXF1aXJlZD1GYWxzZSkKKworICAgICAgICBpZGVudGlmaWVyID0gY29sdW1ucy5UZXh0KHJl
cXVpcmVkPUZhbHNlKQorICAgICAgICBoYXNoID0gY29sdW1ucy5UZXh0KHJlcXVpcmVkPUZhbHNl
KQorICAgICAgICByZXZpc2lvbiA9IGNvbHVtbnMuSW50ZWdlcihyZXF1aXJlZD1GYWxzZSkKKwor
ICAgICAgICBkZWYgdG9fY29tbWl0KHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIFNjbUNvbW1p
dCgKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXNlbGYucmVwb3NpdG9yeV9pZCwgYnJh
bmNoPXNlbGYuYnJhbmNoLAorICAgICAgICAgICAgICAgIHRpbWVzdGFtcD1zZWxmLnV1aWQgLy8g
Q29tbWl0LlRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJRVIsCisgICAgICAgICAgICAgICAgb3Jk
ZXI9c2VsZi51dWlkICUgQ29tbWl0LlRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJRVIsCisgICAg
ICAgICAgICAgICAgYXV0aG9yPXNlbGYucGVvcGxlLmdldCgnYXV0aG9yJykgaWYgc2VsZi5wZW9w
bGUgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgIG1lc3NhZ2U9c2VsZi5tZXNzYWdlLAorICAg
ICAgICAgICAgICAgIGlkZW50aWZpZXI9c2VsZi5pZGVudGlmaWVyLAorICAgICAgICAgICAgICAg
IGhhc2g9c2VsZi5oYXNoLAorICAgICAgICAgICAgICAgIHJldmlzaW9uPXNlbGYucmV2aXNpb24s
CisgICAgICAgICAgICApCisKKyAgICBjbGFzcyBDb21taXRCeVJlZihDb21taXRNb2RlbE1rMik6
CisgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2NvbW1pdHNfcmVmX3RvX29iamVjdCcKKyAgICAg
ICAgcmVmID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisg
ICAgICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChyZXF1aXJlZD1UcnVlKQorICAgICAgICBicmFu
Y2ggPSBjb2x1bW5zLlRleHQocmVxdWlyZWQ9VHJ1ZSkKKworICAgIGNsYXNzIENvbW1pdEJ5VXVp
ZEFzY2VuZGluZ01rMihDb21taXRNb2RlbE1rMik6CisgICAgICAgIF9fdGFibGVfbmFtZV9fID0g
J2NvbW1pdHNfdXVpZF90b19vYmplY3RfYXNjZW5kaW5nJworICAgICAgICBicmFuY2ggPSBjb2x1
bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQorICAgICAgICB1dWlk
ID0gY29sdW1ucy5CaWdJbnQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSwgY2x1c3Rl
cmluZ19vcmRlcj0nQVNDJykKKworICAgIGNsYXNzIENvbW1pdEJ5VXVpZERlc2NlbmRpbmdNazIo
Q29tbWl0TW9kZWxNazIpOgorICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdjb21taXRzX3V1aWRf
dG9fb2JqZWN0X2Rlc2NlbmRpbmcnCisgICAgICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4dChwYXJ0
aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisgICAgICAgIHV1aWQgPSBjb2x1bW5zLkJp
Z0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29yZGVyPSdE
RVNDJykKKwogICAgIGNsYXNzIEJyYW5jaGVzKE1vZGVsKToKICAgICAgICAgX190YWJsZV9uYW1l
X18gPSAnY29tbWl0X2JyYW5jaGVzJwogICAgICAgICByZXBvc2l0b3J5X2lkID0gY29sdW1ucy5U
ZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKQEAgLTgyLDEwICsxMTksMTEg
QEAgY2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgogICAgICAgICBzZWxmLmNhY2hlX3RpbWVv
dXQgPSBjYWNoZV90aW1lb3V0CiAKICAgICAgICAgd2l0aCBzZWxmOgotICAgICAgICAgICAgc2Vs
Zi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYuQ29tbWl0QnlJRCkKLSAgICAgICAgICAgIHNl
bGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLkNvbW1pdEJ5VXVpZEFzY2VuZGluZykKLSAg
ICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLkNvbW1pdEJ5VXVpZERl
c2NlbmRpbmcpCi0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5C
cmFuY2hlcykKKyAgICAgICAgICAgIGZvciBvbGQgaW4gW3NlbGYuQ29tbWl0QnlJRCwgc2VsZi5D
b21taXRCeVV1aWRBc2NlbmRpbmcsIHNlbGYuQ29tbWl0QnlVdWlkRGVzY2VuZGluZ106CisgICAg
ICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKG9sZCkKKworICAgICAgICAg
ICAgZm9yIHRhYmxlIGluIFtzZWxmLkNvbW1pdEJ5UmVmLCBzZWxmLkNvbW1pdEJ5VXVpZEFzY2Vu
ZGluZ01rMiwgc2VsZi5Db21taXRCeVV1aWREZXNjZW5kaW5nTWsyLCBzZWxmLkJyYW5jaGVzXToK
KyAgICAgICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUodGFibGUpCiAKICAg
ICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICBzZWxmLmNhc3NhbmRyYS5fX2VudGVyX18o
KQpAQCAtMTY5LDYgKzIwNywyMiBAQCBjbGFzcyBDb21taXRDb250ZXh0KG9iamVjdCk6CiAgICAg
ICAgICAgICBjYWxsYmFjaywKICAgICAgICAgKQogCisgICAgZGVmIGZpbmRfY29tbWl0c19ieV9y
ZWYoc2VsZiwgcmVwb3NpdG9yeV9pZCwgcmVmLCBsaW1pdD0xMDApOgorICAgICAgICAjIEZJWE1F
OiBTaG91bGQgdXNlIHRoZSByZWRpcyBjYWNoZSwgYnV0IHRoZSByZWRpcyBjYWNoZSBkb2Vzbid0
IHN1cHBvcnQgbmV3LXN0eWxlIGNvbW1pdHMgeWV0CisgICAgICAgIHdpdGggc2VsZjoKKyAgICAg
ICAgICAgIGlmIGlzaW5zdGFuY2UocmVmLCBpbnQpIG9yIHJlZi5pc2RpZ2l0KCk6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIFttb2RlbC50b19jb21taXQoKSBmb3IgbW9kZWwgaW4gc2VsZi5jYXNz
YW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuQ29tbWl0
QnlSZWYuX190YWJsZV9uYW1lX18sIGxpbWl0PWxpbWl0LAorICAgICAgICAgICAgICAgICAgICBy
ZXBvc2l0b3J5X2lkPXJlcG9zaXRvcnlfaWQsIHJlZj0ncnt9Jy5mb3JtYXQocmVmKSwKKyAgICAg
ICAgICAgICAgICApXQorCisgICAgICAgICAgICAjIEZJWE1FOiBTQVNJIGluZGVjaWVzIGFyZSB0
aGUgY2Fub2ljYWwgd2F5IHRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgYnV0IHJlcXVpcmUgQ2Fzc2Fu
ZHJhIDMuNCB3aGljaAorICAgICAgICAgICAgIyBoYXNuJ3QgYmVlbiBkZXBsb3llZCB0byBvdXIg
ZGF0YWNlbnRlcnMgeWV0LiBUaGlzIHdvcmtzIGZvciBjb21taXRzLCBidXQgaXMgbGVzcyB0cmFu
c3BhcmVudC4KKyAgICAgICAgICAgIHJldHVybiBbbW9kZWwudG9fY29tbWl0KCkgZm9yIG1vZGVs
IGluIHNlbGYuY2Fzc2FuZHJhLnNlbGVjdF9mcm9tX3RhYmxlKAorICAgICAgICAgICAgICAgIHNl
bGYuQ29tbWl0QnlSZWYuX190YWJsZV9uYW1lX18sIGxpbWl0PWxpbWl0LAorICAgICAgICAgICAg
ICAgIHJlcG9zaXRvcnlfaWQ9cmVwb3NpdG9yeV9pZCwgcmVmX19ndGU9cmVmLmxvd2VyKCksIHJl
Zl9fbHRlPShyZWYubG93ZXIoKSArICdnJyksCisgICAgICAgICAgICApXQorCiAgICAgZGVmIGZp
bmRfY29tbWl0c19ieV91dWlkKHNlbGYsIHJlcG9zaXRvcnlfaWQsIGJyYW5jaCwgdXVpZCwgbGlt
aXQ9MTAwKToKICAgICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6CiAgICAgICAgICAgICBicmFuY2gg
PSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5X2lkXS5kZWZhdWx0X2JyYW5jaApAQCAtMjk5
LDQ2ICszNTMsODIgQEAgY2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgogICAgICAgICAgICAg
KV0KIAogICAgIGRlZiByZWdpc3Rlcl9jb21taXQoc2VsZiwgY29tbWl0KToKLSAgICAgICAgaWYg
bm90IGlzaW5zdGFuY2UoY29tbWl0LCBDb21taXQpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVy
cm9yKGYnRXhwZWN0ZWQgdHlwZSB7Q29tbWl0fSwgZ290IHt0eXBlKGNvbW1pdCl9JykKKyAgICAg
ICAgaWYgbm90IGlzaW5zdGFuY2UoY29tbWl0LCBTY21Db21taXQpOgorICAgICAgICAgICAgcmFp
c2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7U2NtQ29tbWl0fSwgZ290IHt0eXBlKGNvbW1p
dCl9JykKIAogICAgICAgICB3aXRoIHNlbGY6CiAgICAgICAgICAgICBpZiBjb21taXQucmVwb3Np
dG9yeV9pZCBub3QgaW4gc2VsZi5yZXBvc2l0b3JpZXM6CiAgICAgICAgICAgICAgICAgc2VsZi5y
ZXBvc2l0b3JpZXNbY29tbWl0LnJlcG9zaXRvcnlfaWRdID0gUmVwb3NpdG9yeShrZXk9Y29tbWl0
LnJlcG9zaXRvcnlfaWQpCiAKLSAgICAgICAgICAgIGZvciB0YWJsZSBpbiBbc2VsZi5Db21taXRC
eUlELCBzZWxmLkNvbW1pdEJ5VXVpZEFzY2VuZGluZywgc2VsZi5Db21taXRCeVV1aWREZXNjZW5k
aW5nXToKKyAgICAgICAgICAgIGZvciBvbGQgaW4gW3NlbGYuQ29tbWl0QnlJRCwgc2VsZi5Db21t
aXRCeVV1aWRBc2NlbmRpbmcsIHNlbGYuQ29tbWl0QnlVdWlkRGVzY2VuZGluZ106CisgICAgICAg
ICAgICAgICAgc2VsZi5jYXNzYW5kcmEuaW5zZXJ0X3JvdygKKyAgICAgICAgICAgICAgICAgICAg
b2xkLl9fdGFibGVfbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPWNv
bW1pdC5yZXBvc2l0b3J5X2lkLAorICAgICAgICAgICAgICAgICAgICBicmFuY2g9Y29tbWl0LmJy
YW5jaCwKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0X2lkPXN0cihjb21taXQucmV2aXNpb24p
Lmxvd2VyKCkgaWYgY29tbWl0LnJldmlzaW9uIGVsc2UgY29tbWl0Lmhhc2gsCisgICAgICAgICAg
ICAgICAgICAgIHV1aWQ9Y29tbWl0LnV1aWQsCisgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRl
cj1jb21taXQuYXV0aG9yLmVtYWlsIGlmIGNvbW1pdC5hdXRob3IgZWxzZSBOb25lLAorICAgICAg
ICAgICAgICAgICAgICBtZXNzYWdlPWNvbW1pdC5tZXNzYWdlLAorICAgICAgICAgICAgICAgICkK
KworICAgICAgICAgICAgZm9yIHRhYmxlIGluIFtzZWxmLkNvbW1pdEJ5VXVpZEFzY2VuZGluZ01r
Miwgc2VsZi5Db21taXRCeVV1aWREZXNjZW5kaW5nTWsyLCBzZWxmLkJyYW5jaGVzXToKICAgICAg
ICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5pbnNlcnRfcm93KAogICAgICAgICAgICAgICAgICAg
ICB0YWJsZS5fX3RhYmxlX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9p
ZD1jb21taXQucmVwb3NpdG9yeV9pZCwgYnJhbmNoPWNvbW1pdC5icmFuY2gsCi0gICAgICAgICAg
ICAgICAgICAgIGNvbW1pdF9pZD1zdHIoY29tbWl0LmlkKS5sb3dlcigpLCB1dWlkPWNvbW1pdC51
dWlkLAotICAgICAgICAgICAgICAgICAgICBjb21taXR0ZXI9Y29tbWl0LmNvbW1pdHRlciwgbWVz
c2FnZT1jb21taXQubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1j
b21taXQucmVwb3NpdG9yeV9pZCwKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5i
cmFuY2gsCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uPWNvbW1pdC5yZXZpc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgaGFzaD1jb21taXQuaGFzaCwKKyAgICAgICAgICAgICAgICAgICAg
aWRlbnRpZmllcj1zdHIoY29tbWl0KSBpZiBjb21taXQuaWRlbnRpZmllciBlbHNlIE5vbmUsCisg
ICAgICAgICAgICAgICAgICAgIHV1aWQ9Y29tbWl0LnV1aWQsCisgICAgICAgICAgICAgICAgICAg
IGNvbW1pdHRlcj1qc29uLmR1bXBzKGNvbW1pdC5hdXRob3IsIGNscz1Db250cmlidXRvci5FbmNv
ZGVyKSBpZiBjb21taXQuYXV0aG9yIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgbWVz
c2FnZT1jb21taXQubWVzc2FnZSwKICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGZv
ciBrZXksIHJlZl9nZW4gaW4gKAorICAgICAgICAgICAgICAgICgncmV2aXNpb24nLCBsYW1iZGEg
Y29tbWl0OiAncnt9Jy5mb3JtYXQoY29tbWl0LnJldmlzaW9uKSksCisgICAgICAgICAgICAgICAg
KCdoYXNoJywgbGFtYmRhIGNvbW1pdDogY29tbWl0Lmhhc2gpLAorICAgICAgICAgICAgICAgICgn
aWRlbnRpZmllcicsIGxhbWJkYSBjb21taXQ6IHN0cihjb21taXQpKSwKKyAgICAgICAgICAgICk6
CisgICAgICAgICAgICAgICAgaWYgbm90IGdldGF0dHIoY29tbWl0LCBrZXkpOgorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuaW5z
ZXJ0X3JvdygKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5Db21taXRCeVJlZi5fX3RhYmxlX25h
bWVfXywKKyAgICAgICAgICAgICAgICAgICAgcmVmPXJlZl9nZW4oY29tbWl0KSwKKyAgICAgICAg
ICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1jb21taXQucmVwb3NpdG9yeV9pZCwKKyAgICAgICAg
ICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5icmFuY2gsCisgICAgICAgICAgICAgICAgICAgIHJl
dmlzaW9uPWNvbW1pdC5yZXZpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgaGFzaD1jb21taXQu
aGFzaCwKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1zdHIoY29tbWl0KSBpZiBjb21t
aXQuaWRlbnRpZmllciBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAgIHV1aWQ9Y29tbWl0
LnV1aWQsCisgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlcj1qc29uLmR1bXBzKGNvbW1pdC5h
dXRob3IsIGNscz1Db250cmlidXRvci5FbmNvZGVyKSBpZiBjb21taXQuYXV0aG9yIGVsc2UgTm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1jb21taXQubWVzc2FnZSwKKyAgICAgICAg
ICAgICAgICApCisKICAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmluc2VydF9yb3coCiAgICAg
ICAgICAgICAgICAgc2VsZi5CcmFuY2hlcy5fX3RhYmxlX25hbWVfXywKICAgICAgICAgICAgICAg
ICByZXBvc2l0b3J5X2lkPWNvbW1pdC5yZXBvc2l0b3J5X2lkLCBicmFuY2g9Y29tbWl0LmJyYW5j
aCwKICAgICAgICAgICAgICkKICAgICAgICAgICAgIHJldHVybiBjb21taXQKIAotICAgIGRlZiBy
ZWdpc3Rlcl9jb21taXRfd2l0aF9yZXBvX2FuZF9pZChzZWxmLCByZXBvc2l0b3J5X2lkLCBicmFu
Y2gsIGNvbW1pdF9pZCk6Ci0gICAgICAgIGlmIGJyYW5jaCBpcyBOb25lOgotICAgICAgICAgICAg
YnJhbmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uZGVmYXVsdF9icmFuY2gK
KyAgICBkZWYgcmVnaXN0ZXJfcGFydGlhbF9jb21taXQoc2VsZiwgcmVwb3NpdG9yeV9pZCwgcmVm
PU5vbmUsIHJldmlzaW9uPU5vbmUsIGhhc2g9Tm9uZSwgaWRlbnRpZmllcj1Ob25lKToKICAgICAg
ICAgaWYgcmVwb3NpdG9yeV9pZCBub3QgaW4gc2VsZi5yZXBvc2l0b3JpZXM6CiAgICAgICAgICAg
ICByYWlzZSBSdW50aW1lRXJyb3IoJ3t9IGlzIG5vdCBhIHJlY29nbml6ZWQgcmVwb3NpdG9yeScp
CiAKICAgICAgICAgd2l0aCBzZWxmOgotICAgICAgICAgICAgY29tbWl0cyA9IHNlbGYuZmluZF9j
b21taXRzX2J5X2lkKHJlcG9zaXRvcnlfaWQ9cmVwb3NpdG9yeV9pZCwgYnJhbmNoPWJyYW5jaCwg
Y29tbWl0X2lkPWNvbW1pdF9pZCkKKyAgICAgICAgICAgIGNvbW1pdHMgPSBzZWxmLmZpbmRfY29t
bWl0c19ieV9yZWYocmVwb3NpdG9yeV9pZD1yZXBvc2l0b3J5X2lkLCByZWY9cmVmIG9yIHJldmlz
aW9uIG9yIGhhc2ggb3IgaWRlbnRpZmllcikKICAgICAgICAgICAgIGlmIGxlbihjb21taXRzKSA+
IDE6Ci0gICAgICAgICAgICAgICAgcmFpc2UgU2NtQmFzZS5FeGNlcHRpb24oZidNdWx0aXBsZSBj
b21taXRzIHdpdGggdGhlIGlkIHtjb21taXRfaWR9IGV4aXN0IGluIHtyZXBvc2l0b3J5X2lkfSBv
biB7YnJhbmNofScpCisgICAgICAgICAgICAgICAgcmFpc2UgU2NtQmFzZS5FeGNlcHRpb24oZidN
dWx0aXBsZSBjb21taXRzIHdpdGggdGhlIGlkIHtyZWYgb3IgcmV2aXNpb24gb3IgaGFzaCBvciBp
ZGVudGlmaWVyfSBleGlzdCBpbiB7cmVwb3NpdG9yeV9pZH0nKQogICAgICAgICAgICAgaWYgY29t
bWl0czoKICAgICAgICAgICAgICAgICByZXR1cm4gY29tbWl0c1swXQotICAgICAgICAgICAgY29t
bWl0ID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uY29tbWl0X2Zvcl9pZChjb21t
aXRfaWQpCisgICAgICAgICAgICBjb21taXQgPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5
X2lkXS5jb21taXQocmVmPXJlZiwgcmV2aXNpb249cmV2aXNpb24sIGhhc2g9aGFzaCwgaWRlbnRp
Zmllcj1pZGVudGlmaWVyLCBmYXN0PVRydWUpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWdp
c3Rlcl9jb21taXQoY29tbWl0KQogCiAgICAgZGVmIHVybChzZWxmLCBjb21taXQpOgotICAgICAg
ICBpZiBub3QgaXNpbnN0YW5jZShjb21taXQsIENvbW1pdCk6CisgICAgICAgIGlmIG5vdCBpc2lu
c3RhbmNlKGNvbW1pdCwgQ29tbWl0KSBhbmQgbm90IGlzaW5zdGFuY2UoY29tbWl0LCBTY21Db21t
aXQpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7Q29tbWl0
fSwgZ290IHt0eXBlKGNvbW1pdCl9JykKIAogICAgICAgICByZXBvID0gc2VsZi5yZXBvc2l0b3Jp
ZXMuZ2V0KGNvbW1pdC5yZXBvc2l0b3J5X2lkKQogICAgICAgICBpZiByZXBvOgotICAgICAgICAg
ICAgcmV0dXJuIHJlcG8udXJsX2Zvcl9jb21taXQoY29tbWl0LmlkKQorICAgICAgICAgICAgcmV0
dXJuIHJlcG8udXJsX2Zvcl9jb21taXQoY29tbWl0LmlkIGlmIGlzaW5zdGFuY2UoY29tbWl0LCBD
b21taXQpIGVsc2UgY29tbWl0Lmhhc2ggb3IgY29tbWl0LnJldmlzaW9uKQogICAgICAgICByZXR1
cm4gTm9uZQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0
X2NvbnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3NDM3MCkKKysrIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0X3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1Myw4IEBAIGNsYXNzIENvbW1pdENv
bnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXMKICAgICAgICAgICAgICAgICBmb3Iga2V5LCByZXBv
c2l0b3J5IGluIGRpY3Qoc2FmYXJpPXNhZmFyaSwgd2Via2l0PXdlYmtpdCkuaXRlbXMoKToKICAg
ICAgICAgICAgICAgICAgICAgZm9yIGJyYW5jaCwgY29tbWl0cyBpbiByZXBvc2l0b3J5LmNvbW1p
dHMuaXRlbXMoKToKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBjb21taXQgaW4gY29tbWl0
czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2Nv
bW1pdF93aXRoX3JlcG9fYW5kX2lkKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr
ZXksIGJyYW5jaCwgY29tbWl0Lmhhc2ggb3IgY29tbWl0LnJldmlzaW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJfcGFydGlhbF9jb21taXQoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwgcmVmPWNvbW1pdC5oYXNoIG9yIGNv
bW1pdC5yZXZpc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAKICAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKQEAgLTE4Myw3ICsx
ODMsNyBAQCBjbGFzcyBDb21taXRDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzCiAgICAgZGVm
IHRlc3RfY29tbWl0X2Zyb21fc3Rhc2hfcmVwbyhzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fz
c2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgogICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnku
c2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CiAgICAgICAgICAgICBzZWxmLmlu
aXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgICAg
ICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKCdzYWZhcmkn
LCAnbWFpbicsICdkOGJjZTI2ZmE2NWMnKQorICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdp
c3Rlcl9wYXJ0aWFsX2NvbW1pdCgnc2FmYXJpJywgaGFzaD0nZDhiY2UyNmZhNjVjJykKICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgW3NlbGYuc3Rhc2hfcmVw
b3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdkOGJjZTI2ZmE2NWMnKV0sCiAgICAgICAgICAgICAg
ICAgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9yeV9pZD0nc2FmYXJp
JywgYnJhbmNoPSdtYWluJywgY29tbWl0X2lkPSdkOGJjZTI2ZmE2NWMnKSwKQEAgLTE5Myw3ICsx
OTMsNyBAQCBjbGFzcyBDb21taXRDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzCiAgICAgZGVm
IHRlc3RfY29tbWl0X2Zyb21fc3ZuX3JlcG8oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3Nh
bmRyYT1DYXNzYW5kcmFDb250ZXh0KToKICAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNh
ZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgogICAgICAgICAgICAgc2VsZi5pbml0
X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICAgICAg
c2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb21taXRfd2l0aF9yZXBvX2FuZF9pZCgnd2Via2l0Jywg
J3RydW5rJywgNikKKyAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJfcGFydGlhbF9j
b21taXQoJ3dlYmtpdCcsIHJldmlzaW9uPTYpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAogICAgICAgICAgICAgICAgIFtzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9
NildLAogICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2J5X2lkKHJl
cG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0ndHJ1bmsnLCBjb21taXRfaWQ9NiksCkluZGV4
OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9t
b2NrX21vZGVsX2ZhY3RvcnkucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9ja19tb2RlbF9mYWN0b3J5LnB5CShy
ZXZpc2lvbiAyNzQzNzApCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9tb2RlbC9tb2NrX21vZGVsX2ZhY3RvcnkucHkJKHdvcmtpbmcgY29weSkKQEAg
LTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTIsOCArOTIsOCBA
QCBjbGFzcyBNb2NrTW9kZWxGYWN0b3J5KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgZm9yIGtl
eSwgcmVwb3NpdG9yeSBpbiBkaWN0KHNhZmFyaT1zYWZhcmksIHdlYmtpdD13ZWJraXQpLml0ZW1z
KCk6CiAgICAgICAgICAgICAgICAgICAgIGZvciBicmFuY2gsIGNvbW1pdHMgaW4gcmVwb3NpdG9y
eS5jb21taXRzLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29tbWl0IGlu
IGNvbW1pdHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwuY29tbWl0X2NvbnRl
eHQucmVnaXN0ZXJfY29tbWl0X3dpdGhfcmVwb19hbmRfaWQoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtleSwgYnJhbmNoLCBjb21taXQuaGFzaCBvciBjb21taXQucmV2aXNpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwuY29tbWl0X2NvbnRleHQucmVnaXN0
ZXJfcGFydGlhbF9jb21taXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwg
aGFzaD1jb21taXQuaGFzaCwgcmV2aXNpb249Y29tbWl0LnJldmlzaW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICkKICAgICAgICAgcmV0dXJuIG1vZGVsCiAKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnku
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeS5weQkocmV2aXNpb24gMjc0MzcwKQorKysgVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9y
eS5weQkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOSBAQCBjbGFzcyBSZXBvc2l0b3J5KG9i
amVjdCk6CiAgICAgZGVmIGNvbW1pdF9mb3JfaWQoc2VsZiwgaWQpOgogICAgICAgICByYWlzZSBO
b3RJbXBsZW1lbnRlZEVycm9yKCkKIAorICAgIGRlZiBjb21taXQoc2VsZiwgcmVmPU5vbmUsIHJl
dmlzaW9uPU5vbmUsIGhhc2g9Tm9uZSwgaWRlbnRpZmllcj1Ob25lLCBmYXN0PVRydWUpOgorICAg
ICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKKwogICAgIGRlZiB1cmxfZm9yX2NvbW1p
dChzZWxmLCBjb21taXQpOgogICAgICAgICByZXR1cm4gTm9uZQogCkBAIC01OCw2ICs2MSwxMyBA
QCBjbGFzcyBTdGFzaFJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6CiAgICAgICAgICAgICBtZXNzYWdl
PWNvbW1pdC5tZXNzYWdlLAogICAgICAgICApCiAKKyAgICBkZWYgY29tbWl0KHNlbGYsIHJlZj1O
b25lLCByZXZpc2lvbj1Ob25lLCBoYXNoPU5vbmUsIGlkZW50aWZpZXI9Tm9uZSwgZmFzdD1UcnVl
KToKKyAgICAgICAgaWYgaWRlbnRpZmllcjoKKyAgICAgICAgICAgIGZhc3QgPSBGYWxzZQorICAg
ICAgICBpZiByZWY6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZW1vdGUuZmluZChyZWYsIGlu
Y2x1ZGVfaWRlbnRpZmllcj1ub3QgZmFzdCkKKyAgICAgICAgcmV0dXJuIHNlbGYucmVtb3RlLmNv
bW1pdChyZXZpc2lvbj1yZXZpc2lvbiwgaGFzaD1oYXNoLCBpZGVudGlmaWVyPWlkZW50aWZpZXIs
IGluY2x1ZGVfaWRlbnRpZmllcj1ub3QgZmFzdCkKKwogICAgIGRlZiB1cmxfZm9yX2NvbW1pdChz
ZWxmLCBjb21taXQpOgogICAgICAgICByZXR1cm4gZid7c2VsZi5yZW1vdGUudXJsfS9jb21taXRz
L3tjb21taXR9JwogCkBAIC04Myw1ICs5MywxNCBAQCBjbGFzcyBXZWJLaXRSZXBvc2l0b3J5KFJl
cG9zaXRvcnkpOgogICAgICAgICAgICAgbWVzc2FnZT1jb21taXQubWVzc2FnZSwKICAgICAgICAg
KQogCisgICAgZGVmIGNvbW1pdChzZWxmLCByZWY9Tm9uZSwgcmV2aXNpb249Tm9uZSwgaGFzaD1O
b25lLCBpZGVudGlmaWVyPU5vbmUsIGZhc3Q9VHJ1ZSk6CisgICAgICAgIGlmIGlkZW50aWZpZXI6
CisgICAgICAgICAgICBmYXN0ID0gRmFsc2UKKyAgICAgICAgaWYgcmVmOgorICAgICAgICAgICAg
aWYgaXNpbnN0YW5jZShyZWYsIGludCkgb3IgcmVmLmlzZGlnaXQoKToKKyAgICAgICAgICAgICAg
ICByZWYgPSAncnt9Jy5mb3JtYXQocmVmKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVtb3Rl
LmZpbmQocmVmLCBpbmNsdWRlX2lkZW50aWZpZXI9bm90IGZhc3QpCisgICAgICAgIHJldHVybiBz
ZWxmLnJlbW90ZS5jb21taXQocmV2aXNpb249cmV2aXNpb24sIGhhc2g9aGFzaCwgaWRlbnRpZmll
cj1pZGVudGlmaWVyLCBpbmNsdWRlX2lkZW50aWZpZXI9bm90IGZhc3QpCisKICAgICBkZWYgdXJs
X2Zvcl9jb21taXQoc2VsZiwgY29tbWl0KToKICAgICAgICAgcmV0dXJuIGYnaHR0cHM6Ly9jb21t
aXRzLndlYmtpdC5vcmcvcntjb21taXR9JwpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeV91bml0dGVzdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9tb2RlbC9yZXBvc2l0b3J5X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzQzNzApCisrKyBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9yZXBvc2l0
b3J5X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDE1ICszMSwxNSBAQCBjbGFzcyBSZXBvc2l0b3J5VGVz
dChXYWl0Rm9yRG9ja2VyVGVzdENhCiAgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS53ZWJr
aXQoKToKICAgICAgICAgICAgIHN2bl9yZXBvID0gV2ViS2l0UmVwb3NpdG9yeSgpCiAgICAgICAg
ICAgICBzZWxmLmFzc2VydFRydWUoJ3dlYmtpdCcsIHN2bl9yZXBvLmtleSkKLSAgICAgICAgICAg
IGNvbW1pdCA9IHN2bl9yZXBvLmNvbW1pdF9mb3JfaWQoNikKKyAgICAgICAgICAgIGNvbW1pdCA9
IHN2bl9yZXBvLmNvbW1pdChyZXZpc2lvbj02KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjb21taXQudXVpZCwgMTYwMTYzOTkwMDAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjb21taXQubWVzc2FnZSwgJzZ0aCBjb21taXQnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjb21taXQuYnJhbmNoLCAndHJ1bmsnKQogCi0gICAgZGVmIHRlc3RfYnJhbmNoX3N2bihz
ZWxmKToKKyAgICBkZWYgdGVzdF9yZWZfc3ZuKHNlbGYpOgogICAgICAgICB3aXRoIE1vY2tNb2Rl
bEZhY3Rvcnkud2Via2l0KCk6CiAgICAgICAgICAgICBzdm5fcmVwbyA9IFdlYktpdFJlcG9zaXRv
cnkoKQotICAgICAgICAgICAgY29tbWl0ID0gc3ZuX3JlcG8uY29tbWl0X2Zvcl9pZCg3KQorICAg
ICAgICAgICAgY29tbWl0ID0gc3ZuX3JlcG8uY29tbWl0KHJlZj03KQogICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb21taXQudXVpZCwgMTYwMTY0MDkwMDAwKQogICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb21taXQubWVzc2FnZSwgJzd0aCBjb21taXQnKQogICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjb21taXQuYnJhbmNoLCAnYnJhbmNoLWEnKQpAQCAtNDgsMTUgKzQ4
LDIzIEBAIGNsYXNzIFJlcG9zaXRvcnlUZXN0KFdhaXRGb3JEb2NrZXJUZXN0Q2EKICAgICAgICAg
d2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpIGFzIHNhZmFyaToKICAgICAgICAgICAgIGdp
dF9yZXBvID0gU3Rhc2hSZXBvc2l0b3J5KCdodHRwczovL3t9Jy5mb3JtYXQoc2FmYXJpLnJlbW90
ZSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzYWZhcmknLCBnaXRfcmVwby5rZXkp
Ci0gICAgICAgICAgICBjb21taXQgPSBnaXRfcmVwby5jb21taXRfZm9yX2lkKCcxYWJlMjViNDQz
ZTknKQorICAgICAgICAgICAgY29tbWl0ID0gZ2l0X3JlcG8uY29tbWl0KGhhc2g9JzFhYmUyNWI0
NDNlOScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC51dWlkLCAxNjAxNjYz
MDAwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5icmFuY2gsICdtYWlu
JykKKworICAgIGRlZiB0ZXN0X3JlZl9zdGFzaChzZWxmKToKKyAgICAgICAgd2l0aCBNb2NrTW9k
ZWxGYWN0b3J5LnNhZmFyaSgpIGFzIHNhZmFyaToKKyAgICAgICAgICAgIGdpdF9yZXBvID0gU3Rh
c2hSZXBvc2l0b3J5KCdodHRwczovL3t9Jy5mb3JtYXQoc2FmYXJpLnJlbW90ZSkpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdzYWZhcmknLCBnaXRfcmVwby5rZXkpCisgICAgICAgICAg
ICBjb21taXQgPSBnaXRfcmVwby5jb21taXQocmVmPScxYWJlMjViNDQzZTknKQogICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQudXVpZCwgMTYwMTY2MzAwMDAwKQogICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQuYnJhbmNoLCAnbWFpbicpCiAKICAgICBkZWYgdGVz
dF9jb2xsaWRpbmdfdGltZXN0YW1wc19zdGFzaChzZWxmKToKICAgICAgICAgd2l0aCBNb2NrTW9k
ZWxGYWN0b3J5LnNhZmFyaSgpIGFzIHNhZmFyaToKICAgICAgICAgICAgIGdpdF9yZXBvID0gU3Rh
c2hSZXBvc2l0b3J5KCdodHRwczovL3t9Jy5mb3JtYXQoc2FmYXJpLnJlbW90ZSkpCi0gICAgICAg
ICAgICBjb21taXQxID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgnYmFlNWQxZTkwOTk5JykKLSAg
ICAgICAgICAgIGNvbW1pdDIgPSBnaXRfcmVwby5jb21taXRfZm9yX2lkKCdkOGJjZTI2ZmE2NWMn
KQorICAgICAgICAgICAgY29tbWl0MSA9IGdpdF9yZXBvLmNvbW1pdChoYXNoPSdiYWU1ZDFlOTA5
OTknKQorICAgICAgICAgICAgY29tbWl0MiA9IGdpdF9yZXBvLmNvbW1pdChoYXNoPSdkOGJjZTI2
ZmE2NWMnKQogCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdDEudGltZXN0YW1w
LCBjb21taXQyLnRpbWVzdGFtcCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29t
bWl0MS51dWlkLCBjb21taXQyLnV1aWQpCkBAIC02Nyw2ICs3NSw2IEBAIGNsYXNzIFJlcG9zaXRv
cnlUZXN0KFdhaXRGb3JEb2NrZXJUZXN0Q2EKICAgICBkZWYgdGVzdF9icmFuY2hfc3Rhc2goc2Vs
Zik6CiAgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSBhcyBzYWZhcmk6CiAg
ICAgICAgICAgICBnaXRfcmVwbyA9IFN0YXNoUmVwb3NpdG9yeSgnaHR0cHM6Ly97fScuZm9ybWF0
KHNhZmFyaS5yZW1vdGUpKQotICAgICAgICAgICAgY29tbWl0ID0gZ2l0X3JlcG8uY29tbWl0X2Zv
cl9pZCgnNjIxNjUyYWRkN2ZjJykKKyAgICAgICAgICAgIGNvbW1pdCA9IGdpdF9yZXBvLmNvbW1p
dChoYXNoPSc2MjE2NTJhZGQ3ZmMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21t
aXQudXVpZCwgMTYwMTY2NjAwMDAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21t
aXQuYnJhbmNoLCAnYnJhbmNoLWEnKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvY29tbWl0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbW1pdC5weQkocmV2aXNpb24g
Mjc0MzcwKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvY29tbWl0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNiArMTQ2LDI4IEBAIGNsYXNzIENv
bW1pdChvYmplY3QpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJ3t9JyBjYW5ub3Qg
YmUgY29udmVydGVkIHRvIGEgY29tbWl0IG9iamVjdCIuZm9ybWF0KGFyZykpCiAgICAgICAgIHJl
dHVybiBOb25lCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9qc29uKGNscywgZGF0
YSk6CisgICAgICAgIGRhdGEgPSBkYXRhIGlmIGlzaW5zdGFuY2UoZGF0YSwgZGljdCkgZWxzZSBq
c29uLmxvYWRzKGRhdGEpCisgICAgICAgIGhhc2hfZnJvbV9pZCA9IE5vbmUKKyAgICAgICAgcmV2
aXNpb25fZnJvbV9pZCA9IGNscy5fcGFyc2VfcmV2aXNpb24oZGF0YS5nZXQoJ2lkJykpCisgICAg
ICAgIGlmIG5vdCByZXZpc2lvbl9mcm9tX2lkOgorICAgICAgICAgICAgaGFzaF9mcm9tX2lkID0g
Y2xzLl9wYXJzZV9oYXNoKGRhdGEuZ2V0KCdpZCcpKQorICAgICAgICBwcmludCgne30gdnMge30n
LmZvcm1hdChoYXNoX2Zyb21faWQsIHJldmlzaW9uX2Zyb21faWQpKQorCisgICAgICAgIHJldHVy
biBjbHMoCisgICAgICAgICAgICByZXBvc2l0b3J5X2lkPWRhdGEuZ2V0KCdyZXBvc2l0b3J5X2lk
JyksCisgICAgICAgICAgICBicmFuY2g9ZGF0YS5nZXQoJ2JyYW5jaCcpLAorICAgICAgICAgICAg
aGFzaD1kYXRhLmdldCgnaGFzaCcsIGhhc2hfZnJvbV9pZCksCisgICAgICAgICAgICByZXZpc2lv
bj1kYXRhLmdldCgncmV2aXNpb24nLCByZXZpc2lvbl9mcm9tX2lkKSwKKyAgICAgICAgICAgIHRp
bWVzdGFtcD1kYXRhLmdldCgndGltZXN0YW1wJyksCisgICAgICAgICAgICBpZGVudGlmaWVyPWRh
dGEuZ2V0KCdpZGVudGlmaWVyJyksCisgICAgICAgICAgICBicmFuY2hfcG9pbnQ9ZGF0YS5nZXQo
J2JyYW5jaF9wb2ludCcpLAorICAgICAgICAgICAgb3JkZXI9ZGF0YS5nZXQoJ29yZGVyJyksCisg
ICAgICAgICAgICBhdXRob3I9ZGF0YS5nZXQoJ2F1dGhvcicsIGRhdGEuZ2V0KCdjb21taXR0ZXIn
KSksCisgICAgICAgICAgICBtZXNzYWdlPWRhdGEuZ2V0KCdtZXNzYWdlJyksCisgICAgICAgICkK
KwogICAgIGRlZiBfX2luaXRfXygKICAgICAgICAgc2VsZiwKICAgICAgICAgaGFzaD1Ob25lLApA
QCAtMTg0LDE2ICsyMDYsMjIgQEAgY2xhc3MgQ29tbWl0KG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgKSwKICAgICAgICAgICAgICkKIAorICAgICAgICBpZiBpc2luc3RhbmNlKHRpbWVzdGFtcCwg
c2l4LnN0cmluZ190eXBlcykgYW5kIHRpbWVzdGFtcC5pc2RpZ2l0KCk6CisgICAgICAgICAgICB0
aW1lc3RhbXAgPSBpbnQodGltZXN0YW1wKQogICAgICAgICBpZiB0aW1lc3RhbXAgYW5kIG5vdCBp
c2luc3RhbmNlKHRpbWVzdGFtcCwgaW50KToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigi
RXhwZWN0ZWQgJ3RpbWVzdGFtcCcgdG8gYmUgb2YgdHlwZSBpbnQsIGdvdCAne30nIi5mb3JtYXQo
dGltZXN0YW1wKSkKICAgICAgICAgc2VsZi50aW1lc3RhbXAgPSB0aW1lc3RhbXAKIAorICAgICAg
ICBpZiBpc2luc3RhbmNlKG9yZGVyLCBzaXguc3RyaW5nX3R5cGVzKSBhbmQgb3JkZXIuaXNkaWdp
dCgpOgorICAgICAgICAgICAgb3JkZXIgPSBpbnQob3JkZXIpCiAgICAgICAgIGlmIG9yZGVyIGFu
ZCBub3QgaXNpbnN0YW5jZShvcmRlciwgaW50KToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJv
cigiRXhwZWN0ZWQgJ29yZGVyJyB0byBiZSBvZiB0eXBlIGludCwgZ290ICd7fSciLmZvcm1hdChv
cmRlcikpCiAgICAgICAgIHNlbGYub3JkZXIgPSBvcmRlciBvciAwCiAKICAgICAgICAgaWYgYXV0
aG9yIGFuZCBpc2luc3RhbmNlKGF1dGhvciwgZGljdCkgYW5kIGF1dGhvci5nZXQoJ25hbWUnKToK
ICAgICAgICAgICAgIHNlbGYuYXV0aG9yID0gQ29udHJpYnV0b3IoYXV0aG9yLmdldCgnbmFtZScp
LCBhdXRob3IuZ2V0KCdlbWFpbHMnKSkKKyAgICAgICAgZWxpZiBhdXRob3IgYW5kIGlzaW5zdGFu
Y2UoYXV0aG9yLCBzaXguc3RyaW5nX3R5cGVzKSBhbmQgJ0AnIGluIGF1dGhvcjoKKyAgICAgICAg
ICAgIHNlbGYuYXV0aG9yID0gQ29udHJpYnV0b3IoYXV0aG9yLCBhdXRob3IpCiAgICAgICAgIGVs
aWYgYXV0aG9yIGFuZCBub3QgaXNpbnN0YW5jZShhdXRob3IsIENvbnRyaWJ1dG9yKToKICAgICAg
ICAgICAgIHJhaXNlIFR5cGVFcnJvcigiRXhwZWN0ZWQgJ2F1dGhvcicgdG8gYmUgb2YgdHlwZSB7
fSwgZ290ICd7fSciLmZvcm1hdChDb250cmlidXRvciwgYXV0aG9yKSkKICAgICAgICAgZWxzZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423262</attachid>
            <date>2021-03-15 16:47:27 -0700</date>
            <delta_ts>2021-03-16 09:58:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223101-20210315164726.patch</filename>
            <type>text/plain</type>
            <size>39348</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3NDQ1MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU4IEBACisyMDIxLTAzLTE1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIFNhdmUgaWRlbnRpZmllcnMgaW4gY29tbWl0IHRh
YmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMx
MDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1MzM4MzM4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJvbGxlci5weToKKyAgICAg
ICAgKENvbW1pdENvbnRyb2xsZXIucmVnaXN0ZXIpOiBBY2NlcHQgdXBsb2FkZWQgbmV3IGNvbW1p
dCBvYmplY3RzLCBjb250aW51ZSB0byByZXR1cm4gb2xkLXN0eWxlIGNvbW1pdHMuCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91
cGxvYWRfY29udHJvbGxlci5weToKKyAgICAgICAgKFVwbG9hZENvbnRyb2xsZXIudXBsb2FkKTog
UmVnaXN0ZXIgY29tbWl0cyB1c2luZyB0aGUgZmFzdCBwYXRoIHdoZW4gdXBsb2FkaW5nIHJlc3Vs
dHMuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
Y29udHJvbGxlci91cGxvYWRfY29udHJvbGxlcl91bml0dGVzdC5weToKKyAgICAgICAgKFVwbG9h
ZENvbnRyb2xsZXJUZXN0LnRlc3RfcHJvY2Vzcyk6IE1vY2sgc2FmYXJpIGFuZCBXZWJLaXQgd2hl
biBwcm9jZXNzaW5nIHJlc3VsdHMuCisgICAgICAgIChVcGxvYWRDb250cm9sbGVyVGVzdC50ZXN0
X3Byb2Nlc3NfY29tbWl0KTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQucHk6CisgICAgICAgIChD
b21taXRDb250ZXh0LkNvbW1pdE1vZGVsTWsyKTogQWRkIG5ldyBzdHlsZSBjb21taXQgbW9kZWwg
YmFzZS4KKyAgICAgICAgKENvbW1pdENvbnRleHQuQ29tbWl0QnlSZWYpOiBTb3J0IGNvbW1pdHMg
YnkgaGFzaCwgcmV2aXNpb24gYW5kIGlkZW50aWZpZXIgcmVmZXJlbmNlcy4KKyAgICAgICAgKENv
bW1pdENvbnRleHQuQ29tbWl0QnlVdWlkQXNjZW5kaW5nTWsyKTogTmV3IGNvbW1pdCBzdHlsZSBV
VUlEIHRhYmxlLgorICAgICAgICAoQ29tbWl0Q29udGV4dC5Db21taXRCeVV1aWREZXNjZW5kaW5n
TWsyKTogRGl0dG8uCisgICAgICAgIChDb21taXRDb250ZXh0Ll9faW5pdF9fKTogQ3JlYXRlIG5l
dyB0YWJsZXMuCisgICAgICAgIChDb21taXRDb250ZXh0LmZpbmRfY29tbWl0c19ieV9yZWYpOiBT
ZWFyY2ggZm9yIGNvbW1pdHMgaW4gdGhlIG5ldyByZWYgdGFibGUuCisgICAgICAgIChDb21taXRD
b250ZXh0LnJlZ2lzdGVyKTogUG9zdC1wcm9jZXNzIGNvbW1pdHMgdG8gcG9wdWxhdGUgaWRlbnRp
ZmllciBmaWVsZC4KKyAgICAgICAgKENvbW1pdENvbnRleHQucmVnaXN0ZXJfY29tbWl0KTogT25s
eSByZWdpc3RlciBuZXctc3R5bGUgY29tbWl0cy4KKyAgICAgICAgKENvbW1pdENvbnRleHQucmVn
aXN0ZXJfcGFydGlhbF9jb21taXQpOiBSZWdpc3RlciBuZXctc3R5bGUgY29tbWl0cywgYWxsb3cg
Y2FsbGVyIHRvIG9wdC1vdXQgb2YgZXhwZW5zaXZlCisgICAgICAgIElkZW50aWZpZXIgY29tcHV0
YXRpb24uCisgICAgICAgIChDb21taXRDb250ZXh0LnVybCk6IEFjY2VwdCBvbGQgYW5kIG5ldyBz
dHlsZSBjb21taXRzLgorICAgICAgICAoQ29tbWl0Q29udGV4dC5yZWdpc3Rlcl9jb21taXRfd2l0
aF9yZXBvX2FuZF9pZCk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHRfdW5pdHRlc3QucHk6Cisg
ICAgICAgIChDb21taXRDb250ZXh0VGVzdC5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UpOiBV
cGRhdGUgY29tbWl0IHJlZ2lzdHJhdGlvbiBjYWxsLgorICAgICAgICAoQ29tbWl0Q29udGV4dFRl
c3QudGVzdF9jb21taXRfZnJvbV9zdGFzaF9yZXBvKTogRGl0dG8uCisgICAgICAgIChDb21taXRD
b250ZXh0VGVzdC50ZXN0X2NvbW1pdF9mcm9tX3N2bl9yZXBvKTogRGl0dG8uCisgICAgICAgICog
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9ja19tb2Rl
bF9mYWN0b3J5LnB5OgorICAgICAgICAoTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUpOiBVcGRhdGUg
Y29tbWl0IHJlZ2lzdHJhdGlvbiBjYWxsLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsLnB5OgorICAgICAgICAoTW9kZWwuX19p
bml0X18pOiBjb21taXRfY29udGV4dCBtYXkgbm93IHBvc3QtcHJvY2VzcyB1cGxvYWRzLgorICAg
ICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3Jl
cG9zaXRvcnkucHk6CisgICAgICAgIChSZXBvc2l0b3J5LmNvbW1pdCk6IEFkZCBjYWxsIHRvIHJl
dHVybiBuZXctc3R5bGUgY29tbWl0cy4KKyAgICAgICAgKFN0YXNoUmVwb3NpdG9yeS5jb21taXQp
OiBEaXR0by4KKyAgICAgICAgKFdlYktpdFJlcG9zaXRvcnkuY29tbWl0KTogRGl0dG8uCisgICAg
ICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVw
b3NpdG9yeV91bml0dGVzdC5weToKKyAgICAgICAgKFJlcG9zaXRvcnlUZXN0LnRlc3Rfc3ZuKToK
KyAgICAgICAgKFJlcG9zaXRvcnlUZXN0LnRlc3RfcmVmX3N2bik6CisgICAgICAgIChSZXBvc2l0
b3J5VGVzdC50ZXN0X3N0YXNoKToKKyAgICAgICAgKFJlcG9zaXRvcnlUZXN0LnRlc3RfcmVmX3N0
YXNoKToKKyAgICAgICAgKFJlcG9zaXRvcnlUZXN0LnRlc3RfY29sbGlkaW5nX3RpbWVzdGFtcHNf
c3Rhc2gpOgorICAgICAgICAoUmVwb3NpdG9yeVRlc3QudGVzdF9icmFuY2hfc3Rhc2gpOgorICAg
ICAgICAoUmVwb3NpdG9yeVRlc3QudGVzdF9icmFuY2hfc3ZuKTogRGVsZXRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC91cGxvYWRf
Y29udGV4dF91bml0dGVzdC5weToKKyAgICAgICAgKFVwbG9hZENvbnRleHRUZXN0LnRlc3RfY2Fs
bGJhY2spOgorICAgICAgICAoVXBsb2FkQ29udGV4dFRlc3QudGVzdF9hc3luY19jYWxsYmFjayk6
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvY29t
bWl0LnB5OgorICAgICAgICAoQ29tbWl0KToKKyAgICAgICAgKENvbW1pdC5mcm9tX2pzb24pOiBE
ZWNvZGUgcmVzdWx0c2RicHkgc3R5bGVkIGNvbW1pdCBqc29uLgorCiAyMDIxLTAzLTE1ICBBYWth
c2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWxldGUgdW51c2Vk
IGJ1aWxkLWxhdW5jaGVyLWRtZyBzY3JpcHQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xsZXIucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJvbGxlci5weQkocmV2aXNpb24gMjc0NDQxKQor
KysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJv
bGxlci9jb21taXRfY29udHJvbGxlci5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAK
LSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw3IEBAIGZyb20gY29sbGVj
dGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiBmcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwganNvbmlm
eSwgcmVxdWVzdAogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29t
bWl0CiBmcm9tIHdlYmtpdGZsYXNrcHkudXRpbCBpbXBvcnQgQXNzZXJ0UmVxdWVzdCwgcXVlcnlf
YXNfa3dhcmdzLCBsaW1pdF9mb3JfcXVlcnkKLWZyb20gd2Via2l0c2NtcHkgaW1wb3J0IFNjbUJh
c2UKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IFNjbUJhc2UsIENvbW1pdCBhcyBTY21Db21taXQK
IAogCiBkZWYgX2ZpbmRfY29tcGFyaXNvbihjb21taXRfY29udGV4dCwgcmVwb3NpdG9yeV9pZCwg
YnJhbmNoLCBpZCwgdXVpZCwgdGltZXN0YW1wLCBwcmlvcml0eT1taW4pOgpAQCAtMjU4LDcgKzI1
OCw3IEBAIGNsYXNzIENvbW1pdENvbnRyb2xsZXIoSGFzQ29tbWl0Q29udGV4dCkKICAgICAgICAg
ICAgIGNvbW1pdCA9IHNlbGYuY29tbWl0X2NvbnRleHQucHJldmlvdXNfY29tbWl0KGNvbW1pdHNb
MF0pCiAgICAgICAgICAgICByZXR1cm4ganNvbmlmeShDb21taXQuRW5jb2RlcigpLmRlZmF1bHQo
W2NvbW1pdF0gaWYgY29tbWl0IGVsc2UgW10pKQogCi0gICAgZGVmIHJlZ2lzdGVyKHNlbGYsIGNv
bW1pdD1Ob25lKToKKyAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgY29tbWl0PU5vbmUsIGZhc3Q9VHJ1
ZSk6CiAgICAgICAgIGlzX2VuZHBvaW50ID0gbm90IGJvb2woY29tbWl0KQogICAgICAgICBpZiBp
c19lbmRwb2ludDoKICAgICAgICAgICAgIEFzc2VydFJlcXVlc3QuaXNfdHlwZShbJ1BPU1QnXSkK
QEAgLTI3MywzNSArMjczLDYwIEBAIGNsYXNzIENvbW1pdENvbnRyb2xsZXIoSGFzQ29tbWl0Q29u
dGV4dCkKICAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdFeHBlY3RlZCB1
cGxvYWRlZCBkYXRhIHRvIGJlIGpzb24nKQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNl
bGYuY29tbWl0X2NvbnRleHQucmVnaXN0ZXJfY29tbWl0KENvbW1pdC5mcm9tX2pzb24oY29tbWl0
KSkKLSAgICAgICAgICAgIGlmIGlzX2VuZHBvaW50OgotICAgICAgICAgICAgICAgIHJldHVybiBq
c29uaWZ5KHsnc3RhdHVzJzogJ29rJ30pCi0gICAgICAgICAgICByZXR1cm4gQ29tbWl0LmZyb21f
anNvbihjb21taXQpCisgICAgICAgICAgICBjYW5kaWRhdGUgPSBTY21Db21taXQuZnJvbV9qc29u
KGNvbW1pdCkKKworICAgICAgICAgICAgIyBDb21taXQgbmVlZHMgdG8gYmUgc3VmZmljaWVudGx5
IGRlZmluZWQKKyAgICAgICAgICAgIGlmIGNhbmRpZGF0ZS5yZXBvc2l0b3J5X2lkIGFuZCBjYW5k
aWRhdGUuYnJhbmNoIGFuZCBjYW5kaWRhdGUudGltZXN0YW1wIGFuZCAoY2FuZGlkYXRlLnJldmlz
aW9uIG9yIGNhbmRpZGF0ZS5oYXNoKToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbW1pdF9jb250
ZXh0LnJlZ2lzdGVyX2NvbW1pdChjYW5kaWRhdGUpCisgICAgICAgICAgICAgICAgaWYgaXNfZW5k
cG9pbnQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KHsnc3RhdHVzJzogJ29r
J30pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZQogICAgICAgICBleGNlcHQgVmFs
dWVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICByZXF1aXJlZF9hcmdzID0gWydy
ZXBvc2l0b3J5X2lkJywgJ2lkJ10KLSAgICAgICAgb3B0aW9uYWxfYXJncyA9IFsnYnJhbmNoJ10K
KyAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsncmVwb3NpdG9yeV9pZCddCiAgICAgICAgIGZvciBh
cmcgaW4gcmVxdWlyZWRfYXJnczoKICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gY29tbWl0Ogog
ICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249ZiIne2FyZ30nIHJlcXVpcmVk
IHRvIGRlZmluZSBjb21taXQiKQogCisgICAgICAgIGhhc19yZWYgPSBGYWxzZQorICAgICAgICBv
bmVfb2ZfYXJncyA9IFsnaWQnLCAncmVmJywgJ2hhc2gnLCAncmV2aXNpb24nLCAnaWRlbnRpZmll
ciddCisgICAgICAgIGZvciBhcmcgaW4gb25lX29mX2FyZ3M6CisgICAgICAgICAgICBpZiBhcmcg
aW4gY29tbWl0OgorICAgICAgICAgICAgICAgIGlmIGhhc19yZWY6CisgICAgICAgICAgICAgICAg
ICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J011bHRpcGxlIGNvbW1pdCByZWZlcmVuY2VzIHNw
ZWNpZmllZCcpCisgICAgICAgICAgICAgICAgaGFzX3JlZiA9IFRydWUKKyAgICAgICAgaWYgbm90
IGhhc19yZWY6CisgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdObyBjb21taXQg
cmVmZXJlbmNlIHNwZWNpZmllZCcpCisKKwogICAgICAgICBmb3IgYXJnIGluIGNvbW1pdC5rZXlz
KCk6Ci0gICAgICAgICAgICBpZiBhcmcgaW4gcmVxdWlyZWRfYXJncyArIG9wdGlvbmFsX2FyZ3M6
CisgICAgICAgICAgICBpZiBhcmcgaW4gcmVxdWlyZWRfYXJncyBvciBhcmcgaW4gb25lX29mX2Fy
Z3M6CiAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGFyZyBpbiBbJ3Rp
bWVzdGFtcCcsICdvcmRlcicsICdjb21taXR0ZXInLCAnbWVzc2FnZSddOgorICAgICAgICAgICAg
aWYgYXJnIGluIFsnYnJhbmNoJywgJ3RpbWVzdGFtcCcsICdvcmRlcicsICdjb21taXR0ZXInLCAn
bWVzc2FnZSddOgogICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vdCBl
bm91Z2ggYXJndW1lbnRzIHByb3ZpZGVkIHRvIGRlZmluZSBhIGNvbW1pdCwgYnV0IHRvbyBtYW55
IHRvIHNlYXJjaCBmb3IgYSBjb21taXQnKQogICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlw
dGlvbj1mIid7YXJnfScgaXMgbm90IHZhbGlkIGZvciBkZWZpbmluZyBjb21taXRzIikKIAogICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBjb21taXQgPSBzZWxmLmNvbW1pdF9jb250ZXh0LnJlZ2lz
dGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKAorICAgICAgICAgICAgY29tbWl0ID0gc2VsZi5j
b21taXRfY29udGV4dC5yZWdpc3Rlcl9wYXJ0aWFsX2NvbW1pdCgKICAgICAgICAgICAgICAgICBy
ZXBvc2l0b3J5X2lkPWNvbW1pdC5nZXQoJ3JlcG9zaXRvcnlfaWQnKSwKLSAgICAgICAgICAgICAg
ICBicmFuY2g9Y29tbWl0LmdldCgnYnJhbmNoJyksCi0gICAgICAgICAgICAgICAgY29tbWl0X2lk
PWNvbW1pdC5nZXQoJ2lkJyksCisgICAgICAgICAgICAgICAgcmVmPWNvbW1pdC5nZXQoJ2lkJykg
b3IgY29tbWl0LmdldCgncmVmJyksCisgICAgICAgICAgICAgICAgaGFzaD1jb21taXQuZ2V0KCdo
YXNoJyksCisgICAgICAgICAgICAgICAgcmV2aXNpb249Y29tbWl0LmdldCgncmV2aXNpb24nKSwK
KyAgICAgICAgICAgICAgICBpZGVudGlmaWVyPWNvbW1pdC5nZXQoJ2lkZW50aWZpZXInKSwKKyAg
ICAgICAgICAgICAgICBmYXN0PWZhc3QsCiAgICAgICAgICAgICApCiAgICAgICAgIGV4Y2VwdCAo
UnVudGltZUVycm9yLCBTY21CYXNlLkV4Y2VwdGlvbikgYXMgZXJyb3I6CiAgICAgICAgICAgICBh
Ym9ydCg0MDQsIGRlc2NyaXB0aW9uPXN0cihlcnJvcikpCiAKICAgICAgICAgaWYgaXNfZW5kcG9p
bnQ6CiAgICAgICAgICAgICByZXR1cm4ganNvbmlmeSh7J3N0YXR1cyc6ICdvayd9KQotICAgICAg
ICByZXR1cm4gY29tbWl0CisgICAgICAgIHJldHVybiBDb21taXQoCisgICAgICAgICAgICByZXBv
c2l0b3J5X2lkPWNvbW1pdC5yZXBvc2l0b3J5X2lkLAorICAgICAgICAgICAgaWQ9Y29tbWl0LnJl
dmlzaW9uIG9yIGNvbW1pdC5oYXNoLAorICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5icmFuY2gs
CisgICAgICAgICAgICB0aW1lc3RhbXA9Y29tbWl0LnRpbWVzdGFtcCwKKyAgICAgICAgICAgIG9y
ZGVyPWNvbW1pdC5vcmRlciwKKyAgICAgICAgICAgIGNvbW1pdHRlcj1jb21taXQuYXV0aG9yLmVt
YWlsIGlmIGNvbW1pdC5hdXRob3IgZWxzZSBOb25lLAorICAgICAgICAgICAgbWVzc2FnZT1jb21t
aXQubWVzc2FnZSwKKyAgICAgICAgKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlci5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL3VwbG9hZF9jb250cm9sbGVyLnB5CShyZXZpc2lvbiAyNzQ0NDEpCisrKyBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVy
L3VwbG9hZF9jb250cm9sbGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAg
Y2xhc3MgVXBsb2FkQ29udHJvbGxlcihIYXNDb21taXRDb250ZXh0KQogICAgICAgICAgICAgaWYg
bm90IHN1aXRlOgogICAgICAgICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHRl
c3Qgc3VpdGUgc3BlY2lmaWVkJykKIAotICAgICAgICAgICAgY29tbWl0cyA9IFtzZWxmLmNvbW1p
dF9jb250cm9sbGVyLnJlZ2lzdGVyKGNvbW1pdD1jb21taXQpIGZvciBjb21taXQgaW4gZGF0YS5n
ZXQoJ2NvbW1pdHMnLCBbXSldCisgICAgICAgICAgICBjb21taXRzID0gW3NlbGYuY29tbWl0X2Nv
bnRyb2xsZXIucmVnaXN0ZXIoY29tbWl0PWNvbW1pdCwgZmFzdD1UcnVlKSBmb3IgY29tbWl0IGlu
IGRhdGEuZ2V0KCdjb21taXRzJywgW10pXQogCiAgICAgICAgICAgICB0ZXN0X3Jlc3VsdHMgPSBk
YXRhLmdldCgndGVzdF9yZXN1bHRzJywge30pCiAgICAgICAgICAgICBpZiBub3QgdGVzdF9yZXN1
bHRzOgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9s
bGVyL3VwbG9hZF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzQ0NDEpCisrKyBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVy
L3VwbG9hZF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsMTYg
KzE5OCwxOCBAQCBjbGFzcyBVcGxvYWRDb250cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNlCiAgICAg
QFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VT
dHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgQEZs
YXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKICAgICBkZWYgdGVzdF9wcm9jZXNzKHNl
bGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5wb3N0KHNl
bGYuVVJMICsgJy9hcGkvdXBsb2FkL3Byb2Nlc3M/cGxhdGZvcm09TWFjJnN0eWxlPVJlbGVhc2Um
Zmxhdm9yPXdrMicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2Nv
ZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4ocmVzcG9uc2UuanNvbigp
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbZGljdChzdGF0dXM9J29rJyldICogNSwgW2Vs
ZW1lbnRbJ3Byb2Nlc3NpbmcnXVsncHl0aG9uLXRlc3RzJ10gZm9yIGVsZW1lbnQgaW4gcmVzcG9u
c2UuanNvbigpXSkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2Nr
TW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQucG9z
dChzZWxmLlVSTCArICcvYXBpL3VwbG9hZC9wcm9jZXNzP3BsYXRmb3JtPU1hYyZzdHlsZT1SZWxl
YXNlJmZsYXZvcj13azInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5z
dGF0dXNfY29kZSwgMjAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4ocmVz
cG9uc2UuanNvbigpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2RpY3Qoc3RhdHVz
PSdvaycpXSAqIDUsIFtlbGVtZW50Wydwcm9jZXNzaW5nJ11bJ3B5dGhvbi10ZXN0cyddIGZvciBl
bGVtZW50IGluIHJlc3BvbnNlLmpzb24oKV0pCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3Nh
bmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93
ZWJzZXJ2ZXIoKQogICAgIGRlZiB0ZXN0X3Byb2Nlc3NfY29tbWl0KHNlbGYsIGNsaWVudCwgKipr
d2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkv
dXBsb2FkL3Byb2Nlc3M/cGxhdGZvcm09TWFjJnN0eWxlPVJlbGVhc2UmZmxhdm9yPXdrMiZpZD1k
OGJjZTI2ZmE2NWMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19j
b2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlc3BvbnNlLmpzb24o
KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3
YWJiNzdmNjlmYWI4MmZjJ10sIFtyZXN1bHRbJ2NvbW1pdHMnXVsxXVsnaWQnXSBmb3IgcmVzdWx0
IGluIHJlc3BvbnNlLmpzb24oKV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2RpY3Qoc3Rh
dHVzPSdvaycpXSwgW2VsZW1lbnRbJ3Byb2Nlc3NpbmcnXVsncHl0aG9uLXRlc3RzJ10gZm9yIGVs
ZW1lbnQgaW4gcmVzcG9uc2UuanNvbigpXSkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5
LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgcmVzcG9u
c2UgPSBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL3VwbG9hZC9wcm9jZXNzP3BsYXRmb3Jt
PU1hYyZzdHlsZT1SZWxlYXNlJmZsYXZvcj13azImaWQ9ZDhiY2UyNmZhNjVjJykKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFsnZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFi
ODJmYyddLCBbcmVzdWx0Wydjb21taXRzJ11bMV1bJ2lkJ10gZm9yIHJlc3VsdCBpbiByZXNwb25z
ZS5qc29uKCldKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbZGljdChzdGF0dXM9J29r
JyldLCBbZWxlbWVudFsncHJvY2Vzc2luZyddWydweXRob24tdGVzdHMnXSBmb3IgZWxlbWVudCBp
biByZXNwb25zZS5qc29uKCldKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29t
bWl0X2NvbnRleHQucHkJKHJldmlzaW9uIDI3NDQ0MSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMwLDcgKzMwLDcgQEAgZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gcmVzdWx0
c2RicHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAogZnJvbSByZXN1bHRzZGJweS5t
b2RlbC5yZXBvc2l0b3J5IGltcG9ydCBSZXBvc2l0b3J5CiAKLWZyb20gd2Via2l0c2NtcHkgaW1w
b3J0IFNjbUJhc2UKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IFNjbUJhc2UsIENvbW1pdCBhcyBT
Y21Db21taXQsIENvbnRyaWJ1dG9yCiAKIAogY2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgpA
QCAtNjUsNiArNjUsNDMgQEAgY2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgogICAgICAgICB1
dWlkID0gY29sdW1ucy5CaWdJbnQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSwgY2x1
c3RlcmluZ19vcmRlcj0nREVTQycpCiAgICAgICAgIGNvbW1pdF9pZCA9IGNvbHVtbnMuVGV4dChy
ZXF1aXJlZD1UcnVlKQogCisgICAgY2xhc3MgQ29tbWl0TW9kZWxNazIoTW9kZWwpOgorICAgICAg
ICByZXBvc2l0b3J5X2lkID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWly
ZWQ9VHJ1ZSkKKyAgICAgICAgcGVvcGxlID0gY29sdW1ucy5UZXh0KHJlcXVpcmVkPUZhbHNlKQor
ICAgICAgICBtZXNzYWdlID0gY29sdW1ucy5UZXh0KHJlcXVpcmVkPUZhbHNlKQorCisgICAgICAg
IGlkZW50aWZpZXIgPSBjb2x1bW5zLlRleHQocmVxdWlyZWQ9RmFsc2UpCisgICAgICAgIGhhc2gg
PSBjb2x1bW5zLlRleHQocmVxdWlyZWQ9RmFsc2UpCisgICAgICAgIHJldmlzaW9uID0gY29sdW1u
cy5JbnRlZ2VyKHJlcXVpcmVkPUZhbHNlKQorCisgICAgICAgIGRlZiB0b19jb21taXQoc2VsZik6
CisgICAgICAgICAgICByZXR1cm4gU2NtQ29tbWl0KAorICAgICAgICAgICAgICAgIHJlcG9zaXRv
cnlfaWQ9c2VsZi5yZXBvc2l0b3J5X2lkLCBicmFuY2g9c2VsZi5icmFuY2gsCisgICAgICAgICAg
ICAgICAgdGltZXN0YW1wPXNlbGYudXVpZCAvLyBDb21taXQuVElNRVNUQU1QX1RPX1VVSURfTVVM
VElQTElFUiwKKyAgICAgICAgICAgICAgICBvcmRlcj1zZWxmLnV1aWQgJSBDb21taXQuVElNRVNU
QU1QX1RPX1VVSURfTVVMVElQTElFUiwKKyAgICAgICAgICAgICAgICBhdXRob3I9c2VsZi5wZW9w
bGUuZ2V0KCdhdXRob3InKSBpZiBzZWxmLnBlb3BsZSBlbHNlIE5vbmUsCisgICAgICAgICAgICAg
ICAgbWVzc2FnZT1zZWxmLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1zZWxm
LmlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgaGFzaD1zZWxmLmhhc2gsCisgICAgICAgICAg
ICAgICAgcmV2aXNpb249c2VsZi5yZXZpc2lvbiwKKyAgICAgICAgICAgICkKKworICAgIGNsYXNz
IENvbW1pdEJ5UmVmKENvbW1pdE1vZGVsTWsyKToKKyAgICAgICAgX190YWJsZV9uYW1lX18gPSAn
Y29tbWl0c19yZWZfdG9fb2JqZWN0JworICAgICAgICByZWYgPSBjb2x1bW5zLlRleHQocHJpbWFy
eV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgdXVpZCA9IGNvbHVtbnMuQmlnSW50
KHJlcXVpcmVkPVRydWUpCisgICAgICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4dChyZXF1aXJlZD1U
cnVlKQorCisgICAgY2xhc3MgQ29tbWl0QnlVdWlkQXNjZW5kaW5nTWsyKENvbW1pdE1vZGVsTWsy
KToKKyAgICAgICAgX190YWJsZV9uYW1lX18gPSAnY29tbWl0c191dWlkX3RvX29iamVjdF9hc2Nl
bmRpbmcnCisgICAgICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUs
IHJlcXVpcmVkPVRydWUpCisgICAgICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tl
eT1UcnVlLCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29yZGVyPSdBU0MnKQorCisgICAgY2xh
c3MgQ29tbWl0QnlVdWlkRGVzY2VuZGluZ01rMihDb21taXRNb2RlbE1rMik6CisgICAgICAgIF9f
dGFibGVfbmFtZV9fID0gJ2NvbW1pdHNfdXVpZF90b19vYmplY3RfZGVzY2VuZGluZycKKyAgICAg
ICAgYnJhbmNoID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1
ZSkKKyAgICAgICAgdXVpZCA9IGNvbHVtbnMuQmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVp
cmVkPVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQorCiAgICAgY2xhc3MgQnJhbmNoZXMo
TW9kZWwpOgogICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdjb21taXRfYnJhbmNoZXMnCiAgICAg
ICAgIHJlcG9zaXRvcnlfaWQgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1
aXJlZD1UcnVlKQpAQCAtODAsMTIgKzExNywxNCBAQCBjbGFzcyBDb21taXRDb250ZXh0KG9iamVj
dCk6CiAgICAgICAgIHNlbGYuY2Fzc2FuZHJhID0gY2Fzc2FuZHJhCiAgICAgICAgIHNlbGYucmVw
b3NpdG9yaWVzID0ge30KICAgICAgICAgc2VsZi5jYWNoZV90aW1lb3V0ID0gY2FjaGVfdGltZW91
dAorICAgICAgICBzZWxmLm5hbWUgPSAnY29tbWl0LWlkZW50aWZpZXJzJwogCiAgICAgICAgIHdp
dGggc2VsZjoKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLkNv
bW1pdEJ5SUQpCi0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5D
b21taXRCeVV1aWRBc2NlbmRpbmcpCi0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVf
dGFibGUoc2VsZi5Db21taXRCeVV1aWREZXNjZW5kaW5nKQotICAgICAgICAgICAgc2VsZi5jYXNz
YW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYuQnJhbmNoZXMpCisgICAgICAgICAgICBmb3Igb2xkIGlu
IFtzZWxmLkNvbW1pdEJ5SUQsIHNlbGYuQ29tbWl0QnlVdWlkQXNjZW5kaW5nLCBzZWxmLkNvbW1p
dEJ5VXVpZERlc2NlbmRpbmddOgorICAgICAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0
ZV90YWJsZShvbGQpCisKKyAgICAgICAgICAgIGZvciB0YWJsZSBpbiBbc2VsZi5Db21taXRCeVJl
Ziwgc2VsZi5Db21taXRCeVV1aWRBc2NlbmRpbmdNazIsIHNlbGYuQ29tbWl0QnlVdWlkRGVzY2Vu
ZGluZ01rMiwgc2VsZi5CcmFuY2hlc106CisgICAgICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEu
Y3JlYXRlX3RhYmxlKHRhYmxlKQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICAg
c2VsZi5jYXNzYW5kcmEuX19lbnRlcl9fKCkKQEAgLTE2OSw2ICsyMDgsMjIgQEAgY2xhc3MgQ29t
bWl0Q29udGV4dChvYmplY3QpOgogICAgICAgICAgICAgY2FsbGJhY2ssCiAgICAgICAgICkKIAor
ICAgIGRlZiBmaW5kX2NvbW1pdHNfYnlfcmVmKHNlbGYsIHJlcG9zaXRvcnlfaWQsIHJlZiwgbGlt
aXQ9MTAwKToKKyAgICAgICAgIyBGSVhNRTogU2hvdWxkIHVzZSB0aGUgcmVkaXMgY2FjaGUsIGJ1
dCB0aGUgcmVkaXMgY2FjaGUgZG9lc24ndCBzdXBwb3J0IG5ldy1zdHlsZSBjb21taXRzIHlldAor
ICAgICAgICB3aXRoIHNlbGY6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJlZiwgaW50KSBv
ciByZWYuaXNkaWdpdCgpOgorICAgICAgICAgICAgICAgIHJldHVybiBbbW9kZWwudG9fY29tbWl0
KCkgZm9yIG1vZGVsIGluIHNlbGYuY2Fzc2FuZHJhLnNlbGVjdF9mcm9tX3RhYmxlKAorICAgICAg
ICAgICAgICAgICAgICBzZWxmLkNvbW1pdEJ5UmVmLl9fdGFibGVfbmFtZV9fLCBsaW1pdD1saW1p
dCwKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXBvc2l0b3J5X2lkLCByZWY9
J3J7fScuZm9ybWF0KHJlZiksCisgICAgICAgICAgICAgICAgKV0KKworICAgICAgICAgICAgIyBG
SVhNRTogU0FTSSBpbmRlY2llcyBhcmUgdGhlIGNhbm9pY2FsIHdheSB0byBzb2x2ZSB0aGlzIHBy
b2JsZW0sIGJ1dCByZXF1aXJlIENhc3NhbmRyYSAzLjQgd2hpY2gKKyAgICAgICAgICAgICMgaGFz
bid0IGJlZW4gZGVwbG95ZWQgdG8gb3VyIGRhdGFjZW50ZXJzIHlldC4gVGhpcyB3b3JrcyBmb3Ig
Y29tbWl0cywgYnV0IGlzIGxlc3MgdHJhbnNwYXJlbnQuCisgICAgICAgICAgICByZXR1cm4gW21v
ZGVsLnRvX2NvbW1pdCgpIGZvciBtb2RlbCBpbiBzZWxmLmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90
YWJsZSgKKyAgICAgICAgICAgICAgICBzZWxmLkNvbW1pdEJ5UmVmLl9fdGFibGVfbmFtZV9fLCBs
aW1pdD1saW1pdCwKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJlcG9zaXRvcnlfaWQs
IHJlZl9fZ3RlPXJlZi5sb3dlcigpLCByZWZfX2x0ZT0ocmVmLmxvd2VyKCkgKyAnZycpLAorICAg
ICAgICAgICAgKV0KKwogICAgIGRlZiBmaW5kX2NvbW1pdHNfYnlfdXVpZChzZWxmLCByZXBvc2l0
b3J5X2lkLCBicmFuY2gsIHV1aWQsIGxpbWl0PTEwMCk6CiAgICAgICAgIGlmIGJyYW5jaCBpcyBO
b25lOgogICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9p
ZF0uZGVmYXVsdF9icmFuY2gKQEAgLTI5OCw0NyArMzUzLDEwMSBAQCBjbGFzcyBDb21taXRDb250
ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5CcmFuY2hlcy5fX3RhYmxlX25hbWVf
XywgbGltaXQ9bGltaXQsIHJlcG9zaXRvcnlfaWQ9cmVwb3NpdG9yeV9pZCwKICAgICAgICAgICAg
ICldCiAKKyAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgY29uZmlndXJhdGlvbiwgY29tbWl0cywgc3Vp
dGUsIHRlc3RfcmVzdWx0cywgdGltZXN0YW1wPU5vbmUpOgorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBmb3IgY29tbWl0IGluIGNvbW1pdHM6CisgICAgICAgICAgICAgICAgc2VsZi5yZWdpc3Rl
cl9wYXJ0aWFsX2NvbW1pdCgKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1jb21t
aXQucmVwb3NpdG9yeV9pZCwKKyAgICAgICAgICAgICAgICAgICAgcmVmPWNvbW1pdC5pZCwKKyAg
ICAgICAgICAgICAgICAgICAgcmV2aXNpb249Y29tbWl0LnJldmlzaW9uLAorICAgICAgICAgICAg
ICAgICAgICBoYXNoPWNvbW1pdC5oYXNoLAorICAgICAgICAgICAgICAgICAgICBmYXN0PUZhbHNl
LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg
ICAgICAgICAgcmV0dXJuIGRpY3QoCisgICAgICAgICAgICAgICAgc3RhdHVzPSdlcnJvcicsCisg
ICAgICAgICAgICAgICAgZGVzY3JpcHRpb249c3RyKGUpLAorICAgICAgICAgICAgKQorCisgICAg
ICAgIHJldHVybiBkaWN0KHN0YXR1cz0nb2snKQorCiAgICAgZGVmIHJlZ2lzdGVyX2NvbW1pdChz
ZWxmLCBjb21taXQpOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb21taXQsIENvbW1pdCk6
Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtDb21taXR9LCBn
b3Qge3R5cGUoY29tbWl0KX0nKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb21taXQsIFNj
bUNvbW1pdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtT
Y21Db21taXR9LCBnb3Qge3R5cGUoY29tbWl0KX0nKQogCiAgICAgICAgIHdpdGggc2VsZjoKICAg
ICAgICAgICAgIGlmIGNvbW1pdC5yZXBvc2l0b3J5X2lkIG5vdCBpbiBzZWxmLnJlcG9zaXRvcmll
czoKICAgICAgICAgICAgICAgICBzZWxmLnJlcG9zaXRvcmllc1tjb21taXQucmVwb3NpdG9yeV9p
ZF0gPSBSZXBvc2l0b3J5KGtleT1jb21taXQucmVwb3NpdG9yeV9pZCkKIAotICAgICAgICAgICAg
Zm9yIHRhYmxlIGluIFtzZWxmLkNvbW1pdEJ5SUQsIHNlbGYuQ29tbWl0QnlVdWlkQXNjZW5kaW5n
LCBzZWxmLkNvbW1pdEJ5VXVpZERlc2NlbmRpbmddOgorICAgICAgICAgICAgZm9yIG9sZCBpbiBb
c2VsZi5Db21taXRCeUlELCBzZWxmLkNvbW1pdEJ5VXVpZEFzY2VuZGluZywgc2VsZi5Db21taXRC
eVV1aWREZXNjZW5kaW5nXToKKyAgICAgICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5pbnNlcnRf
cm93KAorICAgICAgICAgICAgICAgICAgICBvbGQuX190YWJsZV9uYW1lX18sCisgICAgICAgICAg
ICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9Y29tbWl0LnJlcG9zaXRvcnlfaWQsCisgICAgICAgICAg
ICAgICAgICAgIGJyYW5jaD1jb21taXQuYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICBjb21t
aXRfaWQ9c3RyKGNvbW1pdC5yZXZpc2lvbikubG93ZXIoKSBpZiBjb21taXQucmV2aXNpb24gZWxz
ZSBjb21taXQuaGFzaCwKKyAgICAgICAgICAgICAgICAgICAgdXVpZD1jb21taXQudXVpZCwKKyAg
ICAgICAgICAgICAgICAgICAgY29tbWl0dGVyPWNvbW1pdC5hdXRob3IuZW1haWwgaWYgY29tbWl0
LmF1dGhvciBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9Y29tbWl0Lm1l
c3NhZ2UsCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBmb3IgdGFibGUgaW4gW3Nl
bGYuQ29tbWl0QnlVdWlkQXNjZW5kaW5nTWsyLCBzZWxmLkNvbW1pdEJ5VXVpZERlc2NlbmRpbmdN
azIsIHNlbGYuQnJhbmNoZXNdOgogICAgICAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmluc2Vy
dF9yb3coCiAgICAgICAgICAgICAgICAgICAgIHRhYmxlLl9fdGFibGVfbmFtZV9fLAotICAgICAg
ICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPWNvbW1pdC5yZXBvc2l0b3J5X2lkLCBicmFuY2g9
Y29tbWl0LmJyYW5jaCwKLSAgICAgICAgICAgICAgICAgICAgY29tbWl0X2lkPXN0cihjb21taXQu
aWQpLmxvd2VyKCksIHV1aWQ9Y29tbWl0LnV1aWQsCi0gICAgICAgICAgICAgICAgICAgIGNvbW1p
dHRlcj1jb21taXQuY29tbWl0dGVyLCBtZXNzYWdlPWNvbW1pdC5tZXNzYWdlLAorICAgICAgICAg
ICAgICAgICAgICByZXBvc2l0b3J5X2lkPWNvbW1pdC5yZXBvc2l0b3J5X2lkLAorICAgICAgICAg
ICAgICAgICAgICBicmFuY2g9Y29tbWl0LmJyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgcmV2
aXNpb249Y29tbWl0LnJldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICBoYXNoPWNvbW1pdC5o
YXNoLAorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyPXN0cihjb21taXQpIGlmIGNvbW1p
dC5pZGVudGlmaWVyIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgdXVpZD1jb21taXQu
dXVpZCwKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0dGVyPWpzb24uZHVtcHMoY29tbWl0LmF1
dGhvciwgY2xzPUNvbnRyaWJ1dG9yLkVuY29kZXIpIGlmIGNvbW1pdC5hdXRob3IgZWxzZSBOb25l
LAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPWNvbW1pdC5tZXNzYWdlLAorICAgICAgICAg
ICAgICAgICkKKworICAgICAgICAgICAgZm9yIGtleSwgcmVmX2dlbiBpbiAoCisgICAgICAgICAg
ICAgICAgKCdyZXZpc2lvbicsIGxhbWJkYSBjb21taXQ6ICdye30nLmZvcm1hdChjb21taXQucmV2
aXNpb24pKSwKKyAgICAgICAgICAgICAgICAoJ2hhc2gnLCBsYW1iZGEgY29tbWl0OiBjb21taXQu
aGFzaCksCisgICAgICAgICAgICAgICAgKCdpZGVudGlmaWVyJywgc3RyKSwKKyAgICAgICAgICAg
ICk6CisgICAgICAgICAgICAgICAgaWYgbm90IGdldGF0dHIoY29tbWl0LCBrZXkpOgorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEu
aW5zZXJ0X3JvdygKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5Db21taXRCeVJlZi5fX3RhYmxl
X25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgcmVmPXJlZl9nZW4oY29tbWl0KSwKKyAgICAg
ICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1jb21taXQucmVwb3NpdG9yeV9pZCwKKyAgICAg
ICAgICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5icmFuY2gsCisgICAgICAgICAgICAgICAgICAg
IHJldmlzaW9uPWNvbW1pdC5yZXZpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgaGFzaD1jb21t
aXQuaGFzaCwKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1zdHIoY29tbWl0KSBpZiBj
b21taXQuaWRlbnRpZmllciBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAgIHV1aWQ9Y29t
bWl0LnV1aWQsCisgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlcj1qc29uLmR1bXBzKGNvbW1p
dC5hdXRob3IsIGNscz1Db250cmlidXRvci5FbmNvZGVyKSBpZiBjb21taXQuYXV0aG9yIGVsc2Ug
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1jb21taXQubWVzc2FnZSwKICAgICAg
ICAgICAgICAgICApCisKICAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmluc2VydF9yb3coCiAg
ICAgICAgICAgICAgICAgc2VsZi5CcmFuY2hlcy5fX3RhYmxlX25hbWVfXywKICAgICAgICAgICAg
ICAgICByZXBvc2l0b3J5X2lkPWNvbW1pdC5yZXBvc2l0b3J5X2lkLCBicmFuY2g9Y29tbWl0LmJy
YW5jaCwKICAgICAgICAgICAgICkKICAgICAgICAgICAgIHJldHVybiBjb21taXQKIAotICAgIGRl
ZiByZWdpc3Rlcl9jb21taXRfd2l0aF9yZXBvX2FuZF9pZChzZWxmLCByZXBvc2l0b3J5X2lkLCBi
cmFuY2gsIGNvbW1pdF9pZCk6Ci0gICAgICAgIGlmIGJyYW5jaCBpcyBOb25lOgotICAgICAgICAg
ICAgYnJhbmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uZGVmYXVsdF9icmFu
Y2gKKyAgICBkZWYgcmVnaXN0ZXJfcGFydGlhbF9jb21taXQoc2VsZiwgcmVwb3NpdG9yeV9pZCwg
cmVmPU5vbmUsIHJldmlzaW9uPU5vbmUsIGhhc2g9Tm9uZSwgaWRlbnRpZmllcj1Ob25lLCBmYXN0
PVRydWUpOgogICAgICAgICBpZiByZXBvc2l0b3J5X2lkIG5vdCBpbiBzZWxmLnJlcG9zaXRvcmll
czoKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigne30gaXMgbm90IGEgcmVjb2duaXpl
ZCByZXBvc2l0b3J5JykKIAogICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICBjb21taXRz
ID0gc2VsZi5maW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9yeV9pZD1yZXBvc2l0b3J5X2lkLCBi
cmFuY2g9YnJhbmNoLCBjb21taXRfaWQ9Y29tbWl0X2lkKQorICAgICAgICAgICAgY29tbWl0cyA9
IHNlbGYuZmluZF9jb21taXRzX2J5X3JlZihyZXBvc2l0b3J5X2lkPXJlcG9zaXRvcnlfaWQsIHJl
Zj1yZWYgb3IgcmV2aXNpb24gb3IgaGFzaCBvciBpZGVudGlmaWVyKQogICAgICAgICAgICAgaWYg
bGVuKGNvbW1pdHMpID4gMToKLSAgICAgICAgICAgICAgICByYWlzZSBTY21CYXNlLkV4Y2VwdGlv
bihmJ011bHRpcGxlIGNvbW1pdHMgd2l0aCB0aGUgaWQge2NvbW1pdF9pZH0gZXhpc3QgaW4ge3Jl
cG9zaXRvcnlfaWR9IG9uIHticmFuY2h9JykKLSAgICAgICAgICAgIGlmIGNvbW1pdHM6CisgICAg
ICAgICAgICAgICAgcmFpc2UgU2NtQmFzZS5FeGNlcHRpb24oZidNdWx0aXBsZSBjb21taXRzIHdp
dGggdGhlIGlkIHtyZWYgb3IgcmV2aXNpb24gb3IgaGFzaCBvciBpZGVudGlmaWVyfSBleGlzdCBp
biB7cmVwb3NpdG9yeV9pZH0nKQorICAgICAgICAgICAgaWYgY29tbWl0cyBhbmQgKGZhc3Qgb3Ig
Y29tbWl0c1swXS5pZGVudGlmaWVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gY29tbWl0c1sw
XQotICAgICAgICAgICAgY29tbWl0ID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0u
Y29tbWl0X2Zvcl9pZChjb21taXRfaWQpCisgICAgICAgICAgICBjb21taXQgPSBzZWxmLnJlcG9z
aXRvcmllc1tyZXBvc2l0b3J5X2lkXS5jb21taXQocmVmPXJlZiwgcmV2aXNpb249cmV2aXNpb24s
IGhhc2g9aGFzaCwgaWRlbnRpZmllcj1pZGVudGlmaWVyLCBmYXN0PWZhc3QpCiAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5yZWdpc3Rlcl9jb21taXQoY29tbWl0KQogCiAgICAgZGVmIHVybChzZWxm
LCBjb21taXQpOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb21taXQsIENvbW1pdCk6Cisg
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbW1pdCwgQ29tbWl0KSBhbmQgbm90IGlzaW5zdGFu
Y2UoY29tbWl0LCBTY21Db21taXQpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhw
ZWN0ZWQgdHlwZSB7Q29tbWl0fSwgZ290IHt0eXBlKGNvbW1pdCl9JykKIAogICAgICAgICByZXBv
ID0gc2VsZi5yZXBvc2l0b3JpZXMuZ2V0KGNvbW1pdC5yZXBvc2l0b3J5X2lkKQogICAgICAgICBp
ZiByZXBvOgotICAgICAgICAgICAgcmV0dXJuIHJlcG8udXJsX2Zvcl9jb21taXQoY29tbWl0Lmlk
KQorICAgICAgICAgICAgcmV0dXJuIHJlcG8udXJsX2Zvcl9jb21taXQoY29tbWl0LmlkIGlmIGlz
aW5zdGFuY2UoY29tbWl0LCBDb21taXQpIGVsc2UgY29tbWl0Lmhhc2ggb3IgY29tbWl0LnJldmlz
aW9uKQogICAgICAgICByZXR1cm4gTm9uZQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHRfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3NDQ0MSkK
KysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L2NvbW1pdF9jb250ZXh0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1Myw4
IEBAIGNsYXNzIENvbW1pdENvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXMKICAgICAgICAgICAg
ICAgICBmb3Iga2V5LCByZXBvc2l0b3J5IGluIGRpY3Qoc2FmYXJpPXNhZmFyaSwgd2Via2l0PXdl
YmtpdCkuaXRlbXMoKToKICAgICAgICAgICAgICAgICAgICAgZm9yIGJyYW5jaCwgY29tbWl0cyBp
biByZXBvc2l0b3J5LmNvbW1pdHMuaXRlbXMoKToKICAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciBjb21taXQgaW4gY29tbWl0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRh
dGFiYXNlLnJlZ2lzdGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrZXksIGJyYW5jaCwgY29tbWl0Lmhhc2ggb3IgY29tbWl0LnJldmlz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJf
cGFydGlhbF9jb21taXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwgcmVm
PWNvbW1pdC5oYXNoIG9yIGNvbW1pdC5yZXZpc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1v
Y2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29u
dGV4dCkKQEAgLTE4Myw3ICsxODMsNyBAQCBjbGFzcyBDb21taXRDb250ZXh0VGVzdChXYWl0Rm9y
RG9ja2VyVGVzCiAgICAgZGVmIHRlc3RfY29tbWl0X2Zyb21fc3Rhc2hfcmVwbyhzZWxmLCByZWRp
cz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgogICAgICAgICB3aXRo
IE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CiAg
ICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNz
YW5kcmEpCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbW1pdF93aXRoX3Jl
cG9fYW5kX2lkKCdzYWZhcmknLCAnbWFpbicsICdkOGJjZTI2ZmE2NWMnKQorICAgICAgICAgICAg
c2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9wYXJ0aWFsX2NvbW1pdCgnc2FmYXJpJywgaGFzaD0nZDhi
Y2UyNmZhNjVjJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAg
ICAgW3NlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdkOGJjZTI2ZmE2NWMn
KV0sCiAgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfaWQocmVw
b3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYWluJywgY29tbWl0X2lkPSdkOGJjZTI2ZmE2
NWMnKSwKQEAgLTE5Myw3ICsxOTMsNyBAQCBjbGFzcyBDb21taXRDb250ZXh0VGVzdChXYWl0Rm9y
RG9ja2VyVGVzCiAgICAgZGVmIHRlc3RfY29tbWl0X2Zyb21fc3ZuX3JlcG8oc2VsZiwgcmVkaXM9
U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKICAgICAgICAgd2l0aCBN
b2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgogICAg
ICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2Fu
ZHJhKQotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb21taXRfd2l0aF9yZXBv
X2FuZF9pZCgnd2Via2l0JywgJ3RydW5rJywgNikKKyAgICAgICAgICAgIHNlbGYuZGF0YWJhc2Uu
cmVnaXN0ZXJfcGFydGlhbF9jb21taXQoJ3dlYmtpdCcsIHJldmlzaW9uPTYpCiAgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIFtzZWxmLnN2bl9yZXBvc2l0b3J5
LmNvbW1pdF9mb3JfaWQoaWQ9NildLAogICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuZmlu
ZF9jb21taXRzX2J5X2lkKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0ndHJ1bmsnLCBj
b21taXRfaWQ9NiksCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9tb2RlbC9tb2NrX21vZGVsX2ZhY3RvcnkucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9ja19t
b2RlbF9mYWN0b3J5LnB5CShyZXZpc2lvbiAyNzQ0NDEpCisrKyBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9tb2NrX21vZGVsX2ZhY3RvcnkucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtOTIsOCArOTIsOCBAQCBjbGFzcyBNb2NrTW9kZWxGYWN0b3J5KG9iamVjdCk6CiAgICAg
ICAgICAgICAgICAgZm9yIGtleSwgcmVwb3NpdG9yeSBpbiBkaWN0KHNhZmFyaT1zYWZhcmksIHdl
YmtpdD13ZWJraXQpLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgICAgIGZvciBicmFuY2gsIGNv
bW1pdHMgaW4gcmVwb3NpdG9yeS5jb21taXRzLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgY29tbWl0IGluIGNvbW1pdHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bW9kZWwuY29tbWl0X2NvbnRleHQucmVnaXN0ZXJfY29tbWl0X3dpdGhfcmVwb19hbmRfaWQoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwgYnJhbmNoLCBjb21taXQuaGFzaCBv
ciBjb21taXQucmV2aXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwuY29t
bWl0X2NvbnRleHQucmVnaXN0ZXJfcGFydGlhbF9jb21taXQoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtleSwgaGFzaD1jb21taXQuaGFzaCwgcmV2aXNpb249Y29tbWl0LnJldmlz
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgcmV0dXJuIG1vZGVs
CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L21vZGVsL21vZGVsLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsLnB5CShyZXZpc2lvbiAyNzQ0NDEpCisr
KyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9t
b2RlbC5weQkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBjbGFzcyBNb2RlbChvYmpl
Y3QpOgogICAgICAgICAgICAgdHRsX3NlY29uZHM9c2VsZi5kZWZhdWx0X3R0bF9zZWNvbmRzLAog
ICAgICAgICApCiAKLSAgICAgICAgZm9yIGNvbnRleHQgaW4gW3NlbGYuY2lfY29udGV4dCwgc2Vs
Zi5mYWlsdXJlX2NvbnRleHQsIHNlbGYuc3VpdGVfY29udGV4dCwgc2VsZi50ZXN0X2NvbnRleHRd
OgorICAgICAgICBmb3IgY29udGV4dCBpbiBbc2VsZi5jaV9jb250ZXh0LCBzZWxmLmZhaWx1cmVf
Y29udGV4dCwgc2VsZi5zdWl0ZV9jb250ZXh0LCBzZWxmLnRlc3RfY29udGV4dCwgc2VsZi5jb21t
aXRfY29udGV4dF06CiAgICAgICAgICAgICBzZWxmLnVwbG9hZF9jb250ZXh0LnJlZ2lzdGVyX3Vw
bG9hZF9jYWxsYmFjayhjb250ZXh0Lm5hbWUsIGNvbnRleHQucmVnaXN0ZXIpCiAKICAgICAgICAg
c2VsZi5hcmNoaXZlX2NvbnRleHQgPSBBcmNoaXZlQ29udGV4dCgKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnkucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvcmVwb3NpdG9yeS5weQkocmV2aXNpb24gMjc0NDQxKQorKysgVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeS5w
eQkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOSBAQCBjbGFzcyBSZXBvc2l0b3J5KG9iamVj
dCk6CiAgICAgZGVmIGNvbW1pdF9mb3JfaWQoc2VsZiwgaWQpOgogICAgICAgICByYWlzZSBOb3RJ
bXBsZW1lbnRlZEVycm9yKCkKIAorICAgIGRlZiBjb21taXQoc2VsZiwgcmVmPU5vbmUsIHJldmlz
aW9uPU5vbmUsIGhhc2g9Tm9uZSwgaWRlbnRpZmllcj1Ob25lLCBmYXN0PVRydWUpOgorICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKKwogICAgIGRlZiB1cmxfZm9yX2NvbW1pdChz
ZWxmLCBjb21taXQpOgogICAgICAgICByZXR1cm4gTm9uZQogCkBAIC01OCw2ICs2MSwxMyBAQCBj
bGFzcyBTdGFzaFJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6CiAgICAgICAgICAgICBtZXNzYWdlPWNv
bW1pdC5tZXNzYWdlLAogICAgICAgICApCiAKKyAgICBkZWYgY29tbWl0KHNlbGYsIHJlZj1Ob25l
LCByZXZpc2lvbj1Ob25lLCBoYXNoPU5vbmUsIGlkZW50aWZpZXI9Tm9uZSwgZmFzdD1UcnVlKToK
KyAgICAgICAgaWYgaWRlbnRpZmllcjoKKyAgICAgICAgICAgIGZhc3QgPSBGYWxzZQorICAgICAg
ICBpZiByZWY6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZW1vdGUuZmluZChyZWYsIGluY2x1
ZGVfaWRlbnRpZmllcj1ub3QgZmFzdCkKKyAgICAgICAgcmV0dXJuIHNlbGYucmVtb3RlLmNvbW1p
dChyZXZpc2lvbj1yZXZpc2lvbiwgaGFzaD1oYXNoLCBpZGVudGlmaWVyPWlkZW50aWZpZXIsIGlu
Y2x1ZGVfaWRlbnRpZmllcj1ub3QgZmFzdCkKKwogICAgIGRlZiB1cmxfZm9yX2NvbW1pdChzZWxm
LCBjb21taXQpOgogICAgICAgICByZXR1cm4gZid7c2VsZi5yZW1vdGUudXJsfS9jb21taXRzL3tj
b21taXR9JwogCkBAIC04Myw1ICs5MywxNCBAQCBjbGFzcyBXZWJLaXRSZXBvc2l0b3J5KFJlcG9z
aXRvcnkpOgogICAgICAgICAgICAgbWVzc2FnZT1jb21taXQubWVzc2FnZSwKICAgICAgICAgKQog
CisgICAgZGVmIGNvbW1pdChzZWxmLCByZWY9Tm9uZSwgcmV2aXNpb249Tm9uZSwgaGFzaD1Ob25l
LCBpZGVudGlmaWVyPU5vbmUsIGZhc3Q9VHJ1ZSk6CisgICAgICAgIGlmIGlkZW50aWZpZXI6Cisg
ICAgICAgICAgICBmYXN0ID0gRmFsc2UKKyAgICAgICAgaWYgcmVmOgorICAgICAgICAgICAgaWYg
aXNpbnN0YW5jZShyZWYsIGludCkgb3IgcmVmLmlzZGlnaXQoKToKKyAgICAgICAgICAgICAgICBy
ZWYgPSAncnt9Jy5mb3JtYXQocmVmKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVtb3RlLmZp
bmQocmVmLCBpbmNsdWRlX2lkZW50aWZpZXI9bm90IGZhc3QpCisgICAgICAgIHJldHVybiBzZWxm
LnJlbW90ZS5jb21taXQocmV2aXNpb249cmV2aXNpb24sIGhhc2g9aGFzaCwgaWRlbnRpZmllcj1p
ZGVudGlmaWVyLCBpbmNsdWRlX2lkZW50aWZpZXI9bm90IGZhc3QpCisKICAgICBkZWYgdXJsX2Zv
cl9jb21taXQoc2VsZiwgY29tbWl0KToKICAgICAgICAgcmV0dXJuIGYnaHR0cHM6Ly9jb21taXRz
LndlYmtpdC5vcmcvcntjb21taXR9JwpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeV91bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9t
b2RlbC9yZXBvc2l0b3J5X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzQ0NDEpCisrKyBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9yZXBvc2l0b3J5
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMp
IDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDE1ICszMSwxNSBAQCBjbGFzcyBSZXBvc2l0b3J5VGVzdChX
YWl0Rm9yRG9ja2VyVGVzdENhCiAgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS53ZWJraXQo
KToKICAgICAgICAgICAgIHN2bl9yZXBvID0gV2ViS2l0UmVwb3NpdG9yeSgpCiAgICAgICAgICAg
ICBzZWxmLmFzc2VydFRydWUoJ3dlYmtpdCcsIHN2bl9yZXBvLmtleSkKLSAgICAgICAgICAgIGNv
bW1pdCA9IHN2bl9yZXBvLmNvbW1pdF9mb3JfaWQoNikKKyAgICAgICAgICAgIGNvbW1pdCA9IHN2
bl9yZXBvLmNvbW1pdChyZXZpc2lvbj02KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b21taXQudXVpZCwgMTYwMTYzOTkwMDAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b21taXQubWVzc2FnZSwgJzZ0aCBjb21taXQnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjb21taXQuYnJhbmNoLCAndHJ1bmsnKQogCi0gICAgZGVmIHRlc3RfYnJhbmNoX3N2bihzZWxm
KToKKyAgICBkZWYgdGVzdF9yZWZfc3ZuKHNlbGYpOgogICAgICAgICB3aXRoIE1vY2tNb2RlbEZh
Y3Rvcnkud2Via2l0KCk6CiAgICAgICAgICAgICBzdm5fcmVwbyA9IFdlYktpdFJlcG9zaXRvcnko
KQotICAgICAgICAgICAgY29tbWl0ID0gc3ZuX3JlcG8uY29tbWl0X2Zvcl9pZCg3KQorICAgICAg
ICAgICAgY29tbWl0ID0gc3ZuX3JlcG8uY29tbWl0KHJlZj03KQogICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjb21taXQudXVpZCwgMTYwMTY0MDkwMDAwKQogICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjb21taXQubWVzc2FnZSwgJzd0aCBjb21taXQnKQogICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb21taXQuYnJhbmNoLCAnYnJhbmNoLWEnKQpAQCAtNDgsMTUgKzQ4LDIz
IEBAIGNsYXNzIFJlcG9zaXRvcnlUZXN0KFdhaXRGb3JEb2NrZXJUZXN0Q2EKICAgICAgICAgd2l0
aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpIGFzIHNhZmFyaToKICAgICAgICAgICAgIGdpdF9y
ZXBvID0gU3Rhc2hSZXBvc2l0b3J5KCdodHRwczovL3t9Jy5mb3JtYXQoc2FmYXJpLnJlbW90ZSkp
CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzYWZhcmknLCBnaXRfcmVwby5rZXkpCi0g
ICAgICAgICAgICBjb21taXQgPSBnaXRfcmVwby5jb21taXRfZm9yX2lkKCcxYWJlMjViNDQzZTkn
KQorICAgICAgICAgICAgY29tbWl0ID0gZ2l0X3JlcG8uY29tbWl0KGhhc2g9JzFhYmUyNWI0NDNl
OScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC51dWlkLCAxNjAxNjYzMDAw
MDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5icmFuY2gsICdtYWluJykK
KworICAgIGRlZiB0ZXN0X3JlZl9zdGFzaChzZWxmKToKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxG
YWN0b3J5LnNhZmFyaSgpIGFzIHNhZmFyaToKKyAgICAgICAgICAgIGdpdF9yZXBvID0gU3Rhc2hS
ZXBvc2l0b3J5KCdodHRwczovL3t9Jy5mb3JtYXQoc2FmYXJpLnJlbW90ZSkpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdzYWZhcmknLCBnaXRfcmVwby5rZXkpCisgICAgICAgICAgICBj
b21taXQgPSBnaXRfcmVwby5jb21taXQocmVmPScxYWJlMjViNDQzZTknKQogICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjb21taXQudXVpZCwgMTYwMTY2MzAwMDAwKQogICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjb21taXQuYnJhbmNoLCAnbWFpbicpCiAKICAgICBkZWYgdGVzdF9j
b2xsaWRpbmdfdGltZXN0YW1wc19zdGFzaChzZWxmKToKICAgICAgICAgd2l0aCBNb2NrTW9kZWxG
YWN0b3J5LnNhZmFyaSgpIGFzIHNhZmFyaToKICAgICAgICAgICAgIGdpdF9yZXBvID0gU3Rhc2hS
ZXBvc2l0b3J5KCdodHRwczovL3t9Jy5mb3JtYXQoc2FmYXJpLnJlbW90ZSkpCi0gICAgICAgICAg
ICBjb21taXQxID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgnYmFlNWQxZTkwOTk5JykKLSAgICAg
ICAgICAgIGNvbW1pdDIgPSBnaXRfcmVwby5jb21taXRfZm9yX2lkKCdkOGJjZTI2ZmE2NWMnKQor
ICAgICAgICAgICAgY29tbWl0MSA9IGdpdF9yZXBvLmNvbW1pdChoYXNoPSdiYWU1ZDFlOTA5OTkn
KQorICAgICAgICAgICAgY29tbWl0MiA9IGdpdF9yZXBvLmNvbW1pdChoYXNoPSdkOGJjZTI2ZmE2
NWMnKQogCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdDEudGltZXN0YW1wLCBj
b21taXQyLnRpbWVzdGFtcCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29tbWl0
MS51dWlkLCBjb21taXQyLnV1aWQpCkBAIC02Nyw2ICs3NSw2IEBAIGNsYXNzIFJlcG9zaXRvcnlU
ZXN0KFdhaXRGb3JEb2NrZXJUZXN0Q2EKICAgICBkZWYgdGVzdF9icmFuY2hfc3Rhc2goc2VsZik6
CiAgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSBhcyBzYWZhcmk6CiAgICAg
ICAgICAgICBnaXRfcmVwbyA9IFN0YXNoUmVwb3NpdG9yeSgnaHR0cHM6Ly97fScuZm9ybWF0KHNh
ZmFyaS5yZW1vdGUpKQotICAgICAgICAgICAgY29tbWl0ID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9p
ZCgnNjIxNjUyYWRkN2ZjJykKKyAgICAgICAgICAgIGNvbW1pdCA9IGdpdF9yZXBvLmNvbW1pdCho
YXNoPSc2MjE2NTJhZGQ3ZmMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQu
dXVpZCwgMTYwMTY2NjAwMDAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQu
YnJhbmNoLCAnYnJhbmNoLWEnKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvdXBsb2FkX2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
bW9kZWwvdXBsb2FkX2NvbnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3NDQ0MSkKKysrIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3VwbG9h
ZF9jb250ZXh0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsMzUgKzEzNSwzOCBA
QCBjbGFzcyBVcGxvYWRDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzCiAgICAgICAgIHNlbGYu
aW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKICAgICAgICAg
TW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKHNlbGYubW9kZWwpCiAKLSAgICAgICAg
Y29uZmlndXJhdGlvbl90b19zZWFyY2ggPSBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdpT1MnLCB2
ZXJzaW9uPScxMi4wLjAnLCBpc19zaW11bGF0b3I9VHJ1ZSwgc3R5bGU9J0FzYW4nKQotICAgICAg
ICBjb25maWd1cmF0aW9uLCB1cGxvYWRzID0gbmV4dChpdGVyKHNlbGYubW9kZWwudXBsb2FkX2Nv
bnRleHQuZmluZF90ZXN0X3Jlc3VsdHMoY29uZmlndXJhdGlvbnM9W2NvbmZpZ3VyYXRpb25fdG9f
c2VhcmNoXSwgc3VpdGU9J2xheW91dC10ZXN0cycsIHJlY2VudD1GYWxzZSkuaXRlbXMoKSkpCi0g
ICAgICAgIHNlbGYubW9kZWwudXBsb2FkX2NvbnRleHQucHJvY2Vzc190ZXN0X3Jlc3VsdHMoCi0g
ICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICBjb21t
aXRzPXVwbG9hZHNbMF1bJ2NvbW1pdHMnXSwKLSAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVz
dHMnLAotICAgICAgICAgICAgdGVzdF9yZXN1bHRzPXVwbG9hZHNbMF1bJ3Rlc3RfcmVzdWx0cydd
LAotICAgICAgICAgICAgdGltZXN0YW1wPXVwbG9hZHNbMF1bJ3RpbWVzdGFtcCddLAotICAgICAg
ICApCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFj
dG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25fdG9fc2VhcmNoID0gQ29u
ZmlndXJhdGlvbihwbGF0Zm9ybT0naU9TJywgdmVyc2lvbj0nMTIuMC4wJywgaXNfc2ltdWxhdG9y
PVRydWUsIHN0eWxlPSdBc2FuJykKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIHVwbG9hZHMg
PSBuZXh0KGl0ZXIoc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dC5maW5kX3Rlc3RfcmVzdWx0cyhj
b25maWd1cmF0aW9ucz1bY29uZmlndXJhdGlvbl90b19zZWFyY2hdLCBzdWl0ZT0nbGF5b3V0LXRl
c3RzJywgcmVjZW50PUZhbHNlKS5pdGVtcygpKSkKKyAgICAgICAgICAgIHNlbGYubW9kZWwudXBs
b2FkX2NvbnRleHQucHJvY2Vzc190ZXN0X3Jlc3VsdHMoCisgICAgICAgICAgICAgICAgY29uZmln
dXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgIGNvbW1pdHM9dXBsb2Fkc1sw
XVsnY29tbWl0cyddLAorICAgICAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLAorICAg
ICAgICAgICAgICAgIHRlc3RfcmVzdWx0cz11cGxvYWRzWzBdWyd0ZXN0X3Jlc3VsdHMnXSwKKyAg
ICAgICAgICAgICAgICB0aW1lc3RhbXA9dXBsb2Fkc1swXVsndGltZXN0YW1wJ10sCisgICAgICAg
ICAgICApCiAKLSAgICAgICAgIyBVc2luZyBzdWl0ZSByZXN1bHRzIGFzIGEgcHJveHkgdG8gdGVs
bCBpZiBjYWxsYmFja3Mgd2VyZSB0cmlnZ2VyZWQKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgx
LCBsZW4oc2VsZi5tb2RlbC5zdWl0ZV9jb250ZXh0LmZpbmRfYnlfY29tbWl0KGNvbmZpZ3VyYXRp
b25zPVtDb25maWd1cmF0aW9uKCldLCBzdWl0ZT0nbGF5b3V0LXRlc3RzJykpKQorICAgICAgICAg
ICAgIyBVc2luZyBzdWl0ZSByZXN1bHRzIGFzIGEgcHJveHkgdG8gdGVsbCBpZiBjYWxsYmFja3Mg
d2VyZSB0cmlnZ2VyZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHNlbGYu
bW9kZWwuc3VpdGVfY29udGV4dC5maW5kX2J5X2NvbW1pdChjb25maWd1cmF0aW9ucz1bQ29uZmln
dXJhdGlvbigpXSwgc3VpdGU9J2xheW91dC10ZXN0cycpKSkKIAogICAgIEBXYWl0Rm9yRG9ja2Vy
VGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1v
Y2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X2FzeW5jX2Nh
bGxiYWNrKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4
dCk6CiAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNh
c3NhbmRyYSwgYXN5bmNfcHJvY2Vzc2luZz1UcnVlKQogICAgICAgICBNb2NrTW9kZWxGYWN0b3J5
LmFkZF9tb2NrX3Jlc3VsdHMoc2VsZi5tb2RlbCkKIAotICAgICAgICBjb25maWd1cmF0aW9uX3Rv
X3NlYXJjaCA9IENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIHZlcnNpb249JzEyLjAuMCcs
IGlzX3NpbXVsYXRvcj1UcnVlLCBzdHlsZT0nQXNhbicpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24s
IHVwbG9hZHMgPSBuZXh0KGl0ZXIoc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dC5maW5kX3Rlc3Rf
cmVzdWx0cyhjb25maWd1cmF0aW9ucz1bY29uZmlndXJhdGlvbl90b19zZWFyY2hdLCBzdWl0ZT0n
bGF5b3V0LXRlc3RzJywgcmVjZW50PUZhbHNlKS5pdGVtcygpKSkKLSAgICAgICAgc2VsZi5tb2Rl
bC51cGxvYWRfY29udGV4dC5wcm9jZXNzX3Rlc3RfcmVzdWx0cygKLSAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb249Y29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgIGNvbW1pdHM9dXBsb2Fkc1swXVsn
Y29tbWl0cyddLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAg
ICB0ZXN0X3Jlc3VsdHM9dXBsb2Fkc1swXVsndGVzdF9yZXN1bHRzJ10sCi0gICAgICAgICAgICB0
aW1lc3RhbXA9dXBsb2Fkc1swXVsndGltZXN0YW1wJ10sCi0gICAgICAgICkKLQotICAgICAgICAj
IFVzaW5nIHN1aXRlIHJlc3VsdHMgYXMgYSBwcm94eSB0byB0ZWxsIGlmIGNhbGxiYWNrcyB3ZXJl
IHRyaWdnZXJlZAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihzZWxmLm1vZGVsLnN1
aXRlX2NvbnRleHQuZmluZF9ieV9jb21taXQoY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24o
KV0sIHN1aXRlPSdsYXlvdXQtdGVzdHMnKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxm
Lm1vZGVsLnVwbG9hZF9jb250ZXh0LmRvX3Byb2Nlc3Npbmdfd29yaygpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDEsIGxlbihzZWxmLm1vZGVsLnN1aXRlX2NvbnRleHQuZmluZF9ieV9jb21t
aXQoY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24oKV0sIHN1aXRlPSdsYXlvdXQtdGVzdHMn
KSkpCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFj
dG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25fdG9fc2VhcmNoID0gQ29u
ZmlndXJhdGlvbihwbGF0Zm9ybT0naU9TJywgdmVyc2lvbj0nMTIuMC4wJywgaXNfc2ltdWxhdG9y
PVRydWUsIHN0eWxlPSdBc2FuJykKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIHVwbG9hZHMg
PSBuZXh0KGl0ZXIoc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dC5maW5kX3Rlc3RfcmVzdWx0cyhj
b25maWd1cmF0aW9ucz1bY29uZmlndXJhdGlvbl90b19zZWFyY2hdLCBzdWl0ZT0nbGF5b3V0LXRl
c3RzJywgcmVjZW50PUZhbHNlKS5pdGVtcygpKSkKKworICAgICAgICAgICAgc2VsZi5tb2RlbC51
cGxvYWRfY29udGV4dC5wcm9jZXNzX3Rlc3RfcmVzdWx0cygKKyAgICAgICAgICAgICAgICBjb25m
aWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgY29tbWl0cz11cGxvYWRz
WzBdWydjb21taXRzJ10sCisgICAgICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCisg
ICAgICAgICAgICAgICAgdGVzdF9yZXN1bHRzPXVwbG9hZHNbMF1bJ3Rlc3RfcmVzdWx0cyddLAor
ICAgICAgICAgICAgICAgIHRpbWVzdGFtcD11cGxvYWRzWzBdWyd0aW1lc3RhbXAnXSwKKyAgICAg
ICAgICAgICkKKworICAgICAgICAgICAgIyBVc2luZyBzdWl0ZSByZXN1bHRzIGFzIGEgcHJveHkg
dG8gdGVsbCBpZiBjYWxsYmFja3Mgd2VyZSB0cmlnZ2VyZWQKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMCwgbGVuKHNlbGYubW9kZWwuc3VpdGVfY29udGV4dC5maW5kX2J5X2NvbW1pdChj
b25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbigpXSwgc3VpdGU9J2xheW91dC10ZXN0cycpKSkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1vZGVsLnVwbG9hZF9jb250ZXh0LmRv
X3Byb2Nlc3Npbmdfd29yaygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4o
c2VsZi5tb2RlbC5zdWl0ZV9jb250ZXh0LmZpbmRfYnlfY29tbWl0KGNvbmZpZ3VyYXRpb25zPVtD
b25maWd1cmF0aW9uKCldLCBzdWl0ZT0nbGF5b3V0LXRlc3RzJykpKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvY29tbWl0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2Nv
bW1pdC5weQkocmV2aXNpb24gMjc0NDQxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvY29tbWl0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNiAr
MTQ2LDI4IEBAIGNsYXNzIENvbW1pdChvYmplY3QpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigiJ3t9JyBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgY29tbWl0IG9iamVjdCIuZm9ybWF0
KGFyZykpCiAgICAgICAgIHJldHVybiBOb25lCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYg
ZnJvbV9qc29uKGNscywgZGF0YSk6CisgICAgICAgIGRhdGEgPSBkYXRhIGlmIGlzaW5zdGFuY2Uo
ZGF0YSwgZGljdCkgZWxzZSBqc29uLmxvYWRzKGRhdGEpCisgICAgICAgIGhhc2hfZnJvbV9pZCA9
IE5vbmUKKyAgICAgICAgcmV2aXNpb25fZnJvbV9pZCA9IGNscy5fcGFyc2VfcmV2aXNpb24oZGF0
YS5nZXQoJ2lkJykpCisgICAgICAgIGlmIG5vdCByZXZpc2lvbl9mcm9tX2lkOgorICAgICAgICAg
ICAgaGFzaF9mcm9tX2lkID0gY2xzLl9wYXJzZV9oYXNoKGRhdGEuZ2V0KCdpZCcpKQorICAgICAg
ICBwcmludCgne30gdnMge30nLmZvcm1hdChoYXNoX2Zyb21faWQsIHJldmlzaW9uX2Zyb21faWQp
KQorCisgICAgICAgIHJldHVybiBjbHMoCisgICAgICAgICAgICByZXBvc2l0b3J5X2lkPWRhdGEu
Z2V0KCdyZXBvc2l0b3J5X2lkJyksCisgICAgICAgICAgICBicmFuY2g9ZGF0YS5nZXQoJ2JyYW5j
aCcpLAorICAgICAgICAgICAgaGFzaD1kYXRhLmdldCgnaGFzaCcsIGhhc2hfZnJvbV9pZCksCisg
ICAgICAgICAgICByZXZpc2lvbj1kYXRhLmdldCgncmV2aXNpb24nLCByZXZpc2lvbl9mcm9tX2lk
KSwKKyAgICAgICAgICAgIHRpbWVzdGFtcD1kYXRhLmdldCgndGltZXN0YW1wJyksCisgICAgICAg
ICAgICBpZGVudGlmaWVyPWRhdGEuZ2V0KCdpZGVudGlmaWVyJyksCisgICAgICAgICAgICBicmFu
Y2hfcG9pbnQ9ZGF0YS5nZXQoJ2JyYW5jaF9wb2ludCcpLAorICAgICAgICAgICAgb3JkZXI9ZGF0
YS5nZXQoJ29yZGVyJyksCisgICAgICAgICAgICBhdXRob3I9ZGF0YS5nZXQoJ2F1dGhvcicsIGRh
dGEuZ2V0KCdjb21taXR0ZXInKSksCisgICAgICAgICAgICBtZXNzYWdlPWRhdGEuZ2V0KCdtZXNz
YWdlJyksCisgICAgICAgICkKKwogICAgIGRlZiBfX2luaXRfXygKICAgICAgICAgc2VsZiwKICAg
ICAgICAgaGFzaD1Ob25lLApAQCAtMTg0LDE2ICsyMDYsMjIgQEAgY2xhc3MgQ29tbWl0KG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICkKIAorICAgICAgICBpZiBpc2lu
c3RhbmNlKHRpbWVzdGFtcCwgc2l4LnN0cmluZ190eXBlcykgYW5kIHRpbWVzdGFtcC5pc2RpZ2l0
KCk6CisgICAgICAgICAgICB0aW1lc3RhbXAgPSBpbnQodGltZXN0YW1wKQogICAgICAgICBpZiB0
aW1lc3RhbXAgYW5kIG5vdCBpc2luc3RhbmNlKHRpbWVzdGFtcCwgaW50KToKICAgICAgICAgICAg
IHJhaXNlIFR5cGVFcnJvcigiRXhwZWN0ZWQgJ3RpbWVzdGFtcCcgdG8gYmUgb2YgdHlwZSBpbnQs
IGdvdCAne30nIi5mb3JtYXQodGltZXN0YW1wKSkKICAgICAgICAgc2VsZi50aW1lc3RhbXAgPSB0
aW1lc3RhbXAKIAorICAgICAgICBpZiBpc2luc3RhbmNlKG9yZGVyLCBzaXguc3RyaW5nX3R5cGVz
KSBhbmQgb3JkZXIuaXNkaWdpdCgpOgorICAgICAgICAgICAgb3JkZXIgPSBpbnQob3JkZXIpCiAg
ICAgICAgIGlmIG9yZGVyIGFuZCBub3QgaXNpbnN0YW5jZShvcmRlciwgaW50KToKICAgICAgICAg
ICAgIHJhaXNlIFR5cGVFcnJvcigiRXhwZWN0ZWQgJ29yZGVyJyB0byBiZSBvZiB0eXBlIGludCwg
Z290ICd7fSciLmZvcm1hdChvcmRlcikpCiAgICAgICAgIHNlbGYub3JkZXIgPSBvcmRlciBvciAw
CiAKICAgICAgICAgaWYgYXV0aG9yIGFuZCBpc2luc3RhbmNlKGF1dGhvciwgZGljdCkgYW5kIGF1
dGhvci5nZXQoJ25hbWUnKToKICAgICAgICAgICAgIHNlbGYuYXV0aG9yID0gQ29udHJpYnV0b3Io
YXV0aG9yLmdldCgnbmFtZScpLCBhdXRob3IuZ2V0KCdlbWFpbHMnKSkKKyAgICAgICAgZWxpZiBh
dXRob3IgYW5kIGlzaW5zdGFuY2UoYXV0aG9yLCBzaXguc3RyaW5nX3R5cGVzKSBhbmQgJ0AnIGlu
IGF1dGhvcjoKKyAgICAgICAgICAgIHNlbGYuYXV0aG9yID0gQ29udHJpYnV0b3IoYXV0aG9yLCBh
dXRob3IpCiAgICAgICAgIGVsaWYgYXV0aG9yIGFuZCBub3QgaXNpbnN0YW5jZShhdXRob3IsIENv
bnRyaWJ1dG9yKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiRXhwZWN0ZWQgJ2F1dGhv
cicgdG8gYmUgb2YgdHlwZSB7fSwgZ290ICd7fSciLmZvcm1hdChDb250cmlidXRvciwgYXV0aG9y
KSkKICAgICAgICAgZWxzZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423346</attachid>
            <date>2021-03-16 09:58:18 -0700</date>
            <delta_ts>2021-03-16 16:54:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223101-20210316095817.patch</filename>
            <type>text/plain</type>
            <size>36819</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3NDQ4MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU4IEBACisyMDIxLTAzLTE2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIFNhdmUgaWRlbnRpZmllcnMgaW4gY29tbWl0IHRh
YmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMx
MDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1MzM4MzM4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJvbGxlci5weToKKyAgICAg
ICAgKENvbW1pdENvbnRyb2xsZXIucmVnaXN0ZXIpOiBBY2NlcHQgdXBsb2FkZWQgbmV3IGNvbW1p
dCBvYmplY3RzLCBjb250aW51ZSB0byByZXR1cm4gb2xkLXN0eWxlIGNvbW1pdHMuCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91
cGxvYWRfY29udHJvbGxlci5weToKKyAgICAgICAgKFVwbG9hZENvbnRyb2xsZXIudXBsb2FkKTog
UmVnaXN0ZXIgY29tbWl0cyB1c2luZyB0aGUgZmFzdCBwYXRoIHdoZW4gdXBsb2FkaW5nIHJlc3Vs
dHMuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
Y29udHJvbGxlci91cGxvYWRfY29udHJvbGxlcl91bml0dGVzdC5weToKKyAgICAgICAgKFVwbG9h
ZENvbnRyb2xsZXJUZXN0LnRlc3RfcHJvY2Vzcyk6IE1vY2sgc2FmYXJpIGFuZCBXZWJLaXQgd2hl
biBwcm9jZXNzaW5nIHJlc3VsdHMuCisgICAgICAgIChVcGxvYWRDb250cm9sbGVyVGVzdC50ZXN0
X3Byb2Nlc3NfY29tbWl0KTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQucHk6CisgICAgICAgIChD
b21taXRDb250ZXh0LkNvbW1pdE1vZGVsTWsyKTogQWRkIG5ldyBzdHlsZSBjb21taXQgbW9kZWwg
YmFzZS4KKyAgICAgICAgKENvbW1pdENvbnRleHQuQ29tbWl0QnlSZWYpOiBTb3J0IGNvbW1pdHMg
YnkgaGFzaCwgcmV2aXNpb24gYW5kIGlkZW50aWZpZXIgcmVmZXJlbmNlcy4KKyAgICAgICAgKENv
bW1pdENvbnRleHQuQ29tbWl0QnlVdWlkQXNjZW5kaW5nTWsyKTogTmV3IGNvbW1pdCBzdHlsZSBV
VUlEIHRhYmxlLgorICAgICAgICAoQ29tbWl0Q29udGV4dC5Db21taXRCeVV1aWREZXNjZW5kaW5n
TWsyKTogRGl0dG8uCisgICAgICAgIChDb21taXRDb250ZXh0Ll9faW5pdF9fKTogQ3JlYXRlIG5l
dyB0YWJsZXMuCisgICAgICAgIChDb21taXRDb250ZXh0LmZpbmRfY29tbWl0c19ieV9yZWYpOiBT
ZWFyY2ggZm9yIGNvbW1pdHMgaW4gdGhlIG5ldyByZWYgdGFibGUuCisgICAgICAgIChDb21taXRD
b250ZXh0LnJlZ2lzdGVyKTogUG9zdC1wcm9jZXNzIGNvbW1pdHMgdG8gcG9wdWxhdGUgaWRlbnRp
ZmllciBmaWVsZC4KKyAgICAgICAgKENvbW1pdENvbnRleHQucmVnaXN0ZXJfY29tbWl0KTogT25s
eSByZWdpc3RlciBuZXctc3R5bGUgY29tbWl0cy4KKyAgICAgICAgKENvbW1pdENvbnRleHQucmVn
aXN0ZXJfcGFydGlhbF9jb21taXQpOiBSZWdpc3RlciBuZXctc3R5bGUgY29tbWl0cywgYWxsb3cg
Y2FsbGVyIHRvIG9wdC1vdXQgb2YgZXhwZW5zaXZlCisgICAgICAgIElkZW50aWZpZXIgY29tcHV0
YXRpb24uCisgICAgICAgIChDb21taXRDb250ZXh0LnVybCk6IEFjY2VwdCBvbGQgYW5kIG5ldyBz
dHlsZSBjb21taXRzLgorICAgICAgICAoQ29tbWl0Q29udGV4dC5yZWdpc3Rlcl9jb21taXRfd2l0
aF9yZXBvX2FuZF9pZCk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHRfdW5pdHRlc3QucHk6Cisg
ICAgICAgIChDb21taXRDb250ZXh0VGVzdC5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UpOiBV
cGRhdGUgY29tbWl0IHJlZ2lzdHJhdGlvbiBjYWxsLgorICAgICAgICAoQ29tbWl0Q29udGV4dFRl
c3QudGVzdF9jb21taXRfZnJvbV9zdGFzaF9yZXBvKTogRGl0dG8uCisgICAgICAgIChDb21taXRD
b250ZXh0VGVzdC50ZXN0X2NvbW1pdF9mcm9tX3N2bl9yZXBvKTogRGl0dG8uCisgICAgICAgICog
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9ja19tb2Rl
bF9mYWN0b3J5LnB5OgorICAgICAgICAoTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUpOiBVcGRhdGUg
Y29tbWl0IHJlZ2lzdHJhdGlvbiBjYWxsLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsLnB5OgorICAgICAgICAoTW9kZWwuX19p
bml0X18pOiBjb21taXRfY29udGV4dCBtYXkgbm93IHBvc3QtcHJvY2VzcyB1cGxvYWRzLgorICAg
ICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3Jl
cG9zaXRvcnkucHk6CisgICAgICAgIChSZXBvc2l0b3J5LmNvbW1pdCk6IEFkZCBjYWxsIHRvIHJl
dHVybiBuZXctc3R5bGUgY29tbWl0cy4KKyAgICAgICAgKFN0YXNoUmVwb3NpdG9yeS5jb21taXQp
OiBEaXR0by4KKyAgICAgICAgKFdlYktpdFJlcG9zaXRvcnkuY29tbWl0KTogRGl0dG8uCisgICAg
ICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVw
b3NpdG9yeV91bml0dGVzdC5weToKKyAgICAgICAgKFJlcG9zaXRvcnlUZXN0LnRlc3Rfc3ZuKToK
KyAgICAgICAgKFJlcG9zaXRvcnlUZXN0LnRlc3RfcmVmX3N2bik6CisgICAgICAgIChSZXBvc2l0
b3J5VGVzdC50ZXN0X3N0YXNoKToKKyAgICAgICAgKFJlcG9zaXRvcnlUZXN0LnRlc3RfcmVmX3N0
YXNoKToKKyAgICAgICAgKFJlcG9zaXRvcnlUZXN0LnRlc3RfY29sbGlkaW5nX3RpbWVzdGFtcHNf
c3Rhc2gpOgorICAgICAgICAoUmVwb3NpdG9yeVRlc3QudGVzdF9icmFuY2hfc3Rhc2gpOgorICAg
ICAgICAoUmVwb3NpdG9yeVRlc3QudGVzdF9icmFuY2hfc3ZuKTogRGVsZXRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC91cGxvYWRf
Y29udGV4dF91bml0dGVzdC5weToKKyAgICAgICAgKFVwbG9hZENvbnRleHRUZXN0LnRlc3RfY2Fs
bGJhY2spOgorICAgICAgICAoVXBsb2FkQ29udGV4dFRlc3QudGVzdF9hc3luY19jYWxsYmFjayk6
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvY29t
bWl0LnB5OgorICAgICAgICAoQ29tbWl0KToKKyAgICAgICAgKENvbW1pdC5mcm9tX2pzb24pOiBE
ZWNvZGUgcmVzdWx0c2RicHkgc3R5bGVkIGNvbW1pdCBqc29uLgorCiAyMDIxLTAzLTE2ICBKb25h
dGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbd2Via2l0c2NtcHld
IERlY29kZSBtdWx0aXBsZSBjb21taXQgcmVwcmVzZW50YXRpb25zCkluZGV4OiBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9j
b250cm9sbGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xsZXIucHkJKHJldmlz
aW9uIDI3NDQ4MykKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xsZXIucHkJKHdvcmtpbmcgY29weSkKQEAg
LTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNyBA
QCBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogZnJvbSBmbGFzayBpbXBvcnQg
YWJvcnQsIGpzb25pZnksIHJlcXVlc3QKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21t
aXQgaW1wb3J0IENvbW1pdAogZnJvbSB3ZWJraXRmbGFza3B5LnV0aWwgaW1wb3J0IEFzc2VydFJl
cXVlc3QsIHF1ZXJ5X2FzX2t3YXJncywgbGltaXRfZm9yX3F1ZXJ5Ci1mcm9tIHdlYmtpdHNjbXB5
IGltcG9ydCBTY21CYXNlCitmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBTY21CYXNlLCBDb21taXQg
YXMgU2NtQ29tbWl0CiAKIAogZGVmIF9maW5kX2NvbXBhcmlzb24oY29tbWl0X2NvbnRleHQsIHJl
cG9zaXRvcnlfaWQsIGJyYW5jaCwgaWQsIHV1aWQsIHRpbWVzdGFtcCwgcHJpb3JpdHk9bWluKToK
QEAgLTI1OCw3ICsyNTgsNyBAQCBjbGFzcyBDb21taXRDb250cm9sbGVyKEhhc0NvbW1pdENvbnRl
eHQpCiAgICAgICAgICAgICBjb21taXQgPSBzZWxmLmNvbW1pdF9jb250ZXh0LnByZXZpb3VzX2Nv
bW1pdChjb21taXRzWzBdKQogICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkoQ29tbWl0LkVuY29k
ZXIoKS5kZWZhdWx0KFtjb21taXRdIGlmIGNvbW1pdCBlbHNlIFtdKSkKIAotICAgIGRlZiByZWdp
c3RlcihzZWxmLCBjb21taXQ9Tm9uZSk6CisgICAgZGVmIHJlZ2lzdGVyKHNlbGYsIGNvbW1pdD1O
b25lLCBmYXN0PVRydWUpOgogICAgICAgICBpc19lbmRwb2ludCA9IG5vdCBib29sKGNvbW1pdCkK
ICAgICAgICAgaWYgaXNfZW5kcG9pbnQ6CiAgICAgICAgICAgICBBc3NlcnRSZXF1ZXN0LmlzX3R5
cGUoWydQT1NUJ10pCkBAIC0yNzMsMzUgKzI3Myw2MCBAQCBjbGFzcyBDb21taXRDb250cm9sbGVy
KEhhc0NvbW1pdENvbnRleHQpCiAgICAgICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlwdGlv
bj0nRXhwZWN0ZWQgdXBsb2FkZWQgZGF0YSB0byBiZSBqc29uJykKIAogICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0LnJlZ2lzdGVyX2NvbW1pdChDb21taXQuZnJv
bV9qc29uKGNvbW1pdCkpCi0gICAgICAgICAgICBpZiBpc19lbmRwb2ludDoKLSAgICAgICAgICAg
ICAgICByZXR1cm4ganNvbmlmeSh7J3N0YXR1cyc6ICdvayd9KQotICAgICAgICAgICAgcmV0dXJu
IENvbW1pdC5mcm9tX2pzb24oY29tbWl0KQorICAgICAgICAgICAgY2FuZGlkYXRlID0gU2NtQ29t
bWl0LmZyb21fanNvbihjb21taXQpCisKKyAgICAgICAgICAgICMgQ29tbWl0IG5lZWRzIHRvIGJl
IHN1ZmZpY2llbnRseSBkZWZpbmVkCisgICAgICAgICAgICBpZiBjYW5kaWRhdGUucmVwb3NpdG9y
eV9pZCBhbmQgY2FuZGlkYXRlLmJyYW5jaCBhbmQgY2FuZGlkYXRlLnRpbWVzdGFtcCBhbmQgKGNh
bmRpZGF0ZS5yZXZpc2lvbiBvciBjYW5kaWRhdGUuaGFzaCk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5jb21taXRfY29udGV4dC5yZWdpc3Rlcl9jb21taXQoY2FuZGlkYXRlKQorICAgICAgICAgICAg
ICAgIGlmIGlzX2VuZHBvaW50OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNvbmlmeSh7
J3N0YXR1cyc6ICdvayd9KQorICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGUKICAgICAg
ICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgcmVxdWly
ZWRfYXJncyA9IFsncmVwb3NpdG9yeV9pZCcsICdpZCddCi0gICAgICAgIG9wdGlvbmFsX2FyZ3Mg
PSBbJ2JyYW5jaCddCisgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBbJ3JlcG9zaXRvcnlfaWQnXQog
ICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CiAgICAgICAgICAgICBpZiBhcmcgbm90
IGluIGNvbW1pdDoKICAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPWYiJ3th
cmd9JyByZXF1aXJlZCB0byBkZWZpbmUgY29tbWl0IikKIAorICAgICAgICBoYXNfcmVmID0gRmFs
c2UKKyAgICAgICAgb25lX29mX2FyZ3MgPSBbJ2lkJywgJ3JlZicsICdoYXNoJywgJ3JldmlzaW9u
JywgJ2lkZW50aWZpZXInXQorICAgICAgICBmb3IgYXJnIGluIG9uZV9vZl9hcmdzOgorICAgICAg
ICAgICAgaWYgYXJnIGluIGNvbW1pdDoKKyAgICAgICAgICAgICAgICBpZiBoYXNfcmVmOgorICAg
ICAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdNdWx0aXBsZSBjb21taXQg
cmVmZXJlbmNlcyBzcGVjaWZpZWQnKQorICAgICAgICAgICAgICAgIGhhc19yZWYgPSBUcnVlCisg
ICAgICAgIGlmIG5vdCBoYXNfcmVmOgorICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlwdGlv
bj0nTm8gY29tbWl0IHJlZmVyZW5jZSBzcGVjaWZpZWQnKQorCisKICAgICAgICAgZm9yIGFyZyBp
biBjb21taXQua2V5cygpOgotICAgICAgICAgICAgaWYgYXJnIGluIHJlcXVpcmVkX2FyZ3MgKyBv
cHRpb25hbF9hcmdzOgorICAgICAgICAgICAgaWYgYXJnIGluIHJlcXVpcmVkX2FyZ3Mgb3IgYXJn
IGluIG9uZV9vZl9hcmdzOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBp
ZiBhcmcgaW4gWyd0aW1lc3RhbXAnLCAnb3JkZXInLCAnY29tbWl0dGVyJywgJ21lc3NhZ2UnXToK
KyAgICAgICAgICAgIGlmIGFyZyBpbiBbJ2JyYW5jaCcsICd0aW1lc3RhbXAnLCAnb3JkZXInLCAn
Y29tbWl0dGVyJywgJ21lc3NhZ2UnXToKICAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2Ny
aXB0aW9uPSdOb3QgZW5vdWdoIGFyZ3VtZW50cyBwcm92aWRlZCB0byBkZWZpbmUgYSBjb21taXQs
IGJ1dCB0b28gbWFueSB0byBzZWFyY2ggZm9yIGEgY29tbWl0JykKICAgICAgICAgICAgIGFib3J0
KDQwMCwgZGVzY3JpcHRpb249ZiIne2FyZ30nIGlzIG5vdCB2YWxpZCBmb3IgZGVmaW5pbmcgY29t
bWl0cyIpCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29tbWl0ID0gc2VsZi5jb21taXRf
Y29udGV4dC5yZWdpc3Rlcl9jb21taXRfd2l0aF9yZXBvX2FuZF9pZCgKKyAgICAgICAgICAgIGNv
bW1pdCA9IHNlbGYuY29tbWl0X2NvbnRleHQucmVnaXN0ZXJfcGFydGlhbF9jb21taXQoCiAgICAg
ICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1jb21taXQuZ2V0KCdyZXBvc2l0b3J5X2lkJyksCi0g
ICAgICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5nZXQoJ2JyYW5jaCcpLAotICAgICAgICAgICAg
ICAgIGNvbW1pdF9pZD1jb21taXQuZ2V0KCdpZCcpLAorICAgICAgICAgICAgICAgIHJlZj1jb21t
aXQuZ2V0KCdpZCcpIG9yIGNvbW1pdC5nZXQoJ3JlZicpLAorICAgICAgICAgICAgICAgIGhhc2g9
Y29tbWl0LmdldCgnaGFzaCcpLAorICAgICAgICAgICAgICAgIHJldmlzaW9uPWNvbW1pdC5nZXQo
J3JldmlzaW9uJyksCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1jb21taXQuZ2V0KCdpZGVu
dGlmaWVyJyksCisgICAgICAgICAgICAgICAgZmFzdD1mYXN0LAogICAgICAgICAgICAgKQogICAg
ICAgICBleGNlcHQgKFJ1bnRpbWVFcnJvciwgU2NtQmFzZS5FeGNlcHRpb24pIGFzIGVycm9yOgog
ICAgICAgICAgICAgYWJvcnQoNDA0LCBkZXNjcmlwdGlvbj1zdHIoZXJyb3IpKQogCiAgICAgICAg
IGlmIGlzX2VuZHBvaW50OgogICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkoeydzdGF0dXMnOiAn
b2snfSkKLSAgICAgICAgcmV0dXJuIGNvbW1pdAorICAgICAgICByZXR1cm4gQ29tbWl0KAorICAg
ICAgICAgICAgcmVwb3NpdG9yeV9pZD1jb21taXQucmVwb3NpdG9yeV9pZCwKKyAgICAgICAgICAg
IGlkPWNvbW1pdC5yZXZpc2lvbiBvciBjb21taXQuaGFzaCwKKyAgICAgICAgICAgIGJyYW5jaD1j
b21taXQuYnJhbmNoLAorICAgICAgICAgICAgdGltZXN0YW1wPWNvbW1pdC50aW1lc3RhbXAsCisg
ICAgICAgICAgICBvcmRlcj1jb21taXQub3JkZXIsCisgICAgICAgICAgICBjb21taXR0ZXI9Y29t
bWl0LmF1dGhvci5lbWFpbCBpZiBjb21taXQuYXV0aG9yIGVsc2UgTm9uZSwKKyAgICAgICAgICAg
IG1lc3NhZ2U9Y29tbWl0Lm1lc3NhZ2UsCisgICAgICAgICkKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdXBsb2FkX2NvbnRy
b2xsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlci5weQkocmV2aXNpb24g
Mjc0NDgzKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlci5weQkod29ya2luZyBjb3B5KQpAQCAtMTEz
LDcgKzExMyw3IEBAIGNsYXNzIFVwbG9hZENvbnRyb2xsZXIoSGFzQ29tbWl0Q29udGV4dCkKICAg
ICAgICAgICAgIGlmIG5vdCBzdWl0ZToKICAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2Ny
aXB0aW9uPSdObyB0ZXN0IHN1aXRlIHNwZWNpZmllZCcpCiAKLSAgICAgICAgICAgIGNvbW1pdHMg
PSBbc2VsZi5jb21taXRfY29udHJvbGxlci5yZWdpc3Rlcihjb21taXQ9Y29tbWl0KSBmb3IgY29t
bWl0IGluIGRhdGEuZ2V0KCdjb21taXRzJywgW10pXQorICAgICAgICAgICAgY29tbWl0cyA9IFtz
ZWxmLmNvbW1pdF9jb250cm9sbGVyLnJlZ2lzdGVyKGNvbW1pdD1jb21taXQsIGZhc3Q9VHJ1ZSkg
Zm9yIGNvbW1pdCBpbiBkYXRhLmdldCgnY29tbWl0cycsIFtdKV0KIAogICAgICAgICAgICAgdGVz
dF9yZXN1bHRzID0gZGF0YS5nZXQoJ3Rlc3RfcmVzdWx0cycsIHt9KQogICAgICAgICAgICAgaWYg
bm90IHRlc3RfcmVzdWx0czoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdXBsb2FkX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlcl91bml0dGVzdC5weQkocmV2aXNpb24g
Mjc0NDgzKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtMTk4LDE2ICsxOTgsMTggQEAgY2xhc3MgVXBsb2FkQ29udHJvbGxlclRlc3QoRmxhc2tU
ZXN0Q2FzZQogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9j
a19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250
ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRl
c3RfcHJvY2VzcyhzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBj
bGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL3VwbG9hZC9wcm9jZXNzP3BsYXRmb3JtPU1hYyZz
dHlsZT1SZWxlYXNlJmZsYXZvcj13azInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Bv
bnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVuKHJl
c3BvbnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2RpY3Qoc3RhdHVzPSdv
aycpXSAqIDUsIFtlbGVtZW50Wydwcm9jZXNzaW5nJ11bJ3B5dGhvbi10ZXN0cyddIGZvciBlbGVt
ZW50IGluIHJlc3BvbnNlLmpzb24oKV0pCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5z
YWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIHJlc3BvbnNl
ID0gY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS91cGxvYWQvcHJvY2Vzcz9wbGF0Zm9ybT1N
YWMmc3R5bGU9UmVsZWFzZSZmbGF2b3I9d2syJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoNSwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFtkaWN0KHN0YXR1cz0nb2snKV0gKiA1LCBbZWxlbWVudFsncHJvY2Vzc2luZyddWydweXRob24t
dGVzdHMnXSBmb3IgZWxlbWVudCBpbiByZXNwb25zZS5qc29uKCldKQogCiAgICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgQEZsYXNrVGVzdENh
c2UucnVuX3dpdGhfd2Vic2VydmVyKCkKICAgICBkZWYgdGVzdF9wcm9jZXNzX2NvbW1pdChzZWxm
LCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQucG9zdChzZWxm
LlVSTCArICcvYXBpL3VwbG9hZC9wcm9jZXNzP3BsYXRmb3JtPU1hYyZzdHlsZT1SZWxlYXNlJmZs
YXZvcj13azImaWQ9ZDhiY2UyNmZhNjVjJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNw
b25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihy
ZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnZDhiY2UyNmZhNjVj
NmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYyddLCBbcmVzdWx0Wydjb21taXRzJ11bMV1bJ2lk
J10gZm9yIHJlc3VsdCBpbiByZXNwb25zZS5qc29uKCldKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFtkaWN0KHN0YXR1cz0nb2snKV0sIFtlbGVtZW50Wydwcm9jZXNzaW5nJ11bJ3B5dGhvbi10
ZXN0cyddIGZvciBlbGVtZW50IGluIHJlc3BvbnNlLmpzb24oKV0pCisgICAgICAgIHdpdGggTW9j
a01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAg
ICAgICAgIHJlc3BvbnNlID0gY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS91cGxvYWQvcHJv
Y2Vzcz9wbGF0Zm9ybT1NYWMmc3R5bGU9UmVsZWFzZSZmbGF2b3I9d2syJmlkPWQ4YmNlMjZmYTY1
YycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAy
MDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXNwb25zZS5qc29uKCkp
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ2Q4YmNlMjZmYTY1YzZmYzhmMzljMTc5
MjdhYmI3N2Y2OWZhYjgyZmMnXSwgW3Jlc3VsdFsnY29tbWl0cyddWzFdWydpZCddIGZvciByZXN1
bHQgaW4gcmVzcG9uc2UuanNvbigpXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2Rp
Y3Qoc3RhdHVzPSdvaycpXSwgW2VsZW1lbnRbJ3Byb2Nlc3NpbmcnXVsncHl0aG9uLXRlc3RzJ10g
Zm9yIGVsZW1lbnQgaW4gcmVzcG9uc2UuanNvbigpXSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L21vZGVsL2NvbW1pdF9jb250ZXh0LnB5CShyZXZpc2lvbiAyNzQ0ODMpCisrKyBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb21taXRfY29u
dGV4dC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMCw3ICszMCw3IEBAIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1l
CiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21taXQKIGZyb20g
cmVzdWx0c2RicHkubW9kZWwucmVwb3NpdG9yeSBpbXBvcnQgUmVwb3NpdG9yeQogCi1mcm9tIHdl
YmtpdHNjbXB5IGltcG9ydCBTY21CYXNlCitmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBTY21CYXNl
LCBDb21taXQgYXMgU2NtQ29tbWl0LCBDb250cmlidXRvcgogCiAKIGNsYXNzIENvbW1pdENvbnRl
eHQob2JqZWN0KToKQEAgLTY1LDYgKzY1LDQzIEBAIGNsYXNzIENvbW1pdENvbnRleHQob2JqZWN0
KToKICAgICAgICAgdXVpZCA9IGNvbHVtbnMuQmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVp
cmVkPVRydWUsIGNsdXN0ZXJpbmdfb3JkZXI9J0RFU0MnKQogICAgICAgICBjb21taXRfaWQgPSBj
b2x1bW5zLlRleHQocmVxdWlyZWQ9VHJ1ZSkKIAorICAgIGNsYXNzIENvbW1pdE1vZGVsTWsyKE1v
ZGVsKToKKyAgICAgICAgcmVwb3NpdG9yeV9pZCA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5
PVRydWUsIHJlcXVpcmVkPVRydWUpCisgICAgICAgIHBlb3BsZSA9IGNvbHVtbnMuVGV4dChyZXF1
aXJlZD1GYWxzZSkKKyAgICAgICAgbWVzc2FnZSA9IGNvbHVtbnMuVGV4dChyZXF1aXJlZD1GYWxz
ZSkKKworICAgICAgICBpZGVudGlmaWVyID0gY29sdW1ucy5UZXh0KHJlcXVpcmVkPUZhbHNlKQor
ICAgICAgICBoYXNoID0gY29sdW1ucy5UZXh0KHJlcXVpcmVkPUZhbHNlKQorICAgICAgICByZXZp
c2lvbiA9IGNvbHVtbnMuSW50ZWdlcihyZXF1aXJlZD1GYWxzZSkKKworICAgICAgICBkZWYgdG9f
Y29tbWl0KHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIFNjbUNvbW1pdCgKKyAgICAgICAgICAg
ICAgICByZXBvc2l0b3J5X2lkPXNlbGYucmVwb3NpdG9yeV9pZCwgYnJhbmNoPXNlbGYuYnJhbmNo
LAorICAgICAgICAgICAgICAgIHRpbWVzdGFtcD1zZWxmLnV1aWQgLy8gQ29tbWl0LlRJTUVTVEFN
UF9UT19VVUlEX01VTFRJUExJRVIsCisgICAgICAgICAgICAgICAgb3JkZXI9c2VsZi51dWlkICUg
Q29tbWl0LlRJTUVTVEFNUF9UT19VVUlEX01VTFRJUExJRVIsCisgICAgICAgICAgICAgICAgYXV0
aG9yPXNlbGYucGVvcGxlLmdldCgnYXV0aG9yJykgaWYgc2VsZi5wZW9wbGUgZWxzZSBOb25lLAor
ICAgICAgICAgICAgICAgIG1lc3NhZ2U9c2VsZi5tZXNzYWdlLAorICAgICAgICAgICAgICAgIGlk
ZW50aWZpZXI9c2VsZi5pZGVudGlmaWVyLAorICAgICAgICAgICAgICAgIGhhc2g9c2VsZi5oYXNo
LAorICAgICAgICAgICAgICAgIHJldmlzaW9uPXNlbGYucmV2aXNpb24sCisgICAgICAgICAgICAp
CisKKyAgICBjbGFzcyBDb21taXRCeVJlZihDb21taXRNb2RlbE1rMik6CisgICAgICAgIF9fdGFi
bGVfbmFtZV9fID0gJ2NvbW1pdHNfcmVmX3RvX29iamVjdCcKKyAgICAgICAgcmVmID0gY29sdW1u
cy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisgICAgICAgIHV1aWQgPSBj
b2x1bW5zLkJpZ0ludChyZXF1aXJlZD1UcnVlKQorICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRl
eHQocmVxdWlyZWQ9VHJ1ZSkKKworICAgIGNsYXNzIENvbW1pdEJ5VXVpZEFzY2VuZGluZ01rMihD
b21taXRNb2RlbE1rMik6CisgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2NvbW1pdHNfdXVpZF90
b19vYmplY3RfYXNjZW5kaW5nJworICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocGFydGl0
aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQorICAgICAgICB1dWlkID0gY29sdW1ucy5CaWdJ
bnQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSwgY2x1c3RlcmluZ19vcmRlcj0nQVND
JykKKworICAgIGNsYXNzIENvbW1pdEJ5VXVpZERlc2NlbmRpbmdNazIoQ29tbWl0TW9kZWxNazIp
OgorICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdjb21taXRzX3V1aWRfdG9fb2JqZWN0X2Rlc2Nl
bmRpbmcnCisgICAgICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUs
IHJlcXVpcmVkPVRydWUpCisgICAgICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tl
eT1UcnVlLCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29yZGVyPSdERVNDJykKKwogICAgIGNs
YXNzIEJyYW5jaGVzKE1vZGVsKToKICAgICAgICAgX190YWJsZV9uYW1lX18gPSAnY29tbWl0X2Jy
YW5jaGVzJwogICAgICAgICByZXBvc2l0b3J5X2lkID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9r
ZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKQEAgLTgwLDEyICsxMTcsMTQgQEAgY2xhc3MgQ29tbWl0
Q29udGV4dChvYmplY3QpOgogICAgICAgICBzZWxmLmNhc3NhbmRyYSA9IGNhc3NhbmRyYQogICAg
ICAgICBzZWxmLnJlcG9zaXRvcmllcyA9IHt9CiAgICAgICAgIHNlbGYuY2FjaGVfdGltZW91dCA9
IGNhY2hlX3RpbWVvdXQKKyAgICAgICAgc2VsZi5uYW1lID0gJ2NvbW1pdC1pZGVudGlmaWVycycK
IAogICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVf
dGFibGUoc2VsZi5Db21taXRCeUlEKQotICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRl
X3RhYmxlKHNlbGYuQ29tbWl0QnlVdWlkQXNjZW5kaW5nKQotICAgICAgICAgICAgc2VsZi5jYXNz
YW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYuQ29tbWl0QnlVdWlkRGVzY2VuZGluZykKLSAgICAgICAg
ICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLkJyYW5jaGVzKQorICAgICAgICAg
ICAgZm9yIG9sZCBpbiBbc2VsZi5Db21taXRCeUlELCBzZWxmLkNvbW1pdEJ5VXVpZEFzY2VuZGlu
Zywgc2VsZi5Db21taXRCeVV1aWREZXNjZW5kaW5nXToKKyAgICAgICAgICAgICAgICBzZWxmLmNh
c3NhbmRyYS5jcmVhdGVfdGFibGUob2xkKQorCisgICAgICAgICAgICBmb3IgdGFibGUgaW4gW3Nl
bGYuQ29tbWl0QnlSZWYsIHNlbGYuQ29tbWl0QnlVdWlkQXNjZW5kaW5nTWsyLCBzZWxmLkNvbW1p
dEJ5VXVpZERlc2NlbmRpbmdNazIsIHNlbGYuQnJhbmNoZXNdOgorICAgICAgICAgICAgICAgIHNl
bGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZSh0YWJsZSkKIAogICAgIGRlZiBfX2VudGVyX18oc2Vs
Zik6CiAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLl9fZW50ZXJfXygpCkBAIC0xNjksNiArMjA4LDIy
IEBAIGNsYXNzIENvbW1pdENvbnRleHQob2JqZWN0KToKICAgICAgICAgICAgIGNhbGxiYWNrLAog
ICAgICAgICApCiAKKyAgICBkZWYgZmluZF9jb21taXRzX2J5X3JlZihzZWxmLCByZXBvc2l0b3J5
X2lkLCByZWYsIGxpbWl0PTEwMCk6CisgICAgICAgICMgRklYTUU6IFNob3VsZCB1c2UgdGhlIHJl
ZGlzIGNhY2hlLCBidXQgdGhlIHJlZGlzIGNhY2hlIGRvZXNuJ3Qgc3VwcG9ydCBuZXctc3R5bGUg
Y29tbWl0cyB5ZXQKKyAgICAgICAgd2l0aCBzZWxmOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5j
ZShyZWYsIGludCkgb3IgcmVmLmlzZGlnaXQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gW21v
ZGVsLnRvX2NvbW1pdCgpIGZvciBtb2RlbCBpbiBzZWxmLmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90
YWJsZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5Db21taXRCeVJlZi5fX3RhYmxlX25hbWVf
XywgbGltaXQ9bGltaXQsCisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVwb3Np
dG9yeV9pZCwgcmVmPSdye30nLmZvcm1hdChyZWYpLAorICAgICAgICAgICAgICAgICldCisKKyAg
ICAgICAgICAgICMgRklYTUU6IFNBU0kgaW5kZWNpZXMgYXJlIHRoZSBjYW5vaWNhbCB3YXkgdG8g
c29sdmUgdGhpcyBwcm9ibGVtLCBidXQgcmVxdWlyZSBDYXNzYW5kcmEgMy40IHdoaWNoCisgICAg
ICAgICAgICAjIGhhc24ndCBiZWVuIGRlcGxveWVkIHRvIG91ciBkYXRhY2VudGVycyB5ZXQuIFRo
aXMgd29ya3MgZm9yIGNvbW1pdHMsIGJ1dCBpcyBsZXNzIHRyYW5zcGFyZW50LgorICAgICAgICAg
ICAgcmV0dXJuIFttb2RlbC50b19jb21taXQoKSBmb3IgbW9kZWwgaW4gc2VsZi5jYXNzYW5kcmEu
c2VsZWN0X2Zyb21fdGFibGUoCisgICAgICAgICAgICAgICAgc2VsZi5Db21taXRCeVJlZi5fX3Rh
YmxlX25hbWVfXywgbGltaXQ9bGltaXQsCisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1y
ZXBvc2l0b3J5X2lkLCByZWZfX2d0ZT1yZWYubG93ZXIoKSwgcmVmX19sdGU9KHJlZi5sb3dlcigp
ICsgJ2cnKSwKKyAgICAgICAgICAgICldCisKICAgICBkZWYgZmluZF9jb21taXRzX2J5X3V1aWQo
c2VsZiwgcmVwb3NpdG9yeV9pZCwgYnJhbmNoLCB1dWlkLCBsaW1pdD0xMDApOgogICAgICAgICBp
ZiBicmFuY2ggaXMgTm9uZToKICAgICAgICAgICAgIGJyYW5jaCA9IHNlbGYucmVwb3NpdG9yaWVz
W3JlcG9zaXRvcnlfaWRdLmRlZmF1bHRfYnJhbmNoCkBAIC0yOTgsNDcgKzM1MywxMDEgQEAgY2xh
c3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYuQnJhbmNoZXMu
X190YWJsZV9uYW1lX18sIGxpbWl0PWxpbWl0LCByZXBvc2l0b3J5X2lkPXJlcG9zaXRvcnlfaWQs
CiAgICAgICAgICAgICApXQogCisgICAgZGVmIHJlZ2lzdGVyKHNlbGYsIGNvbmZpZ3VyYXRpb24s
IGNvbW1pdHMsIHN1aXRlLCB0ZXN0X3Jlc3VsdHMsIHRpbWVzdGFtcD1Ob25lKToKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgorICAgICAgICAgICAgICAg
IHNlbGYucmVnaXN0ZXJfcGFydGlhbF9jb21taXQoCisgICAgICAgICAgICAgICAgICAgIHJlcG9z
aXRvcnlfaWQ9Y29tbWl0LnJlcG9zaXRvcnlfaWQsCisgICAgICAgICAgICAgICAgICAgIHJlZj1j
b21taXQuaWQsCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uPWNvbW1pdC5yZXZpc2lvbiwK
KyAgICAgICAgICAgICAgICAgICAgaGFzaD1jb21taXQuaGFzaCwKKyAgICAgICAgICAgICAgICAg
ICAgZmFzdD1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp
b24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBkaWN0KAorICAgICAgICAgICAgICAgIHN0YXR1
cz0nZXJyb3InLAorICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXN0cihlKSwKKyAgICAgICAg
ICAgICkKKworICAgICAgICByZXR1cm4gZGljdChzdGF0dXM9J29rJykKKwogICAgIGRlZiByZWdp
c3Rlcl9jb21taXQoc2VsZiwgY29tbWl0KToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29t
bWl0LCBDb21taXQpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlw
ZSB7Q29tbWl0fSwgZ290IHt0eXBlKGNvbW1pdCl9JykKKyAgICAgICAgaWYgbm90IGlzaW5zdGFu
Y2UoY29tbWl0LCBTY21Db21taXQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhw
ZWN0ZWQgdHlwZSB7U2NtQ29tbWl0fSwgZ290IHt0eXBlKGNvbW1pdCl9JykKIAogICAgICAgICB3
aXRoIHNlbGY6CiAgICAgICAgICAgICBpZiBjb21taXQucmVwb3NpdG9yeV9pZCBub3QgaW4gc2Vs
Zi5yZXBvc2l0b3JpZXM6CiAgICAgICAgICAgICAgICAgc2VsZi5yZXBvc2l0b3JpZXNbY29tbWl0
LnJlcG9zaXRvcnlfaWRdID0gUmVwb3NpdG9yeShrZXk9Y29tbWl0LnJlcG9zaXRvcnlfaWQpCiAK
LSAgICAgICAgICAgIGZvciB0YWJsZSBpbiBbc2VsZi5Db21taXRCeUlELCBzZWxmLkNvbW1pdEJ5
VXVpZEFzY2VuZGluZywgc2VsZi5Db21taXRCeVV1aWREZXNjZW5kaW5nXToKKyAgICAgICAgICAg
IGZvciBvbGQgaW4gW3NlbGYuQ29tbWl0QnlJRCwgc2VsZi5Db21taXRCeVV1aWRBc2NlbmRpbmcs
IHNlbGYuQ29tbWl0QnlVdWlkRGVzY2VuZGluZ106CisgICAgICAgICAgICAgICAgc2VsZi5jYXNz
YW5kcmEuaW5zZXJ0X3JvdygKKyAgICAgICAgICAgICAgICAgICAgb2xkLl9fdGFibGVfbmFtZV9f
LAorICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPWNvbW1pdC5yZXBvc2l0b3J5X2lk
LAorICAgICAgICAgICAgICAgICAgICBicmFuY2g9Y29tbWl0LmJyYW5jaCwKKyAgICAgICAgICAg
ICAgICAgICAgY29tbWl0X2lkPXN0cihjb21taXQucmV2aXNpb24pLmxvd2VyKCkgaWYgY29tbWl0
LnJldmlzaW9uIGVsc2UgY29tbWl0Lmhhc2gsCisgICAgICAgICAgICAgICAgICAgIHV1aWQ9Y29t
bWl0LnV1aWQsCisgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlcj1jb21taXQuYXV0aG9yLmVt
YWlsIGlmIGNvbW1pdC5hdXRob3IgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAgICBtZXNz
YWdlPWNvbW1pdC5tZXNzYWdlLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgZm9y
IHRhYmxlIGluIFtzZWxmLkNvbW1pdEJ5VXVpZEFzY2VuZGluZ01rMiwgc2VsZi5Db21taXRCeVV1
aWREZXNjZW5kaW5nTWsyLCBzZWxmLkJyYW5jaGVzXToKICAgICAgICAgICAgICAgICBzZWxmLmNh
c3NhbmRyYS5pbnNlcnRfcm93KAogICAgICAgICAgICAgICAgICAgICB0YWJsZS5fX3RhYmxlX25h
bWVfXywKLSAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1jb21taXQucmVwb3NpdG9y
eV9pZCwgYnJhbmNoPWNvbW1pdC5icmFuY2gsCi0gICAgICAgICAgICAgICAgICAgIGNvbW1pdF9p
ZD1zdHIoY29tbWl0LmlkKS5sb3dlcigpLCB1dWlkPWNvbW1pdC51dWlkLAotICAgICAgICAgICAg
ICAgICAgICBjb21taXR0ZXI9Y29tbWl0LmNvbW1pdHRlciwgbWVzc2FnZT1jb21taXQubWVzc2Fn
ZSwKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1jb21taXQucmVwb3NpdG9yeV9p
ZCwKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5icmFuY2gsCisgICAgICAgICAg
ICAgICAgICAgIHJldmlzaW9uPWNvbW1pdC5yZXZpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
aGFzaD1jb21taXQuaGFzaCwKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1zdHIoY29t
bWl0KSBpZiBjb21taXQuaWRlbnRpZmllciBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAg
IHV1aWQ9Y29tbWl0LnV1aWQsCisgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlcj1qc29uLmR1
bXBzKGNvbW1pdC5hdXRob3IsIGNscz1Db250cmlidXRvci5FbmNvZGVyKSBpZiBjb21taXQuYXV0
aG9yIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1jb21taXQubWVzc2Fn
ZSwKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGZvciBrZXksIHJlZl9nZW4gaW4g
KAorICAgICAgICAgICAgICAgICgncmV2aXNpb24nLCBsYW1iZGEgY29tbWl0OiAncnt9Jy5mb3Jt
YXQoY29tbWl0LnJldmlzaW9uKSksCisgICAgICAgICAgICAgICAgKCdoYXNoJywgbGFtYmRhIGNv
bW1pdDogY29tbWl0Lmhhc2gpLAorICAgICAgICAgICAgICAgICgnaWRlbnRpZmllcicsIHN0ciks
CisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIGlmIG5vdCBnZXRhdHRyKGNvbW1pdCwg
a2V5KToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIHNl
bGYuY2Fzc2FuZHJhLmluc2VydF9yb3coCisgICAgICAgICAgICAgICAgICAgIHNlbGYuQ29tbWl0
QnlSZWYuX190YWJsZV9uYW1lX18sCisgICAgICAgICAgICAgICAgICAgIHJlZj1yZWZfZ2VuKGNv
bW1pdCksCisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9Y29tbWl0LnJlcG9zaXRv
cnlfaWQsCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1jb21taXQuYnJhbmNoLAorICAgICAg
ICAgICAgICAgICAgICByZXZpc2lvbj1jb21taXQucmV2aXNpb24sCisgICAgICAgICAgICAgICAg
ICAgIGhhc2g9Y29tbWl0Lmhhc2gsCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9c3Ry
KGNvbW1pdCkgaWYgY29tbWl0LmlkZW50aWZpZXIgZWxzZSBOb25lLAorICAgICAgICAgICAgICAg
ICAgICB1dWlkPWNvbW1pdC51dWlkLAorICAgICAgICAgICAgICAgICAgICBjb21taXR0ZXI9anNv
bi5kdW1wcyhjb21taXQuYXV0aG9yLCBjbHM9Q29udHJpYnV0b3IuRW5jb2RlcikgaWYgY29tbWl0
LmF1dGhvciBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9Y29tbWl0Lm1l
c3NhZ2UsCiAgICAgICAgICAgICAgICAgKQorCiAgICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5p
bnNlcnRfcm93KAogICAgICAgICAgICAgICAgIHNlbGYuQnJhbmNoZXMuX190YWJsZV9uYW1lX18s
CiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1jb21taXQucmVwb3NpdG9yeV9pZCwgYnJh
bmNoPWNvbW1pdC5icmFuY2gsCiAgICAgICAgICAgICApCiAgICAgICAgICAgICByZXR1cm4gY29t
bWl0CiAKLSAgICBkZWYgcmVnaXN0ZXJfY29tbWl0X3dpdGhfcmVwb19hbmRfaWQoc2VsZiwgcmVw
b3NpdG9yeV9pZCwgYnJhbmNoLCBjb21taXRfaWQpOgotICAgICAgICBpZiBicmFuY2ggaXMgTm9u
ZToKLSAgICAgICAgICAgIGJyYW5jaCA9IHNlbGYucmVwb3NpdG9yaWVzW3JlcG9zaXRvcnlfaWRd
LmRlZmF1bHRfYnJhbmNoCisgICAgZGVmIHJlZ2lzdGVyX3BhcnRpYWxfY29tbWl0KHNlbGYsIHJl
cG9zaXRvcnlfaWQsIHJlZj1Ob25lLCByZXZpc2lvbj1Ob25lLCBoYXNoPU5vbmUsIGlkZW50aWZp
ZXI9Tm9uZSwgZmFzdD1UcnVlKToKICAgICAgICAgaWYgcmVwb3NpdG9yeV9pZCBub3QgaW4gc2Vs
Zi5yZXBvc2l0b3JpZXM6CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3t9IGlzIG5v
dCBhIHJlY29nbml6ZWQgcmVwb3NpdG9yeScpCiAKICAgICAgICAgd2l0aCBzZWxmOgotICAgICAg
ICAgICAgY29tbWl0cyA9IHNlbGYuZmluZF9jb21taXRzX2J5X2lkKHJlcG9zaXRvcnlfaWQ9cmVw
b3NpdG9yeV9pZCwgYnJhbmNoPWJyYW5jaCwgY29tbWl0X2lkPWNvbW1pdF9pZCkKKyAgICAgICAg
ICAgIGNvbW1pdHMgPSBzZWxmLmZpbmRfY29tbWl0c19ieV9yZWYocmVwb3NpdG9yeV9pZD1yZXBv
c2l0b3J5X2lkLCByZWY9cmVmIG9yIHJldmlzaW9uIG9yIGhhc2ggb3IgaWRlbnRpZmllcikKICAg
ICAgICAgICAgIGlmIGxlbihjb21taXRzKSA+IDE6Ci0gICAgICAgICAgICAgICAgcmFpc2UgU2Nt
QmFzZS5FeGNlcHRpb24oZidNdWx0aXBsZSBjb21taXRzIHdpdGggdGhlIGlkIHtjb21taXRfaWR9
IGV4aXN0IGluIHtyZXBvc2l0b3J5X2lkfSBvbiB7YnJhbmNofScpCi0gICAgICAgICAgICBpZiBj
b21taXRzOgorICAgICAgICAgICAgICAgIHJhaXNlIFNjbUJhc2UuRXhjZXB0aW9uKGYnTXVsdGlw
bGUgY29tbWl0cyB3aXRoIHRoZSBpZCB7cmVmIG9yIHJldmlzaW9uIG9yIGhhc2ggb3IgaWRlbnRp
Zmllcn0gZXhpc3QgaW4ge3JlcG9zaXRvcnlfaWR9JykKKyAgICAgICAgICAgIGlmIGNvbW1pdHMg
YW5kIChmYXN0IG9yIGNvbW1pdHNbMF0uaWRlbnRpZmllcik6CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGNvbW1pdHNbMF0KLSAgICAgICAgICAgIGNvbW1pdCA9IHNlbGYucmVwb3NpdG9yaWVzW3Jl
cG9zaXRvcnlfaWRdLmNvbW1pdF9mb3JfaWQoY29tbWl0X2lkKQorICAgICAgICAgICAgY29tbWl0
ID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uY29tbWl0KHJlZj1yZWYsIHJldmlz
aW9uPXJldmlzaW9uLCBoYXNoPWhhc2gsIGlkZW50aWZpZXI9aWRlbnRpZmllciwgZmFzdD1mYXN0
KQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVnaXN0ZXJfY29tbWl0KGNvbW1pdCkKIAogICAg
IGRlZiB1cmwoc2VsZiwgY29tbWl0KToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29tbWl0
LCBDb21taXQpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb21taXQsIENvbW1pdCkgYW5k
IG5vdCBpc2luc3RhbmNlKGNvbW1pdCwgU2NtQ29tbWl0KToKICAgICAgICAgICAgIHJhaXNlIFR5
cGVFcnJvcihmJ0V4cGVjdGVkIHR5cGUge0NvbW1pdH0sIGdvdCB7dHlwZShjb21taXQpfScpCiAK
ICAgICAgICAgcmVwbyA9IHNlbGYucmVwb3NpdG9yaWVzLmdldChjb21taXQucmVwb3NpdG9yeV9p
ZCkKICAgICAgICAgaWYgcmVwbzoKLSAgICAgICAgICAgIHJldHVybiByZXBvLnVybF9mb3JfY29t
bWl0KGNvbW1pdC5pZCkKKyAgICAgICAgICAgIHJldHVybiByZXBvLnVybF9mb3JfY29tbWl0KGNv
bW1pdC5pZCBpZiBpc2luc3RhbmNlKGNvbW1pdCwgQ29tbWl0KSBlbHNlIGNvbW1pdC5oYXNoIG9y
IGNvbW1pdC5yZXZpc2lvbikKICAgICAgICAgcmV0dXJuIE5vbmUKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0X3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAyNzQ0ODMpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9tb2RlbC9jb21taXRfY29udGV4dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtNTMsOCArNTMsOCBAQCBjbGFzcyBDb21taXRDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVz
CiAgICAgICAgICAgICAgICAgZm9yIGtleSwgcmVwb3NpdG9yeSBpbiBkaWN0KHNhZmFyaT1zYWZh
cmksIHdlYmtpdD13ZWJraXQpLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgICAgIGZvciBicmFu
Y2gsIGNvbW1pdHMgaW4gcmVwb3NpdG9yeS5jb21taXRzLml0ZW1zKCk6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgY29tbWl0IGluIGNvbW1pdHM6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb21taXRfd2l0aF9yZXBvX2FuZF9pZCgKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LCBicmFuY2gsIGNvbW1pdC5oYXNoIG9y
IGNvbW1pdC5yZXZpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFi
YXNlLnJlZ2lzdGVyX3BhcnRpYWxfY29tbWl0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrZXksIHJlZj1jb21taXQuaGFzaCBvciBjb21taXQucmV2aXNpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lm
X25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9j
a0Nhc3NhbmRyYUNvbnRleHQpCkBAIC0xODMsNyArMTgzLDcgQEAgY2xhc3MgQ29tbWl0Q29udGV4
dFRlc3QoV2FpdEZvckRvY2tlclRlcwogICAgIGRlZiB0ZXN0X2NvbW1pdF9mcm9tX3N0YXNoX3Jl
cG8oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToK
ICAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5
LndlYmtpdCgpOgogICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBj
YXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9j
b21taXRfd2l0aF9yZXBvX2FuZF9pZCgnc2FmYXJpJywgJ21haW4nLCAnZDhiY2UyNmZhNjVjJykK
KyAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJfcGFydGlhbF9jb21taXQoJ3NhZmFy
aScsIGhhc2g9J2Q4YmNlMjZmYTY1YycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAog
ICAgICAgICAgICAgICAgIFtzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0n
ZDhiY2UyNmZhNjVjJyldLAogICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuZmluZF9jb21t
aXRzX2J5X2lkKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFpbicsIGNvbW1pdF9p
ZD0nZDhiY2UyNmZhNjVjJyksCkBAIC0xOTMsNyArMTkzLDcgQEAgY2xhc3MgQ29tbWl0Q29udGV4
dFRlc3QoV2FpdEZvckRvY2tlclRlcwogICAgIGRlZiB0ZXN0X2NvbW1pdF9mcm9tX3N2bl9yZXBv
KHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CiAg
ICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53
ZWJraXQoKToKICAgICAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fz
c2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJfY29t
bWl0X3dpdGhfcmVwb19hbmRfaWQoJ3dlYmtpdCcsICd0cnVuaycsIDYpCisgICAgICAgICAgICBz
ZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX3BhcnRpYWxfY29tbWl0KCd3ZWJraXQnLCByZXZpc2lvbj02
KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICAgICBbc2VsZi5z
dm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTYpXSwKICAgICAgICAgICAgICAgICBzZWxm
LmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFu
Y2g9J3RydW5rJywgY29tbWl0X2lkPTYpLApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9ja19tb2RlbF9mYWN0b3J5LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L21vZGVsL21vY2tfbW9kZWxfZmFjdG9yeS5weQkocmV2aXNpb24gMjc0NDgzKQorKysgVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9ja19tb2Rl
bF9mYWN0b3J5LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMp
IDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTkyLDggKzkyLDggQEAgY2xhc3MgTW9ja01vZGVsRmFjdG9yeShv
YmplY3QpOgogICAgICAgICAgICAgICAgIGZvciBrZXksIHJlcG9zaXRvcnkgaW4gZGljdChzYWZh
cmk9c2FmYXJpLCB3ZWJraXQ9d2Via2l0KS5pdGVtcygpOgogICAgICAgICAgICAgICAgICAgICBm
b3IgYnJhbmNoLCBjb21taXRzIGluIHJlcG9zaXRvcnkuY29tbWl0cy5pdGVtcygpOgogICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZGVsLmNvbW1pdF9jb250ZXh0LnJlZ2lzdGVyX2NvbW1pdF93aXRoX3Jl
cG9fYW5kX2lkKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksIGJyYW5jaCwg
Y29tbWl0Lmhhc2ggb3IgY29tbWl0LnJldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZGVsLmNvbW1pdF9jb250ZXh0LnJlZ2lzdGVyX3BhcnRpYWxfY29tbWl0KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksIGhhc2g9Y29tbWl0Lmhhc2gsIHJldmlzaW9u
PWNvbW1pdC5yZXZpc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAg
IHJldHVybiBtb2RlbAogCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9tb2RlbC9tb2RlbC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9tb2RlbC5weQkocmV2aXNp
b24gMjc0NDgzKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvbW9kZWwucHkJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgY2xh
c3MgTW9kZWwob2JqZWN0KToKICAgICAgICAgICAgIHR0bF9zZWNvbmRzPXNlbGYuZGVmYXVsdF90
dGxfc2Vjb25kcywKICAgICAgICAgKQogCi0gICAgICAgIGZvciBjb250ZXh0IGluIFtzZWxmLmNp
X2NvbnRleHQsIHNlbGYuZmFpbHVyZV9jb250ZXh0LCBzZWxmLnN1aXRlX2NvbnRleHQsIHNlbGYu
dGVzdF9jb250ZXh0XToKKyAgICAgICAgZm9yIGNvbnRleHQgaW4gW3NlbGYuY2lfY29udGV4dCwg
c2VsZi5mYWlsdXJlX2NvbnRleHQsIHNlbGYuc3VpdGVfY29udGV4dCwgc2VsZi50ZXN0X2NvbnRl
eHQsIHNlbGYuY29tbWl0X2NvbnRleHRdOgogICAgICAgICAgICAgc2VsZi51cGxvYWRfY29udGV4
dC5yZWdpc3Rlcl91cGxvYWRfY2FsbGJhY2soY29udGV4dC5uYW1lLCBjb250ZXh0LnJlZ2lzdGVy
KQogCiAgICAgICAgIHNlbGYuYXJjaGl2ZV9jb250ZXh0ID0gQXJjaGl2ZUNvbnRleHQoCkluZGV4
OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9y
ZXBvc2l0b3J5LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnkucHkJKHJldmlzaW9uIDI3NDQ4MykK
KysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L3JlcG9zaXRvcnkucHkJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDkgQEAgY2xhc3MgUmVw
b3NpdG9yeShvYmplY3QpOgogICAgIGRlZiBjb21taXRfZm9yX2lkKHNlbGYsIGlkKToKICAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKKyAgICBkZWYgY29tbWl0KHNlbGYsIHJl
Zj1Ob25lLCByZXZpc2lvbj1Ob25lLCBoYXNoPU5vbmUsIGlkZW50aWZpZXI9Tm9uZSwgZmFzdD1U
cnVlKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisKICAgICBkZWYgdXJs
X2Zvcl9jb21taXQoc2VsZiwgY29tbWl0KToKICAgICAgICAgcmV0dXJuIE5vbmUKIApAQCAtNTgs
NiArNjEsMTMgQEAgY2xhc3MgU3Rhc2hSZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogICAgICAgICAg
ICAgbWVzc2FnZT1jb21taXQubWVzc2FnZSwKICAgICAgICAgKQogCisgICAgZGVmIGNvbW1pdChz
ZWxmLCByZWY9Tm9uZSwgcmV2aXNpb249Tm9uZSwgaGFzaD1Ob25lLCBpZGVudGlmaWVyPU5vbmUs
IGZhc3Q9VHJ1ZSk6CisgICAgICAgIGlmIGlkZW50aWZpZXI6CisgICAgICAgICAgICBmYXN0ID0g
RmFsc2UKKyAgICAgICAgaWYgcmVmOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVtb3RlLmZp
bmQocmVmLCBpbmNsdWRlX2lkZW50aWZpZXI9bm90IGZhc3QpCisgICAgICAgIHJldHVybiBzZWxm
LnJlbW90ZS5jb21taXQocmV2aXNpb249cmV2aXNpb24sIGhhc2g9aGFzaCwgaWRlbnRpZmllcj1p
ZGVudGlmaWVyLCBpbmNsdWRlX2lkZW50aWZpZXI9bm90IGZhc3QpCisKICAgICBkZWYgdXJsX2Zv
cl9jb21taXQoc2VsZiwgY29tbWl0KToKICAgICAgICAgcmV0dXJuIGYne3NlbGYucmVtb3RlLnVy
bH0vY29tbWl0cy97Y29tbWl0fScKIApAQCAtODMsNSArOTMsMTQgQEAgY2xhc3MgV2ViS2l0UmVw
b3NpdG9yeShSZXBvc2l0b3J5KToKICAgICAgICAgICAgIG1lc3NhZ2U9Y29tbWl0Lm1lc3NhZ2Us
CiAgICAgICAgICkKIAorICAgIGRlZiBjb21taXQoc2VsZiwgcmVmPU5vbmUsIHJldmlzaW9uPU5v
bmUsIGhhc2g9Tm9uZSwgaWRlbnRpZmllcj1Ob25lLCBmYXN0PVRydWUpOgorICAgICAgICBpZiBp
ZGVudGlmaWVyOgorICAgICAgICAgICAgZmFzdCA9IEZhbHNlCisgICAgICAgIGlmIHJlZjoKKyAg
ICAgICAgICAgIGlmIGlzaW5zdGFuY2UocmVmLCBpbnQpIG9yIHJlZi5pc2RpZ2l0KCk6CisgICAg
ICAgICAgICAgICAgcmVmID0gJ3J7fScuZm9ybWF0KHJlZikKKyAgICAgICAgICAgIHJldHVybiBz
ZWxmLnJlbW90ZS5maW5kKHJlZiwgaW5jbHVkZV9pZGVudGlmaWVyPW5vdCBmYXN0KQorICAgICAg
ICByZXR1cm4gc2VsZi5yZW1vdGUuY29tbWl0KHJldmlzaW9uPXJldmlzaW9uLCBoYXNoPWhhc2gs
IGlkZW50aWZpZXI9aWRlbnRpZmllciwgaW5jbHVkZV9pZGVudGlmaWVyPW5vdCBmYXN0KQorCiAg
ICAgZGVmIHVybF9mb3JfY29tbWl0KHNlbGYsIGNvbW1pdCk6CiAgICAgICAgIHJldHVybiBmJ2h0
dHBzOi8vY29tbWl0cy53ZWJraXQub3JnL3J7Y29tbWl0fScKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnlfdW5pdHRl
c3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeV91bml0dGVzdC5weQkocmV2aXNpb24gMjc0NDgz
KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9k
ZWwvcmVwb3NpdG9yeV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAK
LSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwxNSArMzEsMTUgQEAgY2xhc3MgUmVw
b3NpdG9yeVRlc3QoV2FpdEZvckRvY2tlclRlc3RDYQogICAgICAgICB3aXRoIE1vY2tNb2RlbEZh
Y3Rvcnkud2Via2l0KCk6CiAgICAgICAgICAgICBzdm5fcmVwbyA9IFdlYktpdFJlcG9zaXRvcnko
KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd3ZWJraXQnLCBzdm5fcmVwby5rZXkpCi0g
ICAgICAgICAgICBjb21taXQgPSBzdm5fcmVwby5jb21taXRfZm9yX2lkKDYpCisgICAgICAgICAg
ICBjb21taXQgPSBzdm5fcmVwby5jb21taXQocmV2aXNpb249NikKICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY29tbWl0LnV1aWQsIDE2MDE2Mzk5MDAwMCkKICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY29tbWl0Lm1lc3NhZ2UsICc2dGggY29tbWl0JykKICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY29tbWl0LmJyYW5jaCwgJ3RydW5rJykKIAotICAgIGRlZiB0ZXN0X2Jy
YW5jaF9zdm4oc2VsZik6CisgICAgZGVmIHRlc3RfcmVmX3N2bihzZWxmKToKICAgICAgICAgd2l0
aCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgogICAgICAgICAgICAgc3ZuX3JlcG8gPSBXZWJL
aXRSZXBvc2l0b3J5KCkKLSAgICAgICAgICAgIGNvbW1pdCA9IHN2bl9yZXBvLmNvbW1pdF9mb3Jf
aWQoNykKKyAgICAgICAgICAgIGNvbW1pdCA9IHN2bl9yZXBvLmNvbW1pdChyZWY9NykKICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LnV1aWQsIDE2MDE2NDA5MDAwMCkKICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0Lm1lc3NhZ2UsICc3dGggY29tbWl0JykKICAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LmJyYW5jaCwgJ2JyYW5jaC1hJykKQEAg
LTQ4LDE1ICs0OCwyMyBAQCBjbGFzcyBSZXBvc2l0b3J5VGVzdChXYWl0Rm9yRG9ja2VyVGVzdENh
CiAgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSBhcyBzYWZhcmk6CiAgICAg
ICAgICAgICBnaXRfcmVwbyA9IFN0YXNoUmVwb3NpdG9yeSgnaHR0cHM6Ly97fScuZm9ybWF0KHNh
ZmFyaS5yZW1vdGUpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc2FmYXJpJywgZ2l0
X3JlcG8ua2V5KQotICAgICAgICAgICAgY29tbWl0ID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgn
MWFiZTI1YjQ0M2U5JykKKyAgICAgICAgICAgIGNvbW1pdCA9IGdpdF9yZXBvLmNvbW1pdChoYXNo
PScxYWJlMjViNDQzZTknKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQudXVp
ZCwgMTYwMTY2MzAwMDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQuYnJh
bmNoLCAnbWFpbicpCisKKyAgICBkZWYgdGVzdF9yZWZfc3Rhc2goc2VsZik6CisgICAgICAgIHdp
dGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSBhcyBzYWZhcmk6CisgICAgICAgICAgICBnaXRf
cmVwbyA9IFN0YXNoUmVwb3NpdG9yeSgnaHR0cHM6Ly97fScuZm9ybWF0KHNhZmFyaS5yZW1vdGUp
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc2FmYXJpJywgZ2l0X3JlcG8ua2V5KQor
ICAgICAgICAgICAgY29tbWl0ID0gZ2l0X3JlcG8uY29tbWl0KHJlZj0nMWFiZTI1YjQ0M2U5JykK
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LnV1aWQsIDE2MDE2NjMwMDAwMCkK
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LmJyYW5jaCwgJ21haW4nKQogCiAg
ICAgZGVmIHRlc3RfY29sbGlkaW5nX3RpbWVzdGFtcHNfc3Rhc2goc2VsZik6CiAgICAgICAgIHdp
dGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSBhcyBzYWZhcmk6CiAgICAgICAgICAgICBnaXRf
cmVwbyA9IFN0YXNoUmVwb3NpdG9yeSgnaHR0cHM6Ly97fScuZm9ybWF0KHNhZmFyaS5yZW1vdGUp
KQotICAgICAgICAgICAgY29tbWl0MSA9IGdpdF9yZXBvLmNvbW1pdF9mb3JfaWQoJ2JhZTVkMWU5
MDk5OScpCi0gICAgICAgICAgICBjb21taXQyID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgnZDhi
Y2UyNmZhNjVjJykKKyAgICAgICAgICAgIGNvbW1pdDEgPSBnaXRfcmVwby5jb21taXQoaGFzaD0n
YmFlNWQxZTkwOTk5JykKKyAgICAgICAgICAgIGNvbW1pdDIgPSBnaXRfcmVwby5jb21taXQoaGFz
aD0nZDhiY2UyNmZhNjVjJykKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQx
LnRpbWVzdGFtcCwgY29tbWl0Mi50aW1lc3RhbXApCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5v
dEVxdWFsKGNvbW1pdDEudXVpZCwgY29tbWl0Mi51dWlkKQpAQCAtNjcsNiArNzUsNiBAQCBjbGFz
cyBSZXBvc2l0b3J5VGVzdChXYWl0Rm9yRG9ja2VyVGVzdENhCiAgICAgZGVmIHRlc3RfYnJhbmNo
X3N0YXNoKHNlbGYpOgogICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCkgYXMg
c2FmYXJpOgogICAgICAgICAgICAgZ2l0X3JlcG8gPSBTdGFzaFJlcG9zaXRvcnkoJ2h0dHBzOi8v
e30nLmZvcm1hdChzYWZhcmkucmVtb3RlKSkKLSAgICAgICAgICAgIGNvbW1pdCA9IGdpdF9yZXBv
LmNvbW1pdF9mb3JfaWQoJzYyMTY1MmFkZDdmYycpCisgICAgICAgICAgICBjb21taXQgPSBnaXRf
cmVwby5jb21taXQoaGFzaD0nNjIxNjUyYWRkN2ZjJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY29tbWl0LnV1aWQsIDE2MDE2NjYwMDAwMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY29tbWl0LmJyYW5jaCwgJ2JyYW5jaC1hJykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3VwbG9hZF9jb250ZXh0X3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL3VwbG9hZF9jb250ZXh0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAy
NzQ0ODMpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9tb2RlbC91cGxvYWRfY29udGV4dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTM1
LDM1ICsxMzUsMzggQEAgY2xhc3MgVXBsb2FkQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlcwog
ICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5k
cmEpCiAgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0cyhzZWxmLm1vZGVs
KQogCi0gICAgICAgIGNvbmZpZ3VyYXRpb25fdG9fc2VhcmNoID0gQ29uZmlndXJhdGlvbihwbGF0
Zm9ybT0naU9TJywgdmVyc2lvbj0nMTIuMC4wJywgaXNfc2ltdWxhdG9yPVRydWUsIHN0eWxlPSdB
c2FuJykKLSAgICAgICAgY29uZmlndXJhdGlvbiwgdXBsb2FkcyA9IG5leHQoaXRlcihzZWxmLm1v
ZGVsLnVwbG9hZF9jb250ZXh0LmZpbmRfdGVzdF9yZXN1bHRzKGNvbmZpZ3VyYXRpb25zPVtjb25m
aWd1cmF0aW9uX3RvX3NlYXJjaF0sIHN1aXRlPSdsYXlvdXQtdGVzdHMnLCByZWNlbnQ9RmFsc2Up
Lml0ZW1zKCkpKQotICAgICAgICBzZWxmLm1vZGVsLnVwbG9hZF9jb250ZXh0LnByb2Nlc3NfdGVz
dF9yZXN1bHRzKAotICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAotICAg
ICAgICAgICAgY29tbWl0cz11cGxvYWRzWzBdWydjb21taXRzJ10sCi0gICAgICAgICAgICBzdWl0
ZT0nbGF5b3V0LXRlc3RzJywKLSAgICAgICAgICAgIHRlc3RfcmVzdWx0cz11cGxvYWRzWzBdWyd0
ZXN0X3Jlc3VsdHMnXSwKLSAgICAgICAgICAgIHRpbWVzdGFtcD11cGxvYWRzWzBdWyd0aW1lc3Rh
bXAnXSwKLSAgICAgICAgKQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCks
IE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uX3Rv
X3NlYXJjaCA9IENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIHZlcnNpb249JzEyLjAuMCcs
IGlzX3NpbXVsYXRvcj1UcnVlLCBzdHlsZT0nQXNhbicpCisgICAgICAgICAgICBjb25maWd1cmF0
aW9uLCB1cGxvYWRzID0gbmV4dChpdGVyKHNlbGYubW9kZWwudXBsb2FkX2NvbnRleHQuZmluZF90
ZXN0X3Jlc3VsdHMoY29uZmlndXJhdGlvbnM9W2NvbmZpZ3VyYXRpb25fdG9fc2VhcmNoXSwgc3Vp
dGU9J2xheW91dC10ZXN0cycsIHJlY2VudD1GYWxzZSkuaXRlbXMoKSkpCisgICAgICAgICAgICBz
ZWxmLm1vZGVsLnVwbG9hZF9jb250ZXh0LnByb2Nlc3NfdGVzdF9yZXN1bHRzKAorICAgICAgICAg
ICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICBjb21t
aXRzPXVwbG9hZHNbMF1bJ2NvbW1pdHMnXSwKKyAgICAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0
LXRlc3RzJywKKyAgICAgICAgICAgICAgICB0ZXN0X3Jlc3VsdHM9dXBsb2Fkc1swXVsndGVzdF9y
ZXN1bHRzJ10sCisgICAgICAgICAgICAgICAgdGltZXN0YW1wPXVwbG9hZHNbMF1bJ3RpbWVzdGFt
cCddLAorICAgICAgICAgICAgKQogCi0gICAgICAgICMgVXNpbmcgc3VpdGUgcmVzdWx0cyBhcyBh
IHByb3h5IHRvIHRlbGwgaWYgY2FsbGJhY2tzIHdlcmUgdHJpZ2dlcmVkCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMSwgbGVuKHNlbGYubW9kZWwuc3VpdGVfY29udGV4dC5maW5kX2J5X2NvbW1p
dChjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbigpXSwgc3VpdGU9J2xheW91dC10ZXN0cycp
KSkKKyAgICAgICAgICAgICMgVXNpbmcgc3VpdGUgcmVzdWx0cyBhcyBhIHByb3h5IHRvIHRlbGwg
aWYgY2FsbGJhY2tzIHdlcmUgdHJpZ2dlcmVkCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDEsIGxlbihzZWxmLm1vZGVsLnN1aXRlX2NvbnRleHQuZmluZF9ieV9jb21taXQoY29uZmlndXJh
dGlvbnM9W0NvbmZpZ3VyYXRpb24oKV0sIHN1aXRlPSdsYXlvdXQtdGVzdHMnKSkpCiAKICAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0
cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYg
dGVzdF9hc3luY19jYWxsYmFjayhzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNh
c3NhbmRyYUNvbnRleHQpOgogICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMs
IGNhc3NhbmRyYT1jYXNzYW5kcmEsIGFzeW5jX3Byb2Nlc3Npbmc9VHJ1ZSkKICAgICAgICAgTW9j
a01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKHNlbGYubW9kZWwpCiAKLSAgICAgICAgY29u
ZmlndXJhdGlvbl90b19zZWFyY2ggPSBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdpT1MnLCB2ZXJz
aW9uPScxMi4wLjAnLCBpc19zaW11bGF0b3I9VHJ1ZSwgc3R5bGU9J0FzYW4nKQotICAgICAgICBj
b25maWd1cmF0aW9uLCB1cGxvYWRzID0gbmV4dChpdGVyKHNlbGYubW9kZWwudXBsb2FkX2NvbnRl
eHQuZmluZF90ZXN0X3Jlc3VsdHMoY29uZmlndXJhdGlvbnM9W2NvbmZpZ3VyYXRpb25fdG9fc2Vh
cmNoXSwgc3VpdGU9J2xheW91dC10ZXN0cycsIHJlY2VudD1GYWxzZSkuaXRlbXMoKSkpCi0gICAg
ICAgIHNlbGYubW9kZWwudXBsb2FkX2NvbnRleHQucHJvY2Vzc190ZXN0X3Jlc3VsdHMoCi0gICAg
ICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICBjb21taXRz
PXVwbG9hZHNbMF1bJ2NvbW1pdHMnXSwKLSAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMn
LAotICAgICAgICAgICAgdGVzdF9yZXN1bHRzPXVwbG9hZHNbMF1bJ3Rlc3RfcmVzdWx0cyddLAot
ICAgICAgICAgICAgdGltZXN0YW1wPXVwbG9hZHNbMF1bJ3RpbWVzdGFtcCddLAotICAgICAgICAp
Ci0KLSAgICAgICAgIyBVc2luZyBzdWl0ZSByZXN1bHRzIGFzIGEgcHJveHkgdG8gdGVsbCBpZiBj
YWxsYmFja3Mgd2VyZSB0cmlnZ2VyZWQKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4o
c2VsZi5tb2RlbC5zdWl0ZV9jb250ZXh0LmZpbmRfYnlfY29tbWl0KGNvbmZpZ3VyYXRpb25zPVtD
b25maWd1cmF0aW9uKCldLCBzdWl0ZT0nbGF5b3V0LXRlc3RzJykpKQotICAgICAgICBzZWxmLmFz
c2VydFRydWUoc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dC5kb19wcm9jZXNzaW5nX3dvcmsoKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oc2VsZi5tb2RlbC5zdWl0ZV9jb250ZXh0
LmZpbmRfYnlfY29tbWl0KGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKCldLCBzdWl0ZT0n
bGF5b3V0LXRlc3RzJykpKQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCks
IE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uX3Rv
X3NlYXJjaCA9IENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIHZlcnNpb249JzEyLjAuMCcs
IGlzX3NpbXVsYXRvcj1UcnVlLCBzdHlsZT0nQXNhbicpCisgICAgICAgICAgICBjb25maWd1cmF0
aW9uLCB1cGxvYWRzID0gbmV4dChpdGVyKHNlbGYubW9kZWwudXBsb2FkX2NvbnRleHQuZmluZF90
ZXN0X3Jlc3VsdHMoY29uZmlndXJhdGlvbnM9W2NvbmZpZ3VyYXRpb25fdG9fc2VhcmNoXSwgc3Vp
dGU9J2xheW91dC10ZXN0cycsIHJlY2VudD1GYWxzZSkuaXRlbXMoKSkpCisKKyAgICAgICAgICAg
IHNlbGYubW9kZWwudXBsb2FkX2NvbnRleHQucHJvY2Vzc190ZXN0X3Jlc3VsdHMoCisgICAgICAg
ICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgIGNv
bW1pdHM9dXBsb2Fkc1swXVsnY29tbWl0cyddLAorICAgICAgICAgICAgICAgIHN1aXRlPSdsYXlv
dXQtdGVzdHMnLAorICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0cz11cGxvYWRzWzBdWyd0ZXN0
X3Jlc3VsdHMnXSwKKyAgICAgICAgICAgICAgICB0aW1lc3RhbXA9dXBsb2Fkc1swXVsndGltZXN0
YW1wJ10sCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgVXNpbmcgc3VpdGUgcmVzdWx0
cyBhcyBhIHByb3h5IHRvIHRlbGwgaWYgY2FsbGJhY2tzIHdlcmUgdHJpZ2dlcmVkCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihzZWxmLm1vZGVsLnN1aXRlX2NvbnRleHQuZmlu
ZF9ieV9jb21taXQoY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24oKV0sIHN1aXRlPSdsYXlv
dXQtdGVzdHMnKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5tb2RlbC51cGxv
YWRfY29udGV4dC5kb19wcm9jZXNzaW5nX3dvcmsoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMSwgbGVuKHNlbGYubW9kZWwuc3VpdGVfY29udGV4dC5maW5kX2J5X2NvbW1pdChjb25m
aWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbigpXSwgc3VpdGU9J2xheW91dC10ZXN0cycpKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423414</attachid>
            <date>2021-03-16 16:54:20 -0700</date>
            <delta_ts>2021-03-16 17:53:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223101-20210316165419.patch</filename>
            <type>text/plain</type>
            <size>47224</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3NDUzMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU5IEBACisyMDIxLTAzLTE2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIFNhdmUgaWRlbnRpZmllcnMgaW4gY29tbWl0IHRh
YmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMx
MDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1MzM4MzM4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERld2VpIFpodS4KKworICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5OiBCdW1wIHZlcnNpb24uCisgICAgICAgICogU2NyaXB0
cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb21taXRfY29u
dHJvbGxlci5weToKKyAgICAgICAgKENvbW1pdENvbnRyb2xsZXIucmVnaXN0ZXIpOiBBY2NlcHQg
dXBsb2FkZWQgbmV3IGNvbW1pdCBvYmplY3RzLCBjb250aW51ZSB0byByZXR1cm4gb2xkLXN0eWxl
IGNvbW1pdHMuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlci5weToKKyAgICAgICAgKFVwbG9hZENv
bnRyb2xsZXIudXBsb2FkKTogUmVnaXN0ZXIgY29tbWl0cyB1c2luZyB0aGUgZmFzdCBwYXRoIHdo
ZW4gdXBsb2FkaW5nIHJlc3VsdHMuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlcl91bml0dGVzdC5w
eToKKyAgICAgICAgKFVwbG9hZENvbnRyb2xsZXJUZXN0LnRlc3RfcHJvY2Vzcyk6IE1vY2sgc2Fm
YXJpIGFuZCBXZWJLaXQgd2hlbiBwcm9jZXNzaW5nIHJlc3VsdHMuCisgICAgICAgIChVcGxvYWRD
b250cm9sbGVyVGVzdC50ZXN0X3Byb2Nlc3NfY29tbWl0KTogRGl0dG8uCisgICAgICAgICogU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRl
eHQucHk6CisgICAgICAgIChDb21taXRDb250ZXh0LkNvbW1pdE1vZGVsTWsyKTogQWRkIG5ldyBz
dHlsZSBjb21taXQgbW9kZWwgYmFzZS4KKyAgICAgICAgKENvbW1pdENvbnRleHQuQ29tbWl0QnlS
ZWYpOiBTb3J0IGNvbW1pdHMgYnkgaGFzaCwgcmV2aXNpb24gYW5kIGlkZW50aWZpZXIgcmVmZXJl
bmNlcy4KKyAgICAgICAgKENvbW1pdENvbnRleHQuQ29tbWl0QnlVdWlkQXNjZW5kaW5nTWsyKTog
TmV3IGNvbW1pdCBzdHlsZSBVVUlEIHRhYmxlLgorICAgICAgICAoQ29tbWl0Q29udGV4dC5Db21t
aXRCeVV1aWREZXNjZW5kaW5nTWsyKTogRGl0dG8uCisgICAgICAgIChDb21taXRDb250ZXh0Ll9f
aW5pdF9fKTogQ3JlYXRlIG5ldyB0YWJsZXMuCisgICAgICAgIChDb21taXRDb250ZXh0LmZpbmRf
Y29tbWl0c19ieV9yZWYpOiBTZWFyY2ggZm9yIGNvbW1pdHMgaW4gdGhlIG5ldyByZWYgdGFibGUu
CisgICAgICAgIChDb21taXRDb250ZXh0LnJlZ2lzdGVyKTogUG9zdC1wcm9jZXNzIGNvbW1pdHMg
dG8gcG9wdWxhdGUgaWRlbnRpZmllciBmaWVsZC4KKyAgICAgICAgKENvbW1pdENvbnRleHQucmVn
aXN0ZXJfY29tbWl0KTogT25seSByZWdpc3RlciBuZXctc3R5bGUgY29tbWl0cy4KKyAgICAgICAg
KENvbW1pdENvbnRleHQucmVnaXN0ZXJfcGFydGlhbF9jb21taXQpOiBSZWdpc3RlciBuZXctc3R5
bGUgY29tbWl0cywgYWxsb3cgY2FsbGVyIHRvIG9wdC1vdXQgb2YgZXhwZW5zaXZlCisgICAgICAg
IElkZW50aWZpZXIgY29tcHV0YXRpb24uCisgICAgICAgIChDb21taXRDb250ZXh0LnVybCk6IEFj
Y2VwdCBvbGQgYW5kIG5ldyBzdHlsZSBjb21taXRzLgorICAgICAgICAoQ29tbWl0Q29udGV4dC5y
ZWdpc3Rlcl9jb21taXRfd2l0aF9yZXBvX2FuZF9pZCk6IERlbGV0ZWQuCisgICAgICAgICogU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRl
eHRfdW5pdHRlc3QucHk6CisgICAgICAgIChDb21taXRDb250ZXh0VGVzdC5hZGRfYWxsX2NvbW1p
dHNfdG9fZGF0YWJhc2UpOiBVcGRhdGUgY29tbWl0IHJlZ2lzdHJhdGlvbiBjYWxsLgorICAgICAg
ICAoQ29tbWl0Q29udGV4dFRlc3QudGVzdF9jb21taXRfZnJvbV9zdGFzaF9yZXBvKTogRGl0dG8u
CisgICAgICAgIChDb21taXRDb250ZXh0VGVzdC50ZXN0X2NvbW1pdF9mcm9tX3N2bl9yZXBvKTog
RGl0dG8uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvbW9kZWwvbW9ja19tb2RlbF9mYWN0b3J5LnB5OgorICAgICAgICAoTW9ja01vZGVsRmFjdG9y
eS5jcmVhdGUpOiBVcGRhdGUgY29tbWl0IHJlZ2lzdHJhdGlvbiBjYWxsLgorICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsLnB5Ogor
ICAgICAgICAoTW9kZWwuX19pbml0X18pOiBjb21taXRfY29udGV4dCBtYXkgbm93IHBvc3QtcHJv
Y2VzcyB1cGxvYWRzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnkucHk6CisgICAgICAgIChSZXBvc2l0b3J5LmNvbW1p
dCk6IEFkZCBjYWxsIHRvIHJldHVybiBuZXctc3R5bGUgY29tbWl0cy4KKyAgICAgICAgKFN0YXNo
UmVwb3NpdG9yeS5jb21taXQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdFJlcG9zaXRvcnkuY29t
bWl0KTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeV91bml0dGVzdC5weToKKyAgICAgICAgKFJlcG9zaXRv
cnlUZXN0LnRlc3Rfc3ZuKToKKyAgICAgICAgKFJlcG9zaXRvcnlUZXN0LnRlc3RfcmVmX3N2bik6
CisgICAgICAgIChSZXBvc2l0b3J5VGVzdC50ZXN0X3N0YXNoKToKKyAgICAgICAgKFJlcG9zaXRv
cnlUZXN0LnRlc3RfcmVmX3N0YXNoKToKKyAgICAgICAgKFJlcG9zaXRvcnlUZXN0LnRlc3RfY29s
bGlkaW5nX3RpbWVzdGFtcHNfc3Rhc2gpOgorICAgICAgICAoUmVwb3NpdG9yeVRlc3QudGVzdF9i
cmFuY2hfc3Rhc2gpOgorICAgICAgICAoUmVwb3NpdG9yeVRlc3QudGVzdF9icmFuY2hfc3ZuKTog
RGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC91cGxvYWRfY29udGV4dF91bml0dGVzdC5weToKKyAgICAgICAgKFVwbG9hZENv
bnRleHRUZXN0LnRlc3RfY2FsbGJhY2spOgorICAgICAgICAoVXBsb2FkQ29udGV4dFRlc3QudGVz
dF9hc3luY19jYWxsYmFjayk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2Ri
cHkvc2V0dXAucHk6IEJ1bXAgdmVyc2lvbi4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS9jb21taXQucHk6CisgICAgICAgIChDb21taXQpOiBIYW5k
bGUgc2luZ2xlIGVtYWlsIHBhc3NlZCB0byBjb250cmlidXRvci4KKwogMjAyMS0wMy0xNiAgSm9u
YXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3Jlc3VsdHNkYnB5
XSBBbGxvdyB1c2VyIHRvIGNoYW5nZSBjb21taXQgcmVwcmVzZW50YXRpb24KSW5kZXg6IFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5CShyZXZpc2lvbiAyNzQ1
MzEpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9zZXR1cC5weQkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAg
IG5hbWU9J3Jlc3VsdHNkYnB5JywKLSAgICB2ZXJzaW9uPScyLjAuMicsCisgICAgdmVyc2lvbj0n
Mi4wLjMnLAogICAgIGRlc2NyaXB0aW9uPSdMaWJyYXJ5IGZvciB2aXN1YWxpemluZywgcHJvY2Vz
c2luZyBhbmQgc3RvcmluZyB0ZXN0IHJlc3VsdHMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJl
YWRtZSgpLAogICAgIGNsYXNzaWZpZXJzPVsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5CShy
ZXZpc2lvbiAyNzQ1MzEpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNiBAQCBl
eGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICJQbGVhc2UgaW5zdGFsbCB3ZWJraXRjb3JlcHkg
d2l0aCBgcGlwIGluc3RhbGwgd2Via2l0Y29yZXB5IC0tZXh0cmEtaW5kZXgtdXJsIDxwYWNrYWdl
IGluZGV4IFVSTD5gIgogICAgICkKIAotdmVyc2lvbiA9IFZlcnNpb24oMiwgMCwgMikKK3ZlcnNp
b24gPSBWZXJzaW9uKDIsIDAsIDMpCiAKIG5hbWUgPSAncmVzdWx0c2RicHknCkluZGV4OiBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2Nv
bW1pdF9jb250cm9sbGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xsZXIucHkJ
KHJldmlzaW9uIDI3NDUzMSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xsZXIucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyAr
MjYsNyBAQCBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogZnJvbSBmbGFzayBp
bXBvcnQgYWJvcnQsIGpzb25pZnksIHJlcXVlc3QKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxl
ci5jb21taXQgaW1wb3J0IENvbW1pdAogZnJvbSB3ZWJraXRmbGFza3B5LnV0aWwgaW1wb3J0IEFz
c2VydFJlcXVlc3QsIHF1ZXJ5X2FzX2t3YXJncywgbGltaXRfZm9yX3F1ZXJ5Ci1mcm9tIHdlYmtp
dHNjbXB5IGltcG9ydCBTY21CYXNlCitmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBTY21CYXNlLCBD
b21taXQgYXMgU2NtQ29tbWl0CiAKIAogZGVmIF9maW5kX2NvbXBhcmlzb24oY29tbWl0X2NvbnRl
eHQsIHJlcG9zaXRvcnlfaWQsIGJyYW5jaCwgaWQsIHV1aWQsIHRpbWVzdGFtcCwgcHJpb3JpdHk9
bWluKToKQEAgLTI2NSw3ICsyNjUsNyBAQCBjbGFzcyBDb21taXRDb250cm9sbGVyKEhhc0NvbW1p
dENvbnRleHQpCiAgICAgICAgICAgICBjb21taXQgPSBzZWxmLmNvbW1pdF9jb250ZXh0LnByZXZp
b3VzX2NvbW1pdChjb21taXRzWzBdKQogICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkoQ29tbWl0
LkVuY29kZXIoKS5kZWZhdWx0KFtjb21taXRdIGlmIGNvbW1pdCBlbHNlIFtdKSkKIAotICAgIGRl
ZiByZWdpc3RlcihzZWxmLCBjb21taXQ9Tm9uZSk6CisgICAgZGVmIHJlZ2lzdGVyKHNlbGYsIGNv
bW1pdD1Ob25lLCBmYXN0PVRydWUpOgogICAgICAgICBpc19lbmRwb2ludCA9IG5vdCBib29sKGNv
bW1pdCkKICAgICAgICAgaWYgaXNfZW5kcG9pbnQ6CiAgICAgICAgICAgICBBc3NlcnRSZXF1ZXN0
LmlzX3R5cGUoWydQT1NUJ10pCkBAIC0yODAsMzUgKzI4MCw2MCBAQCBjbGFzcyBDb21taXRDb250
cm9sbGVyKEhhc0NvbW1pdENvbnRleHQpCiAgICAgICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNj
cmlwdGlvbj0nRXhwZWN0ZWQgdXBsb2FkZWQgZGF0YSB0byBiZSBqc29uJykKIAogICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0LnJlZ2lzdGVyX2NvbW1pdChDb21t
aXQuZnJvbV9qc29uKGNvbW1pdCkpCi0gICAgICAgICAgICBpZiBpc19lbmRwb2ludDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4ganNvbmlmeSh7J3N0YXR1cyc6ICdvayd9KQotICAgICAgICAgICAg
cmV0dXJuIENvbW1pdC5mcm9tX2pzb24oY29tbWl0KQorICAgICAgICAgICAgY2FuZGlkYXRlID0g
U2NtQ29tbWl0LmZyb21fanNvbihjb21taXQpCisKKyAgICAgICAgICAgICMgQ29tbWl0IG5lZWRz
IHRvIGJlIHN1ZmZpY2llbnRseSBkZWZpbmVkCisgICAgICAgICAgICBpZiBjYW5kaWRhdGUucmVw
b3NpdG9yeV9pZCBhbmQgY2FuZGlkYXRlLmJyYW5jaCBhbmQgY2FuZGlkYXRlLnRpbWVzdGFtcCBh
bmQgKGNhbmRpZGF0ZS5yZXZpc2lvbiBvciBjYW5kaWRhdGUuaGFzaCk6CisgICAgICAgICAgICAg
ICAgc2VsZi5jb21taXRfY29udGV4dC5yZWdpc3Rlcl9jb21taXQoY2FuZGlkYXRlKQorICAgICAg
ICAgICAgICAgIGlmIGlzX2VuZHBvaW50OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNv
bmlmeSh7J3N0YXR1cyc6ICdvayd9KQorICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGUK
ICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAg
cmVxdWlyZWRfYXJncyA9IFsncmVwb3NpdG9yeV9pZCcsICdpZCddCi0gICAgICAgIG9wdGlvbmFs
X2FyZ3MgPSBbJ2JyYW5jaCddCisgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBbJ3JlcG9zaXRvcnlf
aWQnXQogICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CiAgICAgICAgICAgICBpZiBh
cmcgbm90IGluIGNvbW1pdDoKICAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9u
PWYiJ3thcmd9JyByZXF1aXJlZCB0byBkZWZpbmUgY29tbWl0IikKIAorICAgICAgICBoYXNfcmVm
ID0gRmFsc2UKKyAgICAgICAgb25lX29mX2FyZ3MgPSBbJ2lkJywgJ3JlZicsICdoYXNoJywgJ3Jl
dmlzaW9uJywgJ2lkZW50aWZpZXInXQorICAgICAgICBmb3IgYXJnIGluIG9uZV9vZl9hcmdzOgor
ICAgICAgICAgICAgaWYgYXJnIGluIGNvbW1pdDoKKyAgICAgICAgICAgICAgICBpZiBoYXNfcmVm
OgorICAgICAgICAgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdNdWx0aXBsZSBj
b21taXQgcmVmZXJlbmNlcyBzcGVjaWZpZWQnKQorICAgICAgICAgICAgICAgIGhhc19yZWYgPSBU
cnVlCisgICAgICAgIGlmIG5vdCBoYXNfcmVmOgorICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNj
cmlwdGlvbj0nTm8gY29tbWl0IHJlZmVyZW5jZSBzcGVjaWZpZWQnKQorCisKICAgICAgICAgZm9y
IGFyZyBpbiBjb21taXQua2V5cygpOgotICAgICAgICAgICAgaWYgYXJnIGluIHJlcXVpcmVkX2Fy
Z3MgKyBvcHRpb25hbF9hcmdzOgorICAgICAgICAgICAgaWYgYXJnIGluIHJlcXVpcmVkX2FyZ3Mg
b3IgYXJnIGluIG9uZV9vZl9hcmdzOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAg
ICAgICBpZiBhcmcgaW4gWyd0aW1lc3RhbXAnLCAnb3JkZXInLCAnY29tbWl0dGVyJywgJ21lc3Nh
Z2UnXToKKyAgICAgICAgICAgIGlmIGFyZyBpbiBbJ2JyYW5jaCcsICd0aW1lc3RhbXAnLCAnb3Jk
ZXInLCAnY29tbWl0dGVyJywgJ21lc3NhZ2UnXToKICAgICAgICAgICAgICAgICBhYm9ydCg0MDAs
IGRlc2NyaXB0aW9uPSdOb3QgZW5vdWdoIGFyZ3VtZW50cyBwcm92aWRlZCB0byBkZWZpbmUgYSBj
b21taXQsIGJ1dCB0b28gbWFueSB0byBzZWFyY2ggZm9yIGEgY29tbWl0JykKICAgICAgICAgICAg
IGFib3J0KDQwMCwgZGVzY3JpcHRpb249ZiIne2FyZ30nIGlzIG5vdCB2YWxpZCBmb3IgZGVmaW5p
bmcgY29tbWl0cyIpCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29tbWl0ID0gc2VsZi5j
b21taXRfY29udGV4dC5yZWdpc3Rlcl9jb21taXRfd2l0aF9yZXBvX2FuZF9pZCgKKyAgICAgICAg
ICAgIGNvbW1pdCA9IHNlbGYuY29tbWl0X2NvbnRleHQucmVnaXN0ZXJfcGFydGlhbF9jb21taXQo
CiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1jb21taXQuZ2V0KCdyZXBvc2l0b3J5X2lk
JyksCi0gICAgICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5nZXQoJ2JyYW5jaCcpLAotICAgICAg
ICAgICAgICAgIGNvbW1pdF9pZD1jb21taXQuZ2V0KCdpZCcpLAorICAgICAgICAgICAgICAgIHJl
Zj1jb21taXQuZ2V0KCdpZCcpIG9yIGNvbW1pdC5nZXQoJ3JlZicpLAorICAgICAgICAgICAgICAg
IGhhc2g9Y29tbWl0LmdldCgnaGFzaCcpLAorICAgICAgICAgICAgICAgIHJldmlzaW9uPWNvbW1p
dC5nZXQoJ3JldmlzaW9uJyksCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1jb21taXQuZ2V0
KCdpZGVudGlmaWVyJyksCisgICAgICAgICAgICAgICAgZmFzdD1mYXN0LAogICAgICAgICAgICAg
KQogICAgICAgICBleGNlcHQgKFJ1bnRpbWVFcnJvciwgU2NtQmFzZS5FeGNlcHRpb24pIGFzIGVy
cm9yOgogICAgICAgICAgICAgYWJvcnQoNDA0LCBkZXNjcmlwdGlvbj1zdHIoZXJyb3IpKQogCiAg
ICAgICAgIGlmIGlzX2VuZHBvaW50OgogICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkoeydzdGF0
dXMnOiAnb2snfSkKLSAgICAgICAgcmV0dXJuIGNvbW1pdAorICAgICAgICByZXR1cm4gQ29tbWl0
KAorICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1jb21taXQucmVwb3NpdG9yeV9pZCwKKyAgICAg
ICAgICAgIGlkPWNvbW1pdC5yZXZpc2lvbiBvciBjb21taXQuaGFzaCwKKyAgICAgICAgICAgIGJy
YW5jaD1jb21taXQuYnJhbmNoLAorICAgICAgICAgICAgdGltZXN0YW1wPWNvbW1pdC50aW1lc3Rh
bXAsCisgICAgICAgICAgICBvcmRlcj1jb21taXQub3JkZXIsCisgICAgICAgICAgICBjb21taXR0
ZXI9Y29tbWl0LmF1dGhvci5lbWFpbCBpZiBjb21taXQuYXV0aG9yIGVsc2UgTm9uZSwKKyAgICAg
ICAgICAgIG1lc3NhZ2U9Y29tbWl0Lm1lc3NhZ2UsCisgICAgICAgICkKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdXBsb2Fk
X2NvbnRyb2xsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlci5weQkocmV2
aXNpb24gMjc0NTMxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlci5weQkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsNiBAQCBpbXBvcnQgdGltZQogCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBk
ZWZhdWx0ZGljdAogZnJvbSBmbGFzayBpbXBvcnQgYWJvcnQsIGpzb25pZnksIHJlcXVlc3QKLWZy
b20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAogZnJvbSByZXN1
bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdF9jb250cm9sbGVyIGltcG9ydCB1dWlkX3JhbmdlX2Zv
cl9xdWVyeSwgSGFzQ29tbWl0Q29udGV4dAogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNv
bmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KIGZyb20gcmVzdWx0c2RicHkuY29udHJv
bGxlci5jb25maWd1cmF0aW9uX2NvbnRyb2xsZXIgaW1wb3J0IGNvbmZpZ3VyYXRpb25fZm9yX3F1
ZXJ5CkBAIC04NCw3ICs4Myw3IEBAIGNsYXNzIFVwbG9hZENvbnRyb2xsZXIoSGFzQ29tbWl0Q29u
dGV4dCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVuZChkaWN0KAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Q29uZmlndXJhdGlvbi5FbmNv
ZGVyKCkuZGVmYXVsdChjb25maWcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRl
PXN1aXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdHM9Q29tbWl0LkVuY29k
ZXIoKS5kZWZhdWx0KHJlc3VsdFsnY29tbWl0cyddKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb21taXRzPVtjb21taXQuRW5jb2RlcigpLmRlZmF1bHQoY29tbWl0KSBmb3IgY29tbWl0
IGluIHJlc3VsdFsnY29tbWl0cyddXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1l
c3RhbXA9cmVzdWx0Wyd0aW1lc3RhbXAnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X3Jlc3VsdHM9cmVzdWx0Wyd0ZXN0X3Jlc3VsdHMnXSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICkpCkBAIC0xMTMsNyArMTEyLDcgQEAgY2xhc3MgVXBsb2FkQ29udHJvbGxlcihIYXNDb21t
aXRDb250ZXh0KQogICAgICAgICAgICAgaWYgbm90IHN1aXRlOgogICAgICAgICAgICAgICAgIGFi
b3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHRlc3Qgc3VpdGUgc3BlY2lmaWVkJykKIAotICAgICAg
ICAgICAgY29tbWl0cyA9IFtzZWxmLmNvbW1pdF9jb250cm9sbGVyLnJlZ2lzdGVyKGNvbW1pdD1j
b21taXQpIGZvciBjb21taXQgaW4gZGF0YS5nZXQoJ2NvbW1pdHMnLCBbXSldCisgICAgICAgICAg
ICBjb21taXRzID0gW3NlbGYuY29tbWl0X2NvbnRyb2xsZXIucmVnaXN0ZXIoY29tbWl0PWNvbW1p
dCwgZmFzdD1UcnVlKSBmb3IgY29tbWl0IGluIGRhdGEuZ2V0KCdjb21taXRzJywgW10pXQogCiAg
ICAgICAgICAgICB0ZXN0X3Jlc3VsdHMgPSBkYXRhLmdldCgndGVzdF9yZXN1bHRzJywge30pCiAg
ICAgICAgICAgICBpZiBub3QgdGVzdF9yZXN1bHRzOgpAQCAtMTUwLDcgKzE0OSw3IEBAIGNsYXNz
IFVwbG9hZENvbnRyb2xsZXIoSGFzQ29tbWl0Q29udGV4dCkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3BvbnNlLmFwcGVuZChkaWN0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb249Q29uZmlndXJhdGlvbi5FbmNvZGVyKCkuZGVmYXVsdChjb25maWcpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRlPXN1aXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1pdHM9Q29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KHJlc3VsdFsnY29tbWl0
cyddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRzPVtjb21taXQuRW5jb2Rl
cigpLmRlZmF1bHQoY29tbWl0KSBmb3IgY29tbWl0IGluIHJlc3VsdFsnY29tbWl0cyddXSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9cmVzdWx0Wyd0aW1lc3RhbXAnXSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nPXByb2Nlc3NpbmdfcmVzdWx0
cywKICAgICAgICAgICAgICAgICAgICAgICAgICkpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3VwbG9hZF9jb250cm9sbGVy
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdXBsb2FkX2NvbnRyb2xsZXJfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDI3NDUzMSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdXBsb2FkX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgVXBsb2FkQ29udHJvbGxlclBv
c3RUZXN0KEZsYXNrVGVzdAogICAgIGRlZiB0ZXN0X3VwbG9hZChzZWxmLCBjbGllbnQsICoqa3dh
cmdzKToKICAgICAgICAgdXBsb2FkX2RpY3QgPSBkaWN0KAogICAgICAgICAgICAgc3VpdGU9J2xh
eW91dC10ZXN0cycsCi0gICAgICAgICAgICBjb21taXRzPVtkaWN0KHJlcG9zaXRvcnlfaWQ9J3Nh
ZmFyaScsIGlkPSdkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlmYWI4MmZjJyksIGRp
Y3QocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgaWQ9JzYnKV0sCisgICAgICAgICAgICBjb21taXRz
PVtkaWN0KHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGlkPSdkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3
OTI3YWJiNzdmNjlmYWI4MmZjJyksIGRpY3QocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgaWQ9Nild
LAogICAgICAgICAgICAgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uLkVuY29kZXIoKS5kZWZh
dWx0KENvbmZpZ3VyYXRpb24oCiAgICAgICAgICAgICAgICAgcGxhdGZvcm09J01hYycsIHZlcnNp
b249JzEwLjE0LjAnLCBzZGs9JzE4QTM5MScsCiAgICAgICAgICAgICAgICAgaXNfc2ltdWxhdG9y
PUZhbHNlLCBhcmNoaXRlY3R1cmU9J3g4Nl82NCcsCkBAIC02Nyw3ICs2Nyw3IEBAIGNsYXNzIFVw
bG9hZENvbnRyb2xsZXJQb3N0VGVzdChGbGFza1Rlc3QKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQogCiAgICAgICAgIHJldHJpZXZlZCA9IHJlc3Bv
bnNlLmpzb24oKVswXQotICAgICAgICByZXRyaWV2ZWRbJ2NvbW1pdHMnXSA9IFtkaWN0KHJlcG9z
aXRvcnlfaWQ9Y29tbWl0WydyZXBvc2l0b3J5X2lkJ10sIGlkPWNvbW1pdFsnaWQnXSkgZm9yIGNv
bW1pdCBpbiByZXRyaWV2ZWRbJ2NvbW1pdHMnXV0KKyAgICAgICAgcmV0cmlldmVkWydjb21taXRz
J10gPSBbZGljdChyZXBvc2l0b3J5X2lkPWNvbW1pdFsncmVwb3NpdG9yeV9pZCddLCBpZD1jb21t
aXQuZ2V0KCdoYXNoJywgY29tbWl0LmdldCgncmV2aXNpb24nKSkpIGZvciBjb21taXQgaW4gcmV0
cmlldmVkWydjb21taXRzJ11dCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0cmlldmVkLCB1
cGxvYWRfZGljdCkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2Nr
ZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5k
cmFDb250ZXh0KQpAQCAtMTgwLDcgKzE4MCw3IEBAIGNsYXNzIFVwbG9hZENvbnRyb2xsZXJUZXN0
KEZsYXNrVGVzdENhc2UKICAgICAgICAgICAgICdkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJi
NzdmNjlmYWI4MmZjJywKICAgICAgICAgICAgICdiYWU1ZDFlOTA5OTlkNGY5MTZhOGExNTgxMGNj
ZmE0M2YzN2EyZmQ2JywKICAgICAgICAgICAgICcxYWJlMjViNDQzZTk4NWY5M2I5MGQ4MzBlNGE3
ZTM3MzEzMzZhZjRkJywKLSAgICAgICAgXSksIHNvcnRlZChbcmVzdWx0Wydjb21taXRzJ11bMV1b
J2lkJ10gZm9yIHJlc3VsdCBpbiByZXNwb25zZS5qc29uKCldKSkKKyAgICAgICAgXSksIHNvcnRl
ZChbcmVzdWx0Wydjb21taXRzJ11bMV1bJ2hhc2gnXSBmb3IgcmVzdWx0IGluIHJlc3BvbnNlLmpz
b24oKV0pKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlciht
b2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNv
bnRleHQpCiAgICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKQEAgLTE4OCwy
NiArMTg4LDI4IEBAIGNsYXNzIFVwbG9hZENvbnRyb2xsZXJUZXN0KEZsYXNrVGVzdENhc2UKICAg
ICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvdXBsb2FkP3BsYXRm
b3JtPU1hYyZzdHlsZT1SZWxlYXNlJmZsYXZvcj13azImaWQ9ZDhiY2UyNmZhNjVjJykKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKFsnZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYyddLCBb
cmVzdWx0Wydjb21taXRzJ11bMV1bJ2lkJ10gZm9yIHJlc3VsdCBpbiByZXNwb25zZS5qc29uKCld
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2Fi
Yjc3ZjY5ZmFiODJmYyddLCBbcmVzdWx0Wydjb21taXRzJ11bMV1bJ2hhc2gnXSBmb3IgcmVzdWx0
IGluIHJlc3BvbnNlLmpzb24oKV0pCiAKICAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNl
bGYuVVJMICsgJy9hcGkvdXBsb2FkP3BsYXRmb3JtPU1hYyZzdHlsZT1SZWxlYXNlJmZsYXZvcj13
azImaWQ9NicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUs
IDIwMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4ocmVzcG9uc2UuanNvbigpKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJzYnXSAqIDUsIFtyZXN1bHRbJ2NvbW1pdHMnXVsw
XVsnaWQnXSBmb3IgcmVzdWx0IGluIHJlc3BvbnNlLmpzb24oKV0pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoWzZdICogNSwgW3Jlc3VsdFsnY29tbWl0cyddWzBdWydyZXZpc2lvbiddIGZvciBy
ZXN1bHQgaW4gcmVzcG9uc2UuanNvbigpXSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2Uu
bW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2Fu
ZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dl
YnNlcnZlcigpCiAgICAgZGVmIHRlc3RfcHJvY2VzcyhzZWxmLCBjbGllbnQsICoqa3dhcmdzKToK
LSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL3VwbG9hZC9w
cm9jZXNzP3BsYXRmb3JtPU1hYyZzdHlsZT1SZWxlYXNlJmZsYXZvcj13azInKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoNSwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoW2RpY3Qoc3RhdHVzPSdvaycpXSAqIDUsIFtlbGVtZW50Wydwcm9jZXNzaW5nJ11bJ3B5
dGhvbi10ZXN0cyddIGZvciBlbGVtZW50IGluIHJlc3BvbnNlLmpzb24oKV0pCisgICAgICAgIHdp
dGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToK
KyAgICAgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS91cGxv
YWQvcHJvY2Vzcz9wbGF0Zm9ybT1NYWMmc3R5bGU9UmVsZWFzZSZmbGF2b3I9d2syJykKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFtkaWN0KHN0YXR1cz0nb2snKV0gKiA1LCBbZWxlbWVudFsn
cHJvY2Vzc2luZyddWydweXRob24tdGVzdHMnXSBmb3IgZWxlbWVudCBpbiByZXNwb25zZS5qc29u
KCldKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2Nr
X3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRl
eHQpCiAgICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKICAgICBkZWYgdGVz
dF9wcm9jZXNzX2NvbW1pdChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9u
c2UgPSBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL3VwbG9hZC9wcm9jZXNzP3BsYXRmb3Jt
PU1hYyZzdHlsZT1SZWxlYXNlJmZsYXZvcj13azImaWQ9ZDhiY2UyNmZhNjVjJykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDEsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFsnZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYyddLCBbcmVz
dWx0Wydjb21taXRzJ11bMV1bJ2lkJ10gZm9yIHJlc3VsdCBpbiByZXNwb25zZS5qc29uKCldKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtkaWN0KHN0YXR1cz0nb2snKV0sIFtlbGVtZW50Wydw
cm9jZXNzaW5nJ11bJ3B5dGhvbi10ZXN0cyddIGZvciBlbGVtZW50IGluIHJlc3BvbnNlLmpzb24o
KV0pCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFj
dG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LnBvc3Qoc2VsZi5V
UkwgKyAnL2FwaS91cGxvYWQvcHJvY2Vzcz9wbGF0Zm9ybT1NYWMmc3R5bGU9UmVsZWFzZSZmbGF2
b3I9d2syJmlkPWQ4YmNlMjZmYTY1YycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEs
IGxlbihyZXNwb25zZS5qc29uKCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ2Q4
YmNlMjZmYTY1YzZmYzhmMzljMTc5MjdhYmI3N2Y2OWZhYjgyZmMnXSwgW3Jlc3VsdFsnY29tbWl0
cyddWzFdWydoYXNoJ10gZm9yIHJlc3VsdCBpbiByZXNwb25zZS5qc29uKCldKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChbZGljdChzdGF0dXM9J29rJyldLCBbZWxlbWVudFsncHJvY2Vz
c2luZyddWydweXRob24tdGVzdHMnXSBmb3IgZWxlbWVudCBpbiByZXNwb25zZS5qc29uKCldKQpJ
bmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9k
ZWwvY29tbWl0X2NvbnRleHQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQucHkJKHJldmlz
aW9uIDI3NDUzMSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEs
NCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDcgKzMwLDcgQEAgZnJvbSBk
YXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21t
aXQgaW1wb3J0IENvbW1pdAogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5yZXBvc2l0b3J5IGltcG9y
dCBSZXBvc2l0b3J5CiAKLWZyb20gd2Via2l0c2NtcHkgaW1wb3J0IFNjbUJhc2UKK2Zyb20gd2Vi
a2l0c2NtcHkgaW1wb3J0IFNjbUJhc2UsIENvbW1pdCBhcyBTY21Db21taXQsIENvbnRyaWJ1dG9y
CiAKIAogY2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgpAQCAtNjUsNiArNjUsNDMgQEAgY2xh
c3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgogICAgICAgICB1dWlkID0gY29sdW1ucy5CaWdJbnQo
cHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSwgY2x1c3RlcmluZ19vcmRlcj0nREVTQycp
CiAgICAgICAgIGNvbW1pdF9pZCA9IGNvbHVtbnMuVGV4dChyZXF1aXJlZD1UcnVlKQogCisgICAg
Y2xhc3MgQ29tbWl0TW9kZWxNazIoTW9kZWwpOgorICAgICAgICByZXBvc2l0b3J5X2lkID0gY29s
dW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgcGVv
cGxlID0gY29sdW1ucy5UZXh0KHJlcXVpcmVkPUZhbHNlKQorICAgICAgICBtZXNzYWdlID0gY29s
dW1ucy5UZXh0KHJlcXVpcmVkPUZhbHNlKQorCisgICAgICAgIGlkZW50aWZpZXIgPSBjb2x1bW5z
LlRleHQocmVxdWlyZWQ9RmFsc2UpCisgICAgICAgIGhhc2ggPSBjb2x1bW5zLlRleHQocmVxdWly
ZWQ9RmFsc2UpCisgICAgICAgIHJldmlzaW9uID0gY29sdW1ucy5JbnRlZ2VyKHJlcXVpcmVkPUZh
bHNlKQorCisgICAgICAgIGRlZiB0b19jb21taXQoc2VsZik6CisgICAgICAgICAgICByZXR1cm4g
U2NtQ29tbWl0KAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9c2VsZi5yZXBvc2l0b3J5
X2lkLCBicmFuY2g9c2VsZi5icmFuY2gsCisgICAgICAgICAgICAgICAgdGltZXN0YW1wPXNlbGYu
dXVpZCAvLyBDb21taXQuVElNRVNUQU1QX1RPX1VVSURfTVVMVElQTElFUiwKKyAgICAgICAgICAg
ICAgICBvcmRlcj1zZWxmLnV1aWQgJSBDb21taXQuVElNRVNUQU1QX1RPX1VVSURfTVVMVElQTElF
UiwKKyAgICAgICAgICAgICAgICBhdXRob3I9c2VsZi5wZW9wbGUuZ2V0KCdhdXRob3InKSBpZiBz
ZWxmLnBlb3BsZSBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgbWVzc2FnZT1zZWxmLm1lc3Nh
Z2UsCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1zZWxmLmlkZW50aWZpZXIsCisgICAgICAg
ICAgICAgICAgaGFzaD1zZWxmLmhhc2gsCisgICAgICAgICAgICAgICAgcmV2aXNpb249c2VsZi5y
ZXZpc2lvbiwKKyAgICAgICAgICAgICkKKworICAgIGNsYXNzIENvbW1pdEJ5UmVmKENvbW1pdE1v
ZGVsTWsyKToKKyAgICAgICAgX190YWJsZV9uYW1lX18gPSAnY29tbWl0c19yZWZfdG9fb2JqZWN0
JworICAgICAgICByZWYgPSBjb2x1bW5zLlRleHQocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9
VHJ1ZSkKKyAgICAgICAgdXVpZCA9IGNvbHVtbnMuQmlnSW50KHJlcXVpcmVkPVRydWUpCisgICAg
ICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4dChyZXF1aXJlZD1UcnVlKQorCisgICAgY2xhc3MgQ29t
bWl0QnlVdWlkQXNjZW5kaW5nTWsyKENvbW1pdE1vZGVsTWsyKToKKyAgICAgICAgX190YWJsZV9u
YW1lX18gPSAnY29tbWl0c191dWlkX3RvX29iamVjdF9hc2NlbmRpbmcnCisgICAgICAgIGJyYW5j
aCA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisgICAg
ICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVl
LCBjbHVzdGVyaW5nX29yZGVyPSdBU0MnKQorCisgICAgY2xhc3MgQ29tbWl0QnlVdWlkRGVzY2Vu
ZGluZ01rMihDb21taXRNb2RlbE1rMik6CisgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2NvbW1p
dHNfdXVpZF90b19vYmplY3RfZGVzY2VuZGluZycKKyAgICAgICAgYnJhbmNoID0gY29sdW1ucy5U
ZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgdXVpZCA9IGNv
bHVtbnMuQmlnSW50KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUsIGNsdXN0ZXJpbmdf
b3JkZXI9J0RFU0MnKQorCiAgICAgY2xhc3MgQnJhbmNoZXMoTW9kZWwpOgogICAgICAgICBfX3Rh
YmxlX25hbWVfXyA9ICdjb21taXRfYnJhbmNoZXMnCiAgICAgICAgIHJlcG9zaXRvcnlfaWQgPSBj
b2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQpAQCAtODAsMTIg
KzExNywxNCBAQCBjbGFzcyBDb21taXRDb250ZXh0KG9iamVjdCk6CiAgICAgICAgIHNlbGYuY2Fz
c2FuZHJhID0gY2Fzc2FuZHJhCiAgICAgICAgIHNlbGYucmVwb3NpdG9yaWVzID0ge30KICAgICAg
ICAgc2VsZi5jYWNoZV90aW1lb3V0ID0gY2FjaGVfdGltZW91dAorICAgICAgICBzZWxmLm5hbWUg
PSAnY29tbWl0LWlkZW50aWZpZXJzJwogCiAgICAgICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAg
IHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLkNvbW1pdEJ5SUQpCi0gICAgICAgICAg
ICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5Db21taXRCeVV1aWRBc2NlbmRpbmcp
Ci0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5Db21taXRCeVV1
aWREZXNjZW5kaW5nKQotICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHNl
bGYuQnJhbmNoZXMpCisgICAgICAgICAgICBmb3Igb2xkIGluIFtzZWxmLkNvbW1pdEJ5SUQsIHNl
bGYuQ29tbWl0QnlVdWlkQXNjZW5kaW5nLCBzZWxmLkNvbW1pdEJ5VXVpZERlc2NlbmRpbmddOgor
ICAgICAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShvbGQpCisKKyAgICAg
ICAgICAgIGZvciB0YWJsZSBpbiBbc2VsZi5Db21taXRCeVJlZiwgc2VsZi5Db21taXRCeVV1aWRB
c2NlbmRpbmdNazIsIHNlbGYuQ29tbWl0QnlVdWlkRGVzY2VuZGluZ01rMiwgc2VsZi5CcmFuY2hl
c106CisgICAgICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHRhYmxlKQog
CiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICAgc2VsZi5jYXNzYW5kcmEuX19lbnRl
cl9fKCkKQEAgLTE2OSw2ICsyMDgsMjIgQEAgY2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgog
ICAgICAgICAgICAgY2FsbGJhY2ssCiAgICAgICAgICkKIAorICAgIGRlZiBmaW5kX2NvbW1pdHNf
YnlfcmVmKHNlbGYsIHJlcG9zaXRvcnlfaWQsIHJlZiwgbGltaXQ9MTAwKToKKyAgICAgICAgIyBG
SVhNRTogU2hvdWxkIHVzZSB0aGUgcmVkaXMgY2FjaGUsIGJ1dCB0aGUgcmVkaXMgY2FjaGUgZG9l
c24ndCBzdXBwb3J0IG5ldy1zdHlsZSBjb21taXRzIHlldAorICAgICAgICB3aXRoIHNlbGY6Cisg
ICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJlZiwgaW50KSBvciByZWYuaXNkaWdpdCgpOgorICAg
ICAgICAgICAgICAgIHJldHVybiBbbW9kZWwudG9fY29tbWl0KCkgZm9yIG1vZGVsIGluIHNlbGYu
Y2Fzc2FuZHJhLnNlbGVjdF9mcm9tX3RhYmxlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLkNv
bW1pdEJ5UmVmLl9fdGFibGVfbmFtZV9fLCBsaW1pdD1saW1pdCwKKyAgICAgICAgICAgICAgICAg
ICAgcmVwb3NpdG9yeV9pZD1yZXBvc2l0b3J5X2lkLCByZWY9J3J7fScuZm9ybWF0KHJlZiksCisg
ICAgICAgICAgICAgICAgKV0KKworICAgICAgICAgICAgIyBGSVhNRTogU0FTSSBpbmRlY2llcyBh
cmUgdGhlIGNhbm9pY2FsIHdheSB0byBzb2x2ZSB0aGlzIHByb2JsZW0sIGJ1dCByZXF1aXJlIENh
c3NhbmRyYSAzLjQgd2hpY2gKKyAgICAgICAgICAgICMgaGFzbid0IGJlZW4gZGVwbG95ZWQgdG8g
b3VyIGRhdGFjZW50ZXJzIHlldC4gVGhpcyB3b3JrcyBmb3IgY29tbWl0cywgYnV0IGlzIGxlc3Mg
dHJhbnNwYXJlbnQuCisgICAgICAgICAgICByZXR1cm4gW21vZGVsLnRvX2NvbW1pdCgpIGZvciBt
b2RlbCBpbiBzZWxmLmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZSgKKyAgICAgICAgICAgICAg
ICBzZWxmLkNvbW1pdEJ5UmVmLl9fdGFibGVfbmFtZV9fLCBsaW1pdD1saW1pdCwKKyAgICAgICAg
ICAgICAgICByZXBvc2l0b3J5X2lkPXJlcG9zaXRvcnlfaWQsIHJlZl9fZ3RlPXJlZi5sb3dlcigp
LCByZWZfX2x0ZT0ocmVmLmxvd2VyKCkgKyAnZycpLAorICAgICAgICAgICAgKV0KKwogICAgIGRl
ZiBmaW5kX2NvbW1pdHNfYnlfdXVpZChzZWxmLCByZXBvc2l0b3J5X2lkLCBicmFuY2gsIHV1aWQs
IGxpbWl0PTEwMCk6CiAgICAgICAgIGlmIGJyYW5jaCBpcyBOb25lOgogICAgICAgICAgICAgYnJh
bmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uZGVmYXVsdF9icmFuY2gKQEAg
LTI5OCw0NyArMzUzLDEwMSBAQCBjbGFzcyBDb21taXRDb250ZXh0KG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgc2VsZi5CcmFuY2hlcy5fX3RhYmxlX25hbWVfXywgbGltaXQ9bGltaXQsIHJlcG9z
aXRvcnlfaWQ9cmVwb3NpdG9yeV9pZCwKICAgICAgICAgICAgICldCiAKKyAgICBkZWYgcmVnaXN0
ZXIoc2VsZiwgY29uZmlndXJhdGlvbiwgY29tbWl0cywgc3VpdGUsIHRlc3RfcmVzdWx0cywgdGlt
ZXN0YW1wPU5vbmUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgY29tbWl0IGluIGNv
bW1pdHM6CisgICAgICAgICAgICAgICAgc2VsZi5yZWdpc3Rlcl9wYXJ0aWFsX2NvbW1pdCgKKyAg
ICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1jb21taXQucmVwb3NpdG9yeV9pZCwKKyAg
ICAgICAgICAgICAgICAgICAgcmVmPWNvbW1pdC5pZCwKKyAgICAgICAgICAgICAgICAgICAgcmV2
aXNpb249Y29tbWl0LnJldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICBoYXNoPWNvbW1pdC5o
YXNoLAorICAgICAgICAgICAgICAgICAgICBmYXN0PUZhbHNlLAorICAgICAgICAgICAgICAgICkK
KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGRpY3Qo
CisgICAgICAgICAgICAgICAgc3RhdHVzPSdlcnJvcicsCisgICAgICAgICAgICAgICAgZGVzY3Jp
cHRpb249c3RyKGUpLAorICAgICAgICAgICAgKQorCisgICAgICAgIHJldHVybiBkaWN0KHN0YXR1
cz0nb2snKQorCiAgICAgZGVmIHJlZ2lzdGVyX2NvbW1pdChzZWxmLCBjb21taXQpOgotICAgICAg
ICBpZiBub3QgaXNpbnN0YW5jZShjb21taXQsIENvbW1pdCk6Ci0gICAgICAgICAgICByYWlzZSBU
eXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtDb21taXR9LCBnb3Qge3R5cGUoY29tbWl0KX0nKQor
ICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb21taXQsIFNjbUNvbW1pdCk6CisgICAgICAgICAg
ICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtTY21Db21taXR9LCBnb3Qge3R5cGUo
Y29tbWl0KX0nKQogCiAgICAgICAgIHdpdGggc2VsZjoKICAgICAgICAgICAgIGlmIGNvbW1pdC5y
ZXBvc2l0b3J5X2lkIG5vdCBpbiBzZWxmLnJlcG9zaXRvcmllczoKICAgICAgICAgICAgICAgICBz
ZWxmLnJlcG9zaXRvcmllc1tjb21taXQucmVwb3NpdG9yeV9pZF0gPSBSZXBvc2l0b3J5KGtleT1j
b21taXQucmVwb3NpdG9yeV9pZCkKIAotICAgICAgICAgICAgZm9yIHRhYmxlIGluIFtzZWxmLkNv
bW1pdEJ5SUQsIHNlbGYuQ29tbWl0QnlVdWlkQXNjZW5kaW5nLCBzZWxmLkNvbW1pdEJ5VXVpZERl
c2NlbmRpbmddOgorICAgICAgICAgICAgZm9yIG9sZCBpbiBbc2VsZi5Db21taXRCeUlELCBzZWxm
LkNvbW1pdEJ5VXVpZEFzY2VuZGluZywgc2VsZi5Db21taXRCeVV1aWREZXNjZW5kaW5nXToKKyAg
ICAgICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5pbnNlcnRfcm93KAorICAgICAgICAgICAgICAg
ICAgICBvbGQuX190YWJsZV9uYW1lX18sCisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlf
aWQ9Y29tbWl0LnJlcG9zaXRvcnlfaWQsCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1jb21t
aXQuYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICBjb21taXRfaWQ9c3RyKGNvbW1pdC5yZXZp
c2lvbikubG93ZXIoKSBpZiBjb21taXQucmV2aXNpb24gZWxzZSBjb21taXQuaGFzaCwKKyAgICAg
ICAgICAgICAgICAgICAgdXVpZD1jb21taXQudXVpZCwKKyAgICAgICAgICAgICAgICAgICAgY29t
bWl0dGVyPWNvbW1pdC5hdXRob3IuZW1haWwgaWYgY29tbWl0LmF1dGhvciBlbHNlIE5vbmUsCisg
ICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9Y29tbWl0Lm1lc3NhZ2UsCisgICAgICAgICAgICAg
ICAgKQorCisgICAgICAgICAgICBmb3IgdGFibGUgaW4gW3NlbGYuQ29tbWl0QnlVdWlkQXNjZW5k
aW5nTWsyLCBzZWxmLkNvbW1pdEJ5VXVpZERlc2NlbmRpbmdNazIsIHNlbGYuQnJhbmNoZXNdOgog
ICAgICAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmluc2VydF9yb3coCiAgICAgICAgICAgICAg
ICAgICAgIHRhYmxlLl9fdGFibGVfbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICByZXBvc2l0
b3J5X2lkPWNvbW1pdC5yZXBvc2l0b3J5X2lkLCBicmFuY2g9Y29tbWl0LmJyYW5jaCwKLSAgICAg
ICAgICAgICAgICAgICAgY29tbWl0X2lkPXN0cihjb21taXQuaWQpLmxvd2VyKCksIHV1aWQ9Y29t
bWl0LnV1aWQsCi0gICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlcj1jb21taXQuY29tbWl0dGVy
LCBtZXNzYWdlPWNvbW1pdC5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5
X2lkPWNvbW1pdC5yZXBvc2l0b3J5X2lkLAorICAgICAgICAgICAgICAgICAgICBicmFuY2g9Y29t
bWl0LmJyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgcmV2aXNpb249Y29tbWl0LnJldmlzaW9u
LAorICAgICAgICAgICAgICAgICAgICBoYXNoPWNvbW1pdC5oYXNoLAorICAgICAgICAgICAgICAg
ICAgICBpZGVudGlmaWVyPXN0cihjb21taXQpIGlmIGNvbW1pdC5pZGVudGlmaWVyIGVsc2UgTm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgdXVpZD1jb21taXQudXVpZCwKKyAgICAgICAgICAgICAg
ICAgICAgY29tbWl0dGVyPWpzb24uZHVtcHMoY29tbWl0LmF1dGhvciwgY2xzPUNvbnRyaWJ1dG9y
LkVuY29kZXIpIGlmIGNvbW1pdC5hdXRob3IgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlPWNvbW1pdC5tZXNzYWdlLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAg
ICAgZm9yIGtleSwgcmVmX2dlbiBpbiAoCisgICAgICAgICAgICAgICAgKCdyZXZpc2lvbicsIGxh
bWJkYSBjb21taXQ6ICdye30nLmZvcm1hdChjb21taXQucmV2aXNpb24pKSwKKyAgICAgICAgICAg
ICAgICAoJ2hhc2gnLCBsYW1iZGEgY29tbWl0OiBjb21taXQuaGFzaCksCisgICAgICAgICAgICAg
ICAgKCdpZGVudGlmaWVyJywgc3RyKSwKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAg
aWYgbm90IGdldGF0dHIoY29tbWl0LCBrZXkpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZQorCisgICAgICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuaW5zZXJ0X3JvdygKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5Db21taXRCeVJlZi5fX3RhYmxlX25hbWVfXywKKyAgICAgICAgICAg
ICAgICAgICAgcmVmPXJlZl9nZW4oY29tbWl0KSwKKyAgICAgICAgICAgICAgICAgICAgcmVwb3Np
dG9yeV9pZD1jb21taXQucmVwb3NpdG9yeV9pZCwKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNo
PWNvbW1pdC5icmFuY2gsCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uPWNvbW1pdC5yZXZp
c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgaGFzaD1jb21taXQuaGFzaCwKKyAgICAgICAgICAg
ICAgICAgICAgaWRlbnRpZmllcj1zdHIoY29tbWl0KSBpZiBjb21taXQuaWRlbnRpZmllciBlbHNl
IE5vbmUsCisgICAgICAgICAgICAgICAgICAgIHV1aWQ9Y29tbWl0LnV1aWQsCisgICAgICAgICAg
ICAgICAgICAgIGNvbW1pdHRlcj1qc29uLmR1bXBzKGNvbW1pdC5hdXRob3IsIGNscz1Db250cmli
dXRvci5FbmNvZGVyKSBpZiBjb21taXQuYXV0aG9yIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgbWVzc2FnZT1jb21taXQubWVzc2FnZSwKICAgICAgICAgICAgICAgICApCisKICAgICAg
ICAgICAgIHNlbGYuY2Fzc2FuZHJhLmluc2VydF9yb3coCiAgICAgICAgICAgICAgICAgc2VsZi5C
cmFuY2hlcy5fX3RhYmxlX25hbWVfXywKICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPWNv
bW1pdC5yZXBvc2l0b3J5X2lkLCBicmFuY2g9Y29tbWl0LmJyYW5jaCwKICAgICAgICAgICAgICkK
ICAgICAgICAgICAgIHJldHVybiBjb21taXQKIAotICAgIGRlZiByZWdpc3Rlcl9jb21taXRfd2l0
aF9yZXBvX2FuZF9pZChzZWxmLCByZXBvc2l0b3J5X2lkLCBicmFuY2gsIGNvbW1pdF9pZCk6Ci0g
ICAgICAgIGlmIGJyYW5jaCBpcyBOb25lOgotICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5yZXBv
c2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uZGVmYXVsdF9icmFuY2gKKyAgICBkZWYgcmVnaXN0ZXJf
cGFydGlhbF9jb21taXQoc2VsZiwgcmVwb3NpdG9yeV9pZCwgcmVmPU5vbmUsIHJldmlzaW9uPU5v
bmUsIGhhc2g9Tm9uZSwgaWRlbnRpZmllcj1Ob25lLCBmYXN0PVRydWUpOgogICAgICAgICBpZiBy
ZXBvc2l0b3J5X2lkIG5vdCBpbiBzZWxmLnJlcG9zaXRvcmllczoKICAgICAgICAgICAgIHJhaXNl
IFJ1bnRpbWVFcnJvcigne30gaXMgbm90IGEgcmVjb2duaXplZCByZXBvc2l0b3J5JykKIAogICAg
ICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICBjb21taXRzID0gc2VsZi5maW5kX2NvbW1pdHNf
YnlfaWQocmVwb3NpdG9yeV9pZD1yZXBvc2l0b3J5X2lkLCBicmFuY2g9YnJhbmNoLCBjb21taXRf
aWQ9Y29tbWl0X2lkKQorICAgICAgICAgICAgY29tbWl0cyA9IHNlbGYuZmluZF9jb21taXRzX2J5
X3JlZihyZXBvc2l0b3J5X2lkPXJlcG9zaXRvcnlfaWQsIHJlZj1yZWYgb3IgcmV2aXNpb24gb3Ig
aGFzaCBvciBpZGVudGlmaWVyKQogICAgICAgICAgICAgaWYgbGVuKGNvbW1pdHMpID4gMToKLSAg
ICAgICAgICAgICAgICByYWlzZSBTY21CYXNlLkV4Y2VwdGlvbihmJ011bHRpcGxlIGNvbW1pdHMg
d2l0aCB0aGUgaWQge2NvbW1pdF9pZH0gZXhpc3QgaW4ge3JlcG9zaXRvcnlfaWR9IG9uIHticmFu
Y2h9JykKLSAgICAgICAgICAgIGlmIGNvbW1pdHM6CisgICAgICAgICAgICAgICAgcmFpc2UgU2Nt
QmFzZS5FeGNlcHRpb24oZidNdWx0aXBsZSBjb21taXRzIHdpdGggdGhlIGlkIHtyZWYgb3IgcmV2
aXNpb24gb3IgaGFzaCBvciBpZGVudGlmaWVyfSBleGlzdCBpbiB7cmVwb3NpdG9yeV9pZH0nKQor
ICAgICAgICAgICAgaWYgY29tbWl0cyBhbmQgKGZhc3Qgb3IgY29tbWl0c1swXS5pZGVudGlmaWVy
KToKICAgICAgICAgICAgICAgICByZXR1cm4gY29tbWl0c1swXQotICAgICAgICAgICAgY29tbWl0
ID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uY29tbWl0X2Zvcl9pZChjb21taXRf
aWQpCisgICAgICAgICAgICBjb21taXQgPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5X2lk
XS5jb21taXQocmVmPXJlZiwgcmV2aXNpb249cmV2aXNpb24sIGhhc2g9aGFzaCwgaWRlbnRpZmll
cj1pZGVudGlmaWVyLCBmYXN0PWZhc3QpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWdpc3Rl
cl9jb21taXQoY29tbWl0KQogCiAgICAgZGVmIHVybChzZWxmLCBjb21taXQpOgotICAgICAgICBp
ZiBub3QgaXNpbnN0YW5jZShjb21taXQsIENvbW1pdCk6CisgICAgICAgIGlmIG5vdCBpc2luc3Rh
bmNlKGNvbW1pdCwgQ29tbWl0KSBhbmQgbm90IGlzaW5zdGFuY2UoY29tbWl0LCBTY21Db21taXQp
OgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7Q29tbWl0fSwg
Z290IHt0eXBlKGNvbW1pdCl9JykKIAogICAgICAgICByZXBvID0gc2VsZi5yZXBvc2l0b3JpZXMu
Z2V0KGNvbW1pdC5yZXBvc2l0b3J5X2lkKQogICAgICAgICBpZiByZXBvOgotICAgICAgICAgICAg
cmV0dXJuIHJlcG8udXJsX2Zvcl9jb21taXQoY29tbWl0LmlkKQorICAgICAgICAgICAgcmV0dXJu
IHJlcG8udXJsX2Zvcl9jb21taXQoY29tbWl0LmlkIGlmIGlzaW5zdGFuY2UoY29tbWl0LCBDb21t
aXQpIGVsc2UgY29tbWl0Lmhhc2ggb3IgY29tbWl0LnJldmlzaW9uKQogICAgICAgICByZXR1cm4g
Tm9uZQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvbW9kZWwvY29tbWl0X2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2Nv
bnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3NDUzMSkKKysrIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0X3VuaXR0
ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1Myw4IEBAIGNsYXNzIENvbW1pdENvbnRl
eHRUZXN0KFdhaXRGb3JEb2NrZXJUZXMKICAgICAgICAgICAgICAgICBmb3Iga2V5LCByZXBvc2l0
b3J5IGluIGRpY3Qoc2FmYXJpPXNhZmFyaSwgd2Via2l0PXdlYmtpdCkuaXRlbXMoKToKICAgICAg
ICAgICAgICAgICAgICAgZm9yIGJyYW5jaCwgY29tbWl0cyBpbiByZXBvc2l0b3J5LmNvbW1pdHMu
aXRlbXMoKToKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBjb21taXQgaW4gY29tbWl0czoK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbW1p
dF93aXRoX3JlcG9fYW5kX2lkKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXks
IGJyYW5jaCwgY29tbWl0Lmhhc2ggb3IgY29tbWl0LnJldmlzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJfcGFydGlhbF9jb21taXQoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwgcmVmPWNvbW1pdC5oYXNoIG9yIGNvbW1p
dC5yZXZpc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAKICAgICBAV2FpdEZv
ckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJl
ZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKQEAgLTE4Myw3ICsxODMs
NyBAQCBjbGFzcyBDb21taXRDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzCiAgICAgZGVmIHRl
c3RfY29tbWl0X2Zyb21fc3Rhc2hfcmVwbyhzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2Fu
ZHJhPUNhc3NhbmRyYUNvbnRleHQpOgogICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2Fm
YXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CiAgICAgICAgICAgICBzZWxmLmluaXRf
ZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgICAgICBz
ZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKCdzYWZhcmknLCAn
bWFpbicsICdkOGJjZTI2ZmE2NWMnKQorICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rl
cl9wYXJ0aWFsX2NvbW1pdCgnc2FmYXJpJywgaGFzaD0nZDhiY2UyNmZhNjVjJykKICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgW3NlbGYuc3Rhc2hfcmVwb3Np
dG9yeS5jb21taXRfZm9yX2lkKGlkPSdkOGJjZTI2ZmE2NWMnKV0sCiAgICAgICAgICAgICAgICAg
c2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywg
YnJhbmNoPSdtYWluJywgY29tbWl0X2lkPSdkOGJjZTI2ZmE2NWMnKSwKQEAgLTE5Myw3ICsxOTMs
NyBAQCBjbGFzcyBDb21taXRDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzCiAgICAgZGVmIHRl
c3RfY29tbWl0X2Zyb21fc3ZuX3JlcG8oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRy
YT1DYXNzYW5kcmFDb250ZXh0KToKICAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFy
aSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgogICAgICAgICAgICAgc2VsZi5pbml0X2Rh
dGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICAgICAgc2Vs
Zi5kYXRhYmFzZS5yZWdpc3Rlcl9jb21taXRfd2l0aF9yZXBvX2FuZF9pZCgnd2Via2l0JywgJ3Ry
dW5rJywgNikKKyAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJfcGFydGlhbF9jb21t
aXQoJ3dlYmtpdCcsIHJldmlzaW9uPTYpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAog
ICAgICAgICAgICAgICAgIFtzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9Nild
LAogICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2J5X2lkKHJlcG9z
aXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0ndHJ1bmsnLCBjb21taXRfaWQ9NiksCkluZGV4OiBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9tb2Nr
X21vZGVsX2ZhY3RvcnkucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9ja19tb2RlbF9mYWN0b3J5LnB5CShyZXZp
c2lvbiAyNzQ1MzEpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9tb2RlbC9tb2NrX21vZGVsX2ZhY3RvcnkucHkJKHdvcmtpbmcgY29weSkKQEAgLTEs
NCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTIsOCArOTIsOCBAQCBj
bGFzcyBNb2NrTW9kZWxGYWN0b3J5KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgZm9yIGtleSwg
cmVwb3NpdG9yeSBpbiBkaWN0KHNhZmFyaT1zYWZhcmksIHdlYmtpdD13ZWJraXQpLml0ZW1zKCk6
CiAgICAgICAgICAgICAgICAgICAgIGZvciBicmFuY2gsIGNvbW1pdHMgaW4gcmVwb3NpdG9yeS5j
b21taXRzLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29tbWl0IGluIGNv
bW1pdHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwuY29tbWl0X2NvbnRleHQu
cmVnaXN0ZXJfY29tbWl0X3dpdGhfcmVwb19hbmRfaWQoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGtleSwgYnJhbmNoLCBjb21taXQuaGFzaCBvciBjb21taXQucmV2aXNpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwuY29tbWl0X2NvbnRleHQucmVnaXN0ZXJf
cGFydGlhbF9jb21taXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwgaGFz
aD1jb21taXQuaGFzaCwgcmV2aXNpb249Y29tbWl0LnJldmlzaW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICkKICAgICAgICAgcmV0dXJuIG1vZGVsCiAKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L21vZGVsL21vZGVsLnB5CShyZXZpc2lvbiAyNzQ1MzEpCisrKyBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9tb2RlbC5weQkod29ya2luZyBjb3B5
KQpAQCAtOTIsNyArOTIsNyBAQCBjbGFzcyBNb2RlbChvYmplY3QpOgogICAgICAgICAgICAgdHRs
X3NlY29uZHM9c2VsZi5kZWZhdWx0X3R0bF9zZWNvbmRzLAogICAgICAgICApCiAKLSAgICAgICAg
Zm9yIGNvbnRleHQgaW4gW3NlbGYuY2lfY29udGV4dCwgc2VsZi5mYWlsdXJlX2NvbnRleHQsIHNl
bGYuc3VpdGVfY29udGV4dCwgc2VsZi50ZXN0X2NvbnRleHRdOgorICAgICAgICBmb3IgY29udGV4
dCBpbiBbc2VsZi5jaV9jb250ZXh0LCBzZWxmLmZhaWx1cmVfY29udGV4dCwgc2VsZi5zdWl0ZV9j
b250ZXh0LCBzZWxmLnRlc3RfY29udGV4dCwgc2VsZi5jb21taXRfY29udGV4dF06CiAgICAgICAg
ICAgICBzZWxmLnVwbG9hZF9jb250ZXh0LnJlZ2lzdGVyX3VwbG9hZF9jYWxsYmFjayhjb250ZXh0
Lm5hbWUsIGNvbnRleHQucmVnaXN0ZXIpCiAKICAgICAgICAgc2VsZi5hcmNoaXZlX2NvbnRleHQg
PSBBcmNoaXZlQ29udGV4dCgKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnkucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9y
eS5weQkocmV2aXNpb24gMjc0NTMxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeS5weQkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsOSBAQCBjbGFzcyBSZXBvc2l0b3J5KG9iamVjdCk6CiAgICAgZGVmIGNvbW1pdF9m
b3JfaWQoc2VsZiwgaWQpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKIAor
ICAgIGRlZiBjb21taXQoc2VsZiwgcmVmPU5vbmUsIHJldmlzaW9uPU5vbmUsIGhhc2g9Tm9uZSwg
aWRlbnRpZmllcj1Ob25lLCBmYXN0PVRydWUpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRl
ZEVycm9yKCkKKwogICAgIGRlZiB1cmxfZm9yX2NvbW1pdChzZWxmLCBjb21taXQpOgogICAgICAg
ICByZXR1cm4gTm9uZQogCkBAIC02MSw2ICs2NCwxMyBAQCBjbGFzcyBTdGFzaFJlcG9zaXRvcnko
UmVwb3NpdG9yeSk6CiAgICAgICAgICAgICBtZXNzYWdlPWNvbW1pdC5tZXNzYWdlLAogICAgICAg
ICApCiAKKyAgICBkZWYgY29tbWl0KHNlbGYsIHJlZj1Ob25lLCByZXZpc2lvbj1Ob25lLCBoYXNo
PU5vbmUsIGlkZW50aWZpZXI9Tm9uZSwgZmFzdD1UcnVlKToKKyAgICAgICAgaWYgaWRlbnRpZmll
cjoKKyAgICAgICAgICAgIGZhc3QgPSBGYWxzZQorICAgICAgICBpZiByZWY6CisgICAgICAgICAg
ICByZXR1cm4gc2VsZi5yZW1vdGUuZmluZChyZWYsIGluY2x1ZGVfaWRlbnRpZmllcj1ub3QgZmFz
dCkKKyAgICAgICAgcmV0dXJuIHNlbGYucmVtb3RlLmNvbW1pdChyZXZpc2lvbj1yZXZpc2lvbiwg
aGFzaD1oYXNoLCBpZGVudGlmaWVyPWlkZW50aWZpZXIsIGluY2x1ZGVfaWRlbnRpZmllcj1ub3Qg
ZmFzdCkKKwogICAgIGRlZiB1cmxfZm9yX2NvbW1pdChzZWxmLCBjb21taXQpOgogICAgICAgICBy
ZXR1cm4gZid7c2VsZi5yZW1vdGUudXJsfS9jb21taXRzL3tjb21taXR9JwogCkBAIC04OSw2ICs5
OSwxNSBAQCBjbGFzcyBXZWJLaXRSZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogICAgICAgICAgICAg
bWVzc2FnZT1jb21taXQubWVzc2FnZSwKICAgICAgICAgKQogCisgICAgZGVmIGNvbW1pdChzZWxm
LCByZWY9Tm9uZSwgcmV2aXNpb249Tm9uZSwgaGFzaD1Ob25lLCBpZGVudGlmaWVyPU5vbmUsIGZh
c3Q9VHJ1ZSk6CisgICAgICAgIGlmIGlkZW50aWZpZXI6CisgICAgICAgICAgICBmYXN0ID0gRmFs
c2UKKyAgICAgICAgaWYgcmVmOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShyZWYsIGludCkg
b3IgcmVmLmlzZGlnaXQoKToKKyAgICAgICAgICAgICAgICByZWYgPSAncnt9Jy5mb3JtYXQocmVm
KQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVtb3RlLmZpbmQocmVmLCBpbmNsdWRlX2lkZW50
aWZpZXI9bm90IGZhc3QpCisgICAgICAgIHJldHVybiBzZWxmLnJlbW90ZS5jb21taXQocmV2aXNp
b249cmV2aXNpb24sIGhhc2g9aGFzaCwgaWRlbnRpZmllcj1pZGVudGlmaWVyLCBpbmNsdWRlX2lk
ZW50aWZpZXI9bm90IGZhc3QpCisKICAgICBkZWYgdXJsX2Zvcl9jb21taXQoc2VsZiwgY29tbWl0
KToKICAgICAgICAgcmV0dXJuIGYnaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvcntjb21taXR9
JwogCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9tb2RlbC9yZXBvc2l0b3J5X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnlfdW5p
dHRlc3QucHkJKHJldmlzaW9uIDI3NDUzMSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnlfdW5pdHRlc3QucHkJKHdvcmtp
bmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzEsMTUgKzMxLDE1IEBAIGNsYXNzIFJlcG9zaXRvcnlUZXN0KFdhaXRGb3JEb2NrZXJUZXN0Q2EK
ICAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgogICAgICAgICAgICAgc3Zu
X3JlcG8gPSBXZWJLaXRSZXBvc2l0b3J5KCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgn
d2Via2l0Jywgc3ZuX3JlcG8ua2V5KQotICAgICAgICAgICAgY29tbWl0ID0gc3ZuX3JlcG8uY29t
bWl0X2Zvcl9pZCg2KQorICAgICAgICAgICAgY29tbWl0ID0gc3ZuX3JlcG8uY29tbWl0KHJldmlz
aW9uPTYpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC51dWlkLCAxNjAxNjM5
OTAwMDApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5tZXNzYWdlLCAnNnRo
IGNvbW1pdCcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5icmFuY2gsICd0
cnVuaycpCiAKLSAgICBkZWYgdGVzdF9icmFuY2hfc3ZuKHNlbGYpOgorICAgIGRlZiB0ZXN0X3Jl
Zl9zdm4oc2VsZik6CiAgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKICAg
ICAgICAgICAgIHN2bl9yZXBvID0gV2ViS2l0UmVwb3NpdG9yeSgpCi0gICAgICAgICAgICBjb21t
aXQgPSBzdm5fcmVwby5jb21taXRfZm9yX2lkKDcpCisgICAgICAgICAgICBjb21taXQgPSBzdm5f
cmVwby5jb21taXQocmVmPTcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC51
dWlkLCAxNjAxNjQwOTAwMDApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5t
ZXNzYWdlLCAnN3RoIGNvbW1pdCcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1p
dC5icmFuY2gsICdicmFuY2gtYScpCkBAIC00OCwxNSArNDgsMjMgQEAgY2xhc3MgUmVwb3NpdG9y
eVRlc3QoV2FpdEZvckRvY2tlclRlc3RDYQogICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnku
c2FmYXJpKCkgYXMgc2FmYXJpOgogICAgICAgICAgICAgZ2l0X3JlcG8gPSBTdGFzaFJlcG9zaXRv
cnkoJ2h0dHBzOi8ve30nLmZvcm1hdChzYWZhcmkucmVtb3RlKSkKICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ3NhZmFyaScsIGdpdF9yZXBvLmtleSkKLSAgICAgICAgICAgIGNvbW1pdCA9
IGdpdF9yZXBvLmNvbW1pdF9mb3JfaWQoJzFhYmUyNWI0NDNlOScpCisgICAgICAgICAgICBjb21t
aXQgPSBnaXRfcmVwby5jb21taXQoaGFzaD0nMWFiZTI1YjQ0M2U5JykKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY29tbWl0LnV1aWQsIDE2MDE2NjMwMDAwMCkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY29tbWl0LmJyYW5jaCwgJ21haW4nKQorCisgICAgZGVmIHRlc3RfcmVm
X3N0YXNoKHNlbGYpOgorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCkgYXMg
c2FmYXJpOgorICAgICAgICAgICAgZ2l0X3JlcG8gPSBTdGFzaFJlcG9zaXRvcnkoJ2h0dHBzOi8v
e30nLmZvcm1hdChzYWZhcmkucmVtb3RlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J3NhZmFyaScsIGdpdF9yZXBvLmtleSkKKyAgICAgICAgICAgIGNvbW1pdCA9IGdpdF9yZXBvLmNv
bW1pdChyZWY9JzFhYmUyNWI0NDNlOScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bW1pdC51dWlkLCAxNjAxNjYzMDAwMDApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bW1pdC5icmFuY2gsICdtYWluJykKIAogICAgIGRlZiB0ZXN0X2NvbGxpZGluZ190aW1lc3RhbXBz
X3N0YXNoKHNlbGYpOgogICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCkgYXMg
c2FmYXJpOgogICAgICAgICAgICAgZ2l0X3JlcG8gPSBTdGFzaFJlcG9zaXRvcnkoJ2h0dHBzOi8v
e30nLmZvcm1hdChzYWZhcmkucmVtb3RlKSkKLSAgICAgICAgICAgIGNvbW1pdDEgPSBnaXRfcmVw
by5jb21taXRfZm9yX2lkKCdiYWU1ZDFlOTA5OTknKQotICAgICAgICAgICAgY29tbWl0MiA9IGdp
dF9yZXBvLmNvbW1pdF9mb3JfaWQoJ2Q4YmNlMjZmYTY1YycpCisgICAgICAgICAgICBjb21taXQx
ID0gZ2l0X3JlcG8uY29tbWl0KGhhc2g9J2JhZTVkMWU5MDk5OScpCisgICAgICAgICAgICBjb21t
aXQyID0gZ2l0X3JlcG8uY29tbWl0KGhhc2g9J2Q4YmNlMjZmYTY1YycpCiAKICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0MS50aW1lc3RhbXAsIGNvbW1pdDIudGltZXN0YW1wKQog
ICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjb21taXQxLnV1aWQsIGNvbW1pdDIudXVp
ZCkKQEAgLTY3LDYgKzc1LDYgQEAgY2xhc3MgUmVwb3NpdG9yeVRlc3QoV2FpdEZvckRvY2tlclRl
c3RDYQogICAgIGRlZiB0ZXN0X2JyYW5jaF9zdGFzaChzZWxmKToKICAgICAgICAgd2l0aCBNb2Nr
TW9kZWxGYWN0b3J5LnNhZmFyaSgpIGFzIHNhZmFyaToKICAgICAgICAgICAgIGdpdF9yZXBvID0g
U3Rhc2hSZXBvc2l0b3J5KCdodHRwczovL3t9Jy5mb3JtYXQoc2FmYXJpLnJlbW90ZSkpCi0gICAg
ICAgICAgICBjb21taXQgPSBnaXRfcmVwby5jb21taXRfZm9yX2lkKCc2MjE2NTJhZGQ3ZmMnKQor
ICAgICAgICAgICAgY29tbWl0ID0gZ2l0X3JlcG8uY29tbWl0KGhhc2g9JzYyMTY1MmFkZDdmYycp
CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC51dWlkLCAxNjAxNjY2MDAwMDAp
CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5icmFuY2gsICdicmFuY2gtYScp
CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9t
b2RlbC91cGxvYWRfY29udGV4dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC91cGxvYWRfY29udGV4dC5weQkocmV2
aXNpb24gMjc0NTMxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvbW9kZWwvdXBsb2FkX2NvbnRleHQucHkJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDggQEAgZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpbwogZnJvbSBy
ZXN1bHRzZGJweS5tb2RlbC5jb21taXRfY29udGV4dCBpbXBvcnQgQ29tbWl0Q29udGV4dAogZnJv
bSByZXN1bHRzZGJweS5tb2RlbC5jb25maWd1cmF0aW9uX2NvbnRleHQgaW1wb3J0IENsdXN0ZXJl
ZEJ5Q29uZmlndXJhdGlvbgogCitmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBDb21taXQgYXMgU2Nt
Q29tbWl0CisKIAogY2xhc3MgVXBsb2FkQ29udGV4dChvYmplY3QpOgogICAgIFFVRVVFX05BTUUg
PSAndXBsb2FkX3F1ZXVlJwpAQCAtNjEsNyArNjMsNyBAQCBjbGFzcyBVcGxvYWRDb250ZXh0KG9i
amVjdCk6CiAKICAgICAgICAgZGVmIHVucGFjayhzZWxmKToKICAgICAgICAgICAgIHJldHVybiBk
aWN0KAotICAgICAgICAgICAgICAgIGNvbW1pdHM9W0NvbW1pdC5mcm9tX2pzb24oZWxlbWVudCkg
Zm9yIGVsZW1lbnQgaW4ganNvbi5sb2FkcyhVcGxvYWRDb250ZXh0LmZyb21femlwKGJ5dGVhcnJh
eShzZWxmLmNvbW1pdHMpKSldLAorICAgICAgICAgICAgICAgIGNvbW1pdHM9W1NjbUNvbW1pdC5m
cm9tX2pzb24oZWxlbWVudCkgZm9yIGVsZW1lbnQgaW4ganNvbi5sb2FkcyhVcGxvYWRDb250ZXh0
LmZyb21femlwKGJ5dGVhcnJheShzZWxmLmNvbW1pdHMpKSldLAogICAgICAgICAgICAgICAgIHNk
az1Ob25lIGlmIHNlbGYuc2RrID09ICc/JyBlbHNlIHNlbGYuc2RrLAogICAgICAgICAgICAgICAg
IHRlc3RfcmVzdWx0cz1qc29uLmxvYWRzKFVwbG9hZENvbnRleHQuZnJvbV96aXAoYnl0ZWFycmF5
KHNlbGYudGVzdF9yZXN1bHRzKSkpLAogICAgICAgICAgICAgICAgIHRpbWVzdGFtcD1jYWxlbmRh
ci50aW1lZ20oc2VsZi50aW1lX3VwbG9hZGVkLnRpbWV0dXBsZSgpKSwKQEAgLTgxLDcgKzgzLDcg
QEAgY2xhc3MgVXBsb2FkQ29udGV4dChvYmplY3QpOgogCiAgICAgICAgIGRlZiB1bnBhY2soc2Vs
Zik6CiAgICAgICAgICAgICByZXR1cm4gZGljdCgKLSAgICAgICAgICAgICAgICBjb21taXRzPVtD
b21taXQuZnJvbV9qc29uKGVsZW1lbnQpIGZvciBlbGVtZW50IGluIGpzb24ubG9hZHMoVXBsb2Fk
Q29udGV4dC5mcm9tX3ppcChieXRlYXJyYXkoc2VsZi5jb21taXRzKSkpXSwKKyAgICAgICAgICAg
ICAgICBjb21taXRzPVtTY21Db21taXQuZnJvbV9qc29uKGVsZW1lbnQpIGZvciBlbGVtZW50IGlu
IGpzb24ubG9hZHMoVXBsb2FkQ29udGV4dC5mcm9tX3ppcChieXRlYXJyYXkoc2VsZi5jb21taXRz
KSkpXSwKICAgICAgICAgICAgICAgICBzZGs9Tm9uZSBpZiBzZWxmLnNkayA9PSAnPycgZWxzZSBz
ZWxmLnNkaywKICAgICAgICAgICAgICAgICB0ZXN0X3Jlc3VsdHM9anNvbi5sb2FkcyhVcGxvYWRD
b250ZXh0LmZyb21femlwKGJ5dGVhcnJheShzZWxmLnRlc3RfcmVzdWx0cykpKSwKICAgICAgICAg
ICAgICAgICB0aW1lc3RhbXA9Y2FsZW5kYXIudGltZWdtKHNlbGYudGltZV91cGxvYWRlZC50aW1l
dHVwbGUoKSksCkBAIC0xNzksNyArMTgxLDcgQEAgY2xhc3MgVXBsb2FkQ29udGV4dChvYmplY3Qp
OgogICAgICAgICAgICAgICAgIGRhdGEgPSBqc29uLmxvYWRzKHJhd19kYXRhKQogICAgICAgICAg
ICAgICAgIHNlbGYuc3luY2hyb25vdXNseV9wcm9jZXNzX3Rlc3RfcmVzdWx0cygKICAgICAgICAg
ICAgICAgICAgICAgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uLmZyb21fanNvbihkYXRhWydj
b25maWd1cmF0aW9uJ10pLAotICAgICAgICAgICAgICAgICAgICBjb21taXRzPVtDb21taXQuZnJv
bV9qc29uKGNvbW1pdF9qc29uKSBmb3IgY29tbWl0X2pzb24gaW4gZGF0YVsnY29tbWl0cyddXSwK
KyAgICAgICAgICAgICAgICAgICAgY29tbWl0cz1bU2NtQ29tbWl0LmZyb21fanNvbihjb21taXRf
anNvbikgZm9yIGNvbW1pdF9qc29uIGluIGRhdGFbJ2NvbW1pdHMnXV0sCiAgICAgICAgICAgICAg
ICAgICAgIHN1aXRlPWRhdGFbJ3N1aXRlJ10sCiAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFt
cD1kYXRhWyd0aW1lc3RhbXAnXSwKICAgICAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHRzPWRh
dGFbJ3Rlc3RfcmVzdWx0cyddLApAQCAtMjI5LDcgKzIzMSw3IEBAIGNsYXNzIFVwbG9hZENvbnRl
eHQob2JqZWN0KToKICAgICAgICAgICAgICAgICBqc29uLmR1bXBzKGRpY3QoCiAgICAgICAgICAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb249Q29uZmlndXJhdGlvbi5FbmNvZGVyKCkuZGVmYXVsdChj
b25maWd1cmF0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgc3VpdGU9c3VpdGUsCi0gICAgICAg
ICAgICAgICAgICAgIGNvbW1pdHM9Q29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KGNvbW1pdHMpLAor
ICAgICAgICAgICAgICAgICAgICBjb21taXRzPVtjb21taXQuRW5jb2RlcigpLmRlZmF1bHQoY29t
bWl0KSBmb3IgY29tbWl0IGluIGNvbW1pdHNdLAogICAgICAgICAgICAgICAgICAgICB0aW1lc3Rh
bXA9dGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3Jlc3VsdHM9dGVzdF9yZXN1
bHRzLAogICAgICAgICAgICAgICAgICkpLApAQCAtMjQxLDcgKzI0Myw3IEBAIGNsYXNzIFVwbG9h
ZENvbnRleHQob2JqZWN0KToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3VpdGUsIHN0cik6
CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB0eXBlIHtzdHJ9LCBnb3Qg
e3R5cGUoc3VpdGUpfScpCiAgICAgICAgIGZvciBjb21taXQgaW4gY29tbWl0czoKLSAgICAgICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbW1pdCwgQ29tbWl0KToKKyAgICAgICAgICAgIGlmIG5v
dCBpc2luc3RhbmNlKGNvbW1pdCwgU2NtQ29tbWl0KSBhbmQgbm90IGlzaW5zdGFuY2UoY29tbWl0
LCBDb21taXQpOgogICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4cGVjdGVkIHR5
cGUge0NvbW1pdH0sIGdvdCB7dHlwZShjb21taXQpfScpCiAgICAgICAgIGlmIGxlbihjb21taXRz
KSA8IDE6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdFYWNoIHRlc3QgcmVzdWx0IG11
c3QgaGF2ZSBhdCBsZWFzdCAxIGFzc29jaWF0ZWQgY29tbWl0JykKQEAgLTI2NSw3ICsyNjcsNyBA
QCBjbGFzcyBVcGxvYWRDb250ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5jb25m
aWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCiAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuVXBsb2Fkc0J5Q29uZmlndXJhdGlvbi5fX3RhYmxlX25hbWVfXywg
Y29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICBzdWl0ZT1z
dWl0ZSwgYnJhbmNoPWJyYW5jaCwgdXVpZD11dWlkLCBzZGs9Y29uZmlndXJhdGlvbi5zZGsgb3Ig
Jz8nLCB0aW1lX3VwbG9hZGVkPXRpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgY29tbWl0
cz1zZWxmLnRvX3ppcChqc29uLmR1bXBzKGNvbW1pdHMsIGNscz1Db21taXQuRW5jb2RlcikpLAor
ICAgICAgICAgICAgICAgICAgICBjb21taXRzPXNlbGYudG9femlwKGpzb24uZHVtcHMoY29tbWl0
cywgY2xzPWNvbW1pdHNbMF0uRW5jb2RlcikpLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3Jl
c3VsdHM9c2VsZi50b196aXAoanNvbi5kdW1wcyh0ZXN0X3Jlc3VsdHMpKSwKICAgICAgICAgICAg
ICAgICAgICAgdXBsb2FkX3ZlcnNpb249dmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgdHRs
PWludCgodXVpZCAvLyBDb21taXQuVElNRVNUQU1QX1RPX1VVSURfTVVMVElQTElFUikgKyBzZWxm
LnR0bF9zZWNvbmRzIC0gdGltZS50aW1lKCkpIGlmIHNlbGYudHRsX3NlY29uZHMgZWxzZSBOb25l
LApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
bW9kZWwvdXBsb2FkX2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvdXBsb2FkX2NvbnRl
eHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3NDUzMSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3VwbG9hZF9jb250ZXh0X3VuaXR0ZXN0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsMzUgKzEzNSwzOCBAQCBjbGFzcyBVcGxvYWRDb250
ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzCiAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRp
cz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5h
ZGRfbW9ja19yZXN1bHRzKHNlbGYubW9kZWwpCiAKLSAgICAgICAgY29uZmlndXJhdGlvbl90b19z
ZWFyY2ggPSBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdpT1MnLCB2ZXJzaW9uPScxMi4wLjAnLCBp
c19zaW11bGF0b3I9VHJ1ZSwgc3R5bGU9J0FzYW4nKQotICAgICAgICBjb25maWd1cmF0aW9uLCB1
cGxvYWRzID0gbmV4dChpdGVyKHNlbGYubW9kZWwudXBsb2FkX2NvbnRleHQuZmluZF90ZXN0X3Jl
c3VsdHMoY29uZmlndXJhdGlvbnM9W2NvbmZpZ3VyYXRpb25fdG9fc2VhcmNoXSwgc3VpdGU9J2xh
eW91dC10ZXN0cycsIHJlY2VudD1GYWxzZSkuaXRlbXMoKSkpCi0gICAgICAgIHNlbGYubW9kZWwu
dXBsb2FkX2NvbnRleHQucHJvY2Vzc190ZXN0X3Jlc3VsdHMoCi0gICAgICAgICAgICBjb25maWd1
cmF0aW9uPWNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICBjb21taXRzPXVwbG9hZHNbMF1bJ2Nv
bW1pdHMnXSwKLSAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLAotICAgICAgICAgICAg
dGVzdF9yZXN1bHRzPXVwbG9hZHNbMF1bJ3Rlc3RfcmVzdWx0cyddLAotICAgICAgICAgICAgdGlt
ZXN0YW1wPXVwbG9hZHNbMF1bJ3RpbWVzdGFtcCddLAotICAgICAgICApCisgICAgICAgIHdpdGgg
TW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb25fdG9fc2VhcmNoID0gQ29uZmlndXJhdGlvbihwbGF0Zm9y
bT0naU9TJywgdmVyc2lvbj0nMTIuMC4wJywgaXNfc2ltdWxhdG9yPVRydWUsIHN0eWxlPSdBc2Fu
JykKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIHVwbG9hZHMgPSBuZXh0KGl0ZXIoc2VsZi5t
b2RlbC51cGxvYWRfY29udGV4dC5maW5kX3Rlc3RfcmVzdWx0cyhjb25maWd1cmF0aW9ucz1bY29u
ZmlndXJhdGlvbl90b19zZWFyY2hdLCBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgcmVjZW50PUZhbHNl
KS5pdGVtcygpKSkKKyAgICAgICAgICAgIHNlbGYubW9kZWwudXBsb2FkX2NvbnRleHQucHJvY2Vz
c190ZXN0X3Jlc3VsdHMoCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0
aW9uLAorICAgICAgICAgICAgICAgIGNvbW1pdHM9dXBsb2Fkc1swXVsnY29tbWl0cyddLAorICAg
ICAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLAorICAgICAgICAgICAgICAgIHRlc3Rf
cmVzdWx0cz11cGxvYWRzWzBdWyd0ZXN0X3Jlc3VsdHMnXSwKKyAgICAgICAgICAgICAgICB0aW1l
c3RhbXA9dXBsb2Fkc1swXVsndGltZXN0YW1wJ10sCisgICAgICAgICAgICApCiAKLSAgICAgICAg
IyBVc2luZyBzdWl0ZSByZXN1bHRzIGFzIGEgcHJveHkgdG8gdGVsbCBpZiBjYWxsYmFja3Mgd2Vy
ZSB0cmlnZ2VyZWQKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oc2VsZi5tb2RlbC5z
dWl0ZV9jb250ZXh0LmZpbmRfYnlfY29tbWl0KGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9u
KCldLCBzdWl0ZT0nbGF5b3V0LXRlc3RzJykpKQorICAgICAgICAgICAgIyBVc2luZyBzdWl0ZSBy
ZXN1bHRzIGFzIGEgcHJveHkgdG8gdGVsbCBpZiBjYWxsYmFja3Mgd2VyZSB0cmlnZ2VyZWQKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHNlbGYubW9kZWwuc3VpdGVfY29udGV4
dC5maW5kX2J5X2NvbW1pdChjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbigpXSwgc3VpdGU9
J2xheW91dC10ZXN0cycpKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9u
b19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tD
YXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X2FzeW5jX2NhbGxiYWNrKHNlbGYsIHJlZGlz
PVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CiAgICAgICAgIHNlbGYu
aW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSwgYXN5bmNfcHJv
Y2Vzc2luZz1UcnVlKQogICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMo
c2VsZi5tb2RlbCkKIAotICAgICAgICBjb25maWd1cmF0aW9uX3RvX3NlYXJjaCA9IENvbmZpZ3Vy
YXRpb24ocGxhdGZvcm09J2lPUycsIHZlcnNpb249JzEyLjAuMCcsIGlzX3NpbXVsYXRvcj1UcnVl
LCBzdHlsZT0nQXNhbicpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24sIHVwbG9hZHMgPSBuZXh0KGl0
ZXIoc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dC5maW5kX3Rlc3RfcmVzdWx0cyhjb25maWd1cmF0
aW9ucz1bY29uZmlndXJhdGlvbl90b19zZWFyY2hdLCBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgcmVj
ZW50PUZhbHNlKS5pdGVtcygpKSkKLSAgICAgICAgc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dC5w
cm9jZXNzX3Rlc3RfcmVzdWx0cygKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJh
dGlvbiwKLSAgICAgICAgICAgIGNvbW1pdHM9dXBsb2Fkc1swXVsnY29tbWl0cyddLAotICAgICAg
ICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICB0ZXN0X3Jlc3VsdHM9dXBs
b2Fkc1swXVsndGVzdF9yZXN1bHRzJ10sCi0gICAgICAgICAgICB0aW1lc3RhbXA9dXBsb2Fkc1sw
XVsndGltZXN0YW1wJ10sCi0gICAgICAgICkKLQotICAgICAgICAjIFVzaW5nIHN1aXRlIHJlc3Vs
dHMgYXMgYSBwcm94eSB0byB0ZWxsIGlmIGNhbGxiYWNrcyB3ZXJlIHRyaWdnZXJlZAotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihzZWxmLm1vZGVsLnN1aXRlX2NvbnRleHQuZmluZF9i
eV9jb21taXQoY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24oKV0sIHN1aXRlPSdsYXlvdXQt
dGVzdHMnKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1vZGVsLnVwbG9hZF9jb250
ZXh0LmRvX3Byb2Nlc3Npbmdfd29yaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxl
bihzZWxmLm1vZGVsLnN1aXRlX2NvbnRleHQuZmluZF9ieV9jb21taXQoY29uZmlndXJhdGlvbnM9
W0NvbmZpZ3VyYXRpb24oKV0sIHN1aXRlPSdsYXlvdXQtdGVzdHMnKSkpCisgICAgICAgIHdpdGgg
TW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb25fdG9fc2VhcmNoID0gQ29uZmlndXJhdGlvbihwbGF0Zm9y
bT0naU9TJywgdmVyc2lvbj0nMTIuMC4wJywgaXNfc2ltdWxhdG9yPVRydWUsIHN0eWxlPSdBc2Fu
JykKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIHVwbG9hZHMgPSBuZXh0KGl0ZXIoc2VsZi5t
b2RlbC51cGxvYWRfY29udGV4dC5maW5kX3Rlc3RfcmVzdWx0cyhjb25maWd1cmF0aW9ucz1bY29u
ZmlndXJhdGlvbl90b19zZWFyY2hdLCBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgcmVjZW50PUZhbHNl
KS5pdGVtcygpKSkKKworICAgICAgICAgICAgc2VsZi5tb2RlbC51cGxvYWRfY29udGV4dC5wcm9j
ZXNzX3Rlc3RfcmVzdWx0cygKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3Vy
YXRpb24sCisgICAgICAgICAgICAgICAgY29tbWl0cz11cGxvYWRzWzBdWydjb21taXRzJ10sCisg
ICAgICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCisgICAgICAgICAgICAgICAgdGVz
dF9yZXN1bHRzPXVwbG9hZHNbMF1bJ3Rlc3RfcmVzdWx0cyddLAorICAgICAgICAgICAgICAgIHRp
bWVzdGFtcD11cGxvYWRzWzBdWyd0aW1lc3RhbXAnXSwKKyAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgIyBVc2luZyBzdWl0ZSByZXN1bHRzIGFzIGEgcHJveHkgdG8gdGVsbCBpZiBjYWxsYmFj
a3Mgd2VyZSB0cmlnZ2VyZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHNl
bGYubW9kZWwuc3VpdGVfY29udGV4dC5maW5kX2J5X2NvbW1pdChjb25maWd1cmF0aW9ucz1bQ29u
ZmlndXJhdGlvbigpXSwgc3VpdGU9J2xheW91dC10ZXN0cycpKSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShzZWxmLm1vZGVsLnVwbG9hZF9jb250ZXh0LmRvX3Byb2Nlc3Npbmdfd29yaygp
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oc2VsZi5tb2RlbC5zdWl0ZV9j
b250ZXh0LmZpbmRfYnlfY29tbWl0KGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKCldLCBz
dWl0ZT0nbGF5b3V0LXRlc3RzJykpKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvY29tbWl0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbW1pdC5weQkocmV2aXNpb24g
Mjc0NTMxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvY29tbWl0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNyArMjIwLDcgQEAgY2xhc3MgQ29t
bWl0KG9iamVjdCk6CiAgICAgICAgIGlmIGF1dGhvciBhbmQgaXNpbnN0YW5jZShhdXRob3IsIGRp
Y3QpIGFuZCBhdXRob3IuZ2V0KCduYW1lJyk6CiAgICAgICAgICAgICBzZWxmLmF1dGhvciA9IENv
bnRyaWJ1dG9yKGF1dGhvci5nZXQoJ25hbWUnKSwgYXV0aG9yLmdldCgnZW1haWxzJykpCiAgICAg
ICAgIGVsaWYgYXV0aG9yIGFuZCBpc2luc3RhbmNlKGF1dGhvciwgc2l4LnN0cmluZ190eXBlcykg
YW5kICdAJyBpbiBhdXRob3I6Ci0gICAgICAgICAgICBzZWxmLmF1dGhvciA9IENvbnRyaWJ1dG9y
KGF1dGhvciwgYXV0aG9yKQorICAgICAgICAgICAgc2VsZi5hdXRob3IgPSBDb250cmlidXRvcihh
dXRob3IsIFthdXRob3JdKQogICAgICAgICBlbGlmIGF1dGhvciBhbmQgbm90IGlzaW5zdGFuY2Uo
YXV0aG9yLCBDb250cmlidXRvcik6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkV4cGVj
dGVkICdhdXRob3InIHRvIGJlIG9mIHR5cGUge30sIGdvdCAne30nIi5mb3JtYXQoQ29udHJpYnV0
b3IsIGF1dGhvcikpCiAgICAgICAgIGVsc2U6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>