<?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>217732</bug_id>
          
          <creation_ts>2020-10-14 14:56:06 -0700</creation_ts>
          <short_desc>[git-webkit] Use contributors.json</short_desc>
          <delta_ts>2020-12-04 12:04:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=215862</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=217932</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>aakash_jain</cc>
    
    <cc>dean_johnson</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1697897</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-14 14:56:06 -0700</bug_when>
    <thetext>git-webkit should rely on contributors.json, this will allow us to be more explicit about the author of a given change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697898</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-14 14:56:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/70309518&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697902</commentid>
    <comment_count>2</comment_count>
      <attachid>411376</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-14 15:03:40 -0700</bug_when>
    <thetext>Created attachment 411376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697945</commentid>
    <comment_count>3</comment_count>
      <attachid>411376</attachid>
    <who name="Dean Johnson">dean_johnson</who>
    <bug_when>2020-10-14 16:29:27 -0700</bug_when>
    <thetext>Comment on attachment 411376
Patch

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

&gt; Tools/Scripts/git-webkit:32
&gt; +for contributor in CommitterList().contributors():

Nit: Can we reformat this file with the standard `if __name__ == &apos;__main__&apos;` and a main() function to go with it?

&gt; Tools/Scripts/git-webkit:38
&gt; +            Contributor.bank[alias] = c

My previous concern about this approach was that we were modifying values on a static object then relying on those values existing in other scripts/modules. 

Can we find a way to organize the code so we are explicit about creating some kind of ContributorList, then pass that around? Or call a function which returns that list, then provide that result as an argument to the parser?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697952</commentid>
    <comment_count>4</comment_count>
      <attachid>411376</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-14 16:38:32 -0700</bug_when>
    <thetext>Comment on attachment 411376
Patch

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

&gt;&gt; Tools/Scripts/git-webkit:38
&gt;&gt; +            Contributor.bank[alias] = c
&gt; 
&gt; My previous concern about this approach was that we were modifying values on a static object then relying on those values existing in other scripts/modules. 
&gt; 
&gt; Can we find a way to organize the code so we are explicit about creating some kind of ContributorList, then pass that around? Or call a function which returns that list, then provide that result as an argument to the parser?

I think the question here is what the most clear architecture is, because we have some limitations. The first forbids the simplest &quot;function which returns a list&quot; approach, because webkitscmpy is not supposed to know the specifics about contributors.json. We could pass a generator function in, but that seems strictly worse than passing a list in.

We could pass a list in, but then we would either need to a) set the list to some kind of global store of contributors for webkitscmpy to consume (which is basically what we&apos;re doing now, just explicitly) or b) pass the list to the repository classes which would then use those lists to normalize contributor names.

I figured that the global approach would usually be more correct because in the rare case where a single script knows about multiple repositories, it seems desirable for a person contributing to both repositories to resolve to the same contributor object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711756</commentid>
    <comment_count>5</comment_count>
      <attachid>415322</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-12-03 12:13:41 -0800</bug_when>
    <thetext>Created attachment 415322
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711757</commentid>
    <comment_count>6</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-12-03 12:18:47 -0800</bug_when>
    <thetext>The uploaded patch has the repository own the record of contributors. The one downside to this architecture is that commits which are orphaned from a repository need to specify a Contributor and can&apos;t rely on an in-process global record. The compromize is to allow json encoding of the full contributor object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711763</commentid>
    <comment_count>7</comment_count>
      <attachid>415323</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-12-03 12:32:26 -0800</bug_when>
    <thetext>Created attachment 415323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712027</commentid>
    <comment_count>8</comment_count>
      <attachid>415416</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-12-04 08:03:19 -0800</bug_when>
    <thetext>Created attachment 415416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712075</commentid>
    <comment_count>9</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2020-12-04 11:15:11 -0800</bug_when>
    <thetext>r=me. Using mapping is clearer than &apos;bank&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712103</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-04 12:04:19 -0800</bug_when>
    <thetext>Committed r270447: &lt;https://trac.webkit.org/changeset/270447&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415416.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411376</attachid>
            <date>2020-10-14 15:03:40 -0700</date>
            <delta_ts>2020-12-03 12:13:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217732-20201014150340.patch</filename>
            <type>text/plain</type>
            <size>6401</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2ODQ4OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIwLTEwLTE0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbZ2l0LXdlYmtpdF0gVXNlIGNvbnRyaWJ1dG9ycy5qc29uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MzIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzcwMzA5NTE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9naXQtd2Via2l0OiBQb3B1bGF0ZSBDb250cmli
dXRvciBiYW5rIHdpdGggY29udHJpYnV0b3JzLmpzb24uCisgICAgICAgICogU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvY29tbWl0LnB5OgorICAgICAgICAoQ29tbWl0
KTogVXNlIENvbnRyaWJ1dG9yLmZpbmQoKS4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS9jb250cmlidXRvci5weToKKyAgICAgICAgKENvbnRyaWJ1
dG9yKTogS2VlcCBhIHNpbmdsZSBkaWN0aW9uYXJ5IGZvciByZWZlcmVuY2luZyBjb250cmlidXRv
cnMuCisgICAgICAgIChDb250cmlidXRvci5jbGVhcik6CisgICAgICAgIChDb250cmlidXRvci5m
cm9tX3NjbV9sb2cpOiBVc2UgQ29udHJpYnV0b3IuY3JlYXRlKCkuCisgICAgICAgIChDb250cmli
dXRvci5maW5kKTogU2VhcmNoIGFsbCBjb250cmlidXRvcnMgZm9yIG9uZSB3aXRoIHRoZSBwcm92
aWRlZCBuYW1lIG9yIGVtYWlsLgorICAgICAgICAoQ29udHJpYnV0b3IuY3JlYXRlKTogQ2hlY2sg
ZXhpc3RpbmcgY29udHJpYnV0b3JzIGJlZm9yZSBjcmVhdGluZyBhIG5ldyBvbmUgYW5kIGJpbmRp
bmcKKyAgICAgICAgYWxpYXNlcyBmb3Igc2VhcmNoaW5nLgorICAgICAgICAqIFNjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3N2bi5weToKKyAgICAgICAgKFN2
bi5jb21taXQpOiBVc2UgQ29udHJpYnV0b3IuY3JlYXRlKCkuCisKIDIwMjAtMTAtMTQgIENvbW1p
dCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJldmVydGluZyByMjY4NDMxIGFuZCByMjY4NDQzLgpJbmRleDogVG9vbHMvU2NyaXB0cy9naXQt
d2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvZ2l0LXdlYmtpdAkocmV2aXNpb24g
MjY4NDgyKQorKysgVG9vbHMvU2NyaXB0cy9naXQtd2Via2l0CSh3b3JraW5nIGNvcHkpCkBAIC0y
MywxMCArMjMsMjIgQEAKICMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBvcwotaW1wb3J0IHdlYmtpdHB5CiBpbXBv
cnQgc3lzCiAKLWZyb20gd2Via2l0c2NtcHkgaW1wb3J0IHByb2dyYW0KK2Zyb20gd2Via2l0cHku
Y29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0Citmcm9tIHdlYmtp
dHNjbXB5IGltcG9ydCBDb250cmlidXRvciwgcHJvZ3JhbQorCisKK2ZvciBjb250cmlidXRvciBp
biBDb21taXR0ZXJMaXN0KCkuY29udHJpYnV0b3JzKCk6CisgICAgYyA9IENvbnRyaWJ1dG9yLmNy
ZWF0ZShuYW1lPWNvbnRyaWJ1dG9yLmZ1bGxfbmFtZSwgZW1haWxzPWNvbnRyaWJ1dG9yLmVtYWls
cykKKworICAgICMgY29udHJpYnV0b3JzLmpzb24gaGFzIGEgbnVtYmVyIG9mIGFsaWFzaW5nIHN5
c3RlbXMgd2Ugd2FudCB0byByZXNwZWN0CisgICAgZm9yIGFsaWFzIGluIGNvbnRyaWJ1dG9yLmFs
aWFzZXMgb3IgW106CisgICAgICAgIGlmIGFsaWFzIG5vdCBpbiBDb250cmlidXRvci5iYW5rOgor
ICAgICAgICAgICAgQ29udHJpYnV0b3IuYmFua1thbGlhc10gPSBjCisgICAgZm9yIG5pY2sgaW4g
Y29udHJpYnV0b3IuaXJjX25pY2tuYW1lcyBvciBbXToKKyAgICAgICAgaWYgbmljayBub3QgaW4g
Q29udHJpYnV0b3IuYmFuazoKKyAgICAgICAgICAgIENvbnRyaWJ1dG9yLmJhbmtbbmlja10gPSBj
CiAKIHN5cy5leGl0KHByb2dyYW0ubWFpbihwYXRoPW9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykp
KQogCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS9jb21taXQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvY29tbWl0LnB5CShyZXZpc2lvbiAyNjg0ODIpCisrKyBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9jb21taXQucHkJKHdvcmtp
bmcgY29weSkKQEAgLTE4OCwxMCArMTg4LDcgQEAgY2xhc3MgQ29tbWl0KG9iamVjdCk6CiAgICAg
ICAgIHNlbGYudGltZXN0YW1wID0gdGltZXN0YW1wCiAKICAgICAgICAgaWYgYXV0aG9yIGFuZCBp
c2luc3RhbmNlKGF1dGhvciwgc2l4LnN0cmluZ190eXBlcyk6Ci0gICAgICAgICAgICBzZWxmLmF1
dGhvciA9IENvbnRyaWJ1dG9yLmJ5X2VtYWlsLmdldCgKLSAgICAgICAgICAgICAgICBhdXRob3Is
Ci0gICAgICAgICAgICAgICAgQ29udHJpYnV0b3IuYnlfbmFtZS5nZXQoYXV0aG9yKSwKLSAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXV0aG9yID0gQ29udHJpYnV0b3IuZmluZChhdXRo
b3IpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5hdXRob3I6CiAgICAgICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcigiJ3t9JyBkb2VzIG5vdCBtYXRjaCBhIGtub3duIGNvbnRyaWJ1dG9yIikK
ICAgICAgICAgZWxpZiBhdXRob3IgYW5kIG5vdCBpc2luc3RhbmNlKGF1dGhvciwgQ29udHJpYnV0
b3IpOgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvY29udHJpYnV0b3IucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvY29udHJpYnV0b3IucHkJKHJldmlzaW9uIDI2ODQ4MikK
KysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbnRy
aWJ1dG9yLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMyArMzEsMTEgQEAgY2xhc3MgQ29udHJp
YnV0b3Iob2JqZWN0KToKICAgICBTVk5fQVVUSE9SX1JFID0gcmUuY29tcGlsZShyJ3JcZCsgXHwg
KD9QPGVtYWlsPi4qKSBcfCAoP1A8ZGF0ZT4uKikgXHwgXGQrIGxpbmVzPycpCiAgICAgU1ZOX1BB
VENIX0ZST01fUkUgPSByZS5jb21waWxlKHInUGF0Y2ggYnkgKD9QPGF1dGhvcj4uKikgPCg/UDxl
bWFpbD4uKik+IG9uIFxkKy1cZCstXGQrJykKIAotICAgIGJ5X2VtYWlsID0gZGljdCgpCi0gICAg
YnlfbmFtZSA9IGRpY3QoKQorICAgIGJhbmsgPSBkaWN0KCkKIAogICAgIEBjbGFzc21ldGhvZAog
ICAgIGRlZiBjbGVhcihjbHMpOgotICAgICAgICBjbHMuYnlfZW1haWwgPSBkaWN0KCkKLSAgICAg
ICAgY2xzLmJ5X25hbWUgPSBkaWN0KCkKKyAgICAgICAgY2xzLmJhbmsgPSBkaWN0KCkKIAogICAg
IEBjbGFzc21ldGhvZAogICAgIGRlZiBmcm9tX3NjbV9sb2coY2xzLCBsaW5lKToKQEAgLTU5LDIw
ICs1NywzNyBAQCBjbGFzcyBDb250cmlidXRvcihvYmplY3QpOgogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJ3t9JyBkb2VzIG5vdCBtYXRjaCBhIGtub3duIFND
TSBsb2ciLmZvcm1hdChsaW5lKSkKIAotICAgICAgICBpZiBub3QgZW1haWwgYW5kIG5vdCBhdXRo
b3I6CisgICAgICAgIHJldHVybiBjbHMuY3JlYXRlKGF1dGhvciwgZW1haWxzPVtlbWFpbF0pCisK
KyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZmluZChjbHMsIGFyZ3VtZW50KToKKyAgICAgICAg
cmV0dXJuIGNscy5iYW5rLmdldChhcmd1bWVudCwgTm9uZSkKKworICAgIEBjbGFzc21ldGhvZAor
ICAgIGRlZiBjcmVhdGUoY2xzLCBuYW1lLCBlbWFpbHM9Tm9uZSk6CisgICAgICAgIGVtYWlscyA9
IFtlbWFpbCBmb3IgZW1haWwgaW4gZW1haWxzIGlmIGVtYWlsXQorICAgICAgICBpZiBub3QgbmFt
ZSBhbmQgbm90IGVtYWlsczoKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICAgICAgY29u
dHJpYnV0b3IgPSBjbHMuYnlfbmFtZS5nZXQoYXV0aG9yIG9yIGVtYWlsKQotICAgICAgICBpZiBu
b3QgY29udHJpYnV0b3I6Ci0gICAgICAgICAgICBjb250cmlidXRvciA9IGNscy5ieV9lbWFpbC5n
ZXQoZW1haWwpCi0KLSAgICAgICAgaWYgbm90IGNvbnRyaWJ1dG9yOgotICAgICAgICAgICAgY29u
dHJpYnV0b3IgPSBjbHMoYXV0aG9yIG9yIGVtYWlsLCBlbWFpbHM9W2VtYWlsXSkKLSAgICAgICAg
ICAgIGNscy5ieV9uYW1lW2NvbnRyaWJ1dG9yLm5hbWVdID0gY29udHJpYnV0b3IKLSAgICAgICAg
ZWxpZiBlbWFpbCBub3QgaW4gY29udHJpYnV0b3IuZW1haWxzOgotICAgICAgICAgICAgY29udHJp
YnV0b3IuZW1haWxzLmFwcGVuZChlbWFpbCkKKyAgICAgICAgY29udHJpYnV0b3IgPSBOb25lCisg
ICAgICAgIGZvciBhcmd1bWVudCBpbiBbbmFtZV0gKyAoZW1haWxzIG9yIFtdKToKKyAgICAgICAg
ICAgIGNvbnRyaWJ1dG9yID0gY2xzLmZpbmQoYXJndW1lbnQpCisgICAgICAgICAgICBpZiBjb250
cmlidXRvcjoKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIGlmIGNvbnRyaWJ1dG9y
OgorICAgICAgICAgICAgZm9yIGVtYWlsIGluIGVtYWlscyBvciBbXToKKyAgICAgICAgICAgICAg
ICBpZiBlbWFpbCBub3QgaW4gY29udHJpYnV0b3IuZW1haWxzOgorICAgICAgICAgICAgICAgICAg
ICBjb250cmlidXRvci5lbWFpbHMuYXBwZW5kKGVtYWlsKQorICAgICAgICAgICAgaWYgY29udHJp
YnV0b3IubmFtZSBpbiBjb250cmlidXRvci5lbWFpbHMgYW5kIG5hbWU6CisgICAgICAgICAgICAg
ICAgY29udHJpYnV0b3IubmFtZSA9IG5hbWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNv
bnRyaWJ1dG9yID0gY2xzKG5hbWUgb3IgZW1haWxzWzBdLCBlbWFpbHM9ZW1haWxzKQorCisgICAg
ICAgIGNscy5iYW5rW2NvbnRyaWJ1dG9yLm5hbWVdID0gY29udHJpYnV0b3IKKyAgICAgICAgZm9y
IGVtYWlsIGluIGNvbnRyaWJ1dG9yLmVtYWlscyBvciBbXToKKyAgICAgICAgICAgIGNscy5iYW5r
W2VtYWlsXSA9IGNvbnRyaWJ1dG9yCiAKLSAgICAgICAgY2xzLmJ5X25hbWVbZW1haWxdID0gY29u
dHJpYnV0b3IKICAgICAgICAgcmV0dXJuIGNvbnRyaWJ1dG9yCiAKICAgICBkZWYgX19pbml0X18o
c2VsZiwgbmFtZSwgZW1haWxzPU5vbmUpOgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3N2bi5weQko
cmV2aXNpb24gMjY4NDgyKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsMTMgKzMzOCw3
IEBAIGNsYXNzIFN2bihTY20pOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5sb2co
J0ZhaWxlZCB0byBjb25uZWN0IHRvIHJlbW90ZSwgY2Fubm90IGNvbXB1dGUgY29tbWl0IG1lc3Nh
Z2UnKQogICAgICAgICAgICAgZW1haWwgPSBpbmZvWydMYXN0IENoYW5nZWQgQXV0aG9yJ10KLSAg
ICAgICAgICAgIGF1dGhvciA9IENvbnRyaWJ1dG9yLmJ5X2VtYWlsLmdldCgKLSAgICAgICAgICAg
ICAgICBlbWFpbCwKLSAgICAgICAgICAgICAgICBDb250cmlidXRvci5ieV9uYW1lLmdldCgKLSAg
ICAgICAgICAgICAgICAgICAgZW1haWwsCi0gICAgICAgICAgICAgICAgICAgIENvbnRyaWJ1dG9y
KG5hbWU9ZW1haWwsIGVtYWlscz1bZW1haWxdKSwKLSAgICAgICAgICAgICAgICApLAotICAgICAg
ICAgICAgKQorICAgICAgICAgICAgYXV0aG9yID0gQ29udHJpYnV0b3IuY3JlYXRlKG5hbWU9ZW1h
aWwsIGVtYWlscz1bZW1haWxdKQogICAgICAgICAgICAgbWVzc2FnZSA9IE5vbmUKIAogICAgICAg
ICByZXR1cm4gQ29tbWl0KAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415322</attachid>
            <date>2020-12-03 12:13:41 -0800</date>
            <delta_ts>2020-12-03 12:32:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217732-20201203141340.patch</filename>
            <type>text/plain</type>
            <size>26073</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3MDQwMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY1IEBACisyMDIwLTEyLTAzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbZ2l0LXdlYmtpdF0gVXNlIGNvbnRyaWJ1dG9ycy5qc29uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MzIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzcwMzA5NTE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIEdpdCwgU3ZuIGFuZCBv
bGQgY29tbWl0cyBtZWFucyB0aGF0IG91ciBjYW5vbmljYWwgcmVjb3JkIG9mCisgICAgICAgIGNv
bW1pdCBhdXRob3JzIGlzIHNvbWV3aGF0IGluY29tcGxldGUuIGNvbnRyaWJ1dG9ycy5qc29uIGhh
cyBtb3N0IG9mIHRoZSBpbmZvcm1hdGlvbgorICAgICAgICB3ZSBhcmUgbWlzc2luZywgd2Ugc2hv
dWxkIHJlbHkgb24gaXQgdG8gbWFwIG5vbi1zdGFuZGFyZCBhdXRob3IgbmFtZXMgdG8gdGhlaXIg
Y2Fub25pY2FsCisgICAgICAgIG5hbWVzIGFuZCBlbWFpbCBhZGRyZXNzZXMuCisKKyAgICAgICAg
QWRkaXRpb25hbGx5LCBtYWtpbmcgdGhlIHJlY29yZCBvZiBDb250cmlidXRvcnMgb3duZWQgYnkg
dGhlIHJlcG9zaXRvcnkgaW5zdGVhZCBvZiBiZWluZyBnbG9iYWwKKyAgICAgICAgdG8gdGhlIGVu
dGlyZSBwcm9jZXNzLgorCisgICAgICAgICogU2NyaXB0cy9naXQtd2Via2l0OiBQYXJzZSBjb250
cmlidXRvcnMuanNvbiBhbmQgYWRkIGl0IHRvIGEgQ29udHJpYnV0b3IuQmFuayBtYXBwaW5nLgor
ICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L19faW5p
dF9fLnB5OiBCdW1wIHZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvY29tbWl0LnB5OgorICAgICAgICAoQ29tbWl0KTogQ29udHJpYnV0
b3IgY2xhc3Mgb2JqZWN0IG5vIGxvbmdlciBvd25zIHJlY29yZCBvZiBjb250cmlidXRvcnMuCisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvY29udHJp
YnV0b3IucHk6CisgICAgICAgIChDb250cmlidXRvcik6CisgICAgICAgIChDb250cmlidXRvci5C
YW5rKTogRGljdGlvbmFyeSBtYXBwaW5nIENvbnRyaWJ1dG9ycyBhbmQgdGhlaXIgcG90ZW50aWFs
IGFsaWFzZXMuCisgICAgICAgIChDb250cmlidXRvci5CYW5rLl9faW5pdF9fKToKKyAgICAgICAg
KENvbnRyaWJ1dG9yLkJhbmsuYWRkKTogQWRkIENvbnRyaWJ1dG9yIHRvIGJhbmsuCisgICAgICAg
IChDb250cmlidXRvci5CYW5rLmNyZWF0ZSk6IEZpbmQgb3IgY3JlYXRlIGEgY29udHJpYnV0b3Ig
d2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgYW5kIGVtYWlsCisgICAgICAgIGFkZHJlc3NlcyBhbmQg
YmluZCBpdCB0byB0aGUgcmVjb3JkIG9mIGNvbnRyaWJ1dG9ycy4KKyAgICAgICAgKENvbnRyaWJ1
dG9yLmZyb21fc2NtX2xvZyk6IExldmVyYWdlIENvbnRyaWJ1dG9yLkJhbmsgcHJvdmlkZWQgYnkg
Y2FsbGVyLgorICAgICAgICAoQ29udHJpYnV0b3IuY2xlYXIpOiBEZWxldGVkLgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weToK
KyAgICAgICAgKEdpdC5fX2luaXRfXyk6IEluc3RhbnRpYXRlIHJlcG9zaXRvcnkgd2l0aCBleGlz
dGluZyBDb250cmlidXRvci5CYW5rLgorICAgICAgICAoR2l0LmNvbW1pdCk6IFJlcG9zaXRvcnkg
bm93IG93bnMgdGhlIHJlY29yZCBvZiBjb250cmlidXRvcnMuCisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc2NtLnB5OgorICAgICAgICAo
U2NtLmZyb21fcGF0aCk6IEluc3RhbnRpYXRlIHJlcG9zaXRvcnkgd2l0aCBleGlzdGluZyBDb250
cmlidXRvci5CYW5rLgorICAgICAgICAoU2NtLl9faW5pdF9fKTogRGl0dG8uCisgICAgICAgICog
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5Ogor
ICAgICAgICAoU3ZuLl9faW5pdF9fKTogSW5zdGFudGlhdGUgcmVwb3NpdG9yeSB3aXRoIGV4aXN0
aW5nIENvbnRyaWJ1dG9yLkJhbmsuCisgICAgICAgIChTdm4uY29tbWl0KTogUmVwb3NpdG9yeSBu
b3cgb3ducyB0aGUgcmVjb3JkIG9mIGNvbnRyaWJ1dG9ycy4KKyAgICAgICAgKiBTY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtLnB5OgorICAgICAgICAobWFp
bik6IEFsbG93IGNhbGxlciB0byBwYXNzIGFuIGV4aXN0aW5nIHJlY29yZCBvZiBjb250cmlidXRv
cnMuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
cmVtb3RlL3NjbS5weToKKyAgICAgICAgKFNjbS5mcm9tX3VybCk6IEluc3RhbnRpYXRlIHJlcG9z
aXRvcnkgd2l0aCBleGlzdGluZyBDb250cmlidXRvci5CYW5rLgorICAgICAgICAoU2NtLl9faW5p
dF9fKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvcmVtb3RlL3N2bi5weToKKyAgICAgICAgKFN2bi5fX2luaXRfXyk6IEluc3RhbnRp
YXRlIHJlcG9zaXRvcnkgd2l0aCBleGlzdGluZyBDb250cmlidXRvci5CYW5rLgorICAgICAgICAo
U3ZuLmNvbW1pdCk6IFJlcG9zaXRvcnkgbm93IG93bnMgdGhlIHJlY29yZCBvZiBjb250cmlidXRv
cnMuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
c2NtX2Jhc2UucHk6CisgICAgICAgIChTY21CYXNlLl9faW5pdF9fKTogSW5zdGFudGlhdGUgcmVw
b3NpdG9yeSB3aXRoIGV4aXN0aW5nIENvbnRyaWJ1dG9yLkJhbmsuCisgICAgICAgICogU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jb21taXRfdW5pdHRlc3Qu
cHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
dGVzdC9jb250cmlidXRvcl91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RDb250cmlidXRvci50
ZXN0X2dpdF9sb2cpOiBObyBtb3JlIGdsb2JhbCBjb250cmlidXRvciByZWNvcmQuCisgICAgICAg
IChUZXN0Q29udHJpYnV0b3IudGVzdF9naXRfc3ZuX2xvZyk6IERpdHRvLgorICAgICAgICAoVGVz
dENvbnRyaWJ1dG9yLnRlc3RfZ2l0X25vX2F1dGhvcik6IERpdHRvLgorICAgICAgICAoVGVzdENv
bnRyaWJ1dG9yLnRlc3RfZ2l0X3N2bl9ub19hdXRob3IpOiBEaXR0by4KKyAgICAgICAgKFRlc3RD
b250cmlidXRvci50ZXN0X3N2bl9sb2cpOiBEaXR0by4KKyAgICAgICAgKFRlc3RDb250cmlidXRv
ci50ZXN0X3Nob3J0X3N2bl9sb2cpOiBEaXR0by4KKyAgICAgICAgKFRlc3RDb250cmlidXRvci50
ZXN0X3N2bl9wYXRjaF9ieV9sb2cpOiBEaXR0by4KKyAgICAgICAgKFRlc3RDb250cmlidXRvci50
ZXN0X2F1dGhvcl9tYXBwaW5nKTogQ29udHJpYnV0b3IgcmVjb3JkIGlzIG93bmVkIGJ5IHRoZSBj
YWxsZXIgb2YgdGhlIGNhbGxlcgorICAgICAgICBvZiBDb250cmlidXRvciBtYW5hZ2VtZW50Lgor
ICAgICAgICAoVGVzdENvbnRyaWJ1dG9yLnRlc3RfZW1haWxfbWFwcGluZyk6IERpdHRvLgorICAg
ICAgICAoVGVzdENvbnRyaWJ1dG9yLnRlc3RfaW52YWxpZF9sb2cpOiBObyBtb3JlIGdsb2JhbCBj
b250cmlidXRvciByZWNvcmQuCisKIDIwMjAtMTItMDIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFueSBkaWZmZXJlbnQgYXNzZXJ0aW9uIGZhaWx1
cmVzIG9uIHRoZSBHUFUgcHJvY2VzcyBib3QgYWZ0ZXIgcjI3MDM2NgpJbmRleDogVG9vbHMvU2Ny
aXB0cy9naXQtd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvZ2l0LXdlYmtpdAko
cmV2aXNpb24gMjcwNDAwKQorKysgVG9vbHMvU2NyaXB0cy9naXQtd2Via2l0CSh3b3JraW5nIGNv
cHkpCkBAIC0yMywxMCArMjMsMjQgQEAKICMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBvcwotaW1wb3J0IHdlYmtp
dHB5CiBpbXBvcnQgc3lzCiAKLWZyb20gd2Via2l0c2NtcHkgaW1wb3J0IHByb2dyYW0KK2Zyb20g
d2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0Citm
cm9tIHdlYmtpdHNjbXB5IGltcG9ydCBwcm9ncmFtLCBDb250cmlidXRvcgogCi1zeXMuZXhpdChw
cm9ncmFtLm1haW4ocGF0aD1vcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSkKKworYmFuayA9IENv
bnRyaWJ1dG9yLkJhbmsoKQorZm9yIGNvbnRyaWJ1dG9yIGluIENvbW1pdHRlckxpc3QoKS5jb250
cmlidXRvcnMoKToKKyAgICBjID0gYmFuay5jcmVhdGUoY29udHJpYnV0b3IuZnVsbF9uYW1lLCAq
Y29udHJpYnV0b3IuZW1haWxzKQorICAgIGlmIG5vdCBjOgorICAgICAgICBjb250aW51ZQorICAg
IGZvciBhbGlhcyBpbiBjb250cmlidXRvci5hbGlhc2VzIG9yIFtdOgorICAgICAgICBpZiBhbGlh
cyBub3QgaW4gYmFuazoKKyAgICAgICAgICAgIGJhbmtbYWxpYXNdID0gYworICAgIGZvciBuaWNr
IGluIGNvbnRyaWJ1dG9yLmlyY19uaWNrbmFtZXMgb3IgW106CisgICAgICAgIGlmIG5pY2sgbm90
IGluIGJhbms6CisgICAgICAgICAgICBiYW5rW25pY2tdID0gYworCisKK3N5cy5leGl0KHByb2dy
YW0ubWFpbihwYXRoPW9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksIGNvbnRyaWJ1dG9ycz1iYW5r
KSkKIApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvX19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkJKHJldmlzaW9uIDI3MDQwMCkKKysrIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAg
ICAgICAgIlBsZWFzZSBpbnN0YWxsIHdlYmtpdGNvcmVweSB3aXRoIGBwaXAgaW5zdGFsbCB3ZWJr
aXRjb3JlcHkgLS1leHRyYS1pbmRleC11cmwgPHBhY2thZ2UgaW5kZXggVVJMPmAiCiAgICAgKQog
Ci12ZXJzaW9uID0gVmVyc2lvbigwLCA0LCA0KQordmVyc2lvbiA9IFZlcnNpb24oMCwgNSwgMCkK
IAogQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnZGF0ZXV0aWwnLCBWZXJzaW9uKDIsIDgs
IDEpLCBweXBpX25hbWU9J3B5dGhvbi1kYXRldXRpbCcpKQogQXV0b0luc3RhbGwucmVnaXN0ZXIo
UGFja2FnZSgnZmFzdGVuZXJzJywgVmVyc2lvbigwLCAxNSwgMCkpKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvY29tbWl0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2Nv
bW1pdC5weQkocmV2aXNpb24gMjcwNDAwKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvY29tbWl0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xODcsMTQg
KzE4Nyw3IEBAIGNsYXNzIENvbW1pdChvYmplY3QpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVy
cm9yKCJFeHBlY3RlZCAndGltZXN0YW1wJyB0byBiZSBvZiB0eXBlIGludCwgZ290ICd7fSciLmZv
cm1hdCh0aW1lc3RhbXApKQogICAgICAgICBzZWxmLnRpbWVzdGFtcCA9IHRpbWVzdGFtcAogCi0g
ICAgICAgIGlmIGF1dGhvciBhbmQgaXNpbnN0YW5jZShhdXRob3IsIHNpeC5zdHJpbmdfdHlwZXMp
OgotICAgICAgICAgICAgc2VsZi5hdXRob3IgPSBDb250cmlidXRvci5ieV9lbWFpbC5nZXQoCi0g
ICAgICAgICAgICAgICAgYXV0aG9yLAotICAgICAgICAgICAgICAgIENvbnRyaWJ1dG9yLmJ5X25h
bWUuZ2V0KGF1dGhvciksCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5h
dXRob3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJ3t9JyBkb2VzIG5vdCBt
YXRjaCBhIGtub3duIGNvbnRyaWJ1dG9yIikKLSAgICAgICAgZWxpZiBhdXRob3IgYW5kIGlzaW5z
dGFuY2UoYXV0aG9yLCBkaWN0KSBhbmQgYXV0aG9yLmdldCgnbmFtZScpOgorICAgICAgICBpZiBh
dXRob3IgYW5kIGlzaW5zdGFuY2UoYXV0aG9yLCBkaWN0KSBhbmQgYXV0aG9yLmdldCgnbmFtZScp
OgogICAgICAgICAgICAgc2VsZi5hdXRob3IgPSBDb250cmlidXRvcihhdXRob3IuZ2V0KCduYW1l
JyksIGF1dGhvci5nZXQoJ2VtYWlscycpKQogICAgICAgICBlbGlmIGF1dGhvciBhbmQgbm90IGlz
aW5zdGFuY2UoYXV0aG9yLCBDb250cmlidXRvcik6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJy
b3IoIkV4cGVjdGVkICdhdXRob3InIHRvIGJlIG9mIHR5cGUge30sIGdvdCAne30nIi5mb3JtYXQo
Q29udHJpYnV0b3IsIGF1dGhvcikpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9jb250cmlidXRvci5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9jb250cmlidXRvci5weQko
cmV2aXNpb24gMjcwNDAwKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvY29udHJpYnV0b3IucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcg
QEAKIGltcG9ydCBqc29uCiBpbXBvcnQgcmUKIAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVm
YXVsdGRpY3QKIGZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKIAogCkBAIC0z
Miw5ICszMyw2IEBAIGNsYXNzIENvbnRyaWJ1dG9yKG9iamVjdCk6CiAgICAgU1ZOX0FVVEhPUl9S
RSA9IHJlLmNvbXBpbGUocidyXGQrIFx8ICg/UDxlbWFpbD4uKikgXHwgKD9QPGRhdGU+LiopIFx8
IFxkKyBsaW5lcz8nKQogICAgIFNWTl9QQVRDSF9GUk9NX1JFID0gcmUuY29tcGlsZShyJ1BhdGNo
IGJ5ICg/UDxhdXRob3I+LiopIDwoP1A8ZW1haWw+LiopPiBvbiBcZCstXGQrLVxkKycpCiAKLSAg
ICBieV9lbWFpbCA9IGRpY3QoKQotICAgIGJ5X25hbWUgPSBkaWN0KCkKLQogICAgIGNsYXNzIEVu
Y29kZXIoanNvbi5KU09ORW5jb2Rlcik6CiAKICAgICAgICAgZGVmIGRlZmF1bHQoc2VsZiwgb2Jq
KToKQEAgLTQ3LDEzICs0NSw0MyBAQCBjbGFzcyBDb250cmlidXRvcihvYmplY3QpOgogCiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0CiAKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgY2xlYXIo
Y2xzKToKLSAgICAgICAgY2xzLmJ5X2VtYWlsID0gZGljdCgpCi0gICAgICAgIGNscy5ieV9uYW1l
ID0gZGljdCgpCisgICAgY2xhc3MgQmFuayhkZWZhdWx0ZGljdCk6CisgICAgICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKENvbnRyaWJ1dG9yLkJhbmssIHNlbGYpLl9f
aW5pdF9fKGxhbWJkYTogTm9uZSkKKworICAgICAgICBkZWYgYWRkKHNlbGYsIGNvbnRyaWJ1dG9y
KToKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbnRyaWJ1dG9yLCBDb250cmlidXRv
cik6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJ3t9JyBpcyBub3QgYSBDb250
cmlidXRvciBvYmplY3QiLmZvcm1hdCh0eXBlKGNvbnRyaWJ1dG9yKSkpCisgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5jcmVhdGUobmFtZT1jb250cmlidXRvci5uYW1lLCAqY29udHJpYnV0b3IuZW1h
aWxzKQorCisgICAgICAgIGRlZiBjcmVhdGUoc2VsZiwgbmFtZT1Ob25lLCAqZW1haWxzKToKKyAg
ICAgICAgICAgIGVtYWlscyA9IFtlbWFpbCBmb3IgZW1haWwgaW4gZW1haWxzIG9yIFtdXQorICAg
ICAgICAgICAgaWYgbm90IG5hbWUgYW5kIG5vdCBlbWFpbHM6CisgICAgICAgICAgICAgICAgcmV0
dXJuIE5vbmUKKworICAgICAgICAgICAgY29udHJpYnV0b3IgPSBOb25lCisgICAgICAgICAgICBm
b3IgYXJndW1lbnQgaW4gW25hbWVdICsgKGVtYWlscyBvciBbXSk6CisgICAgICAgICAgICAgICAg
Y29udHJpYnV0b3IgPSBzZWxmW2FyZ3VtZW50XQorICAgICAgICAgICAgICAgIGlmIGNvbnRyaWJ1
dG9yOgorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBpZiBjb250cmli
dXRvcjoKKyAgICAgICAgICAgICAgICBmb3IgZW1haWwgaW4gZW1haWxzIG9yIFtdOgorICAgICAg
ICAgICAgICAgICAgICBpZiBlbWFpbCBub3QgaW4gY29udHJpYnV0b3IuZW1haWxzOgorICAgICAg
ICAgICAgICAgICAgICAgICAgY29udHJpYnV0b3IuZW1haWxzLmFwcGVuZChlbWFpbCkKKyAgICAg
ICAgICAgICAgICBpZiBjb250cmlidXRvci5uYW1lIGluIGNvbnRyaWJ1dG9yLmVtYWlscyBhbmQg
bmFtZToKKyAgICAgICAgICAgICAgICAgICAgY29udHJpYnV0b3IubmFtZSA9IG5hbWUKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29udHJpYnV0b3IgPSBDb250cmlidXRvcihu
YW1lIG9yIGVtYWlsc1swXSwgZW1haWxzPWVtYWlscykKKworICAgICAgICAgICAgc2VsZltjb250
cmlidXRvci5uYW1lXSA9IGNvbnRyaWJ1dG9yCisgICAgICAgICAgICBmb3IgZW1haWwgaW4gY29u
dHJpYnV0b3IuZW1haWxzIG9yIFtdOgorICAgICAgICAgICAgICAgIHNlbGZbZW1haWxdID0gY29u
dHJpYnV0b3IKKyAgICAgICAgICAgIHJldHVybiBjb250cmlidXRvcgorCiAKICAgICBAY2xhc3Nt
ZXRob2QKLSAgICBkZWYgZnJvbV9zY21fbG9nKGNscywgbGluZSk6CisgICAgZGVmIGZyb21fc2Nt
X2xvZyhjbHMsIGxpbmUsIGJhbms9Tm9uZSk6CiAgICAgICAgIGVtYWlsID0gTm9uZQogICAgICAg
ICBhdXRob3IgPSBOb25lCiAKQEAgLTc1LDE4ICsxMDMsOSBAQCBjbGFzcyBDb250cmlidXRvcihv
YmplY3QpOgogICAgICAgICBpZiBub3QgZW1haWwgYW5kIG5vdCBhdXRob3I6CiAgICAgICAgICAg
ICByZXR1cm4gTm9uZQogCi0gICAgICAgIGNvbnRyaWJ1dG9yID0gY2xzLmJ5X25hbWUuZ2V0KGF1
dGhvciBvciBlbWFpbCkKLSAgICAgICAgaWYgbm90IGNvbnRyaWJ1dG9yOgotICAgICAgICAgICAg
Y29udHJpYnV0b3IgPSBjbHMuYnlfZW1haWwuZ2V0KGVtYWlsKQotCi0gICAgICAgIGlmIG5vdCBj
b250cmlidXRvcjoKLSAgICAgICAgICAgIGNvbnRyaWJ1dG9yID0gY2xzKGF1dGhvciBvciBlbWFp
bCwgZW1haWxzPVtlbWFpbF0pCi0gICAgICAgICAgICBjbHMuYnlfbmFtZVtjb250cmlidXRvci5u
YW1lXSA9IGNvbnRyaWJ1dG9yCi0gICAgICAgIGVsaWYgZW1haWwgbm90IGluIGNvbnRyaWJ1dG9y
LmVtYWlsczoKLSAgICAgICAgICAgIGNvbnRyaWJ1dG9yLmVtYWlscy5hcHBlbmQoZW1haWwpCi0K
LSAgICAgICAgY2xzLmJ5X25hbWVbZW1haWxdID0gY29udHJpYnV0b3IKLSAgICAgICAgcmV0dXJu
IGNvbnRyaWJ1dG9yCisgICAgICAgIGlmIGJhbmsgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBy
ZXR1cm4gYmFuay5jcmVhdGUoYXV0aG9yLCBlbWFpbCkKKyAgICAgICAgcmV0dXJuIGNscyhhdXRo
b3Igb3IgZW1haWwsIGVtYWlscz1bZW1haWxdKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5h
bWUsIGVtYWlscz1Ob25lKToKICAgICAgICAgc2VsZi5uYW1lID0gc3RyaW5nX3V0aWxzLmRlY29k
ZShuYW1lKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvcHJvZ3JhbS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtLnB5CShyZXZpc2lvbiAyNzA0MDApCisrKyBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgY2xhc3MgQ2hlY2tvdXQoQ29tbWFu
ZCk6CiAgICAgICAgIHJldHVybiAwCiAKIAotZGVmIG1haW4oYXJncz1Ob25lLCBwYXRoPU5vbmUs
IGxvZ2dlcnM9Tm9uZSk6CitkZWYgbWFpbihhcmdzPU5vbmUsIHBhdGg9Tm9uZSwgbG9nZ2Vycz1O
b25lLCBjb250cmlidXRvcnM9Tm9uZSk6CiAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1s
b2dnaW5nLldBUk5JTkcpCiAKICAgICBsb2dnZXJzID0gW2xvZ2dpbmcuZ2V0TG9nZ2VyKCksIHdl
YmtpdGNvcmVweV9sb2csICBsb2ddICsgKGxvZ2dlcnMgb3IgW10pCkBAIC0xOTEsOCArMTkxLDgg
QEAgZGVmIG1haW4oYXJncz1Ob25lLCBwYXRoPU5vbmUsIGxvZ2dlcnM9TgogICAgIHBhcnNlZCA9
IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3M9YXJncykKIAogICAgIGlmIHBhcnNlZC5yZXBvc2l0b3J5
LnN0YXJ0c3dpdGgoKCdodHRwczovLycsICdodHRwOi8vJykpOgotICAgICAgICByZXBvc2l0b3J5
ID0gcmVtb3RlLlNjbS5mcm9tX3VybChwYXJzZWQucmVwb3NpdG9yeSkKKyAgICAgICAgcmVwb3Np
dG9yeSA9IHJlbW90ZS5TY20uZnJvbV91cmwocGFyc2VkLnJlcG9zaXRvcnksIGNvbnRyaWJ1dG9y
cz1jb250cmlidXRvcnMpCiAgICAgZWxzZToKLSAgICAgICAgcmVwb3NpdG9yeSA9IGxvY2FsLlNj
bS5mcm9tX3BhdGgocGF0aD1wYXJzZWQucmVwb3NpdG9yeSkKKyAgICAgICAgcmVwb3NpdG9yeSA9
IGxvY2FsLlNjbS5mcm9tX3BhdGgocGF0aD1wYXJzZWQucmVwb3NpdG9yeSwgY29udHJpYnV0b3Jz
PWNvbnRyaWJ1dG9ycykKIAogICAgIHJldHVybiBwYXJzZWQubWFpbihhcmdzPXBhcnNlZCwgcmVw
b3NpdG9yeT1yZXBvc2l0b3J5KQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHkJKHJldmlzaW9u
IDI3MDQwMCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3NjbV9iYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBAIGltcG9ydCBz
aXgKIGltcG9ydCBzeXMKIAogZnJvbSBsb2dnaW5nIGltcG9ydCBOdWxsSGFuZGxlcgotZnJvbSB3
ZWJraXRzY21weSBpbXBvcnQgQ29tbWl0LCBsb2cKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IENv
bW1pdCwgQ29udHJpYnV0b3IsIGxvZwogCiAKIGNsYXNzIFNjbUJhc2Uob2JqZWN0KToKQEAgLTM4
LDEwICszOCwxMSBAQCBjbGFzcyBTY21CYXNlKG9iamVjdCk6CiAgICAgREVWX0JSQU5DSEVTID0g
cmUuY29tcGlsZShyJy4qWyhlbmcpKGRldikoYnVnKV0vLisnKQogICAgIFBST0RfQlJBTkNIRVMg
PSByZS5jb21waWxlKHInXFMrLVtcZCtcLl0rLWJyYW5jaCcpCiAKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgZGV2X2JyYW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9uZSk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGRldl9icmFuY2hlcz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5vbmUsIGNvbnRy
aWJ1dG9ycz1Ob25lKToKICAgICAgICAgc2VsZi5kZXZfYnJhbmNoZXMgPSBkZXZfYnJhbmNoZXMg
b3Igc2VsZi5ERVZfQlJBTkNIRVMKICAgICAgICAgc2VsZi5wcm9kX2JyYW5jaGVzID0gcHJvZF9i
cmFuY2hlcyBvciBzZWxmLlBST0RfQlJBTkNIRVMKICAgICAgICAgc2VsZi5wYXRoID0gTm9uZQor
ICAgICAgICBzZWxmLmNvbnRyaWJ1dG9ycyA9IENvbnRyaWJ1dG9yLkJhbmsoKSBpZiBjb250cmli
dXRvcnMgaXMgTm9uZSBlbHNlIE5vbmUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19zdm4o
c2VsZik6CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9sb2NhbC9naXQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CShyZXZpc2lvbiAyNzA0MDApCisr
KyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9n
aXQucHkJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDggQEAgY2xhc3MgR2l0KFNjbSk6CiAg
ICAgZGVmIGlzX2NoZWNrb3V0KGNscywgcGF0aCk6CiAgICAgICAgIHJldHVybiBydW4oW2Nscy5l
eGVjdXRhYmxlKCksICdyZXYtcGFyc2UnLCAnLS1zaG93LXRvcGxldmVsJ10sIGN3ZD1wYXRoLCBj
YXB0dXJlX291dHB1dD1UcnVlKS5yZXR1cm5jb2RlID09IDAKIAotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBwYXRoLCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJvZF9icmFuY2hlcz1Ob25lKToKLSAgICAg
ICAgc3VwZXIoR2l0LCBzZWxmKS5fX2luaXRfXyhwYXRoLCBkZXZfYnJhbmNoZXM9ZGV2X2JyYW5j
aGVzLCBwcm9kX2JyYW5jaGVzPXByb2RfYnJhbmNoZXMpCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBhdGgsIGRldl9icmFuY2hlcz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5vbmUsIGNvbnRyaWJ1dG9y
cz1Ob25lKToKKyAgICAgICAgc3VwZXIoR2l0LCBzZWxmKS5fX2luaXRfXyhwYXRoLCBkZXZfYnJh
bmNoZXM9ZGV2X2JyYW5jaGVzLCBwcm9kX2JyYW5jaGVzPXByb2RfYnJhbmNoZXMsIGNvbnRyaWJ1
dG9ycz1jb250cmlidXRvcnMpCiAgICAgICAgIGlmIG5vdCBzZWxmLnJvb3RfcGF0aDoKICAgICAg
ICAgICAgIHJhaXNlIE9TRXJyb3IoJ1Byb3ZpZGVkIHBhdGgge30gaXMgbm90IGEgZ2l0IHJlcG9z
aXRvcnknLmZvcm1hdChwYXRoKSkKIApAQCAtMjY1LDcgKzI2NSw3IEBAIGNsYXNzIEdpdChTY20p
OgogICAgICAgICAgICAgYnJhbmNoX3BvaW50PWJyYW5jaF9wb2ludCwKICAgICAgICAgICAgIGJy
YW5jaD1icmFuY2gsCiAgICAgICAgICAgICB0aW1lc3RhbXA9aW50KGNvbW1pdF90aW1lLnN0ZG91
dC5sc3RyaXAoKSksCi0gICAgICAgICAgICBhdXRob3I9Q29udHJpYnV0b3IuZnJvbV9zY21fbG9n
KGxvZy5zdGRvdXQuc3BsaXRsaW5lcygpWzFdKSwKKyAgICAgICAgICAgIGF1dGhvcj1Db250cmli
dXRvci5mcm9tX3NjbV9sb2cobG9nLnN0ZG91dC5zcGxpdGxpbmVzKClbMV0sIHNlbGYuY29udHJp
YnV0b3JzKSwKICAgICAgICAgICAgIG1lc3NhZ2U9J1xuJy5qb2luKGxpbmVbNDpdIGZvciBsaW5l
IGluIGxvZy5zdGRvdXQuc3BsaXRsaW5lcygpWzQ6XSkgaWYgaW5jbHVkZV9sb2cgZWxzZSBOb25l
LAogICAgICAgICApCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L2xvY2FsL3NjbS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zY20ucHkJKHJldmlzaW9uIDI3
MDQwMCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L2xvY2FsL3NjbS5weQkod29ya2luZyBjb3B5KQpAQCAtNDgsMTcgKzQ4LDE3IEBAIGNsYXNzIFNj
bShTY21CYXNlKToKICAgICAgICAgcmFpc2UgT1NFcnJvcigiQ2Fubm90IGZpbmQgJ3t9JyBwcm9n
cmFtIi5mb3JtYXQocHJvZ3JhbSkpCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZnJvbV9w
YXRoKGNscywgcGF0aCk6CisgICAgZGVmIGZyb21fcGF0aChjbHMsIHBhdGgsICBjb250cmlidXRv
cnM9Tm9uZSk6CiAgICAgICAgIGZyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxvY2FsCiAKICAgICAg
ICAgaWYgbG9jYWwuR2l0LmlzX2NoZWNrb3V0KHBhdGgpOgotICAgICAgICAgICAgcmV0dXJuIGxv
Y2FsLkdpdChwYXRoKQorICAgICAgICAgICAgcmV0dXJuIGxvY2FsLkdpdChwYXRoLCBjb250cmli
dXRvcnM9Y29udHJpYnV0b3JzKQogICAgICAgICBpZiBsb2NhbC5Tdm4uaXNfY2hlY2tvdXQocGF0
aCk6Ci0gICAgICAgICAgICByZXR1cm4gbG9jYWwuU3ZuKHBhdGgpCisgICAgICAgICAgICByZXR1
cm4gbG9jYWwuU3ZuKHBhdGgsIGNvbnRyaWJ1dG9ycz1jb250cmlidXRvcnMpCiAgICAgICAgIHJh
aXNlIE9TRXJyb3IoIid7fScgaXMgbm90IGEga25vd24gU0NNIHR5cGUiLmZvcm1hdChwYXRoKSkK
IAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJvZF9i
cmFuY2hlcz1Ob25lKToKLSAgICAgICAgc3VwZXIoU2NtLCBzZWxmKS5fX2luaXRfXyhkZXZfYnJh
bmNoZXM9ZGV2X2JyYW5jaGVzLCBwcm9kX2JyYW5jaGVzPXByb2RfYnJhbmNoZXMpCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHBhdGgsIGRldl9icmFuY2hlcz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5v
bmUsIGNvbnRyaWJ1dG9ycz1Ob25lKToKKyAgICAgICAgc3VwZXIoU2NtLCBzZWxmKS5fX2luaXRf
XyhkZXZfYnJhbmNoZXM9ZGV2X2JyYW5jaGVzLCBwcm9kX2JyYW5jaGVzPXByb2RfYnJhbmNoZXMs
IGNvbnRyaWJ1dG9ycz1jb250cmlidXRvcnMpCiAKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uo
cGF0aCwgc2l4LnN0cmluZ190eXBlcyk6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJF
eHBlY3RlZCAncGF0aCcgdG8gYmUgYSBzdHJpbmcgdHlwZSwgbm90ICd7fSciLmZvcm1hdCh0eXBl
KHBhdGgpKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L2xvY2FsL3N2bi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zdm4ucHkJKHJldmlzaW9uIDI3MDQwMCkK
KysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2Fs
L3N2bi5weQkod29ya2luZyBjb3B5KQpAQCAtNTAsOCArNTAsOCBAQCBjbGFzcyBTdm4oU2NtKToK
ICAgICBkZWYgaXNfY2hlY2tvdXQoY2xzLCBwYXRoKToKICAgICAgICAgcmV0dXJuIHJ1bihbY2xz
LmV4ZWN1dGFibGUoKSwgJ2luZm8nXSwgY3dkPXBhdGgsIGNhcHR1cmVfb3V0cHV0PVRydWUpLnJl
dHVybmNvZGUgPT0gMAogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIGRldl9icmFuY2hl
cz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5vbmUpOgotICAgICAgICBzdXBlcihTdm4sIHNlbGYpLl9f
aW5pdF9fKHBhdGgsIGRldl9icmFuY2hlcz1kZXZfYnJhbmNoZXMsIHByb2RfYnJhbmNoZXM9cHJv
ZF9icmFuY2hlcykKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZGV2X2JyYW5jaGVzPU5v
bmUsIHByb2RfYnJhbmNoZXM9Tm9uZSwgY29udHJpYnV0b3JzPU5vbmUpOgorICAgICAgICBzdXBl
cihTdm4sIHNlbGYpLl9faW5pdF9fKHBhdGgsIGRldl9icmFuY2hlcz1kZXZfYnJhbmNoZXMsIHBy
b2RfYnJhbmNoZXM9cHJvZF9icmFuY2hlcywgY29udHJpYnV0b3JzPWNvbnRyaWJ1dG9ycykKIAog
ICAgICAgICBzZWxmLl9yb290X3BhdGggPSBzZWxmLnBhdGgKICAgICAgICAgc2VsZi5fcm9vdF9w
YXRoID0gc2VsZi5pbmZvKGNhY2hlZD1GYWxzZSkuZ2V0KCdXb3JraW5nIENvcHkgUm9vdCBQYXRo
JykKQEAgLTM3MCwxOSArMzcwLDEzIEBAIGNsYXNzIFN2bihTY20pOgogICAgICAgICAgICAgICAg
ICAgICBhdXRob3JfbGluZSA9IGxpbmUKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKIAotICAg
ICAgICAgICAgYXV0aG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKGF1dGhvcl9saW5lKQor
ICAgICAgICAgICAgYXV0aG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKGF1dGhvcl9saW5l
LCBzZWxmLmNvbnRyaWJ1dG9ycykKICAgICAgICAgICAgIG1lc3NhZ2UgPSAnXG4nLmpvaW4oc3Bs
aXRfbG9nWzM6LTFdKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgaW5jbHVkZV9sb2c6
CiAgICAgICAgICAgICAgICAgc2VsZi5sb2coJ0ZhaWxlZCB0byBjb25uZWN0IHRvIHJlbW90ZSwg
Y2Fubm90IGNvbXB1dGUgY29tbWl0IG1lc3NhZ2UnKQogICAgICAgICAgICAgZW1haWwgPSBpbmZv
LmdldCgnTGFzdCBDaGFuZ2VkIEF1dGhvcicpCi0gICAgICAgICAgICBhdXRob3IgPSBDb250cmli
dXRvci5ieV9lbWFpbC5nZXQoCi0gICAgICAgICAgICAgICAgZW1haWwsCi0gICAgICAgICAgICAg
ICAgQ29udHJpYnV0b3IuYnlfbmFtZS5nZXQoCi0gICAgICAgICAgICAgICAgICAgIGVtYWlsLAot
ICAgICAgICAgICAgICAgICAgICBDb250cmlidXRvcihuYW1lPWVtYWlsLCBlbWFpbHM9W2VtYWls
XSksCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICkgaWYgZW1haWwgZWxzZSBOb25l
CisgICAgICAgICAgICBhdXRob3IgPSBzZWxmLmNvbnRyaWJ1dG9ycy5jcmVhdGUoZW1haWwsIGVt
YWlsKSBpZiAnQCcgaW4gZW1haWwgZWxzZSBzZWxmLmNvbnRyaWJ1dG9ycy5jcmVhdGUoZW1haWwp
CiAgICAgICAgICAgICBtZXNzYWdlID0gTm9uZQogCiAgICAgICAgIHJldHVybiBDb21taXQoCklu
ZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1v
dGUvc2NtLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9zY20ucHkJKHJldmlzaW9uIDI3MDQwMCkKKysrIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9zY20ucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDE1ICsyNywxNSBAQCBmcm9tIHdlYmtpdHNjbXB5LnNjbV9i
YXNlIGltcG9ydCBTY21CYXNlCiAKIGNsYXNzIFNjbShTY21CYXNlKToKICAgICBAY2xhc3NtZXRo
b2QKLSAgICBkZWYgZnJvbV91cmwoY2xzLCB1cmwpOgorICAgIGRlZiBmcm9tX3VybChjbHMsIHVy
bCwgY29udHJpYnV0b3JzPU5vbmUpOgogICAgICAgICBmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBy
ZW1vdGUKIAogICAgICAgICBpZiByZW1vdGUuU3ZuLmlzX3dlYnNlcnZlcih1cmwpOgotICAgICAg
ICAgICAgcmV0dXJuIHJlbW90ZS5Tdm4odXJsKQorICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5T
dm4odXJsLCBjb250cmlidXRvcnM9Y29udHJpYnV0b3JzKQogICAgICAgICByYWlzZSBPU0Vycm9y
KCIne30nIGlzIG5vdCBhIGtub3duIFNDTSBzZXJ2ZXIiLmZvcm1hdCh1cmwpKQogCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIHVybCwgZGV2X2JyYW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9u
ZSk6Ci0gICAgICAgIHN1cGVyKFNjbSwgc2VsZikuX19pbml0X18oZGV2X2JyYW5jaGVzPWRldl9i
cmFuY2hlcywgcHJvZF9icmFuY2hlcz1wcm9kX2JyYW5jaGVzKQorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCB1cmwsIGRldl9icmFuY2hlcz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5vbmUsIGNvbnRyaWJ1
dG9ycz1Ob25lKToKKyAgICAgICAgc3VwZXIoU2NtLCBzZWxmKS5fX2luaXRfXyhkZXZfYnJhbmNo
ZXM9ZGV2X2JyYW5jaGVzLCBwcm9kX2JyYW5jaGVzPXByb2RfYnJhbmNoZXMsIGNvbnRyaWJ1dG9y
cz1jb250cmlidXRvcnMpCiAKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodXJsLCBzaXguc3Ry
aW5nX3R5cGVzKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkV4cGVjdGVkICd1cmwn
IHRvIGJlIGEgc3RyaW5nIHR5cGUsIG5vdCAne30nIi5mb3JtYXQodHlwZSh1cmwpKSkKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9z
dm4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvcmVtb3RlL3N2bi5weQkocmV2aXNpb24gMjcwNDAwKQorKysgVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL3N2bi5weQkod29y
a2luZyBjb3B5KQpAQCAtNDYsMTIgKzQ2LDEyIEBAIGNsYXNzIFN2bihTY20pOgogICAgIGRlZiBp
c193ZWJzZXJ2ZXIoY2xzLCB1cmwpOgogICAgICAgICByZXR1cm4gVHJ1ZSBpZiBjbHMuVVJMX1JF
Lm1hdGNoKHVybCkgZWxzZSBGYWxzZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybCwgZGV2
X2JyYW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHVybCwgZGV2X2JyYW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9uZSwgY29udHJpYnV0
b3JzPU5vbmUpOgogICAgICAgICBpZiB1cmxbLTFdICE9ICcvJzoKICAgICAgICAgICAgIHVybCAr
PSAnLycKICAgICAgICAgaWYgbm90IHNlbGYuaXNfd2Vic2VydmVyKHVybCk6CiAgICAgICAgICAg
ICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiJ3t9JyBpcyBub3QgYSB2YWxpZCBTVk4gd2Vic2VydmVy
Ii5mb3JtYXQodXJsKSkKLSAgICAgICAgc3VwZXIoU3ZuLCBzZWxmKS5fX2luaXRfXyh1cmwsIGRl
dl9icmFuY2hlcz1kZXZfYnJhbmNoZXMsIHByb2RfYnJhbmNoZXM9cHJvZF9icmFuY2hlcykKKyAg
ICAgICAgc3VwZXIoU3ZuLCBzZWxmKS5fX2luaXRfXyh1cmwsIGRldl9icmFuY2hlcz1kZXZfYnJh
bmNoZXMsIHByb2RfYnJhbmNoZXM9cHJvZF9icmFuY2hlcywgY29udHJpYnV0b3JzPWNvbnRyaWJ1
dG9ycykKIAogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLl9jYWNoZV9wYXRoKToKICAg
ICAgICAgICAgIHRyeToKQEAgLTQyNiwxMyArNDI2LDcgQEAgY2xhc3MgU3ZuKFNjbSk6CiAgICAg
ICAgICAgICBtZXNzYWdlID0gTm9uZQogICAgICAgICAgICAgbmFtZSA9IGluZm8uZ2V0KCdMYXN0
IENoYW5nZWQgQXV0aG9yJykKIAotICAgICAgICBhdXRob3IgPSBDb250cmlidXRvci5ieV9lbWFp
bC5nZXQoCi0gICAgICAgICAgICBuYW1lLAotICAgICAgICAgICAgQ29udHJpYnV0b3IuYnlfbmFt
ZS5nZXQoCi0gICAgICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAgICAgICBDb250cmlidXRv
cihuYW1lPW5hbWUsIGVtYWlscz1bbmFtZV0gaWYgJ0AnIGluIG5hbWUgZWxzZSBbXSksCi0gICAg
ICAgICAgICApLAotICAgICAgICApIGlmIG5hbWUgZWxzZSBOb25lCisgICAgICAgIGF1dGhvciA9
IHNlbGYuY29udHJpYnV0b3JzLmNyZWF0ZShuYW1lLCBuYW1lKSBpZiAnQCcgaW4gbmFtZSBlbHNl
IHNlbGYuY29udHJpYnV0b3JzLmNyZWF0ZShuYW1lKQogCiAgICAgICAgIHJldHVybiBDb21taXQo
CiAgICAgICAgICAgICByZXZpc2lvbj1pbnQocmV2aXNpb24pLApJbmRleDogVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jb21taXRfdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvdGVzdC9jb21taXRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3MDQwMCkKKysrIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvY29tbWl0
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsMjEgKzE5NSwxNiBAQCBQUklOVEVE
CiAgICAgICAgICAgICBDb21taXQocmV2aXNpb249MSwgdGltZXN0YW1wPTEwMCkuX19jbXBfXyhD
b21taXQoaWRlbnRpZmllcj0yLCB0aW1lc3RhbXA9MTAwKSkKIAogICAgIGRlZiB0ZXN0X2NvbnRy
aWJ1dG9yKHNlbGYpOgotICAgICAgICBDb250cmlidXRvci5jbGVhcigpCiAgICAgICAgIGNvbnRy
aWJ1dG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdBdXRob3I6IEpvbmF0aGFuIEJlZGFy
ZCA8amJlZGFyZEBhcHBsZS5jb20+JykKIAogICAgICAgICBjb21taXQgPSBDb21taXQocmV2aXNp
b249MSwgaWRlbnRpZmllcj0xLCBhdXRob3I9Y29udHJpYnV0b3IpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY29tbWl0LmF1dGhvciwgY29udHJpYnV0b3IpCiAKLSAgICAgICAgY29tbWl0ID0g
Q29tbWl0KHJldmlzaW9uPTEsIGlkZW50aWZpZXI9MSwgYXV0aG9yPSdKb25hdGhhbiBCZWRhcmQn
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5hdXRob3IsIGNvbnRyaWJ1dG9yKQot
Ci0gICAgICAgIGNvbW1pdCA9IENvbW1pdChyZXZpc2lvbj0xLCBpZGVudGlmaWVyPTEsIGF1dGhv
cj0namJlZGFyZEBhcHBsZS5jb20nKQorICAgICAgICBjb21taXQgPSBDb21taXQocmV2aXNpb249
MSwgaWRlbnRpZmllcj0xLCBhdXRob3I9Q29udHJpYnV0b3IuRW5jb2RlcigpLmRlZmF1bHQoY29u
dHJpYnV0b3IpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5hdXRob3IsIGNvbnRy
aWJ1dG9yKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9jb250cmlidXRvcihzZWxmKToKLSAgICAg
ICAgQ29udHJpYnV0b3IuY2xlYXIoKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZh
bHVlRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAg
ICAgICAgICAgICBDb21taXQocmV2aXNpb249MSwgaWRlbnRpZmllcj0xLCBhdXRob3I9J0pvbmF0
aGFuIEJlZGFyZCcpCiAKICAgICBkZWYgdGVzdF9icmFuY2hfcG9pbnQoc2VsZik6CkBAIC0yMTgs
NyArMjEzLDYgQEAgUFJJTlRFRAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxMjM0LjBAYnJh
bmNoLWEnLCBzdHIoQ29tbWl0KGJyYW5jaF9wb2ludD0xMjM0LCBpZGVudGlmaWVyPTAsIGJyYW5j
aD0nYnJhbmNoLWEnKSkpCiAKICAgICBkZWYgdGVzdF9qc29uX2VuY29kZShzZWxmKToKLSAgICAg
ICAgQ29udHJpYnV0b3IuY2xlYXIoKQogICAgICAgICBjb250cmlidXRvciA9IENvbnRyaWJ1dG9y
LmZyb21fc2NtX2xvZygnQXV0aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29t
PicpCiAKICAgICAgICAgc2VsZi5hc3NlcnREaWN0RXF1YWwoCkBAIC0yNDMsNyArMjM3LDYgQEAg
UFJJTlRFRAogICAgICAgICApCiAKICAgICBkZWYgdGVzdF9qc29uX2RlY29kZShzZWxmKToKLSAg
ICAgICAgQ29udHJpYnV0b3IuY2xlYXIoKQogICAgICAgICBjb250cmlidXRvciA9IENvbnRyaWJ1
dG9yLmZyb21fc2NtX2xvZygnQXV0aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUu
Y29tPicpCiAKICAgICAgICAgY29tbWl0X2EgPSBDb21taXQoCkBAIC0yNTEsNyArMjQ0LDcgQEAg
UFJJTlRFRAogICAgICAgICAgICAgaGFzaD0nYzNiZDc4NGY4Yjg4YmQwM2Y2NDQ2N2RkZDMzMDRl
ZDhiZTI4YWNiZScsCiAgICAgICAgICAgICBpZGVudGlmaWVyPScxQG1haW4nLAogICAgICAgICAg
ICAgdGltZXN0YW1wPTEwMDAsCi0gICAgICAgICAgICBhdXRob3I9Y29udHJpYnV0b3IsCisgICAg
ICAgICAgICBhdXRob3I9Q29udHJpYnV0b3IuRW5jb2RlcigpLmRlZmF1bHQoY29udHJpYnV0b3Ip
LAogICAgICAgICAgICAgbWVzc2FnZT0nTWVzc2FnZScKICAgICAgICAgKQogCkluZGV4OiBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2NvbnRyaWJ1
dG9yX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvY29udHJpYnV0b3JfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI3MDQwMCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3Rlc3QvY29udHJpYnV0b3JfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDY4ICsyOSw2MCBAQCBmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBDb250cmlidXRvcgogCiBjbGFz
cyBUZXN0Q29udHJpYnV0b3IodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2dpdF9s
b2coc2VsZik6Ci0gICAgICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkKICAgICAgICAgY29udHJpYnV0
b3IgPSBDb250cmlidXRvci5mcm9tX3NjbV9sb2coJ0F1dGhvcjogSm9uYXRoYW4gQmVkYXJkIDxq
YmVkYXJkQGFwcGxlLmNvbT4nKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udHJpYnV0
b3IubmFtZSwgJ0pvbmF0aGFuIEJlZGFyZCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29u
dHJpYnV0b3IuZW1haWxzLCBbJ2piZWRhcmRAYXBwbGUuY29tJ10pCiAKICAgICBkZWYgdGVzdF9n
aXRfc3ZuX2xvZyhzZWxmKToKLSAgICAgICAgQ29udHJpYnV0b3IuY2xlYXIoKQogICAgICAgICBj
b250cmlidXRvciA9IENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZygnQXV0aG9yOiBKb25hdGhhbiBC
ZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tQDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0
ZGJmYz4nKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udHJpYnV0b3IubmFtZSwgJ0pv
bmF0aGFuIEJlZGFyZCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udHJpYnV0b3IuZW1h
aWxzLCBbJ2piZWRhcmRAYXBwbGUuY29tJ10pCiAKICAgICBkZWYgdGVzdF9naXRfbm9fYXV0aG9y
KHNlbGYpOgotICAgICAgICBDb250cmlidXRvci5jbGVhcigpCiAgICAgICAgIGNvbnRyaWJ1dG9y
ID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdBdXRob3I6IEF1dG9tYXRlZCBDaGVja2luIDxk
ZXZudWxsPicpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvbnRyaWJ1dG9yKQogCiAgICAg
ZGVmIHRlc3RfZ2l0X3N2bl9ub19hdXRob3Ioc2VsZik6Ci0gICAgICAgIENvbnRyaWJ1dG9yLmNs
ZWFyKCkKICAgICAgICAgY29udHJpYnV0b3IgPSBDb250cmlidXRvci5mcm9tX3NjbV9sb2coJ0F1
dGhvcjogKG5vIGF1dGhvcikgPChubyBhdXRob3IpQDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1
MjY5MWI0ZGJmYz4nKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb250cmlidXRvcikKIAog
ICAgIGRlZiB0ZXN0X3N2bl9sb2coc2VsZik6Ci0gICAgICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkK
ICAgICAgICAgY29udHJpYnV0b3IgPSBDb250cmlidXRvci5mcm9tX3NjbV9sb2coJ3IyNjY3NTEg
fCBqYmVkYXJkQGFwcGxlLmNvbSB8IDIwMjAtMDktMDggMTQ6MzM6NDIgLTA3MDAgKFR1ZSwgMDgg
U2VwIDIwMjApIHwgMTAgbGluZXMnKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udHJp
YnV0b3IubmFtZSwgJ2piZWRhcmRAYXBwbGUuY29tJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjb250cmlidXRvci5lbWFpbHMsIFsnamJlZGFyZEBhcHBsZS5jb20nXSkKIAogICAgIGRlZiB0
ZXN0X3Nob3J0X3N2bl9sb2coc2VsZik6Ci0gICAgICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkKICAg
ICAgICAgY29udHJpYnV0b3IgPSBDb250cmlidXRvci5mcm9tX3NjbV9sb2coJ3IyNjY3NTEgfCBq
YmVkYXJkQGFwcGxlLmNvbSB8IDIwMjAtMDktMDggMTQ6MzM6NDIgLTA3MDAgKFR1ZSwgMDggU2Vw
IDIwMjApIHwgMSBsaW5lJykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9y
Lm5hbWUsICdqYmVkYXJkQGFwcGxlLmNvbScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29u
dHJpYnV0b3IuZW1haWxzLCBbJ2piZWRhcmRAYXBwbGUuY29tJ10pCiAKICAgICBkZWYgdGVzdF9z
dm5fcGF0Y2hfYnlfbG9nKHNlbGYpOgotICAgICAgICBDb250cmlidXRvci5jbGVhcigpCiAgICAg
ICAgIGNvbnRyaWJ1dG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdQYXRjaCBieSBKb25h
dGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPiBvbiAyMDIwLTA5LTEwJykKIAogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLm5hbWUsICdKb25hdGhhbiBCZWRhcmQnKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLmVtYWlscywgWydqYmVkYXJkQGFw
cGxlLmNvbSddKQogCiAgICAgZGVmIHRlc3RfYXV0aG9yX21hcHBpbmcoc2VsZik6Ci0gICAgICAg
IENvbnRyaWJ1dG9yLmNsZWFyKCkKLSAgICAgICAgQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdB
dXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+JykKLSAgICAgICAgY29u
dHJpYnV0b3IgPSBDb250cmlidXRvci5mcm9tX3NjbV9sb2coJ0F1dGhvcjogSm9uYXRoYW4gQmVk
YXJkIDxqYmVkYXJkQHdlYmtpdC5vcmc+JykKKyAgICAgICAgYmFuayA9IENvbnRyaWJ1dG9yLkJh
bmsoKQorICAgICAgICBDb250cmlidXRvci5mcm9tX3NjbV9sb2coJ0F1dGhvcjogSm9uYXRoYW4g
QmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4nLCBiYW5rKQorICAgICAgICBjb250cmlidXRvciA9
IENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZygnQXV0aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpiZWRh
cmRAd2Via2l0Lm9yZz4nLCBiYW5rKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udHJp
YnV0b3IubmFtZSwgJ0pvbmF0aGFuIEJlZGFyZCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y29udHJpYnV0b3IuZW1haWxzLCBbJ2piZWRhcmRAYXBwbGUuY29tJywgJ2piZWRhcmRAd2Via2l0
Lm9yZyddKQogCiAgICAgZGVmIHRlc3RfZW1haWxfbWFwcGluZyhzZWxmKToKLSAgICAgICAgQ29u
dHJpYnV0b3IuY2xlYXIoKQotICAgICAgICBDb250cmlidXRvci5mcm9tX3NjbV9sb2coJ0F1dGhv
cjogSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4nKQotICAgICAgICBjb250cmli
dXRvciA9IENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZygncjI2Njc1MSB8IGpiZWRhcmRAYXBwbGUu
Y29tIHwgMjAyMC0wOS0wOCAxNDozMzo0MiAtMDcwMCAoVHVlLCAwOCBTZXAgMjAyMCkgfCAxMCBs
aW5lcycpCisgICAgICAgIGJhbmsgPSBDb250cmlidXRvci5CYW5rKCkKKyAgICAgICAgQ29udHJp
YnV0b3IuZnJvbV9zY21fbG9nKCdBdXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBs
ZS5jb20+JywgYmFuaykKKyAgICAgICAgY29udHJpYnV0b3IgPSBDb250cmlidXRvci5mcm9tX3Nj
bV9sb2coJ3IyNjY3NTEgfCBqYmVkYXJkQGFwcGxlLmNvbSB8IDIwMjAtMDktMDggMTQ6MzM6NDIg
LTA3MDAgKFR1ZSwgMDggU2VwIDIwMjApIHwgMTAgbGluZXMnLCBiYW5rKQogCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY29udHJpYnV0b3IubmFtZSwgJ0pvbmF0aGFuIEJlZGFyZCcpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udHJpYnV0b3IuZW1haWxzLCBbJ2piZWRhcmRAYXBwbGUu
Y29tJ10pCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2xvZyhzZWxmKToKLSAgICAgICAgQ29udHJp
YnV0b3IuY2xlYXIoKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3Ip
OgogICAgICAgICAgICAgQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdKb25hdGhhbiBCZWRhcmQg
PGpiZWRhcmRAYXBwbGUuY29tPicpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415323</attachid>
            <date>2020-12-03 12:32:26 -0800</date>
            <delta_ts>2020-12-04 08:03:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217732-20201203143225.patch</filename>
            <type>text/plain</type>
            <size>26164</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3MDQwMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY1IEBACisyMDIwLTEyLTAzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbZ2l0LXdlYmtpdF0gVXNlIGNvbnRyaWJ1dG9ycy5qc29uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MzIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzcwMzA5NTE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIEdpdCwgU3ZuIGFuZCBv
bGQgY29tbWl0cyBtZWFucyB0aGF0IG91ciBjYW5vbmljYWwgcmVjb3JkIG9mCisgICAgICAgIGNv
bW1pdCBhdXRob3JzIGlzIHNvbWV3aGF0IGluY29tcGxldGUuIGNvbnRyaWJ1dG9ycy5qc29uIGhh
cyBtb3N0IG9mIHRoZSBpbmZvcm1hdGlvbgorICAgICAgICB3ZSBhcmUgbWlzc2luZywgd2Ugc2hv
dWxkIHJlbHkgb24gaXQgdG8gbWFwIG5vbi1zdGFuZGFyZCBhdXRob3IgbmFtZXMgdG8gdGhlaXIg
Y2Fub25pY2FsCisgICAgICAgIG5hbWVzIGFuZCBlbWFpbCBhZGRyZXNzZXMuCisKKyAgICAgICAg
QWRkaXRpb25hbGx5LCBtYWtpbmcgdGhlIHJlY29yZCBvZiBDb250cmlidXRvcnMgb3duZWQgYnkg
dGhlIHJlcG9zaXRvcnkgaW5zdGVhZCBvZiBiZWluZyBnbG9iYWwKKyAgICAgICAgdG8gdGhlIGVu
dGlyZSBwcm9jZXNzLgorCisgICAgICAgICogU2NyaXB0cy9naXQtd2Via2l0OiBQYXJzZSBjb250
cmlidXRvcnMuanNvbiBhbmQgYWRkIGl0IHRvIGEgQ29udHJpYnV0b3IuQmFuayBtYXBwaW5nLgor
ICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L19faW5p
dF9fLnB5OiBCdW1wIHZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvY29tbWl0LnB5OgorICAgICAgICAoQ29tbWl0KTogQ29udHJpYnV0
b3IgY2xhc3Mgb2JqZWN0IG5vIGxvbmdlciBvd25zIHJlY29yZCBvZiBjb250cmlidXRvcnMuCisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvY29udHJp
YnV0b3IucHk6CisgICAgICAgIChDb250cmlidXRvcik6CisgICAgICAgIChDb250cmlidXRvci5C
YW5rKTogRGljdGlvbmFyeSBtYXBwaW5nIENvbnRyaWJ1dG9ycyBhbmQgdGhlaXIgcG90ZW50aWFs
IGFsaWFzZXMuCisgICAgICAgIChDb250cmlidXRvci5CYW5rLl9faW5pdF9fKToKKyAgICAgICAg
KENvbnRyaWJ1dG9yLkJhbmsuYWRkKTogQWRkIENvbnRyaWJ1dG9yIHRvIGJhbmsuCisgICAgICAg
IChDb250cmlidXRvci5CYW5rLmNyZWF0ZSk6IEZpbmQgb3IgY3JlYXRlIGEgY29udHJpYnV0b3Ig
d2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgYW5kIGVtYWlsCisgICAgICAgIGFkZHJlc3NlcyBhbmQg
YmluZCBpdCB0byB0aGUgcmVjb3JkIG9mIGNvbnRyaWJ1dG9ycy4KKyAgICAgICAgKENvbnRyaWJ1
dG9yLmZyb21fc2NtX2xvZyk6IExldmVyYWdlIENvbnRyaWJ1dG9yLkJhbmsgcHJvdmlkZWQgYnkg
Y2FsbGVyLgorICAgICAgICAoQ29udHJpYnV0b3IuY2xlYXIpOiBEZWxldGVkLgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weToK
KyAgICAgICAgKEdpdC5fX2luaXRfXyk6IEluc3RhbnRpYXRlIHJlcG9zaXRvcnkgd2l0aCBleGlz
dGluZyBDb250cmlidXRvci5CYW5rLgorICAgICAgICAoR2l0LmNvbW1pdCk6IFJlcG9zaXRvcnkg
bm93IG93bnMgdGhlIHJlY29yZCBvZiBjb250cmlidXRvcnMuCisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc2NtLnB5OgorICAgICAgICAo
U2NtLmZyb21fcGF0aCk6IEluc3RhbnRpYXRlIHJlcG9zaXRvcnkgd2l0aCBleGlzdGluZyBDb250
cmlidXRvci5CYW5rLgorICAgICAgICAoU2NtLl9faW5pdF9fKTogRGl0dG8uCisgICAgICAgICog
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5Ogor
ICAgICAgICAoU3ZuLl9faW5pdF9fKTogSW5zdGFudGlhdGUgcmVwb3NpdG9yeSB3aXRoIGV4aXN0
aW5nIENvbnRyaWJ1dG9yLkJhbmsuCisgICAgICAgIChTdm4uY29tbWl0KTogUmVwb3NpdG9yeSBu
b3cgb3ducyB0aGUgcmVjb3JkIG9mIGNvbnRyaWJ1dG9ycy4KKyAgICAgICAgKiBTY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtLnB5OgorICAgICAgICAobWFp
bik6IEFsbG93IGNhbGxlciB0byBwYXNzIGFuIGV4aXN0aW5nIHJlY29yZCBvZiBjb250cmlidXRv
cnMuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
cmVtb3RlL3NjbS5weToKKyAgICAgICAgKFNjbS5mcm9tX3VybCk6IEluc3RhbnRpYXRlIHJlcG9z
aXRvcnkgd2l0aCBleGlzdGluZyBDb250cmlidXRvci5CYW5rLgorICAgICAgICAoU2NtLl9faW5p
dF9fKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvcmVtb3RlL3N2bi5weToKKyAgICAgICAgKFN2bi5fX2luaXRfXyk6IEluc3RhbnRp
YXRlIHJlcG9zaXRvcnkgd2l0aCBleGlzdGluZyBDb250cmlidXRvci5CYW5rLgorICAgICAgICAo
U3ZuLmNvbW1pdCk6IFJlcG9zaXRvcnkgbm93IG93bnMgdGhlIHJlY29yZCBvZiBjb250cmlidXRv
cnMuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
c2NtX2Jhc2UucHk6CisgICAgICAgIChTY21CYXNlLl9faW5pdF9fKTogSW5zdGFudGlhdGUgcmVw
b3NpdG9yeSB3aXRoIGV4aXN0aW5nIENvbnRyaWJ1dG9yLkJhbmsuCisgICAgICAgICogU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jb21taXRfdW5pdHRlc3Qu
cHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
dGVzdC9jb250cmlidXRvcl91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RDb250cmlidXRvci50
ZXN0X2dpdF9sb2cpOiBObyBtb3JlIGdsb2JhbCBjb250cmlidXRvciByZWNvcmQuCisgICAgICAg
IChUZXN0Q29udHJpYnV0b3IudGVzdF9naXRfc3ZuX2xvZyk6IERpdHRvLgorICAgICAgICAoVGVz
dENvbnRyaWJ1dG9yLnRlc3RfZ2l0X25vX2F1dGhvcik6IERpdHRvLgorICAgICAgICAoVGVzdENv
bnRyaWJ1dG9yLnRlc3RfZ2l0X3N2bl9ub19hdXRob3IpOiBEaXR0by4KKyAgICAgICAgKFRlc3RD
b250cmlidXRvci50ZXN0X3N2bl9sb2cpOiBEaXR0by4KKyAgICAgICAgKFRlc3RDb250cmlidXRv
ci50ZXN0X3Nob3J0X3N2bl9sb2cpOiBEaXR0by4KKyAgICAgICAgKFRlc3RDb250cmlidXRvci50
ZXN0X3N2bl9wYXRjaF9ieV9sb2cpOiBEaXR0by4KKyAgICAgICAgKFRlc3RDb250cmlidXRvci50
ZXN0X2F1dGhvcl9tYXBwaW5nKTogQ29udHJpYnV0b3IgcmVjb3JkIGlzIG93bmVkIGJ5IHRoZSBj
YWxsZXIgb2YgdGhlIGNhbGxlcgorICAgICAgICBvZiBDb250cmlidXRvciBtYW5hZ2VtZW50Lgor
ICAgICAgICAoVGVzdENvbnRyaWJ1dG9yLnRlc3RfZW1haWxfbWFwcGluZyk6IERpdHRvLgorICAg
ICAgICAoVGVzdENvbnRyaWJ1dG9yLnRlc3RfaW52YWxpZF9sb2cpOiBObyBtb3JlIGdsb2JhbCBj
b250cmlidXRvciByZWNvcmQuCisKIDIwMjAtMTItMDIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFueSBkaWZmZXJlbnQgYXNzZXJ0aW9uIGZhaWx1
cmVzIG9uIHRoZSBHUFUgcHJvY2VzcyBib3QgYWZ0ZXIgcjI3MDM2NgpJbmRleDogVG9vbHMvU2Ny
aXB0cy9naXQtd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvZ2l0LXdlYmtpdAko
cmV2aXNpb24gMjcwNDAwKQorKysgVG9vbHMvU2NyaXB0cy9naXQtd2Via2l0CSh3b3JraW5nIGNv
cHkpCkBAIC0yMywxMCArMjMsMjQgQEAKICMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBvcwotaW1wb3J0IHdlYmtp
dHB5CiBpbXBvcnQgc3lzCiAKLWZyb20gd2Via2l0c2NtcHkgaW1wb3J0IHByb2dyYW0KK2Zyb20g
d2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0Citm
cm9tIHdlYmtpdHNjbXB5IGltcG9ydCBwcm9ncmFtLCBDb250cmlidXRvcgogCi1zeXMuZXhpdChw
cm9ncmFtLm1haW4ocGF0aD1vcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSkKKworaWYgJ19fbWFp
bl9fJyA9PSBfX25hbWVfXzoKKyAgICBiYW5rID0gQ29udHJpYnV0b3IuQmFuaygpCisgICAgZm9y
IGNvbnRyaWJ1dG9yIGluIENvbW1pdHRlckxpc3QoKS5jb250cmlidXRvcnMoKToKKyAgICAgICAg
YyA9IGJhbmsuY3JlYXRlKGNvbnRyaWJ1dG9yLmZ1bGxfbmFtZSwgKmNvbnRyaWJ1dG9yLmVtYWls
cykKKyAgICAgICAgaWYgbm90IGM6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBmb3Ig
YWxpYXMgaW4gY29udHJpYnV0b3IuYWxpYXNlcyBvciBbXToKKyAgICAgICAgICAgIGlmIGFsaWFz
IG5vdCBpbiBiYW5rOgorICAgICAgICAgICAgICAgIGJhbmtbYWxpYXNdID0gYworICAgICAgICBm
b3IgbmljayBpbiBjb250cmlidXRvci5pcmNfbmlja25hbWVzIG9yIFtdOgorICAgICAgICAgICAg
aWYgbmljayBub3QgaW4gYmFuazoKKyAgICAgICAgICAgICAgICBiYW5rW25pY2tdID0gYworCisg
ICAgc3lzLmV4aXQocHJvZ3JhbS5tYWluKHBhdGg9b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwg
Y29udHJpYnV0b3JzPWJhbmspKQogCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9fX2luaXRfXy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9fX2luaXRfXy5weQkocmV2aXNp
b24gMjcwNDAwKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvX19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgZXhjZXB0
IEltcG9ydEVycm9yOgogICAgICAgICAiUGxlYXNlIGluc3RhbGwgd2Via2l0Y29yZXB5IHdpdGgg
YHBpcCBpbnN0YWxsIHdlYmtpdGNvcmVweSAtLWV4dHJhLWluZGV4LXVybCA8cGFja2FnZSBpbmRl
eCBVUkw+YCIKICAgICApCiAKLXZlcnNpb24gPSBWZXJzaW9uKDAsIDQsIDQpCit2ZXJzaW9uID0g
VmVyc2lvbigwLCA1LCAwKQogCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdkYXRldXRp
bCcsIFZlcnNpb24oMiwgOCwgMSksIHB5cGlfbmFtZT0ncHl0aG9uLWRhdGV1dGlsJykpCiBBdXRv
SW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdmYXN0ZW5lcnMnLCBWZXJzaW9uKDAsIDE1LCAwKSkp
CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9j
b21taXQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvY29tbWl0LnB5CShyZXZpc2lvbiAyNzA0MDApCisrKyBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9jb21taXQucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTE4NywxNCArMTg3LDcgQEAgY2xhc3MgQ29tbWl0KG9iamVjdCk6CiAgICAgICAg
ICAgICByYWlzZSBUeXBlRXJyb3IoIkV4cGVjdGVkICd0aW1lc3RhbXAnIHRvIGJlIG9mIHR5cGUg
aW50LCBnb3QgJ3t9JyIuZm9ybWF0KHRpbWVzdGFtcCkpCiAgICAgICAgIHNlbGYudGltZXN0YW1w
ID0gdGltZXN0YW1wCiAKLSAgICAgICAgaWYgYXV0aG9yIGFuZCBpc2luc3RhbmNlKGF1dGhvciwg
c2l4LnN0cmluZ190eXBlcyk6Ci0gICAgICAgICAgICBzZWxmLmF1dGhvciA9IENvbnRyaWJ1dG9y
LmJ5X2VtYWlsLmdldCgKLSAgICAgICAgICAgICAgICBhdXRob3IsCi0gICAgICAgICAgICAgICAg
Q29udHJpYnV0b3IuYnlfbmFtZS5nZXQoYXV0aG9yKSwKLSAgICAgICAgICAgICkKLSAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLmF1dGhvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCIne30nIGRvZXMgbm90IG1hdGNoIGEga25vd24gY29udHJpYnV0b3IiKQotICAgICAgICBlbGlm
IGF1dGhvciBhbmQgaXNpbnN0YW5jZShhdXRob3IsIGRpY3QpIGFuZCBhdXRob3IuZ2V0KCduYW1l
Jyk6CisgICAgICAgIGlmIGF1dGhvciBhbmQgaXNpbnN0YW5jZShhdXRob3IsIGRpY3QpIGFuZCBh
dXRob3IuZ2V0KCduYW1lJyk6CiAgICAgICAgICAgICBzZWxmLmF1dGhvciA9IENvbnRyaWJ1dG9y
KGF1dGhvci5nZXQoJ25hbWUnKSwgYXV0aG9yLmdldCgnZW1haWxzJykpCiAgICAgICAgIGVsaWYg
YXV0aG9yIGFuZCBub3QgaXNpbnN0YW5jZShhdXRob3IsIENvbnRyaWJ1dG9yKToKICAgICAgICAg
ICAgIHJhaXNlIFR5cGVFcnJvcigiRXhwZWN0ZWQgJ2F1dGhvcicgdG8gYmUgb2YgdHlwZSB7fSwg
Z290ICd7fSciLmZvcm1hdChDb250cmlidXRvciwgYXV0aG9yKSkKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbnRyaWJ1dG9yLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L2NvbnRyaWJ1dG9yLnB5CShyZXZpc2lvbiAyNzA0MDApCisrKyBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9jb250cmlidXRvci5weQkod29ya2luZyBjb3B5
KQpAQCAtMjMsNiArMjMsNyBAQAogaW1wb3J0IGpzb24KIGltcG9ydCByZQogCitmcm9tIGNvbGxl
Y3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmlu
Z191dGlscwogCiAKQEAgLTMyLDkgKzMzLDYgQEAgY2xhc3MgQ29udHJpYnV0b3Iob2JqZWN0KToK
ICAgICBTVk5fQVVUSE9SX1JFID0gcmUuY29tcGlsZShyJ3JcZCsgXHwgKD9QPGVtYWlsPi4qKSBc
fCAoP1A8ZGF0ZT4uKikgXHwgXGQrIGxpbmVzPycpCiAgICAgU1ZOX1BBVENIX0ZST01fUkUgPSBy
ZS5jb21waWxlKHInUGF0Y2ggYnkgKD9QPGF1dGhvcj4uKikgPCg/UDxlbWFpbD4uKik+IG9uIFxk
Ky1cZCstXGQrJykKIAotICAgIGJ5X2VtYWlsID0gZGljdCgpCi0gICAgYnlfbmFtZSA9IGRpY3Qo
KQotCiAgICAgY2xhc3MgRW5jb2Rlcihqc29uLkpTT05FbmNvZGVyKToKIAogICAgICAgICBkZWYg
ZGVmYXVsdChzZWxmLCBvYmopOgpAQCAtNDcsMTMgKzQ1LDQzIEBAIGNsYXNzIENvbnRyaWJ1dG9y
KG9iamVjdCk6CiAKICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAotICAgIEBjbGFzc21ldGhv
ZAotICAgIGRlZiBjbGVhcihjbHMpOgotICAgICAgICBjbHMuYnlfZW1haWwgPSBkaWN0KCkKLSAg
ICAgICAgY2xzLmJ5X25hbWUgPSBkaWN0KCkKKyAgICBjbGFzcyBCYW5rKGRlZmF1bHRkaWN0KToK
KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgc3VwZXIoQ29udHJpYnV0
b3IuQmFuaywgc2VsZikuX19pbml0X18obGFtYmRhOiBOb25lKQorCisgICAgICAgIGRlZiBhZGQo
c2VsZiwgY29udHJpYnV0b3IpOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29udHJp
YnV0b3IsIENvbnRyaWJ1dG9yKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIn
e30nIGlzIG5vdCBhIENvbnRyaWJ1dG9yIG9iamVjdCIuZm9ybWF0KHR5cGUoY29udHJpYnV0b3Ip
KSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNyZWF0ZShuYW1lPWNvbnRyaWJ1dG9yLm5hbWUs
ICpjb250cmlidXRvci5lbWFpbHMpCisKKyAgICAgICAgZGVmIGNyZWF0ZShzZWxmLCBuYW1lPU5v
bmUsICplbWFpbHMpOgorICAgICAgICAgICAgZW1haWxzID0gW2VtYWlsIGZvciBlbWFpbCBpbiBl
bWFpbHMgb3IgW11dCisgICAgICAgICAgICBpZiBub3QgbmFtZSBhbmQgbm90IGVtYWlsczoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICBjb250cmlidXRvciA9IE5v
bmUKKyAgICAgICAgICAgIGZvciBhcmd1bWVudCBpbiBbbmFtZV0gKyAoZW1haWxzIG9yIFtdKToK
KyAgICAgICAgICAgICAgICBjb250cmlidXRvciA9IHNlbGZbYXJndW1lbnRdCisgICAgICAgICAg
ICAgICAgaWYgY29udHJpYnV0b3I6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAg
ICAgICAgIGlmIGNvbnRyaWJ1dG9yOgorICAgICAgICAgICAgICAgIGZvciBlbWFpbCBpbiBlbWFp
bHMgb3IgW106CisgICAgICAgICAgICAgICAgICAgIGlmIGVtYWlsIG5vdCBpbiBjb250cmlidXRv
ci5lbWFpbHM6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250cmlidXRvci5lbWFpbHMuYXBw
ZW5kKGVtYWlsKQorICAgICAgICAgICAgICAgIGlmIGNvbnRyaWJ1dG9yLm5hbWUgaW4gY29udHJp
YnV0b3IuZW1haWxzIGFuZCBuYW1lOgorICAgICAgICAgICAgICAgICAgICBjb250cmlidXRvci5u
YW1lID0gbmFtZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjb250cmlidXRv
ciA9IENvbnRyaWJ1dG9yKG5hbWUgb3IgZW1haWxzWzBdLCBlbWFpbHM9ZW1haWxzKQorCisgICAg
ICAgICAgICBzZWxmW2NvbnRyaWJ1dG9yLm5hbWVdID0gY29udHJpYnV0b3IKKyAgICAgICAgICAg
IGZvciBlbWFpbCBpbiBjb250cmlidXRvci5lbWFpbHMgb3IgW106CisgICAgICAgICAgICAgICAg
c2VsZltlbWFpbF0gPSBjb250cmlidXRvcgorICAgICAgICAgICAgcmV0dXJuIGNvbnRyaWJ1dG9y
CisKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tX3NjbV9sb2coY2xzLCBsaW5lKToK
KyAgICBkZWYgZnJvbV9zY21fbG9nKGNscywgbGluZSwgYmFuaz1Ob25lKToKICAgICAgICAgZW1h
aWwgPSBOb25lCiAgICAgICAgIGF1dGhvciA9IE5vbmUKIApAQCAtNzUsMTggKzEwMyw5IEBAIGNs
YXNzIENvbnRyaWJ1dG9yKG9iamVjdCk6CiAgICAgICAgIGlmIG5vdCBlbWFpbCBhbmQgbm90IGF1
dGhvcjoKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICAgICAgY29udHJpYnV0b3IgPSBj
bHMuYnlfbmFtZS5nZXQoYXV0aG9yIG9yIGVtYWlsKQotICAgICAgICBpZiBub3QgY29udHJpYnV0
b3I6Ci0gICAgICAgICAgICBjb250cmlidXRvciA9IGNscy5ieV9lbWFpbC5nZXQoZW1haWwpCi0K
LSAgICAgICAgaWYgbm90IGNvbnRyaWJ1dG9yOgotICAgICAgICAgICAgY29udHJpYnV0b3IgPSBj
bHMoYXV0aG9yIG9yIGVtYWlsLCBlbWFpbHM9W2VtYWlsXSkKLSAgICAgICAgICAgIGNscy5ieV9u
YW1lW2NvbnRyaWJ1dG9yLm5hbWVdID0gY29udHJpYnV0b3IKLSAgICAgICAgZWxpZiBlbWFpbCBu
b3QgaW4gY29udHJpYnV0b3IuZW1haWxzOgotICAgICAgICAgICAgY29udHJpYnV0b3IuZW1haWxz
LmFwcGVuZChlbWFpbCkKLQotICAgICAgICBjbHMuYnlfbmFtZVtlbWFpbF0gPSBjb250cmlidXRv
cgotICAgICAgICByZXR1cm4gY29udHJpYnV0b3IKKyAgICAgICAgaWYgYmFuayBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIHJldHVybiBiYW5rLmNyZWF0ZShhdXRob3IsIGVtYWlsKQorICAgICAg
ICByZXR1cm4gY2xzKGF1dGhvciBvciBlbWFpbCwgZW1haWxzPVtlbWFpbF0pCiAKICAgICBkZWYg
X19pbml0X18oc2VsZiwgbmFtZSwgZW1haWxzPU5vbmUpOgogICAgICAgICBzZWxmLm5hbWUgPSBz
dHJpbmdfdXRpbHMuZGVjb2RlKG5hbWUpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0ucHkJKHJldmlz
aW9uIDI3MDQwMCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3Byb2dyYW0ucHkJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCBjbGFz
cyBDaGVja291dChDb21tYW5kKToKICAgICAgICAgcmV0dXJuIDAKIAogCi1kZWYgbWFpbihhcmdz
PU5vbmUsIHBhdGg9Tm9uZSwgbG9nZ2Vycz1Ob25lKToKK2RlZiBtYWluKGFyZ3M9Tm9uZSwgcGF0
aD1Ob25lLCBsb2dnZXJzPU5vbmUsIGNvbnRyaWJ1dG9ycz1Ob25lKToKICAgICBsb2dnaW5nLmJh
c2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuV0FSTklORykKIAogICAgIGxvZ2dlcnMgPSBbbG9nZ2lu
Zy5nZXRMb2dnZXIoKSwgd2Via2l0Y29yZXB5X2xvZywgIGxvZ10gKyAobG9nZ2VycyBvciBbXSkK
QEAgLTE5MSw4ICsxOTEsOCBAQCBkZWYgbWFpbihhcmdzPU5vbmUsIHBhdGg9Tm9uZSwgbG9nZ2Vy
cz1OCiAgICAgcGFyc2VkID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncz1hcmdzKQogCiAgICAgaWYg
cGFyc2VkLnJlcG9zaXRvcnkuc3RhcnRzd2l0aCgoJ2h0dHBzOi8vJywgJ2h0dHA6Ly8nKSk6Ci0g
ICAgICAgIHJlcG9zaXRvcnkgPSByZW1vdGUuU2NtLmZyb21fdXJsKHBhcnNlZC5yZXBvc2l0b3J5
KQorICAgICAgICByZXBvc2l0b3J5ID0gcmVtb3RlLlNjbS5mcm9tX3VybChwYXJzZWQucmVwb3Np
dG9yeSwgY29udHJpYnV0b3JzPWNvbnRyaWJ1dG9ycykKICAgICBlbHNlOgotICAgICAgICByZXBv
c2l0b3J5ID0gbG9jYWwuU2NtLmZyb21fcGF0aChwYXRoPXBhcnNlZC5yZXBvc2l0b3J5KQorICAg
ICAgICByZXBvc2l0b3J5ID0gbG9jYWwuU2NtLmZyb21fcGF0aChwYXRoPXBhcnNlZC5yZXBvc2l0
b3J5LCBjb250cmlidXRvcnM9Y29udHJpYnV0b3JzKQogCiAgICAgcmV0dXJuIHBhcnNlZC5tYWlu
KGFyZ3M9cGFyc2VkLCByZXBvc2l0b3J5PXJlcG9zaXRvcnkpCkluZGV4OiBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9zY21fYmFzZS5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9zY21f
YmFzZS5weQkocmV2aXNpb24gMjcwNDAwKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAgaW1wb3J0IHNpeAogaW1wb3J0IHN5cwogCiBmcm9tIGxvZ2dpbmcgaW1wb3J0IE51
bGxIYW5kbGVyCi1mcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBDb21taXQsIGxvZworZnJvbSB3ZWJr
aXRzY21weSBpbXBvcnQgQ29tbWl0LCBDb250cmlidXRvciwgbG9nCiAKIAogY2xhc3MgU2NtQmFz
ZShvYmplY3QpOgpAQCAtMzgsMTAgKzM4LDExIEBAIGNsYXNzIFNjbUJhc2Uob2JqZWN0KToKICAg
ICBERVZfQlJBTkNIRVMgPSByZS5jb21waWxlKHInLipbKGVuZykoZGV2KShidWcpXS8uKycpCiAg
ICAgUFJPRF9CUkFOQ0hFUyA9IHJlLmNvbXBpbGUocidcUystW1xkK1wuXSstYnJhbmNoJykKIAot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJvZF9icmFuY2hlcz1O
b25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGV2X2JyYW5jaGVzPU5vbmUsIHByb2RfYnJh
bmNoZXM9Tm9uZSwgY29udHJpYnV0b3JzPU5vbmUpOgogICAgICAgICBzZWxmLmRldl9icmFuY2hl
cyA9IGRldl9icmFuY2hlcyBvciBzZWxmLkRFVl9CUkFOQ0hFUwogICAgICAgICBzZWxmLnByb2Rf
YnJhbmNoZXMgPSBwcm9kX2JyYW5jaGVzIG9yIHNlbGYuUFJPRF9CUkFOQ0hFUwogICAgICAgICBz
ZWxmLnBhdGggPSBOb25lCisgICAgICAgIHNlbGYuY29udHJpYnV0b3JzID0gQ29udHJpYnV0b3Iu
QmFuaygpIGlmIGNvbnRyaWJ1dG9ycyBpcyBOb25lIGVsc2UgY29udHJpYnV0b3JzCiAKICAgICBA
cHJvcGVydHkKICAgICBkZWYgaXNfc3ZuKHNlbGYpOgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dp
dC5weQkocmV2aXNpb24gMjcwNDAwKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0
Miw4IEBAIGNsYXNzIEdpdChTY20pOgogICAgIGRlZiBpc19jaGVja291dChjbHMsIHBhdGgpOgog
ICAgICAgICByZXR1cm4gcnVuKFtjbHMuZXhlY3V0YWJsZSgpLCAncmV2LXBhcnNlJywgJy0tc2hv
dy10b3BsZXZlbCddLCBjd2Q9cGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSkucmV0dXJuY29kZSA9
PSAwCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZGV2X2JyYW5jaGVzPU5vbmUsIHBy
b2RfYnJhbmNoZXM9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKEdpdCwgc2VsZikuX19pbml0X18ocGF0
aCwgZGV2X2JyYW5jaGVzPWRldl9icmFuY2hlcywgcHJvZF9icmFuY2hlcz1wcm9kX2JyYW5jaGVz
KQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJvZF9i
cmFuY2hlcz1Ob25lLCBjb250cmlidXRvcnM9Tm9uZSk6CisgICAgICAgIHN1cGVyKEdpdCwgc2Vs
ZikuX19pbml0X18ocGF0aCwgZGV2X2JyYW5jaGVzPWRldl9icmFuY2hlcywgcHJvZF9icmFuY2hl
cz1wcm9kX2JyYW5jaGVzLCBjb250cmlidXRvcnM9Y29udHJpYnV0b3JzKQogICAgICAgICBpZiBu
b3Qgc2VsZi5yb290X3BhdGg6CiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdQcm92aWRlZCBw
YXRoIHt9IGlzIG5vdCBhIGdpdCByZXBvc2l0b3J5Jy5mb3JtYXQocGF0aCkpCiAKQEAgLTI2NSw3
ICsyNjUsNyBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAgICAgIGJyYW5jaF9wb2ludD1icmFu
Y2hfcG9pbnQsCiAgICAgICAgICAgICBicmFuY2g9YnJhbmNoLAogICAgICAgICAgICAgdGltZXN0
YW1wPWludChjb21taXRfdGltZS5zdGRvdXQubHN0cmlwKCkpLAotICAgICAgICAgICAgYXV0aG9y
PUNvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZyhsb2cuc3Rkb3V0LnNwbGl0bGluZXMoKVsxXSksCisg
ICAgICAgICAgICBhdXRob3I9Q29udHJpYnV0b3IuZnJvbV9zY21fbG9nKGxvZy5zdGRvdXQuc3Bs
aXRsaW5lcygpWzFdLCBzZWxmLmNvbnRyaWJ1dG9ycyksCiAgICAgICAgICAgICBtZXNzYWdlPSdc
bicuam9pbihsaW5lWzQ6XSBmb3IgbGluZSBpbiBsb2cuc3Rkb3V0LnNwbGl0bGluZXMoKVs0Ol0p
IGlmIGluY2x1ZGVfbG9nIGVsc2UgTm9uZSwKICAgICAgICAgKQogCkluZGV4OiBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zY20ucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
bG9jYWwvc2NtLnB5CShyZXZpc2lvbiAyNzA0MDApCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zY20ucHkJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDE3ICs0OCwxNyBAQCBjbGFzcyBTY20oU2NtQmFzZSk6CiAgICAgICAgIHJhaXNlIE9TRXJy
b3IoIkNhbm5vdCBmaW5kICd7fScgcHJvZ3JhbSIuZm9ybWF0KHByb2dyYW0pKQogCiAgICAgQGNs
YXNzbWV0aG9kCi0gICAgZGVmIGZyb21fcGF0aChjbHMsIHBhdGgpOgorICAgIGRlZiBmcm9tX3Bh
dGgoY2xzLCBwYXRoLCAgY29udHJpYnV0b3JzPU5vbmUpOgogICAgICAgICBmcm9tIHdlYmtpdHNj
bXB5IGltcG9ydCBsb2NhbAogCiAgICAgICAgIGlmIGxvY2FsLkdpdC5pc19jaGVja291dChwYXRo
KToKLSAgICAgICAgICAgIHJldHVybiBsb2NhbC5HaXQocGF0aCkKKyAgICAgICAgICAgIHJldHVy
biBsb2NhbC5HaXQocGF0aCwgY29udHJpYnV0b3JzPWNvbnRyaWJ1dG9ycykKICAgICAgICAgaWYg
bG9jYWwuU3ZuLmlzX2NoZWNrb3V0KHBhdGgpOgotICAgICAgICAgICAgcmV0dXJuIGxvY2FsLlN2
bihwYXRoKQorICAgICAgICAgICAgcmV0dXJuIGxvY2FsLlN2bihwYXRoLCBjb250cmlidXRvcnM9
Y29udHJpYnV0b3JzKQogICAgICAgICByYWlzZSBPU0Vycm9yKCIne30nIGlzIG5vdCBhIGtub3du
IFNDTSB0eXBlIi5mb3JtYXQocGF0aCkpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwg
ZGV2X2JyYW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKFNj
bSwgc2VsZikuX19pbml0X18oZGV2X2JyYW5jaGVzPWRldl9icmFuY2hlcywgcHJvZF9icmFuY2hl
cz1wcm9kX2JyYW5jaGVzKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBkZXZfYnJhbmNo
ZXM9Tm9uZSwgcHJvZF9icmFuY2hlcz1Ob25lLCBjb250cmlidXRvcnM9Tm9uZSk6CisgICAgICAg
IHN1cGVyKFNjbSwgc2VsZikuX19pbml0X18oZGV2X2JyYW5jaGVzPWRldl9icmFuY2hlcywgcHJv
ZF9icmFuY2hlcz1wcm9kX2JyYW5jaGVzLCBjb250cmlidXRvcnM9Y29udHJpYnV0b3JzKQogCiAg
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhdGgsIHNpeC5zdHJpbmdfdHlwZXMpOgogICAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRXhwZWN0ZWQgJ3BhdGgnIHRvIGJlIGEgc3RyaW5nIHR5
cGUsIG5vdCAne30nIi5mb3JtYXQodHlwZShwYXRoKSkpCkluZGV4OiBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zdm4ucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwv
c3ZuLnB5CShyZXZpc2lvbiAyNzA0MDApCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zdm4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTUwLDgg
KzUwLDggQEAgY2xhc3MgU3ZuKFNjbSk6CiAgICAgZGVmIGlzX2NoZWNrb3V0KGNscywgcGF0aCk6
CiAgICAgICAgIHJldHVybiBydW4oW2Nscy5leGVjdXRhYmxlKCksICdpbmZvJ10sIGN3ZD1wYXRo
LCBjYXB0dXJlX291dHB1dD1UcnVlKS5yZXR1cm5jb2RlID09IDAKIAotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwYXRoLCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJvZF9icmFuY2hlcz1Ob25lKToKLSAg
ICAgICAgc3VwZXIoU3ZuLCBzZWxmKS5fX2luaXRfXyhwYXRoLCBkZXZfYnJhbmNoZXM9ZGV2X2Jy
YW5jaGVzLCBwcm9kX2JyYW5jaGVzPXByb2RfYnJhbmNoZXMpCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHBhdGgsIGRldl9icmFuY2hlcz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5vbmUsIGNvbnRyaWJ1
dG9ycz1Ob25lKToKKyAgICAgICAgc3VwZXIoU3ZuLCBzZWxmKS5fX2luaXRfXyhwYXRoLCBkZXZf
YnJhbmNoZXM9ZGV2X2JyYW5jaGVzLCBwcm9kX2JyYW5jaGVzPXByb2RfYnJhbmNoZXMsIGNvbnRy
aWJ1dG9ycz1jb250cmlidXRvcnMpCiAKICAgICAgICAgc2VsZi5fcm9vdF9wYXRoID0gc2VsZi5w
YXRoCiAgICAgICAgIHNlbGYuX3Jvb3RfcGF0aCA9IHNlbGYuaW5mbyhjYWNoZWQ9RmFsc2UpLmdl
dCgnV29ya2luZyBDb3B5IFJvb3QgUGF0aCcpCkBAIC0zNzAsMTkgKzM3MCwxMyBAQCBjbGFzcyBT
dm4oU2NtKToKICAgICAgICAgICAgICAgICAgICAgYXV0aG9yX2xpbmUgPSBsaW5lCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrCiAKLSAgICAgICAgICAgIGF1dGhvciA9IENvbnRyaWJ1dG9yLmZy
b21fc2NtX2xvZyhhdXRob3JfbGluZSkKKyAgICAgICAgICAgIGF1dGhvciA9IENvbnRyaWJ1dG9y
LmZyb21fc2NtX2xvZyhhdXRob3JfbGluZSwgc2VsZi5jb250cmlidXRvcnMpCiAgICAgICAgICAg
ICBtZXNzYWdlID0gJ1xuJy5qb2luKHNwbGl0X2xvZ1szOi0xXSkKICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgIGlmIGluY2x1ZGVfbG9nOgogICAgICAgICAgICAgICAgIHNlbGYubG9nKCdGYWls
ZWQgdG8gY29ubmVjdCB0byByZW1vdGUsIGNhbm5vdCBjb21wdXRlIGNvbW1pdCBtZXNzYWdlJykK
ICAgICAgICAgICAgIGVtYWlsID0gaW5mby5nZXQoJ0xhc3QgQ2hhbmdlZCBBdXRob3InKQotICAg
ICAgICAgICAgYXV0aG9yID0gQ29udHJpYnV0b3IuYnlfZW1haWwuZ2V0KAotICAgICAgICAgICAg
ICAgIGVtYWlsLAotICAgICAgICAgICAgICAgIENvbnRyaWJ1dG9yLmJ5X25hbWUuZ2V0KAotICAg
ICAgICAgICAgICAgICAgICBlbWFpbCwKLSAgICAgICAgICAgICAgICAgICAgQ29udHJpYnV0b3Io
bmFtZT1lbWFpbCwgZW1haWxzPVtlbWFpbF0pLAotICAgICAgICAgICAgICAgICksCi0gICAgICAg
ICAgICApIGlmIGVtYWlsIGVsc2UgTm9uZQorICAgICAgICAgICAgYXV0aG9yID0gc2VsZi5jb250
cmlidXRvcnMuY3JlYXRlKGVtYWlsLCBlbWFpbCkgaWYgJ0AnIGluIGVtYWlsIGVsc2Ugc2VsZi5j
b250cmlidXRvcnMuY3JlYXRlKGVtYWlsKQogICAgICAgICAgICAgbWVzc2FnZSA9IE5vbmUKIAog
ICAgICAgICByZXR1cm4gQ29tbWl0KApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL3NjbS5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1vdGUvc2NtLnB5CShy
ZXZpc2lvbiAyNzA0MDApCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9yZW1vdGUvc2NtLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNSArMjcsMTUg
QEAgZnJvbSB3ZWJraXRzY21weS5zY21fYmFzZSBpbXBvcnQgU2NtQmFzZQogCiBjbGFzcyBTY20o
U2NtQmFzZSk6CiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZyb21fdXJsKGNscywgdXJsKToK
KyAgICBkZWYgZnJvbV91cmwoY2xzLCB1cmwsIGNvbnRyaWJ1dG9ycz1Ob25lKToKICAgICAgICAg
ZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgcmVtb3RlCiAKICAgICAgICAgaWYgcmVtb3RlLlN2bi5p
c193ZWJzZXJ2ZXIodXJsKToKLSAgICAgICAgICAgIHJldHVybiByZW1vdGUuU3ZuKHVybCkKKyAg
ICAgICAgICAgIHJldHVybiByZW1vdGUuU3ZuKHVybCwgY29udHJpYnV0b3JzPWNvbnRyaWJ1dG9y
cykKICAgICAgICAgcmFpc2UgT1NFcnJvcigiJ3t9JyBpcyBub3QgYSBrbm93biBTQ00gc2VydmVy
Ii5mb3JtYXQodXJsKSkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIGRldl9icmFuY2hl
cz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5vbmUpOgotICAgICAgICBzdXBlcihTY20sIHNlbGYpLl9f
aW5pdF9fKGRldl9icmFuY2hlcz1kZXZfYnJhbmNoZXMsIHByb2RfYnJhbmNoZXM9cHJvZF9icmFu
Y2hlcykKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJv
ZF9icmFuY2hlcz1Ob25lLCBjb250cmlidXRvcnM9Tm9uZSk6CisgICAgICAgIHN1cGVyKFNjbSwg
c2VsZikuX19pbml0X18oZGV2X2JyYW5jaGVzPWRldl9icmFuY2hlcywgcHJvZF9icmFuY2hlcz1w
cm9kX2JyYW5jaGVzLCBjb250cmlidXRvcnM9Y29udHJpYnV0b3JzKQogCiAgICAgICAgIGlmIG5v
dCBpc2luc3RhbmNlKHVybCwgc2l4LnN0cmluZ190eXBlcyk6CiAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCJFeHBlY3RlZCAndXJsJyB0byBiZSBhIHN0cmluZyB0eXBlLCBub3QgJ3t9JyIu
Zm9ybWF0KHR5cGUodXJsKSkpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9yZW1vdGUvc3ZuLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9zdm4ucHkJKHJldmlz
aW9uIDI3MDQwMCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3JlbW90ZS9zdm4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEyICs0NiwxMiBAQCBj
bGFzcyBTdm4oU2NtKToKICAgICBkZWYgaXNfd2Vic2VydmVyKGNscywgdXJsKToKICAgICAgICAg
cmV0dXJuIFRydWUgaWYgY2xzLlVSTF9SRS5tYXRjaCh1cmwpIGVsc2UgRmFsc2UKIAotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCB1cmwsIGRldl9icmFuY2hlcz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5v
bmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIGRldl9icmFuY2hlcz1Ob25lLCBwcm9k
X2JyYW5jaGVzPU5vbmUsIGNvbnRyaWJ1dG9ycz1Ob25lKToKICAgICAgICAgaWYgdXJsWy0xXSAh
PSAnLyc6CiAgICAgICAgICAgICB1cmwgKz0gJy8nCiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX3dl
YnNlcnZlcih1cmwpOgogICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIid7fScgaXMg
bm90IGEgdmFsaWQgU1ZOIHdlYnNlcnZlciIuZm9ybWF0KHVybCkpCi0gICAgICAgIHN1cGVyKFN2
biwgc2VsZikuX19pbml0X18odXJsLCBkZXZfYnJhbmNoZXM9ZGV2X2JyYW5jaGVzLCBwcm9kX2Jy
YW5jaGVzPXByb2RfYnJhbmNoZXMpCisgICAgICAgIHN1cGVyKFN2biwgc2VsZikuX19pbml0X18o
dXJsLCBkZXZfYnJhbmNoZXM9ZGV2X2JyYW5jaGVzLCBwcm9kX2JyYW5jaGVzPXByb2RfYnJhbmNo
ZXMsIGNvbnRyaWJ1dG9ycz1jb250cmlidXRvcnMpCiAKICAgICAgICAgaWYgb3MucGF0aC5leGlz
dHMoc2VsZi5fY2FjaGVfcGF0aCk6CiAgICAgICAgICAgICB0cnk6CkBAIC00MjYsMTMgKzQyNiw3
IEBAIGNsYXNzIFN2bihTY20pOgogICAgICAgICAgICAgbWVzc2FnZSA9IE5vbmUKICAgICAgICAg
ICAgIG5hbWUgPSBpbmZvLmdldCgnTGFzdCBDaGFuZ2VkIEF1dGhvcicpCiAKLSAgICAgICAgYXV0
aG9yID0gQ29udHJpYnV0b3IuYnlfZW1haWwuZ2V0KAotICAgICAgICAgICAgbmFtZSwKLSAgICAg
ICAgICAgIENvbnRyaWJ1dG9yLmJ5X25hbWUuZ2V0KAotICAgICAgICAgICAgICAgIG5hbWUsCi0g
ICAgICAgICAgICAgICAgQ29udHJpYnV0b3IobmFtZT1uYW1lLCBlbWFpbHM9W25hbWVdIGlmICdA
JyBpbiBuYW1lIGVsc2UgW10pLAotICAgICAgICAgICAgKSwKLSAgICAgICAgKSBpZiBuYW1lIGVs
c2UgTm9uZQorICAgICAgICBhdXRob3IgPSBzZWxmLmNvbnRyaWJ1dG9ycy5jcmVhdGUobmFtZSwg
bmFtZSkgaWYgbmFtZSBhbmQgJ0AnIGluIG5hbWUgZWxzZSBzZWxmLmNvbnRyaWJ1dG9ycy5jcmVh
dGUobmFtZSkKIAogICAgICAgICByZXR1cm4gQ29tbWl0KAogICAgICAgICAgICAgcmV2aXNpb249
aW50KHJldmlzaW9uKSwKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L3Rlc3QvY29tbWl0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvY29tbWl0X3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAyNzA0MDApCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2NvbW1pdF91bml0dGVzdC5weQkod29ya2luZyBj
b3B5KQpAQCAtMTk1LDIxICsxOTUsMTYgQEAgUFJJTlRFRAogICAgICAgICAgICAgQ29tbWl0KHJl
dmlzaW9uPTEsIHRpbWVzdGFtcD0xMDApLl9fY21wX18oQ29tbWl0KGlkZW50aWZpZXI9MiwgdGlt
ZXN0YW1wPTEwMCkpCiAKICAgICBkZWYgdGVzdF9jb250cmlidXRvcihzZWxmKToKLSAgICAgICAg
Q29udHJpYnV0b3IuY2xlYXIoKQogICAgICAgICBjb250cmlidXRvciA9IENvbnRyaWJ1dG9yLmZy
b21fc2NtX2xvZygnQXV0aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPicp
CiAKICAgICAgICAgY29tbWl0ID0gQ29tbWl0KHJldmlzaW9uPTEsIGlkZW50aWZpZXI9MSwgYXV0
aG9yPWNvbnRyaWJ1dG9yKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5hdXRob3Is
IGNvbnRyaWJ1dG9yKQogCi0gICAgICAgIGNvbW1pdCA9IENvbW1pdChyZXZpc2lvbj0xLCBpZGVu
dGlmaWVyPTEsIGF1dGhvcj0nSm9uYXRoYW4gQmVkYXJkJykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjb21taXQuYXV0aG9yLCBjb250cmlidXRvcikKLQotICAgICAgICBjb21taXQgPSBDb21t
aXQocmV2aXNpb249MSwgaWRlbnRpZmllcj0xLCBhdXRob3I9J2piZWRhcmRAYXBwbGUuY29tJykK
KyAgICAgICAgY29tbWl0ID0gQ29tbWl0KHJldmlzaW9uPTEsIGlkZW50aWZpZXI9MSwgYXV0aG9y
PUNvbnRyaWJ1dG9yLkVuY29kZXIoKS5kZWZhdWx0KGNvbnRyaWJ1dG9yKSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb21taXQuYXV0aG9yLCBjb250cmlidXRvcikKIAogICAgIGRlZiB0ZXN0
X2ludmFsaWRfY29udHJpYnV0b3Ioc2VsZik6Ci0gICAgICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkK
LSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgd2l0
aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgQ29tbWl0KHJldmlz
aW9uPTEsIGlkZW50aWZpZXI9MSwgYXV0aG9yPSdKb25hdGhhbiBCZWRhcmQnKQogCiAgICAgZGVm
IHRlc3RfYnJhbmNoX3BvaW50KHNlbGYpOgpAQCAtMjE4LDcgKzIxMyw2IEBAIFBSSU5URUQKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTIzNC4wQGJyYW5jaC1hJywgc3RyKENvbW1pdChicmFu
Y2hfcG9pbnQ9MTIzNCwgaWRlbnRpZmllcj0wLCBicmFuY2g9J2JyYW5jaC1hJykpKQogCiAgICAg
ZGVmIHRlc3RfanNvbl9lbmNvZGUoc2VsZik6Ci0gICAgICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkK
ICAgICAgICAgY29udHJpYnV0b3IgPSBDb250cmlidXRvci5mcm9tX3NjbV9sb2coJ0F1dGhvcjog
Sm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4nKQogCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RGljdEVxdWFsKApAQCAtMjQzLDcgKzIzNyw2IEBAIFBSSU5URUQKICAgICAgICAgKQogCiAg
ICAgZGVmIHRlc3RfanNvbl9kZWNvZGUoc2VsZik6Ci0gICAgICAgIENvbnRyaWJ1dG9yLmNsZWFy
KCkKICAgICAgICAgY29udHJpYnV0b3IgPSBDb250cmlidXRvci5mcm9tX3NjbV9sb2coJ0F1dGhv
cjogSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4nKQogCiAgICAgICAgIGNvbW1p
dF9hID0gQ29tbWl0KApAQCAtMjUxLDcgKzI0NCw3IEBAIFBSSU5URUQKICAgICAgICAgICAgIGhh
c2g9J2MzYmQ3ODRmOGI4OGJkMDNmNjQ0NjdkZGQzMzA0ZWQ4YmUyOGFjYmUnLAogICAgICAgICAg
ICAgaWRlbnRpZmllcj0nMUBtYWluJywKICAgICAgICAgICAgIHRpbWVzdGFtcD0xMDAwLAotICAg
ICAgICAgICAgYXV0aG9yPWNvbnRyaWJ1dG9yLAorICAgICAgICAgICAgYXV0aG9yPUNvbnRyaWJ1
dG9yLkVuY29kZXIoKS5kZWZhdWx0KGNvbnRyaWJ1dG9yKSwKICAgICAgICAgICAgIG1lc3NhZ2U9
J01lc3NhZ2UnCiAgICAgICAgICkKIApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jb250cmlidXRvcl91bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90
ZXN0L2NvbnRyaWJ1dG9yX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzA0MDApCisrKyBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2NvbnRyaWJ1dG9y
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2OCArMjksNjAgQEAgZnJvbSB3ZWJr
aXRzY21weSBpbXBvcnQgQ29udHJpYnV0b3IKIAogY2xhc3MgVGVzdENvbnRyaWJ1dG9yKHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9naXRfbG9nKHNlbGYpOgotICAgICAgICBDb250
cmlidXRvci5jbGVhcigpCiAgICAgICAgIGNvbnRyaWJ1dG9yID0gQ29udHJpYnV0b3IuZnJvbV9z
Y21fbG9nKCdBdXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+JykKIAog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLm5hbWUsICdKb25hdGhhbiBCZWRh
cmQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLmVtYWlscywgWydqYmVk
YXJkQGFwcGxlLmNvbSddKQogCiAgICAgZGVmIHRlc3RfZ2l0X3N2bl9sb2coc2VsZik6Ci0gICAg
ICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkKICAgICAgICAgY29udHJpYnV0b3IgPSBDb250cmlidXRv
ci5mcm9tX3NjbV9sb2coJ0F1dGhvcjogSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNv
bUAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmM+JykKIAogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLm5hbWUsICdKb25hdGhhbiBCZWRhcmQnKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLmVtYWlscywgWydqYmVkYXJkQGFwcGxlLmNv
bSddKQogCiAgICAgZGVmIHRlc3RfZ2l0X25vX2F1dGhvcihzZWxmKToKLSAgICAgICAgQ29udHJp
YnV0b3IuY2xlYXIoKQogICAgICAgICBjb250cmlidXRvciA9IENvbnRyaWJ1dG9yLmZyb21fc2Nt
X2xvZygnQXV0aG9yOiBBdXRvbWF0ZWQgQ2hlY2tpbiA8ZGV2bnVsbD4nKQogICAgICAgICBzZWxm
LmFzc2VydElzTm9uZShjb250cmlidXRvcikKIAogICAgIGRlZiB0ZXN0X2dpdF9zdm5fbm9fYXV0
aG9yKHNlbGYpOgotICAgICAgICBDb250cmlidXRvci5jbGVhcigpCiAgICAgICAgIGNvbnRyaWJ1
dG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdBdXRob3I6IChubyBhdXRob3IpIDwobm8g
YXV0aG9yKUAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmM+JykKICAgICAgICAg
c2VsZi5hc3NlcnRJc05vbmUoY29udHJpYnV0b3IpCiAKICAgICBkZWYgdGVzdF9zdm5fbG9nKHNl
bGYpOgotICAgICAgICBDb250cmlidXRvci5jbGVhcigpCiAgICAgICAgIGNvbnRyaWJ1dG9yID0g
Q29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdyMjY2NzUxIHwgamJlZGFyZEBhcHBsZS5jb20gfCAy
MDIwLTA5LTA4IDE0OjMzOjQyIC0wNzAwIChUdWUsIDA4IFNlcCAyMDIwKSB8IDEwIGxpbmVzJykK
IAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLm5hbWUsICdqYmVkYXJkQGFw
cGxlLmNvbScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udHJpYnV0b3IuZW1haWxzLCBb
J2piZWRhcmRAYXBwbGUuY29tJ10pCiAKICAgICBkZWYgdGVzdF9zaG9ydF9zdm5fbG9nKHNlbGYp
OgotICAgICAgICBDb250cmlidXRvci5jbGVhcigpCiAgICAgICAgIGNvbnRyaWJ1dG9yID0gQ29u
dHJpYnV0b3IuZnJvbV9zY21fbG9nKCdyMjY2NzUxIHwgamJlZGFyZEBhcHBsZS5jb20gfCAyMDIw
LTA5LTA4IDE0OjMzOjQyIC0wNzAwIChUdWUsIDA4IFNlcCAyMDIwKSB8IDEgbGluZScpCiAKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250cmlidXRvci5uYW1lLCAnamJlZGFyZEBhcHBsZS5j
b20nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLmVtYWlscywgWydqYmVk
YXJkQGFwcGxlLmNvbSddKQogCiAgICAgZGVmIHRlc3Rfc3ZuX3BhdGNoX2J5X2xvZyhzZWxmKToK
LSAgICAgICAgQ29udHJpYnV0b3IuY2xlYXIoKQogICAgICAgICBjb250cmlidXRvciA9IENvbnRy
aWJ1dG9yLmZyb21fc2NtX2xvZygnUGF0Y2ggYnkgSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFw
cGxlLmNvbT4gb24gMjAyMC0wOS0xMCcpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250
cmlidXRvci5uYW1lLCAnSm9uYXRoYW4gQmVkYXJkJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjb250cmlidXRvci5lbWFpbHMsIFsnamJlZGFyZEBhcHBsZS5jb20nXSkKIAogICAgIGRlZiB0
ZXN0X2F1dGhvcl9tYXBwaW5nKHNlbGYpOgotICAgICAgICBDb250cmlidXRvci5jbGVhcigpCi0g
ICAgICAgIENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZygnQXV0aG9yOiBKb25hdGhhbiBCZWRhcmQg
PGpiZWRhcmRAYXBwbGUuY29tPicpCi0gICAgICAgIGNvbnRyaWJ1dG9yID0gQ29udHJpYnV0b3Iu
ZnJvbV9zY21fbG9nKCdBdXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEB3ZWJraXQub3Jn
PicpCisgICAgICAgIGJhbmsgPSBDb250cmlidXRvci5CYW5rKCkKKyAgICAgICAgQ29udHJpYnV0
b3IuZnJvbV9zY21fbG9nKCdBdXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5j
b20+JywgYmFuaykKKyAgICAgICAgY29udHJpYnV0b3IgPSBDb250cmlidXRvci5mcm9tX3NjbV9s
b2coJ0F1dGhvcjogSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQHdlYmtpdC5vcmc+JywgYmFuaykK
IAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLm5hbWUsICdKb25hdGhhbiBC
ZWRhcmQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLmVtYWlscywgWydq
YmVkYXJkQGFwcGxlLmNvbScsICdqYmVkYXJkQHdlYmtpdC5vcmcnXSkKIAogICAgIGRlZiB0ZXN0
X2VtYWlsX21hcHBpbmcoc2VsZik6Ci0gICAgICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkKLSAgICAg
ICAgQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdBdXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJl
ZGFyZEBhcHBsZS5jb20+JykKLSAgICAgICAgY29udHJpYnV0b3IgPSBDb250cmlidXRvci5mcm9t
X3NjbV9sb2coJ3IyNjY3NTEgfCBqYmVkYXJkQGFwcGxlLmNvbSB8IDIwMjAtMDktMDggMTQ6MzM6
NDIgLTA3MDAgKFR1ZSwgMDggU2VwIDIwMjApIHwgMTAgbGluZXMnKQorICAgICAgICBiYW5rID0g
Q29udHJpYnV0b3IuQmFuaygpCisgICAgICAgIENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZygnQXV0
aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPicsIGJhbmspCisgICAgICAg
IGNvbnRyaWJ1dG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdyMjY2NzUxIHwgamJlZGFy
ZEBhcHBsZS5jb20gfCAyMDIwLTA5LTA4IDE0OjMzOjQyIC0wNzAwIChUdWUsIDA4IFNlcCAyMDIw
KSB8IDEwIGxpbmVzJywgYmFuaykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1
dG9yLm5hbWUsICdKb25hdGhhbiBCZWRhcmQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bnRyaWJ1dG9yLmVtYWlscywgWydqYmVkYXJkQGFwcGxlLmNvbSddKQogCiAgICAgZGVmIHRlc3Rf
aW52YWxpZF9sb2coc2VsZik6Ci0gICAgICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkKICAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIENvbnRyaWJ1
dG9yLmZyb21fc2NtX2xvZygnSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4nKQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415416</attachid>
            <date>2020-12-04 08:03:19 -0800</date>
            <delta_ts>2020-12-04 12:04:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217732-20201204100318.patch</filename>
            <type>text/plain</type>
            <size>26302</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3MDQzMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY1IEBACisyMDIwLTEyLTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbZ2l0LXdlYmtpdF0gVXNlIGNvbnRyaWJ1dG9ycy5qc29uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MzIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzcwMzA5NTE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIEdpdCwgU3ZuIGFuZCBv
bGQgY29tbWl0cyBtZWFucyB0aGF0IG91ciBjYW5vbmljYWwgcmVjb3JkIG9mCisgICAgICAgIGNv
bW1pdCBhdXRob3JzIGlzIHNvbWV3aGF0IGluY29tcGxldGUuIGNvbnRyaWJ1dG9ycy5qc29uIGhh
cyBtb3N0IG9mIHRoZSBpbmZvcm1hdGlvbgorICAgICAgICB3ZSBhcmUgbWlzc2luZywgd2Ugc2hv
dWxkIHJlbHkgb24gaXQgdG8gbWFwIG5vbi1zdGFuZGFyZCBhdXRob3IgbmFtZXMgdG8gdGhlaXIg
Y2Fub25pY2FsCisgICAgICAgIG5hbWVzIGFuZCBlbWFpbCBhZGRyZXNzZXMuCisKKyAgICAgICAg
QWRkaXRpb25hbGx5LCBtYWtpbmcgdGhlIHJlY29yZCBvZiBDb250cmlidXRvcnMgb3duZWQgYnkg
dGhlIHJlcG9zaXRvcnkgaW5zdGVhZCBvZiBiZWluZyBnbG9iYWwKKyAgICAgICAgdG8gdGhlIGVu
dGlyZSBwcm9jZXNzLgorCisgICAgICAgICogU2NyaXB0cy9naXQtd2Via2l0OiBQYXJzZSBjb250
cmlidXRvcnMuanNvbiBhbmQgYWRkIGl0IHRvIGEgQ29udHJpYnV0b3IuTWFwcGluZy4KKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9fX2luaXRfXy5w
eTogQnVtcCB2ZXJzaW9uLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L2NvbW1pdC5weToKKyAgICAgICAgKENvbW1pdCk6IENvbnRyaWJ1dG9yIGNs
YXNzIG9iamVjdCBubyBsb25nZXIgb3ducyByZWNvcmQgb2YgY29udHJpYnV0b3JzLgorICAgICAg
ICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbnRyaWJ1dG9y
LnB5OgorICAgICAgICAoQ29udHJpYnV0b3IpOgorICAgICAgICAoQ29udHJpYnV0b3IuTWFwcGlu
Zyk6IERpY3Rpb25hcnkgbWFwcGluZyBDb250cmlidXRvcnMgYW5kIHRoZWlyIHBvdGVudGlhbCBh
bGlhc2VzLgorICAgICAgICAoQ29udHJpYnV0b3IuTWFwcGluZy5fX2luaXRfXyk6CisgICAgICAg
IChDb250cmlidXRvci5NYXBwaW5nLmFkZCk6IEFkZCBDb250cmlidXRvciB0byBtYXBwaW5nLgor
ICAgICAgICAoQ29udHJpYnV0b3IuTWFwcGluZy5jcmVhdGUpOiBGaW5kIG9yIGNyZWF0ZSBhIGNv
bnRyaWJ1dG9yIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGFuZCBlbWFpbAorICAgICAgICBhZGRy
ZXNzZXMgYW5kIGJpbmQgaXQgdG8gdGhlIHJlY29yZCBvZiBjb250cmlidXRvcnMuCisgICAgICAg
IChDb250cmlidXRvci5mcm9tX3NjbV9sb2cpOiBMZXZlcmFnZSBDb250cmlidXRvci5NYXBwaW5n
IHByb3ZpZGVkIGJ5IGNhbGxlci4KKyAgICAgICAgKENvbnRyaWJ1dG9yLmNsZWFyKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9s
b2NhbC9naXQucHk6CisgICAgICAgIChHaXQuX19pbml0X18pOiBJbnN0YW50aWF0ZSByZXBvc2l0
b3J5IHdpdGggZXhpc3RpbmcgQ29udHJpYnV0b3IuTWFwcGluZy4KKyAgICAgICAgKEdpdC5jb21t
aXQpOiBSZXBvc2l0b3J5IG5vdyBvd25zIHRoZSByZWNvcmQgb2YgY29udHJpYnV0b3JzLgorICAg
ICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3Nj
bS5weToKKyAgICAgICAgKFNjbS5mcm9tX3BhdGgpOiBJbnN0YW50aWF0ZSByZXBvc2l0b3J5IHdp
dGggZXhpc3RpbmcgQ29udHJpYnV0b3IuTWFwcGluZy4KKyAgICAgICAgKFNjbS5fX2luaXRfXyk6
IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L2xvY2FsL3N2bi5weToKKyAgICAgICAgKFN2bi5fX2luaXRfXyk6IEluc3RhbnRpYXRlIHJl
cG9zaXRvcnkgd2l0aCBleGlzdGluZyBDb250cmlidXRvci5NYXBwaW5nLgorICAgICAgICAoU3Zu
LmNvbW1pdCk6IFJlcG9zaXRvcnkgbm93IG93bnMgdGhlIHJlY29yZCBvZiBjb250cmlidXRvcnMu
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJv
Z3JhbS5weToKKyAgICAgICAgKG1haW4pOiBBbGxvdyBjYWxsZXIgdG8gcGFzcyBhbiBleGlzdGlu
ZyByZWNvcmQgb2YgY29udHJpYnV0b3JzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9zY20ucHk6CisgICAgICAgIChTY20uZnJvbV91
cmwpOiBJbnN0YW50aWF0ZSByZXBvc2l0b3J5IHdpdGggZXhpc3RpbmcgQ29udHJpYnV0b3IuTWFw
cGluZy4KKyAgICAgICAgKFNjbS5fX2luaXRfXyk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9zdm4ucHk6CisgICAgICAg
IChTdm4uX19pbml0X18pOiBJbnN0YW50aWF0ZSByZXBvc2l0b3J5IHdpdGggZXhpc3RpbmcgQ29u
dHJpYnV0b3IuTWFwcGluZy4KKyAgICAgICAgKFN2bi5jb21taXQpOiBSZXBvc2l0b3J5IG5vdyBv
d25zIHRoZSByZWNvcmQgb2YgY29udHJpYnV0b3JzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3NjbV9iYXNlLnB5OgorICAgICAgICAoU2NtQmFz
ZS5fX2luaXRfXyk6IEluc3RhbnRpYXRlIHJlcG9zaXRvcnkgd2l0aCBleGlzdGluZyBDb250cmli
dXRvci5NYXBwaW5nLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L3Rlc3QvY29tbWl0X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvY29udHJpYnV0b3JfdW5pdHRlc3Qu
cHk6CisgICAgICAgIChUZXN0Q29udHJpYnV0b3IudGVzdF9naXRfbG9nKTogTm8gbW9yZSBnbG9i
YWwgY29udHJpYnV0b3IgcmVjb3JkLgorICAgICAgICAoVGVzdENvbnRyaWJ1dG9yLnRlc3RfZ2l0
X3N2bl9sb2cpOiBEaXR0by4KKyAgICAgICAgKFRlc3RDb250cmlidXRvci50ZXN0X2dpdF9ub19h
dXRob3IpOiBEaXR0by4KKyAgICAgICAgKFRlc3RDb250cmlidXRvci50ZXN0X2dpdF9zdm5fbm9f
YXV0aG9yKTogRGl0dG8uCisgICAgICAgIChUZXN0Q29udHJpYnV0b3IudGVzdF9zdm5fbG9nKTog
RGl0dG8uCisgICAgICAgIChUZXN0Q29udHJpYnV0b3IudGVzdF9zaG9ydF9zdm5fbG9nKTogRGl0
dG8uCisgICAgICAgIChUZXN0Q29udHJpYnV0b3IudGVzdF9zdm5fcGF0Y2hfYnlfbG9nKTogRGl0
dG8uCisgICAgICAgIChUZXN0Q29udHJpYnV0b3IudGVzdF9hdXRob3JfbWFwcGluZyk6IENvbnRy
aWJ1dG9yIHJlY29yZCBpcyBvd25lZCBieSB0aGUgY2FsbGVyIG9mIHRoZSBjYWxsZXIKKyAgICAg
ICAgb2YgQ29udHJpYnV0b3IgbWFuYWdlbWVudC4KKyAgICAgICAgKFRlc3RDb250cmlidXRvci50
ZXN0X2VtYWlsX21hcHBpbmcpOiBEaXR0by4KKyAgICAgICAgKFRlc3RDb250cmlidXRvci50ZXN0
X2ludmFsaWRfbG9nKTogTm8gbW9yZSBnbG9iYWwgY29udHJpYnV0b3IgcmVjb3JkLgorCiAyMDIw
LTEyLTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgSW50cm9kdWNlIG5ldyBkb3dubG9hZCBTUEkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvZ2l0
LXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2dpdC13ZWJraXQJKHJldmlzaW9u
IDI3MDQzMCkKKysrIFRvb2xzL1NjcmlwdHMvZ2l0LXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAt
MjMsMTAgKzIzLDI0IEBACiAjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgb3MKLWltcG9ydCB3ZWJraXRweQogaW1w
b3J0IHN5cwogCi1mcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBwcm9ncmFtCitmcm9tIHdlYmtpdHB5
LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlzdAorZnJvbSB3ZWJr
aXRzY21weSBpbXBvcnQgcHJvZ3JhbSwgQ29udHJpYnV0b3IKIAotc3lzLmV4aXQocHJvZ3JhbS5t
YWluKHBhdGg9b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkpCisKK2lmICdfX21haW5fXycgPT0g
X19uYW1lX186CisgICAgY29udHJpYnV0b3JzID0gQ29udHJpYnV0b3IuTWFwcGluZygpCisgICAg
Zm9yIGNvbnRyaWJ1dG9yIGluIENvbW1pdHRlckxpc3QoKS5jb250cmlidXRvcnMoKToKKyAgICAg
ICAgYyA9IGNvbnRyaWJ1dG9ycy5jcmVhdGUoY29udHJpYnV0b3IuZnVsbF9uYW1lLCAqY29udHJp
YnV0b3IuZW1haWxzKQorICAgICAgICBpZiBub3QgYzoKKyAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgIGZvciBhbGlhcyBpbiBjb250cmlidXRvci5hbGlhc2VzIG9yIFtdOgorICAgICAgICAg
ICAgaWYgYWxpYXMgbm90IGluIGNvbnRyaWJ1dG9yczoKKyAgICAgICAgICAgICAgICBjb250cmli
dXRvcnNbYWxpYXNdID0gYworICAgICAgICBmb3IgbmljayBpbiBjb250cmlidXRvci5pcmNfbmlj
a25hbWVzIG9yIFtdOgorICAgICAgICAgICAgaWYgbmljayBub3QgaW4gY29udHJpYnV0b3JzOgor
ICAgICAgICAgICAgICAgIGNvbnRyaWJ1dG9yc1tuaWNrXSA9IGMKKworICAgIHN5cy5leGl0KHBy
b2dyYW0ubWFpbihwYXRoPW9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksIGNvbnRyaWJ1dG9ycz1j
b250cmlidXRvcnMpKQogCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS9fX2luaXRfXy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9fX2luaXRfXy5weQkocmV2aXNpb24gMjcw
NDMwKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
X19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgZXhjZXB0IEltcG9y
dEVycm9yOgogICAgICAgICAiUGxlYXNlIGluc3RhbGwgd2Via2l0Y29yZXB5IHdpdGggYHBpcCBp
bnN0YWxsIHdlYmtpdGNvcmVweSAtLWV4dHJhLWluZGV4LXVybCA8cGFja2FnZSBpbmRleCBVUkw+
YCIKICAgICApCiAKLXZlcnNpb24gPSBWZXJzaW9uKDAsIDQsIDUpCit2ZXJzaW9uID0gVmVyc2lv
bigwLCA1LCAwKQogCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdkYXRldXRpbCcsIFZl
cnNpb24oMiwgOCwgMSksIHB5cGlfbmFtZT0ncHl0aG9uLWRhdGV1dGlsJykpCiBBdXRvSW5zdGFs
bC5yZWdpc3RlcihQYWNrYWdlKCdmYXN0ZW5lcnMnLCBWZXJzaW9uKDAsIDE1LCAwKSkpCkluZGV4
OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9jb21taXQu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvY29tbWl0LnB5CShyZXZpc2lvbiAyNzA0MzApCisrKyBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9jb21taXQucHkJKHdvcmtpbmcgY29weSkK
QEAgLTE4NywxNCArMTg3LDcgQEAgY2xhc3MgQ29tbWl0KG9iamVjdCk6CiAgICAgICAgICAgICBy
YWlzZSBUeXBlRXJyb3IoIkV4cGVjdGVkICd0aW1lc3RhbXAnIHRvIGJlIG9mIHR5cGUgaW50LCBn
b3QgJ3t9JyIuZm9ybWF0KHRpbWVzdGFtcCkpCiAgICAgICAgIHNlbGYudGltZXN0YW1wID0gdGlt
ZXN0YW1wCiAKLSAgICAgICAgaWYgYXV0aG9yIGFuZCBpc2luc3RhbmNlKGF1dGhvciwgc2l4LnN0
cmluZ190eXBlcyk6Ci0gICAgICAgICAgICBzZWxmLmF1dGhvciA9IENvbnRyaWJ1dG9yLmJ5X2Vt
YWlsLmdldCgKLSAgICAgICAgICAgICAgICBhdXRob3IsCi0gICAgICAgICAgICAgICAgQ29udHJp
YnV0b3IuYnlfbmFtZS5nZXQoYXV0aG9yKSwKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGlm
IG5vdCBzZWxmLmF1dGhvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIne30n
IGRvZXMgbm90IG1hdGNoIGEga25vd24gY29udHJpYnV0b3IiKQotICAgICAgICBlbGlmIGF1dGhv
ciBhbmQgaXNpbnN0YW5jZShhdXRob3IsIGRpY3QpIGFuZCBhdXRob3IuZ2V0KCduYW1lJyk6Cisg
ICAgICAgIGlmIGF1dGhvciBhbmQgaXNpbnN0YW5jZShhdXRob3IsIGRpY3QpIGFuZCBhdXRob3Iu
Z2V0KCduYW1lJyk6CiAgICAgICAgICAgICBzZWxmLmF1dGhvciA9IENvbnRyaWJ1dG9yKGF1dGhv
ci5nZXQoJ25hbWUnKSwgYXV0aG9yLmdldCgnZW1haWxzJykpCiAgICAgICAgIGVsaWYgYXV0aG9y
IGFuZCBub3QgaXNpbnN0YW5jZShhdXRob3IsIENvbnRyaWJ1dG9yKToKICAgICAgICAgICAgIHJh
aXNlIFR5cGVFcnJvcigiRXhwZWN0ZWQgJ2F1dGhvcicgdG8gYmUgb2YgdHlwZSB7fSwgZ290ICd7
fSciLmZvcm1hdChDb250cmlidXRvciwgYXV0aG9yKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbnRyaWJ1dG9yLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbnRy
aWJ1dG9yLnB5CShyZXZpc2lvbiAyNzA0MzApCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS9jb250cmlidXRvci5weQkod29ya2luZyBjb3B5KQpAQCAt
MjMsNiArMjMsNyBAQAogaW1wb3J0IGpzb24KIGltcG9ydCByZQogCitmcm9tIGNvbGxlY3Rpb25z
IGltcG9ydCBkZWZhdWx0ZGljdAogZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGls
cwogCiAKQEAgLTMyLDkgKzMzLDYgQEAgY2xhc3MgQ29udHJpYnV0b3Iob2JqZWN0KToKICAgICBT
Vk5fQVVUSE9SX1JFID0gcmUuY29tcGlsZShyJ3JcZCsgXHwgKD9QPGVtYWlsPi4qKSBcfCAoP1A8
ZGF0ZT4uKikgXHwgXGQrIGxpbmVzPycpCiAgICAgU1ZOX1BBVENIX0ZST01fUkUgPSByZS5jb21w
aWxlKHInUGF0Y2ggYnkgKD9QPGF1dGhvcj4uKikgPCg/UDxlbWFpbD4uKik+IG9uIFxkKy1cZCst
XGQrJykKIAotICAgIGJ5X2VtYWlsID0gZGljdCgpCi0gICAgYnlfbmFtZSA9IGRpY3QoKQotCiAg
ICAgY2xhc3MgRW5jb2Rlcihqc29uLkpTT05FbmNvZGVyKToKIAogICAgICAgICBkZWYgZGVmYXVs
dChzZWxmLCBvYmopOgpAQCAtNDcsMTMgKzQ1LDQzIEBAIGNsYXNzIENvbnRyaWJ1dG9yKG9iamVj
dCk6CiAKICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAotICAgIEBjbGFzc21ldGhvZAotICAg
IGRlZiBjbGVhcihjbHMpOgotICAgICAgICBjbHMuYnlfZW1haWwgPSBkaWN0KCkKLSAgICAgICAg
Y2xzLmJ5X25hbWUgPSBkaWN0KCkKKyAgICBjbGFzcyBNYXBwaW5nKGRlZmF1bHRkaWN0KToKKyAg
ICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgc3VwZXIoQ29udHJpYnV0b3Iu
TWFwcGluZywgc2VsZikuX19pbml0X18obGFtYmRhOiBOb25lKQorCisgICAgICAgIGRlZiBhZGQo
c2VsZiwgY29udHJpYnV0b3IpOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29udHJp
YnV0b3IsIENvbnRyaWJ1dG9yKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIn
e30nIGlzIG5vdCBhIENvbnRyaWJ1dG9yIG9iamVjdCIuZm9ybWF0KHR5cGUoY29udHJpYnV0b3Ip
KSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNyZWF0ZShuYW1lPWNvbnRyaWJ1dG9yLm5hbWUs
ICpjb250cmlidXRvci5lbWFpbHMpCisKKyAgICAgICAgZGVmIGNyZWF0ZShzZWxmLCBuYW1lPU5v
bmUsICplbWFpbHMpOgorICAgICAgICAgICAgZW1haWxzID0gW2VtYWlsIGZvciBlbWFpbCBpbiBl
bWFpbHMgb3IgW11dCisgICAgICAgICAgICBpZiBub3QgbmFtZSBhbmQgbm90IGVtYWlsczoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICBjb250cmlidXRvciA9IE5v
bmUKKyAgICAgICAgICAgIGZvciBhcmd1bWVudCBpbiBbbmFtZV0gKyAoZW1haWxzIG9yIFtdKToK
KyAgICAgICAgICAgICAgICBjb250cmlidXRvciA9IHNlbGZbYXJndW1lbnRdCisgICAgICAgICAg
ICAgICAgaWYgY29udHJpYnV0b3I6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAg
ICAgICAgIGlmIGNvbnRyaWJ1dG9yOgorICAgICAgICAgICAgICAgIGZvciBlbWFpbCBpbiBlbWFp
bHMgb3IgW106CisgICAgICAgICAgICAgICAgICAgIGlmIGVtYWlsIG5vdCBpbiBjb250cmlidXRv
ci5lbWFpbHM6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250cmlidXRvci5lbWFpbHMuYXBw
ZW5kKGVtYWlsKQorICAgICAgICAgICAgICAgIGlmIGNvbnRyaWJ1dG9yLm5hbWUgaW4gY29udHJp
YnV0b3IuZW1haWxzIGFuZCBuYW1lOgorICAgICAgICAgICAgICAgICAgICBjb250cmlidXRvci5u
YW1lID0gbmFtZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjb250cmlidXRv
ciA9IENvbnRyaWJ1dG9yKG5hbWUgb3IgZW1haWxzWzBdLCBlbWFpbHM9ZW1haWxzKQorCisgICAg
ICAgICAgICBzZWxmW2NvbnRyaWJ1dG9yLm5hbWVdID0gY29udHJpYnV0b3IKKyAgICAgICAgICAg
IGZvciBlbWFpbCBpbiBjb250cmlidXRvci5lbWFpbHMgb3IgW106CisgICAgICAgICAgICAgICAg
c2VsZltlbWFpbF0gPSBjb250cmlidXRvcgorICAgICAgICAgICAgcmV0dXJuIGNvbnRyaWJ1dG9y
CisKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tX3NjbV9sb2coY2xzLCBsaW5lKToK
KyAgICBkZWYgZnJvbV9zY21fbG9nKGNscywgbGluZSwgY29udHJpYnV0b3JzPU5vbmUpOgogICAg
ICAgICBlbWFpbCA9IE5vbmUKICAgICAgICAgYXV0aG9yID0gTm9uZQogCkBAIC03NSwxOCArMTAz
LDkgQEAgY2xhc3MgQ29udHJpYnV0b3Iob2JqZWN0KToKICAgICAgICAgaWYgbm90IGVtYWlsIGFu
ZCBub3QgYXV0aG9yOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgICAgICBjb250cmli
dXRvciA9IGNscy5ieV9uYW1lLmdldChhdXRob3Igb3IgZW1haWwpCi0gICAgICAgIGlmIG5vdCBj
b250cmlidXRvcjoKLSAgICAgICAgICAgIGNvbnRyaWJ1dG9yID0gY2xzLmJ5X2VtYWlsLmdldChl
bWFpbCkKLQotICAgICAgICBpZiBub3QgY29udHJpYnV0b3I6Ci0gICAgICAgICAgICBjb250cmli
dXRvciA9IGNscyhhdXRob3Igb3IgZW1haWwsIGVtYWlscz1bZW1haWxdKQotICAgICAgICAgICAg
Y2xzLmJ5X25hbWVbY29udHJpYnV0b3IubmFtZV0gPSBjb250cmlidXRvcgotICAgICAgICBlbGlm
IGVtYWlsIG5vdCBpbiBjb250cmlidXRvci5lbWFpbHM6Ci0gICAgICAgICAgICBjb250cmlidXRv
ci5lbWFpbHMuYXBwZW5kKGVtYWlsKQotCi0gICAgICAgIGNscy5ieV9uYW1lW2VtYWlsXSA9IGNv
bnRyaWJ1dG9yCi0gICAgICAgIHJldHVybiBjb250cmlidXRvcgorICAgICAgICBpZiBjb250cmli
dXRvcnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gY29udHJpYnV0b3JzLmNyZWF0
ZShhdXRob3IsIGVtYWlsKQorICAgICAgICByZXR1cm4gY2xzKGF1dGhvciBvciBlbWFpbCwgZW1h
aWxzPVtlbWFpbF0pCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgZW1haWxzPU5vbmUp
OgogICAgICAgICBzZWxmLm5hbWUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKG5hbWUpCkluZGV4OiBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3Byb2dyYW0ucHkJKHJldmlzaW9uIDI3MDQzMCkKKysrIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0ucHkJKHdvcmtpbmcgY29weSkK
QEAgLTE2Miw3ICsxNjIsNyBAQCBjbGFzcyBDaGVja291dChDb21tYW5kKToKICAgICAgICAgcmV0
dXJuIDAKIAogCi1kZWYgbWFpbihhcmdzPU5vbmUsIHBhdGg9Tm9uZSwgbG9nZ2Vycz1Ob25lKToK
K2RlZiBtYWluKGFyZ3M9Tm9uZSwgcGF0aD1Ob25lLCBsb2dnZXJzPU5vbmUsIGNvbnRyaWJ1dG9y
cz1Ob25lKToKICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuV0FSTklORykK
IAogICAgIGxvZ2dlcnMgPSBbbG9nZ2luZy5nZXRMb2dnZXIoKSwgd2Via2l0Y29yZXB5X2xvZywg
IGxvZ10gKyAobG9nZ2VycyBvciBbXSkKQEAgLTE5MSw4ICsxOTEsOCBAQCBkZWYgbWFpbihhcmdz
PU5vbmUsIHBhdGg9Tm9uZSwgbG9nZ2Vycz1OCiAgICAgcGFyc2VkID0gcGFyc2VyLnBhcnNlX2Fy
Z3MoYXJncz1hcmdzKQogCiAgICAgaWYgcGFyc2VkLnJlcG9zaXRvcnkuc3RhcnRzd2l0aCgoJ2h0
dHBzOi8vJywgJ2h0dHA6Ly8nKSk6Ci0gICAgICAgIHJlcG9zaXRvcnkgPSByZW1vdGUuU2NtLmZy
b21fdXJsKHBhcnNlZC5yZXBvc2l0b3J5KQorICAgICAgICByZXBvc2l0b3J5ID0gcmVtb3RlLlNj
bS5mcm9tX3VybChwYXJzZWQucmVwb3NpdG9yeSwgY29udHJpYnV0b3JzPWNvbnRyaWJ1dG9ycykK
ICAgICBlbHNlOgotICAgICAgICByZXBvc2l0b3J5ID0gbG9jYWwuU2NtLmZyb21fcGF0aChwYXRo
PXBhcnNlZC5yZXBvc2l0b3J5KQorICAgICAgICByZXBvc2l0b3J5ID0gbG9jYWwuU2NtLmZyb21f
cGF0aChwYXRoPXBhcnNlZC5yZXBvc2l0b3J5LCBjb250cmlidXRvcnM9Y29udHJpYnV0b3JzKQog
CiAgICAgcmV0dXJuIHBhcnNlZC5tYWluKGFyZ3M9cGFyc2VkLCByZXBvc2l0b3J5PXJlcG9zaXRv
cnkpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS9zY21fYmFzZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9zY21fYmFzZS5weQkocmV2aXNpb24gMjcwNDMwKQorKysgVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAgaW1wb3J0IHNpeAogaW1wb3J0IHN5cwog
CiBmcm9tIGxvZ2dpbmcgaW1wb3J0IE51bGxIYW5kbGVyCi1mcm9tIHdlYmtpdHNjbXB5IGltcG9y
dCBDb21taXQsIGxvZworZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQ29tbWl0LCBDb250cmlidXRv
ciwgbG9nCiAKIAogY2xhc3MgU2NtQmFzZShvYmplY3QpOgpAQCAtMzgsMTAgKzM4LDExIEBAIGNs
YXNzIFNjbUJhc2Uob2JqZWN0KToKICAgICBERVZfQlJBTkNIRVMgPSByZS5jb21waWxlKHInLipb
KGVuZykoZGV2KShidWcpXS8uKycpCiAgICAgUFJPRF9CUkFOQ0hFUyA9IHJlLmNvbXBpbGUocidc
UystW1xkK1wuXSstYnJhbmNoJykKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZXZfYnJhbmNo
ZXM9Tm9uZSwgcHJvZF9icmFuY2hlcz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGV2
X2JyYW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9uZSwgY29udHJpYnV0b3JzPU5vbmUpOgog
ICAgICAgICBzZWxmLmRldl9icmFuY2hlcyA9IGRldl9icmFuY2hlcyBvciBzZWxmLkRFVl9CUkFO
Q0hFUwogICAgICAgICBzZWxmLnByb2RfYnJhbmNoZXMgPSBwcm9kX2JyYW5jaGVzIG9yIHNlbGYu
UFJPRF9CUkFOQ0hFUwogICAgICAgICBzZWxmLnBhdGggPSBOb25lCisgICAgICAgIHNlbGYuY29u
dHJpYnV0b3JzID0gQ29udHJpYnV0b3IuTWFwcGluZygpIGlmIGNvbnRyaWJ1dG9ycyBpcyBOb25l
IGVsc2UgY29udHJpYnV0b3JzCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfc3ZuKHNlbGYp
OgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
bG9jYWwvZ2l0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQkocmV2aXNpb24gMjcwNDMwKQorKysgVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw4IEBAIGNsYXNzIEdpdChTY20pOgogICAgIGRl
ZiBpc19jaGVja291dChjbHMsIHBhdGgpOgogICAgICAgICByZXR1cm4gcnVuKFtjbHMuZXhlY3V0
YWJsZSgpLCAncmV2LXBhcnNlJywgJy0tc2hvdy10b3BsZXZlbCddLCBjd2Q9cGF0aCwgY2FwdHVy
ZV9vdXRwdXQ9VHJ1ZSkucmV0dXJuY29kZSA9PSAwCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
cGF0aCwgZGV2X2JyYW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9uZSk6Ci0gICAgICAgIHN1
cGVyKEdpdCwgc2VsZikuX19pbml0X18ocGF0aCwgZGV2X2JyYW5jaGVzPWRldl9icmFuY2hlcywg
cHJvZF9icmFuY2hlcz1wcm9kX2JyYW5jaGVzKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRo
LCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJvZF9icmFuY2hlcz1Ob25lLCBjb250cmlidXRvcnM9Tm9u
ZSk6CisgICAgICAgIHN1cGVyKEdpdCwgc2VsZikuX19pbml0X18ocGF0aCwgZGV2X2JyYW5jaGVz
PWRldl9icmFuY2hlcywgcHJvZF9icmFuY2hlcz1wcm9kX2JyYW5jaGVzLCBjb250cmlidXRvcnM9
Y29udHJpYnV0b3JzKQogICAgICAgICBpZiBub3Qgc2VsZi5yb290X3BhdGg6CiAgICAgICAgICAg
ICByYWlzZSBPU0Vycm9yKCdQcm92aWRlZCBwYXRoIHt9IGlzIG5vdCBhIGdpdCByZXBvc2l0b3J5
Jy5mb3JtYXQocGF0aCkpCiAKQEAgLTI2NSw3ICsyNjUsNyBAQCBjbGFzcyBHaXQoU2NtKToKICAg
ICAgICAgICAgIGJyYW5jaF9wb2ludD1icmFuY2hfcG9pbnQsCiAgICAgICAgICAgICBicmFuY2g9
YnJhbmNoLAogICAgICAgICAgICAgdGltZXN0YW1wPWludChjb21taXRfdGltZS5zdGRvdXQubHN0
cmlwKCkpLAotICAgICAgICAgICAgYXV0aG9yPUNvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZyhsb2cu
c3Rkb3V0LnNwbGl0bGluZXMoKVsxXSksCisgICAgICAgICAgICBhdXRob3I9Q29udHJpYnV0b3Iu
ZnJvbV9zY21fbG9nKGxvZy5zdGRvdXQuc3BsaXRsaW5lcygpWzFdLCBzZWxmLmNvbnRyaWJ1dG9y
cyksCiAgICAgICAgICAgICBtZXNzYWdlPSdcbicuam9pbihsaW5lWzQ6XSBmb3IgbGluZSBpbiBs
b2cuc3Rkb3V0LnNwbGl0bGluZXMoKVs0Ol0pIGlmIGluY2x1ZGVfbG9nIGVsc2UgTm9uZSwKICAg
ICAgICAgKQogCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS9sb2NhbC9zY20ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc2NtLnB5CShyZXZpc2lvbiAyNzA0MzAp
CisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2Nh
bC9zY20ucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDE3ICs0OCwxNyBAQCBjbGFzcyBTY20oU2Nt
QmFzZSk6CiAgICAgICAgIHJhaXNlIE9TRXJyb3IoIkNhbm5vdCBmaW5kICd7fScgcHJvZ3JhbSIu
Zm9ybWF0KHByb2dyYW0pKQogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZyb21fcGF0aChj
bHMsIHBhdGgpOgorICAgIGRlZiBmcm9tX3BhdGgoY2xzLCBwYXRoLCAgY29udHJpYnV0b3JzPU5v
bmUpOgogICAgICAgICBmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBsb2NhbAogCiAgICAgICAgIGlm
IGxvY2FsLkdpdC5pc19jaGVja291dChwYXRoKToKLSAgICAgICAgICAgIHJldHVybiBsb2NhbC5H
aXQocGF0aCkKKyAgICAgICAgICAgIHJldHVybiBsb2NhbC5HaXQocGF0aCwgY29udHJpYnV0b3Jz
PWNvbnRyaWJ1dG9ycykKICAgICAgICAgaWYgbG9jYWwuU3ZuLmlzX2NoZWNrb3V0KHBhdGgpOgot
ICAgICAgICAgICAgcmV0dXJuIGxvY2FsLlN2bihwYXRoKQorICAgICAgICAgICAgcmV0dXJuIGxv
Y2FsLlN2bihwYXRoLCBjb250cmlidXRvcnM9Y29udHJpYnV0b3JzKQogICAgICAgICByYWlzZSBP
U0Vycm9yKCIne30nIGlzIG5vdCBhIGtub3duIFNDTSB0eXBlIi5mb3JtYXQocGF0aCkpCiAKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZGV2X2JyYW5jaGVzPU5vbmUsIHByb2RfYnJhbmNo
ZXM9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKFNjbSwgc2VsZikuX19pbml0X18oZGV2X2JyYW5jaGVz
PWRldl9icmFuY2hlcywgcHJvZF9icmFuY2hlcz1wcm9kX2JyYW5jaGVzKQorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwYXRoLCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJvZF9icmFuY2hlcz1Ob25lLCBj
b250cmlidXRvcnM9Tm9uZSk6CisgICAgICAgIHN1cGVyKFNjbSwgc2VsZikuX19pbml0X18oZGV2
X2JyYW5jaGVzPWRldl9icmFuY2hlcywgcHJvZF9icmFuY2hlcz1wcm9kX2JyYW5jaGVzLCBjb250
cmlidXRvcnM9Y29udHJpYnV0b3JzKQogCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhdGgs
IHNpeC5zdHJpbmdfdHlwZXMpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRXhwZWN0
ZWQgJ3BhdGgnIHRvIGJlIGEgc3RyaW5nIHR5cGUsIG5vdCAne30nIi5mb3JtYXQodHlwZShwYXRo
KSkpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS9sb2NhbC9zdm4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5CShyZXZpc2lvbiAyNzA0MzApCisrKyBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zdm4u
cHkJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDggQEAgY2xhc3MgU3ZuKFNjbSk6CiAgICAg
ZGVmIGlzX2NoZWNrb3V0KGNscywgcGF0aCk6CiAgICAgICAgIHJldHVybiBydW4oW2Nscy5leGVj
dXRhYmxlKCksICdpbmZvJ10sIGN3ZD1wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlKS5yZXR1cm5j
b2RlID09IDAKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBkZXZfYnJhbmNoZXM9Tm9u
ZSwgcHJvZF9icmFuY2hlcz1Ob25lKToKLSAgICAgICAgc3VwZXIoU3ZuLCBzZWxmKS5fX2luaXRf
XyhwYXRoLCBkZXZfYnJhbmNoZXM9ZGV2X2JyYW5jaGVzLCBwcm9kX2JyYW5jaGVzPXByb2RfYnJh
bmNoZXMpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIGRldl9icmFuY2hlcz1Ob25lLCBw
cm9kX2JyYW5jaGVzPU5vbmUsIGNvbnRyaWJ1dG9ycz1Ob25lKToKKyAgICAgICAgc3VwZXIoU3Zu
LCBzZWxmKS5fX2luaXRfXyhwYXRoLCBkZXZfYnJhbmNoZXM9ZGV2X2JyYW5jaGVzLCBwcm9kX2Jy
YW5jaGVzPXByb2RfYnJhbmNoZXMsIGNvbnRyaWJ1dG9ycz1jb250cmlidXRvcnMpCiAKICAgICAg
ICAgc2VsZi5fcm9vdF9wYXRoID0gc2VsZi5wYXRoCiAgICAgICAgIHNlbGYuX3Jvb3RfcGF0aCA9
IHNlbGYuaW5mbyhjYWNoZWQ9RmFsc2UpLmdldCgnV29ya2luZyBDb3B5IFJvb3QgUGF0aCcpCkBA
IC0zNzAsMTkgKzM3MCwxMyBAQCBjbGFzcyBTdm4oU2NtKToKICAgICAgICAgICAgICAgICAgICAg
YXV0aG9yX2xpbmUgPSBsaW5lCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAKLSAgICAgICAg
ICAgIGF1dGhvciA9IENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZyhhdXRob3JfbGluZSkKKyAgICAg
ICAgICAgIGF1dGhvciA9IENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZyhhdXRob3JfbGluZSwgc2Vs
Zi5jb250cmlidXRvcnMpCiAgICAgICAgICAgICBtZXNzYWdlID0gJ1xuJy5qb2luKHNwbGl0X2xv
Z1szOi0xXSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIGluY2x1ZGVfbG9nOgogICAg
ICAgICAgICAgICAgIHNlbGYubG9nKCdGYWlsZWQgdG8gY29ubmVjdCB0byByZW1vdGUsIGNhbm5v
dCBjb21wdXRlIGNvbW1pdCBtZXNzYWdlJykKICAgICAgICAgICAgIGVtYWlsID0gaW5mby5nZXQo
J0xhc3QgQ2hhbmdlZCBBdXRob3InKQotICAgICAgICAgICAgYXV0aG9yID0gQ29udHJpYnV0b3Iu
YnlfZW1haWwuZ2V0KAotICAgICAgICAgICAgICAgIGVtYWlsLAotICAgICAgICAgICAgICAgIENv
bnRyaWJ1dG9yLmJ5X25hbWUuZ2V0KAotICAgICAgICAgICAgICAgICAgICBlbWFpbCwKLSAgICAg
ICAgICAgICAgICAgICAgQ29udHJpYnV0b3IobmFtZT1lbWFpbCwgZW1haWxzPVtlbWFpbF0pLAot
ICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICApIGlmIGVtYWlsIGVsc2UgTm9uZQorICAg
ICAgICAgICAgYXV0aG9yID0gc2VsZi5jb250cmlidXRvcnMuY3JlYXRlKGVtYWlsLCBlbWFpbCkg
aWYgJ0AnIGluIGVtYWlsIGVsc2Ugc2VsZi5jb250cmlidXRvcnMuY3JlYXRlKGVtYWlsKQogICAg
ICAgICAgICAgbWVzc2FnZSA9IE5vbmUKIAogICAgICAgICByZXR1cm4gQ29tbWl0KApJbmRleDog
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL3Nj
bS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9yZW1vdGUvc2NtLnB5CShyZXZpc2lvbiAyNzA0MzApCisrKyBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1vdGUvc2NtLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNywxNSArMjcsMTUgQEAgZnJvbSB3ZWJraXRzY21weS5zY21fYmFzZSBp
bXBvcnQgU2NtQmFzZQogCiBjbGFzcyBTY20oU2NtQmFzZSk6CiAgICAgQGNsYXNzbWV0aG9kCi0g
ICAgZGVmIGZyb21fdXJsKGNscywgdXJsKToKKyAgICBkZWYgZnJvbV91cmwoY2xzLCB1cmwsIGNv
bnRyaWJ1dG9ycz1Ob25lKToKICAgICAgICAgZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgcmVtb3Rl
CiAKICAgICAgICAgaWYgcmVtb3RlLlN2bi5pc193ZWJzZXJ2ZXIodXJsKToKLSAgICAgICAgICAg
IHJldHVybiByZW1vdGUuU3ZuKHVybCkKKyAgICAgICAgICAgIHJldHVybiByZW1vdGUuU3ZuKHVy
bCwgY29udHJpYnV0b3JzPWNvbnRyaWJ1dG9ycykKICAgICAgICAgcmFpc2UgT1NFcnJvcigiJ3t9
JyBpcyBub3QgYSBrbm93biBTQ00gc2VydmVyIi5mb3JtYXQodXJsKSkKIAotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCB1cmwsIGRldl9icmFuY2hlcz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5vbmUpOgot
ICAgICAgICBzdXBlcihTY20sIHNlbGYpLl9faW5pdF9fKGRldl9icmFuY2hlcz1kZXZfYnJhbmNo
ZXMsIHByb2RfYnJhbmNoZXM9cHJvZF9icmFuY2hlcykKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
dXJsLCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJvZF9icmFuY2hlcz1Ob25lLCBjb250cmlidXRvcnM9
Tm9uZSk6CisgICAgICAgIHN1cGVyKFNjbSwgc2VsZikuX19pbml0X18oZGV2X2JyYW5jaGVzPWRl
dl9icmFuY2hlcywgcHJvZF9icmFuY2hlcz1wcm9kX2JyYW5jaGVzLCBjb250cmlidXRvcnM9Y29u
dHJpYnV0b3JzKQogCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHVybCwgc2l4LnN0cmluZ190
eXBlcyk6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFeHBlY3RlZCAndXJsJyB0byBi
ZSBhIHN0cmluZyB0eXBlLCBub3QgJ3t9JyIuZm9ybWF0KHR5cGUodXJsKSkpCkluZGV4OiBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1vdGUvc3ZuLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3JlbW90ZS9zdm4ucHkJKHJldmlzaW9uIDI3MDQzMCkKKysrIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9zdm4ucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDEyICs0NiwxMiBAQCBjbGFzcyBTdm4oU2NtKToKICAgICBkZWYgaXNfd2Vi
c2VydmVyKGNscywgdXJsKToKICAgICAgICAgcmV0dXJuIFRydWUgaWYgY2xzLlVSTF9SRS5tYXRj
aCh1cmwpIGVsc2UgRmFsc2UKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIGRldl9icmFu
Y2hlcz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1
cmwsIGRldl9icmFuY2hlcz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5vbmUsIGNvbnRyaWJ1dG9ycz1O
b25lKToKICAgICAgICAgaWYgdXJsWy0xXSAhPSAnLyc6CiAgICAgICAgICAgICB1cmwgKz0gJy8n
CiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX3dlYnNlcnZlcih1cmwpOgogICAgICAgICAgICAgcmFp
c2Ugc2VsZi5FeGNlcHRpb24oIid7fScgaXMgbm90IGEgdmFsaWQgU1ZOIHdlYnNlcnZlciIuZm9y
bWF0KHVybCkpCi0gICAgICAgIHN1cGVyKFN2biwgc2VsZikuX19pbml0X18odXJsLCBkZXZfYnJh
bmNoZXM9ZGV2X2JyYW5jaGVzLCBwcm9kX2JyYW5jaGVzPXByb2RfYnJhbmNoZXMpCisgICAgICAg
IHN1cGVyKFN2biwgc2VsZikuX19pbml0X18odXJsLCBkZXZfYnJhbmNoZXM9ZGV2X2JyYW5jaGVz
LCBwcm9kX2JyYW5jaGVzPXByb2RfYnJhbmNoZXMsIGNvbnRyaWJ1dG9ycz1jb250cmlidXRvcnMp
CiAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5fY2FjaGVfcGF0aCk6CiAgICAgICAg
ICAgICB0cnk6CkBAIC00MjYsMTMgKzQyNiw3IEBAIGNsYXNzIFN2bihTY20pOgogICAgICAgICAg
ICAgbWVzc2FnZSA9IE5vbmUKICAgICAgICAgICAgIG5hbWUgPSBpbmZvLmdldCgnTGFzdCBDaGFu
Z2VkIEF1dGhvcicpCiAKLSAgICAgICAgYXV0aG9yID0gQ29udHJpYnV0b3IuYnlfZW1haWwuZ2V0
KAotICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAgIENvbnRyaWJ1dG9yLmJ5X25hbWUuZ2V0
KAotICAgICAgICAgICAgICAgIG5hbWUsCi0gICAgICAgICAgICAgICAgQ29udHJpYnV0b3IobmFt
ZT1uYW1lLCBlbWFpbHM9W25hbWVdIGlmICdAJyBpbiBuYW1lIGVsc2UgW10pLAotICAgICAgICAg
ICAgKSwKLSAgICAgICAgKSBpZiBuYW1lIGVsc2UgTm9uZQorICAgICAgICBhdXRob3IgPSBzZWxm
LmNvbnRyaWJ1dG9ycy5jcmVhdGUobmFtZSwgbmFtZSkgaWYgbmFtZSBhbmQgJ0AnIGluIG5hbWUg
ZWxzZSBzZWxmLmNvbnRyaWJ1dG9ycy5jcmVhdGUobmFtZSkKIAogICAgICAgICByZXR1cm4gQ29t
bWl0KAogICAgICAgICAgICAgcmV2aXNpb249aW50KHJldmlzaW9uKSwKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvY29tbWl0X3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L3Rlc3QvY29tbWl0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzA0MzApCisr
KyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2Nv
bW1pdF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTk1LDIxICsxOTUsMTYgQEAgUFJJ
TlRFRAogICAgICAgICAgICAgQ29tbWl0KHJldmlzaW9uPTEsIHRpbWVzdGFtcD0xMDApLl9fY21w
X18oQ29tbWl0KGlkZW50aWZpZXI9MiwgdGltZXN0YW1wPTEwMCkpCiAKICAgICBkZWYgdGVzdF9j
b250cmlidXRvcihzZWxmKToKLSAgICAgICAgQ29udHJpYnV0b3IuY2xlYXIoKQogICAgICAgICBj
b250cmlidXRvciA9IENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZygnQXV0aG9yOiBKb25hdGhhbiBC
ZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPicpCiAKICAgICAgICAgY29tbWl0ID0gQ29tbWl0KHJl
dmlzaW9uPTEsIGlkZW50aWZpZXI9MSwgYXV0aG9yPWNvbnRyaWJ1dG9yKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNvbW1pdC5hdXRob3IsIGNvbnRyaWJ1dG9yKQogCi0gICAgICAgIGNvbW1p
dCA9IENvbW1pdChyZXZpc2lvbj0xLCBpZGVudGlmaWVyPTEsIGF1dGhvcj0nSm9uYXRoYW4gQmVk
YXJkJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQuYXV0aG9yLCBjb250cmlidXRv
cikKLQotICAgICAgICBjb21taXQgPSBDb21taXQocmV2aXNpb249MSwgaWRlbnRpZmllcj0xLCBh
dXRob3I9J2piZWRhcmRAYXBwbGUuY29tJykKKyAgICAgICAgY29tbWl0ID0gQ29tbWl0KHJldmlz
aW9uPTEsIGlkZW50aWZpZXI9MSwgYXV0aG9yPUNvbnRyaWJ1dG9yLkVuY29kZXIoKS5kZWZhdWx0
KGNvbnRyaWJ1dG9yKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQuYXV0aG9yLCBj
b250cmlidXRvcikKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfY29udHJpYnV0b3Ioc2VsZik6Ci0g
ICAgICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhWYWx1ZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3Ip
OgogICAgICAgICAgICAgQ29tbWl0KHJldmlzaW9uPTEsIGlkZW50aWZpZXI9MSwgYXV0aG9yPSdK
b25hdGhhbiBCZWRhcmQnKQogCiAgICAgZGVmIHRlc3RfYnJhbmNoX3BvaW50KHNlbGYpOgpAQCAt
MjE4LDcgKzIxMyw2IEBAIFBSSU5URUQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTIzNC4w
QGJyYW5jaC1hJywgc3RyKENvbW1pdChicmFuY2hfcG9pbnQ9MTIzNCwgaWRlbnRpZmllcj0wLCBi
cmFuY2g9J2JyYW5jaC1hJykpKQogCiAgICAgZGVmIHRlc3RfanNvbl9lbmNvZGUoc2VsZik6Ci0g
ICAgICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkKICAgICAgICAgY29udHJpYnV0b3IgPSBDb250cmli
dXRvci5mcm9tX3NjbV9sb2coJ0F1dGhvcjogSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxl
LmNvbT4nKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RGljdEVxdWFsKApAQCAtMjQzLDcgKzIzNyw2
IEBAIFBSSU5URUQKICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfanNvbl9kZWNvZGUoc2VsZik6
Ci0gICAgICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkKICAgICAgICAgY29udHJpYnV0b3IgPSBDb250
cmlidXRvci5mcm9tX3NjbV9sb2coJ0F1dGhvcjogSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFw
cGxlLmNvbT4nKQogCiAgICAgICAgIGNvbW1pdF9hID0gQ29tbWl0KApAQCAtMjUxLDcgKzI0NCw3
IEBAIFBSSU5URUQKICAgICAgICAgICAgIGhhc2g9J2MzYmQ3ODRmOGI4OGJkMDNmNjQ0NjdkZGQz
MzA0ZWQ4YmUyOGFjYmUnLAogICAgICAgICAgICAgaWRlbnRpZmllcj0nMUBtYWluJywKICAgICAg
ICAgICAgIHRpbWVzdGFtcD0xMDAwLAotICAgICAgICAgICAgYXV0aG9yPWNvbnRyaWJ1dG9yLAor
ICAgICAgICAgICAgYXV0aG9yPUNvbnRyaWJ1dG9yLkVuY29kZXIoKS5kZWZhdWx0KGNvbnRyaWJ1
dG9yKSwKICAgICAgICAgICAgIG1lc3NhZ2U9J01lc3NhZ2UnCiAgICAgICAgICkKIApJbmRleDog
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jb250
cmlidXRvcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2NvbnRyaWJ1dG9yX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAyNzA0MzApCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS90ZXN0L2NvbnRyaWJ1dG9yX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2OCArMjksNjAgQEAgZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQ29udHJpYnV0b3IKIAog
Y2xhc3MgVGVzdENvbnRyaWJ1dG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9n
aXRfbG9nKHNlbGYpOgotICAgICAgICBDb250cmlidXRvci5jbGVhcigpCiAgICAgICAgIGNvbnRy
aWJ1dG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdBdXRob3I6IEpvbmF0aGFuIEJlZGFy
ZCA8amJlZGFyZEBhcHBsZS5jb20+JykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRy
aWJ1dG9yLm5hbWUsICdKb25hdGhhbiBCZWRhcmQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbnRyaWJ1dG9yLmVtYWlscywgWydqYmVkYXJkQGFwcGxlLmNvbSddKQogCiAgICAgZGVmIHRl
c3RfZ2l0X3N2bl9sb2coc2VsZik6Ci0gICAgICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkKICAgICAg
ICAgY29udHJpYnV0b3IgPSBDb250cmlidXRvci5mcm9tX3NjbV9sb2coJ0F1dGhvcjogSm9uYXRo
YW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbUAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2
OTFiNGRiZmM+JykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLm5hbWUs
ICdKb25hdGhhbiBCZWRhcmQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9y
LmVtYWlscywgWydqYmVkYXJkQGFwcGxlLmNvbSddKQogCiAgICAgZGVmIHRlc3RfZ2l0X25vX2F1
dGhvcihzZWxmKToKLSAgICAgICAgQ29udHJpYnV0b3IuY2xlYXIoKQogICAgICAgICBjb250cmli
dXRvciA9IENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZygnQXV0aG9yOiBBdXRvbWF0ZWQgQ2hlY2tp
biA8ZGV2bnVsbD4nKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb250cmlidXRvcikKIAog
ICAgIGRlZiB0ZXN0X2dpdF9zdm5fbm9fYXV0aG9yKHNlbGYpOgotICAgICAgICBDb250cmlidXRv
ci5jbGVhcigpCiAgICAgICAgIGNvbnRyaWJ1dG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9n
KCdBdXRob3I6IChubyBhdXRob3IpIDwobm8gYXV0aG9yKUAyNjhmNDVjYy1jZDA5LTA0MTAtYWIz
Yy1kNTI2OTFiNGRiZmM+JykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29udHJpYnV0b3Ip
CiAKICAgICBkZWYgdGVzdF9zdm5fbG9nKHNlbGYpOgotICAgICAgICBDb250cmlidXRvci5jbGVh
cigpCiAgICAgICAgIGNvbnRyaWJ1dG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdyMjY2
NzUxIHwgamJlZGFyZEBhcHBsZS5jb20gfCAyMDIwLTA5LTA4IDE0OjMzOjQyIC0wNzAwIChUdWUs
IDA4IFNlcCAyMDIwKSB8IDEwIGxpbmVzJykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bnRyaWJ1dG9yLm5hbWUsICdqYmVkYXJkQGFwcGxlLmNvbScpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY29udHJpYnV0b3IuZW1haWxzLCBbJ2piZWRhcmRAYXBwbGUuY29tJ10pCiAKICAgICBk
ZWYgdGVzdF9zaG9ydF9zdm5fbG9nKHNlbGYpOgotICAgICAgICBDb250cmlidXRvci5jbGVhcigp
CiAgICAgICAgIGNvbnRyaWJ1dG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdyMjY2NzUx
IHwgamJlZGFyZEBhcHBsZS5jb20gfCAyMDIwLTA5LTA4IDE0OjMzOjQyIC0wNzAwIChUdWUsIDA4
IFNlcCAyMDIwKSB8IDEgbGluZScpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250cmli
dXRvci5uYW1lLCAnamJlZGFyZEBhcHBsZS5jb20nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbnRyaWJ1dG9yLmVtYWlscywgWydqYmVkYXJkQGFwcGxlLmNvbSddKQogCiAgICAgZGVmIHRl
c3Rfc3ZuX3BhdGNoX2J5X2xvZyhzZWxmKToKLSAgICAgICAgQ29udHJpYnV0b3IuY2xlYXIoKQog
ICAgICAgICBjb250cmlidXRvciA9IENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZygnUGF0Y2ggYnkg
Sm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4gb24gMjAyMC0wOS0xMCcpCiAKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250cmlidXRvci5uYW1lLCAnSm9uYXRoYW4gQmVkYXJk
JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250cmlidXRvci5lbWFpbHMsIFsnamJlZGFy
ZEBhcHBsZS5jb20nXSkKIAogICAgIGRlZiB0ZXN0X2F1dGhvcl9tYXBwaW5nKHNlbGYpOgotICAg
ICAgICBDb250cmlidXRvci5jbGVhcigpCi0gICAgICAgIENvbnRyaWJ1dG9yLmZyb21fc2NtX2xv
ZygnQXV0aG9yOiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPicpCi0gICAgICAg
IGNvbnRyaWJ1dG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdBdXRob3I6IEpvbmF0aGFu
IEJlZGFyZCA8amJlZGFyZEB3ZWJraXQub3JnPicpCisgICAgICAgIGNvbnRyaWJ1dG9ycyA9IENv
bnRyaWJ1dG9yLk1hcHBpbmcoKQorICAgICAgICBDb250cmlidXRvci5mcm9tX3NjbV9sb2coJ0F1
dGhvcjogSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4nLCBjb250cmlidXRvcnMp
CisgICAgICAgIGNvbnRyaWJ1dG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdBdXRob3I6
IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEB3ZWJraXQub3JnPicsIGNvbnRyaWJ1dG9ycykKIAog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLm5hbWUsICdKb25hdGhhbiBCZWRh
cmQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLmVtYWlscywgWydqYmVk
YXJkQGFwcGxlLmNvbScsICdqYmVkYXJkQHdlYmtpdC5vcmcnXSkKIAogICAgIGRlZiB0ZXN0X2Vt
YWlsX21hcHBpbmcoc2VsZik6Ci0gICAgICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkKLSAgICAgICAg
Q29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdBdXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFy
ZEBhcHBsZS5jb20+JykKLSAgICAgICAgY29udHJpYnV0b3IgPSBDb250cmlidXRvci5mcm9tX3Nj
bV9sb2coJ3IyNjY3NTEgfCBqYmVkYXJkQGFwcGxlLmNvbSB8IDIwMjAtMDktMDggMTQ6MzM6NDIg
LTA3MDAgKFR1ZSwgMDggU2VwIDIwMjApIHwgMTAgbGluZXMnKQorICAgICAgICBjb250cmlidXRv
cnMgPSBDb250cmlidXRvci5NYXBwaW5nKCkKKyAgICAgICAgQ29udHJpYnV0b3IuZnJvbV9zY21f
bG9nKCdBdXRob3I6IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+JywgY29udHJp
YnV0b3JzKQorICAgICAgICBjb250cmlidXRvciA9IENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZygn
cjI2Njc1MSB8IGpiZWRhcmRAYXBwbGUuY29tIHwgMjAyMC0wOS0wOCAxNDozMzo0MiAtMDcwMCAo
VHVlLCAwOCBTZXAgMjAyMCkgfCAxMCBsaW5lcycsIGNvbnRyaWJ1dG9ycykKIAogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLm5hbWUsICdKb25hdGhhbiBCZWRhcmQnKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLmVtYWlscywgWydqYmVkYXJkQGFwcGxl
LmNvbSddKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9sb2coc2VsZik6Ci0gICAgICAgIENvbnRy
aWJ1dG9yLmNsZWFyKCkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9y
KToKICAgICAgICAgICAgIENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZygnSm9uYXRoYW4gQmVkYXJk
IDxqYmVkYXJkQGFwcGxlLmNvbT4nKQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>