<?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>228000</bug_id>
          
          <creation_ts>2021-07-15 12:43:04 -0700</creation_ts>
          <short_desc>[webkitscmpy] Provide API to access SVN cache</short_desc>
          <delta_ts>2021-07-16 11:18:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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=225616</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=228027</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>dewei_zhu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1777295</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-07-15 12:43:04 -0700</bug_when>
    <thetext>We already have a cache of SVN revisions to identifiers, but we don&apos;t have an API for other tools to access this cache. We created an API for Git (https://bugs.webkit.org/show_bug.cgi?id=225616), and the same API mostly works for SVN. If we provided functions calls that matched what we do for git, we could unify log and blame code for both git and SVN.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777296</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-15 12:43:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/80646471&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777297</commentid>
    <comment_count>2</comment_count>
      <attachid>433612</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-07-15 12:46:42 -0700</bug_when>
    <thetext>Created attachment 433612
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777493</commentid>
    <comment_count>3</comment_count>
      <attachid>433612</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-07-16 04:29:18 -0700</bug_when>
    <thetext>Comment on attachment 433612
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777525</commentid>
    <comment_count>4</comment_count>
      <attachid>433682</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-07-16 10:12:23 -0700</bug_when>
    <thetext>Created attachment 433682
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777546</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-16 11:18:12 -0700</bug_when>
    <thetext>Committed r279991 (239734@main): &lt;https://commits.webkit.org/239734@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433682.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433612</attachid>
            <date>2021-07-15 12:46:42 -0700</date>
            <delta_ts>2021-07-16 10:12:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228000-20210715124641.patch</filename>
            <type>text/plain</type>
            <size>20861</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3OTk1NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMxIEBACisyMDIxLTA3LTE1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0c2NtcHldIFByb3ZpZGUgQVBJIHRvIGFjY2VzcyBTVk4gY2Fj
aGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODAw
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODA2NDY0NzE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlIGEgU3ZuIGNhY2hlIHdpdGggdGhl
IHNhbWUgQVBJIGFzIHRoZSBHaXQgY2FjaGUuIFRoaXMgYWxsb3dzCisgICAgICAgIGdpdCBhbmQg
c3ZuIHRvIHNoYXJlIGxvZ2ljIHdoZW4gaW5zZXJ0aW5nIGlkZW50aWZpZXJzIGluIGBsb2dgIGFu
ZCBgYmxhbWVgLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvc2V0
dXAucHk6IEJ1bXAgdmVyc2lvbi4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9fX2luaXRfXy5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5OgorICAgICAgICAo
U3ZuLkNhY2hlLnBhdGgpOiBQYXRoIHRvIGNhaGNlIGZpbGUuCisgICAgICAgIChTdm4uQ2FjaGUu
cG9wdWxhdGUpOiBGaWxsIGNhY2hlIGZyb20gYHN2biBsb2dgIG9wZXJhdGlvbi4KKyAgICAgICAg
KFN2bi5DYWNoZS50b19oYXNoKTogU3ZuIGlzIHVuYXdhcmUgb2YgaGFzaGVzLCBhbmQgY2FuIG5l
dmVyIG1hcCB0aGVtLgorICAgICAgICAoU3ZuLkNhY2hlLnRvX3JldmlzaW9uKTogTWFwIGlkZW50
aWZpZXJzIHRvIHJldmlzaW9ucy4KKyAgICAgICAgKFN2bi5DYWNoZS50b19pZGVudGlmaWVyKTog
TWFwIHJldmlzaW9ucyB0byBpZGVudGlmaWVycy4KKyAgICAgICAgKFN2bi5fX2luaXRfXyk6IFVz
ZSBjYWNoZSBvYmplY3QgaW5zdGVhZCBvZiBfbWV0YWRhdGFfY2FjaGUuCisgICAgICAgIChTdm4u
X2NvbW1pdF9jb3VudCk6IEFjY2VzcyBjYWNoZSBvYmplY3QuCisgICAgICAgIChTdm4uX2JyYW5j
aF9mb3IpOiBEaXR0by4KKyAgICAgICAgKFN2bi5jb21taXQpOiBEaXR0by4KKyAgICAgICAgKFN2
bi5fY2FjaGVfcGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChTdm4uX2NhY2hlX3JldmlzaW9ucyk6
IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvdGVzdC9zdm5fdW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0TG9jYWxTdm4udGVzdF9y
ZXZpc2lvbl9jYWNoZSk6CisKIDIwMjEtMDctMTUgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRlIG15IHN0YXR1cyBpbiBjb250
cmlidXRvcnMuanNvbiB0byByZXZpZXdlci4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3NldHVwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5CShyZXZpc2lvbiAyNzk5MjMpCisrKyBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weQkod29ya2luZyBjb3B5KQpAQCAtMjks
NyArMjksNyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAgIG5hbWU9J3dlYmtpdHNjbXB5
JywKLSAgICB2ZXJzaW9uPScwLjE0LjcnLAorICAgIHZlcnNpb249JzAuMTUuMCcsCiAgICAgZGVz
Y3JpcHRpb249J0xpYnJhcnkgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCBnaXQgYW5kIHN2biBy
ZXBvc2l0b3JpZXMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAgIGNsYXNz
aWZpZXJzPVsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAyNzk5MjMpCisr
KyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9fX2luaXRf
Xy5weQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6
CiAgICAgICAgICJQbGVhc2UgaW5zdGFsbCB3ZWJraXRjb3JlcHkgd2l0aCBgcGlwIGluc3RhbGwg
d2Via2l0Y29yZXB5IC0tZXh0cmEtaW5kZXgtdXJsIDxwYWNrYWdlIGluZGV4IFVSTD5gIgogICAg
ICkKIAotdmVyc2lvbiA9IFZlcnNpb24oMCwgMTQsIDcpCit2ZXJzaW9uID0gVmVyc2lvbigwLCAx
NSwgMCkKIAogQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnZmFzdGVuZXJzJywgVmVyc2lv
bigwLCAxNSwgMCkpKQogQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnbW9ub3RvbmljJywg
VmVyc2lvbigxLCA1KSkpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS9sb2NhbC9zdm4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5CShyZXZpc2lvbiAy
Nzk5MjMpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS9sb2NhbC9zdm4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAgaW1wb3J0IHJl
CiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cworaW1wb3J0IHRp
bWUKIAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQogCkBAIC0zOCw4
ICszOSwxNzEgQEAgZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQ29tbWl0LCBDb250cmlidQogCiAK
IGNsYXNzIFN2bihTY20pOgotICAgIExPR19SRSA9IHJlLmNvbXBpbGUocidyKD9QPHJldmlzaW9u
PlxkKykgXHwgKD9QPGVtYWlsPi4qKSBcfCAoP1A8ZGF0ZT4uKiknKQotICAgIENBQ0hFX1ZFUlNJ
T04gPSBWZXJzaW9uKDEpCisgICAgY2xhc3MgQ2FjaGUob2JqZWN0KToKKyAgICAgICAgTE9HX1JF
ID0gcmUuY29tcGlsZShyJ3IoP1A8cmV2aXNpb24+XGQrKSBcfCAoP1A8ZW1haWw+LiopIFx8ICg/
UDxkYXRlPi4qKScpCisgICAgICAgIFZFUlNJT04gPSBWZXJzaW9uKDEpCisKKyAgICAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHJlcG8sIGd1cmFudGVlZF9mb3I9MTApOgorICAgICAgICAgICAgc2Vs
Zi5yZXBvID0gcmVwbworICAgICAgICAgICAgc2VsZi5fbGFzdF9wb3B1bGF0ZWQgPSB7fQorICAg
ICAgICAgICAgc2VsZi5fZ3VyYW50ZWVkX2ZvciA9IGd1cmFudGVlZF9mb3IKKworICAgICAgICAg
ICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5wYXRoKToKKyAgICAgICAgICAgICAgICB0cnk6Cisg
ICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLnBhdGgsICdyJykgYXMgZmlsZToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RhdGEgPSBqc29uLmxvYWQoZmlsZSkKKyAgICAg
ICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fZGF0YSA9IGRpY3QodmVyc2lvbj1zdHIoc2VsZi5WRVJTSU9OKSkKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgc2VsZi5fZGF0YSA9IGRpY3QodmVyc2lvbj1zdHIoc2VsZi5W
RVJTSU9OKSkKKworICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgZGVmIHBhdGgoc2VsZik6Cisg
ICAgICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYucmVwby5yb290X3BhdGgsICcuc3Zu
JywgJ3dlYmtpdHNjbXB5LWNhY2hlLmpzb24nKQorCisgICAgICAgIGRlZiBwb3B1bGF0ZShzZWxm
LCBicmFuY2g9Tm9uZSk6CisgICAgICAgICAgICBicmFuY2ggPSBicmFuY2ggb3Igc2VsZi5yZXBv
LmRlZmF1bHRfYnJhbmNoCisgICAgICAgICAgICBpZiBzZWxmLl9sYXN0X3BvcHVsYXRlZC5nZXQo
YnJhbmNoLCAwKSArIHNlbGYuX2d1cmFudGVlZF9mb3IgPiB0aW1lLnRpbWUoKToKKyAgICAgICAg
ICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgaXNfZGVmYXVsdF9icmFuY2ggPSBicmFuY2gg
PT0gc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoCisgICAgICAgICAgICBpZiBicmFuY2ggbm90IGlu
IHNlbGYuX2RhdGE6CisgICAgICAgICAgICAgICAgc2VsZi5fZGF0YVticmFuY2hdID0gWzBdIGlm
IGlzX2RlZmF1bHRfYnJhbmNoIGVsc2UgW10KKyAgICAgICAgICAgIHBvcyA9IGxlbihzZWxmLl9k
YXRhW2JyYW5jaF0pCisKKyAgICAgICAgICAgICMgSWYgd2UgYXJlbid0IG9uIHRoZSBkZWZhdWx0
IGJyYW5jaCwgd2Ugd2lsbCBuZWVkIHRoZSBkZWZhdWx0IGJyYW5jaCB0byBkZXRlcm1pbmUgd2hl
bgorICAgICAgICAgICAgIyBvdXIgIGJyYW5jaCAgaW50ZXJzZWN0cyB3aXRoIHRoZSBkZWZhdWx0
IGJyYW5jaC4KKyAgICAgICAgICAgIGlmIG5vdCBpc19kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAg
ICAgICAgICBzZWxmLnBvcHVsYXRlKGJyYW5jaD1zZWxmLnJlcG8uZGVmYXVsdF9icmFuY2gpCisK
KyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkaWRfd2FybiA9IEZhbHNlCisgICAg
ICAgICAgICAgICAgY291bnQgPSAwCisgICAgICAgICAgICAgICAgbG9nID0gTm9uZQorCisgICAg
ICAgICAgICAgICAgaWYgaXNfZGVmYXVsdF9icmFuY2ggb3IgJy8nIGluIGJyYW5jaDoKKyAgICAg
ICAgICAgICAgICAgICAgYnJhbmNoX2FyZyA9ICdeL3t9Jy5mb3JtYXQoYnJhbmNoKQorICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaF9hcmcgPSAnXi9icmFu
Y2hlcy97fScuZm9ybWF0KGJyYW5jaCkKKworICAgICAgICAgICAgICAgIGt3YXJncyA9IGRpY3Qo
KQorICAgICAgICAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDApOgorICAgICAg
ICAgICAgICAgICAgICBrd2FyZ3MgPSBkaWN0KGVuY29kaW5nPSd1dGYtOCcpCisKKyAgICAgICAg
ICAgICAgICBzZWxmLl9sYXN0X3BvcHVsYXRlZFticmFuY2hdID0gdGltZS50aW1lKCkKKyAgICAg
ICAgICAgICAgICBsb2cgPSBzdWJwcm9jZXNzLlBvcGVuKAorICAgICAgICAgICAgICAgICAgICBb
c2VsZi5yZXBvLmV4ZWN1dGFibGUoKSwgJ2xvZycsICctcScsIGJyYW5jaF9hcmddLAorICAgICAg
ICAgICAgICAgICAgICBjd2Q9c2VsZi5yZXBvLnJvb3RfcGF0aCwKKyAgICAgICAgICAgICAgICAg
ICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1
YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICAgICAgaWYgbG9nLnBvbGwoKToKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2Ugc2VsZi5yZXBvLkV4Y2VwdGlvbigiRmFpbGVkIHRvIGNvbnN0cnVjdCBicmFuY2gg
aGlzdG9yeSBmb3IgJ3t9JyIuZm9ybWF0KGJyYW5jaCkpCisKKyAgICAgICAgICAgICAgICBkZWZh
dWx0X2NvdW50ID0gMAorICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5l
KCkKKyAgICAgICAgICAgICAgICB3aGlsZSBsaW5lOgorICAgICAgICAgICAgICAgICAgICBtYXRj
aCA9IHNlbGYuTE9HX1JFLm1hdGNoKGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGlmIG1hdGNo
OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRpZF93YXJuOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiBjb3VudCA+IDEwMDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVw
by5sb2coJ0NhY2hpbmcgY29tbWl0IGRhdGEgZm9yIHt9LCB0aGlzIHdpbGwgdGFrZSBhIGZldyBt
aW51dGVzLi4uJy5mb3JtYXQoYnJhbmNoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlkX3dhcm4gPSBUcnVlCisKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uID0g
aW50KG1hdGNoLmdyb3VwKCdyZXZpc2lvbicpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg
cG9zID4gMCBhbmQgc2VsZi5fZGF0YVticmFuY2hdW3BvcyAtIDFdID09IHJldmlzaW9uOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiBub3QgaXNfZGVmYXVsdF9icmFuY2g6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
cmV2aXNpb24gaW4gc2VsZi5fZGF0YVtzZWxmLnJlcG8uZGVmYXVsdF9icmFuY2hdOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9ubHkgaGFuZGxlIDIgc2VxdWVudGlhbCBjcm9z
cy1icmFuY2ggY29tbWl0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWZh
dWx0X2NvdW50ID4gMjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfY291bnQgKz0gMQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHRfY291bnQgPSAwCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9k
YXRhW2JyYW5jaF0uaW5zZXJ0KHBvcywgcmV2aXNpb24pCisgICAgICAgICAgICAgICAgICAgIGxp
bmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAg
ICAgICAgICAgaWYgbG9nOgorICAgICAgICAgICAgICAgICAgICBsb2cua2lsbCgpCisKKyAgICAg
ICAgICAgIGlmIGRlZmF1bHRfY291bnQ6CisgICAgICAgICAgICAgICAgc2VsZi5fZGF0YVticmFu
Y2hdID0gc2VsZi5fZGF0YVticmFuY2hdW2RlZmF1bHRfY291bnQgLSAxOl0KKyAgICAgICAgICAg
IGlmIHNlbGYuX2RhdGFbc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoXVswXSA9PSBbMF06CisgICAg
ICAgICAgICAgICAgc2VsZi5fZGF0YVsnaWRlbnRpZmllciddID0gbGVuKHNlbGYuX2RhdGFbYnJh
bmNoXSkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxm
LnBhdGgsICd3JykgYXMgZmlsZToKKyAgICAgICAgICAgICAgICAgICAganNvbi5kdW1wKHNlbGYu
X2RhdGEsIGZpbGUsIGluZGVudD00KQorICAgICAgICAgICAgZXhjZXB0IChJT0Vycm9yLCBPU0Vy
cm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLnJlcG8ubG9nKCJGYWlsZWQgdG8gd3JpdGUgU1ZO
IGNhY2hlIHRvICd7fSciLmZvcm1hdChzZWxmLnBhdGgpKQorCisgICAgICAgICAgICByZXR1cm4g
c2VsZi5fZGF0YVticmFuY2hdCisKKyAgICAgICAgZGVmIHRvX2hhc2goc2VsZiwgKiprd2FyZ3Mp
OgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBkZWYgdG9fcmV2aXNpb24oc2Vs
ZiwgaGFzaD1Ob25lLCBpZGVudGlmaWVyPU5vbmUsIHBvcHVsYXRlPVRydWUsIGJyYW5jaD1Ob25l
KToKKyAgICAgICAgICAgIGlmIGhhc2g6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAg
ICAgICAgICAgIHBhcnRzID0gQ29tbWl0Ll9wYXJzZV9pZGVudGlmaWVyKGlkZW50aWZpZXIsIGRv
X2Fzc2VydD1GYWxzZSkKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0czoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICBfLCBiX2NvdW50LCBicmFuY2ggPSBwYXJ0cwor
ICAgICAgICAgICAgaWYgYnJhbmNoIG5vdCBpbiBzZWxmLl9kYXRhIGFuZCBwb3B1bGF0ZToKKyAg
ICAgICAgICAgICAgICBzZWxmLnBvcHVsYXRlKGJyYW5jaD1icmFuY2gpCisgICAgICAgICAgICBp
ZiBicmFuY2ggbm90IGluIHNlbGYuX2RhdGE6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUK
KworICAgICAgICAgICAgaWYgYl9jb3VudCA8IDA6CisgICAgICAgICAgICAgICAgYnBfaWRlbnRp
ZmllciA9IHNlbGYudG9faWRlbnRpZmllcihyZXZpc2lvbj1zZWxmLl9kYXRhW2JyYW5jaF1bMF0p
CisgICAgICAgICAgICAgICAgaWYgbm90IGJwX2lkZW50aWZpZXI6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBOb25lCisgICAgICAgICAgICAgICAgaW5kZXggPSBpbnQoYnBfaWRlbnRpZmll
ci5zcGxpdCgnQCcpWzBdKSArIGJfY291bnQKKyAgICAgICAgICAgICAgICBpZiBpbmRleCA8PSAw
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgICAgIHJldHVy
biBzZWxmLl9kYXRhW3NlbGYucmVwby5kZWZhdWx0X2JyYW5jaF1baW5kZXhdCisgICAgICAgICAg
ICBpZiBiX2NvdW50ID49IGxlbihzZWxmLl9kYXRhW2JyYW5jaF0pIGFuZCBwb3B1bGF0ZToKKyAg
ICAgICAgICAgICAgICBzZWxmLnBvcHVsYXRlKGJyYW5jaD1icmFuY2gpCisgICAgICAgICAgICBp
ZiBiX2NvdW50ID49IGxlbihzZWxmLl9kYXRhW2JyYW5jaF0pOgorICAgICAgICAgICAgICAgIHJl
dHVybiBOb25lCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZGF0YVticmFuY2hdW2JfY291bnRd
CisKKyAgICAgICAgZGVmIHRvX2lkZW50aWZpZXIoc2VsZiwgaGFzaD1Ob25lLCByZXZpc2lvbj1O
b25lLCBwb3B1bGF0ZT1UcnVlLCBicmFuY2g9Tm9uZSk6CisgICAgICAgICAgICBpZiBoYXNoOgor
ICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgIHJldmlzaW9uID0gQ29t
bWl0Ll9wYXJzZV9yZXZpc2lvbihyZXZpc2lvbiwgZG9fYXNzZXJ0PUZhbHNlKQorICAgICAgICAg
ICAgaWYgbm90IHJldmlzaW9uOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAg
ICAgICAgIGJyYW5jaCA9IGJyYW5jaCBvciBzZWxmLnJlcG8uYnJhbmNoCisgICAgICAgICAgICBp
ZiBicmFuY2ggbm90IGluIHNlbGYuX2RhdGEgYW5kIHBvcHVsYXRlOgorICAgICAgICAgICAgICAg
IHNlbGYucG9wdWxhdGUoYnJhbmNoPWJyYW5jaCkKKyAgICAgICAgICAgIGlmIGJyYW5jaCBub3Qg
aW4gc2VsZi5fZGF0YToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAg
ICBpbmRleCA9IGJpc2VjdC5iaXNlY3RfbGVmdChzZWxmLl9kYXRhW2JyYW5jaF0sIHJldmlzaW9u
KQorICAgICAgICAgICAgZXhpc3RzID0gaW5kZXggPCBsZW4oc2VsZi5fZGF0YVticmFuY2hdKSBh
bmQgc2VsZi5fZGF0YVticmFuY2hdW2luZGV4XSA9PSByZXZpc2lvbgorICAgICAgICAgICAgaWYg
bm90IGV4aXN0czoKKyAgICAgICAgICAgICAgICBzZWxmLnBvcHVsYXRlKGJyYW5jaD1icmFuY2gp
CisgICAgICAgICAgICAgICAgaW5kZXggPSBiaXNlY3QuYmlzZWN0X2xlZnQoc2VsZi5fZGF0YVti
cmFuY2hdLCByZXZpc2lvbikKKyAgICAgICAgICAgICAgICBleGlzdHMgPSBpbmRleCA8IGxlbihz
ZWxmLl9kYXRhW2JyYW5jaF0pIGFuZCBzZWxmLl9kYXRhW2JyYW5jaF0gPT0gcmV2aXNpb24KKwor
ICAgICAgICAgICAgaWYgbm90IGV4aXN0cyBvciBub3QgaW5kZXg6CisgICAgICAgICAgICAgICAg
aWYgYnJhbmNoICE9IHNlbGYucmVwby5kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHNlbGYudG9faWRlbnRpZmllcihicmFuY2g9c2VsZi5yZXBvLmRlZmF1bHRfYnJh
bmNoLCBwb3B1bGF0ZT1wb3B1bGF0ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisg
ICAgICAgICAgICBpZiBicmFuY2ggPT0gc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoOgorICAgICAg
ICAgICAgICAgIHJldHVybiAne31AdHJ1bmsnLmZvcm1hdChpbmRleCwgc2VsZi5yZXBvLmRlZmF1
bHRfYnJhbmNoKQorCisgICAgICAgICAgICBicmFuY2hfcG9pbnQgPSBiaXNlY3QuYmlzZWN0X2xl
ZnQoc2VsZi5fZGF0YVtzZWxmLnJlcG8uZGVmYXVsdF9icmFuY2hdLCBzZWxmLl9kYXRhW2JyYW5j
aF1bMF0pCisgICAgICAgICAgICByZXR1cm4gJ3t9Lnt9QHt9Jy5mb3JtYXQoYnJhbmNoX3BvaW50
LCBpbmRleCwgYnJhbmNoKQorCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBAZGVjb3JhdG9ycy5N
ZW1vaXplKCkKQEAgLTUwLDcgKzIxNCw3IEBAIGNsYXNzIFN2bihTY20pOgogICAgIGRlZiBpc19j
aGVja291dChjbHMsIHBhdGgpOgogICAgICAgICByZXR1cm4gcnVuKFtjbHMuZXhlY3V0YWJsZSgp
LCAnaW5mbyddLCBjd2Q9cGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSkucmV0dXJuY29kZSA9PSAw
CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZGV2X2JyYW5jaGVzPU5vbmUsIHByb2Rf
YnJhbmNoZXM9Tm9uZSwgY29udHJpYnV0b3JzPU5vbmUsIGlkPU5vbmUpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwYXRoLCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJvZF9icmFuY2hlcz1Ob25lLCBj
b250cmlidXRvcnM9Tm9uZSwgaWQ9Tm9uZSwgY2FjaGVkPVRydWUpOgogICAgICAgICBzdXBlcihT
dm4sIHNlbGYpLl9faW5pdF9fKHBhdGgsIGRldl9icmFuY2hlcz1kZXZfYnJhbmNoZXMsIHByb2Rf
YnJhbmNoZXM9cHJvZF9icmFuY2hlcywgY29udHJpYnV0b3JzPWNvbnRyaWJ1dG9ycywgaWQ9aWQp
CiAKICAgICAgICAgc2VsZi5fcm9vdF9wYXRoID0gc2VsZi5wYXRoCkBAIC01OSwxNCArMjIzLDcg
QEAgY2xhc3MgU3ZuKFNjbSk6CiAgICAgICAgIGlmIG5vdCBzZWxmLnJvb3RfcGF0aDoKICAgICAg
ICAgICAgIHJhaXNlIE9TRXJyb3IoJ1Byb3ZpZGVkIHBhdGgge30gaXMgbm90IGEgc3ZuIHJlcG9z
aXRvcnknLmZvcm1hdChwYXRoKSkKIAotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLl9j
YWNoZV9wYXRoKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4o
c2VsZi5fY2FjaGVfcGF0aCkgYXMgZmlsZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWV0
YWRhdGFfY2FjaGUgPSBqc29uLmxvYWQoZmlsZSkKLSAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhj
ZXB0aW9uOgotICAgICAgICAgICAgICAgIHNlbGYuX21ldGFkYXRhX2NhY2hlID0gZGljdCh2ZXJz
aW9uPXN0cihzZWxmLkNBQ0hFX1ZFUlNJT04pKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
c2VsZi5fbWV0YWRhdGFfY2FjaGUgPSBkaWN0KHZlcnNpb249c3RyKHNlbGYuQ0FDSEVfVkVSU0lP
TikpCisgICAgICAgIHNlbGYuY2FjaGUgPSBzZWxmLkNhY2hlKHNlbGYpIGlmIGNhY2hlZCBlbHNl
IE5vbmUKIAogICAgIEBkZWNvcmF0b3JzLk1lbW9pemUoY2FjaGVkPUZhbHNlKQogICAgIGRlZiBp
bmZvKHNlbGYsIGJyYW5jaD1Ob25lLCByZXZpc2lvbj1Ob25lLCB0YWc9Tm9uZSk6CkBAIC0xMjUs
MTA1ICsyODIsMjQgQEAgY2xhc3MgU3ZuKFNjbSk6CiAgICAgZGVmIHRhZ3Moc2VsZik6CiAgICAg
ICAgIHJldHVybiBzZWxmLmxpc3QoJ3RhZ3MnKQogCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIF9j
YWNoZV9wYXRoKHNlbGYpOgotICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYucm9vdF9w
YXRoLCAnLnN2bicsICd3ZWJraXRzY21weS1jYWNoZS5qc29uJykKLQotICAgIGRlZiBfY2FjaGVf
cmV2aXNpb25zKHNlbGYsIGJyYW5jaD1Ob25lKToKLSAgICAgICAgYnJhbmNoID0gYnJhbmNoIG9y
IHNlbGYuZGVmYXVsdF9icmFuY2gKLSAgICAgICAgaXNfZGVmYXVsdF9icmFuY2ggPSBicmFuY2gg
PT0gc2VsZi5kZWZhdWx0X2JyYW5jaAotICAgICAgICBpZiBicmFuY2ggbm90IGluIHNlbGYuX21l
dGFkYXRhX2NhY2hlOgotICAgICAgICAgICAgc2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXSA9
IFswXSBpZiBpc19kZWZhdWx0X2JyYW5jaCBlbHNlIFtdCi0gICAgICAgIHBvcyA9IGxlbihzZWxm
Ll9tZXRhZGF0YV9jYWNoZVticmFuY2hdKQotCi0gICAgICAgICMgSWYgd2UgYXJlbid0IG9uIHRo
ZSBkZWZhdWx0IGJyYW5jaCwgd2Ugd2lsbCBuZWVkIHRoZSBkZWZhdWx0IGJyYW5jaCB0byBkZXRl
cm1pbmUgd2hlbgotICAgICAgICAjIG91ciAgYnJhbmNoICBpbnRlcnNlY3RzIHdpdGggdGhlIGRl
ZmF1bHQgYnJhbmNoLgotICAgICAgICBpZiBub3QgaXNfZGVmYXVsdF9icmFuY2g6Ci0gICAgICAg
ICAgICBzZWxmLl9jYWNoZV9yZXZpc2lvbnMoYnJhbmNoPXNlbGYuZGVmYXVsdF9icmFuY2gpCi0K
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGlkX3dhcm4gPSBGYWxzZQotICAgICAgICAgICAg
Y291bnQgPSAwCi0gICAgICAgICAgICBsb2cgPSBOb25lCi0KLSAgICAgICAgICAgIGlmIGlzX2Rl
ZmF1bHRfYnJhbmNoIG9yICcvJyBpbiBicmFuY2g6Ci0gICAgICAgICAgICAgICAgYnJhbmNoX2Fy
ZyA9ICdeL3t9Jy5mb3JtYXQoYnJhbmNoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICBicmFuY2hfYXJnID0gJ14vYnJhbmNoZXMve30nLmZvcm1hdChicmFuY2gpCi0KLSAgICAg
ICAgICAgIGt3YXJncyA9IGRpY3QoKQotICAgICAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+
PSAoMywgMCk6Ci0gICAgICAgICAgICAgICAga3dhcmdzID0gZGljdChlbmNvZGluZz0ndXRmLTgn
KQotCi0gICAgICAgICAgICBsb2cgPSBzdWJwcm9jZXNzLlBvcGVuKAotICAgICAgICAgICAgICAg
IFtzZWxmLmV4ZWN1dGFibGUoKSwgJ2xvZycsICctcScsIGJyYW5jaF9hcmddLAotICAgICAgICAg
ICAgICAgIGN3ZD1zZWxmLnJvb3RfcGF0aCwKLSAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJv
Y2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCi0gICAg
ICAgICAgICAgICAgKiprd2FyZ3MKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGlmIGxvZy5w
b2xsKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byBj
b25zdHJ1Y3QgYnJhbmNoIGhpc3RvcnkgZm9yICd7fSciLmZvcm1hdChicmFuY2gpKQotCi0gICAg
ICAgICAgICBkZWZhdWx0X2NvdW50ID0gMAotICAgICAgICAgICAgbGluZSA9IGxvZy5zdGRvdXQu
cmVhZGxpbmUoKQotICAgICAgICAgICAgd2hpbGUgbGluZToKLSAgICAgICAgICAgICAgICBtYXRj
aCA9IHNlbGYuTE9HX1JFLm1hdGNoKGxpbmUpCi0gICAgICAgICAgICAgICAgaWYgbWF0Y2g6Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkaWRfd2FybjoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvdW50ICs9IDEKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvdW50ID4gMTAwMDoK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZygnQ2FjaGluZyBjb21taXQgZGF0
YSBmb3Ige30sIHRoaXMgd2lsbCB0YWtlIGEgZmV3IG1pbnV0ZXMuLi4nLmZvcm1hdChicmFuY2gp
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZF93YXJuID0gVHJ1ZQotCi0gICAgICAg
ICAgICAgICAgICAgIHJldmlzaW9uID0gaW50KG1hdGNoLmdyb3VwKCdyZXZpc2lvbicpKQotICAg
ICAgICAgICAgICAgICAgICBpZiBwb3MgPiAwIGFuZCBzZWxmLl9tZXRhZGF0YV9jYWNoZVticmFu
Y2hdW3BvcyAtIDFdID09IHJldmlzaW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsK
LSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzX2RlZmF1bHRfYnJhbmNoOgotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgcmV2aXNpb24gaW4gc2VsZi5fbWV0YWRhdGFfY2FjaGVbc2VsZi5k
ZWZhdWx0X2JyYW5jaF06Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBPbmx5IGhhbmRs
ZSAyIHNlcXVlbnRpYWwgY3Jvc3MtYnJhbmNoIGNvbW1pdHMKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiBkZWZhdWx0X2NvdW50ID4gMjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2NvdW50ICs9
IDEKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdF9jb3VudCA9IDAKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWV0YWRh
dGFfY2FjaGVbYnJhbmNoXS5pbnNlcnQocG9zLCByZXZpc2lvbikKLSAgICAgICAgICAgICAgICBs
aW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAg
ICBpZiBsb2c6Ci0gICAgICAgICAgICAgICAgbG9nLmtpbGwoKQotCi0gICAgICAgIGlmIGRlZmF1
bHRfY291bnQ6Ci0gICAgICAgICAgICBzZWxmLl9tZXRhZGF0YV9jYWNoZVticmFuY2hdID0gc2Vs
Zi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXVtkZWZhdWx0X2NvdW50IC0gMTpdCi0gICAgICAgIGlm
IHNlbGYuX21ldGFkYXRhX2NhY2hlW3NlbGYuZGVmYXVsdF9icmFuY2hdWzBdID09IFswXToKLSAg
ICAgICAgICAgIHNlbGYuX21ldGFkYXRhX2NhY2hlWydpZGVudGlmaWVyJ10gPSBsZW4oc2VsZi5f
bWV0YWRhdGFfY2FjaGVbYnJhbmNoXSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRo
IG9wZW4oc2VsZi5fY2FjaGVfcGF0aCwgJ3cnKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIGpz
b24uZHVtcChzZWxmLl9tZXRhZGF0YV9jYWNoZSwgZmlsZSwgaW5kZW50PTQpCi0gICAgICAgIGV4
Y2VwdCAoSU9FcnJvciwgT1NFcnJvcik6Ci0gICAgICAgICAgICBzZWxmLmxvZygiRmFpbGVkIHRv
IHdyaXRlIFNWTiBjYWNoZSB0byAne30nIi5mb3JtYXQoc2VsZi5fY2FjaGVfcGF0aCkpCi0KLSAg
ICAgICAgcmV0dXJuIHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF0KLQogICAgIGRlZiBfY29t
bWl0X2NvdW50KHNlbGYsIHJldmlzaW9uPU5vbmUsIGJyYW5jaD1Ob25lKToKICAgICAgICAgYnJh
bmNoID0gYnJhbmNoIG9yIHNlbGYuZGVmYXVsdF9icmFuY2gKIAogICAgICAgICBpZiByZXZpc2lv
bjoKLSAgICAgICAgICAgIGlmIHJldmlzaW9uIG5vdCBpbiBzZWxmLl9tZXRhZGF0YV9jYWNoZVti
cmFuY2hdOgorICAgICAgICAgICAgaWYgcmV2aXNpb24gbm90IGluIHNlbGYuY2FjaGUuX2RhdGFb
YnJhbmNoXToKICAgICAgICAgICAgICAgICBpZiAnYnJhbmNoJyBub3QgaW4gYnJhbmNoIGFuZCBi
cmFuY2ggIT0gJ3RydW5rJzoKICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgi
Q2hlY2sgaWYgJ3J7fScgaXMgYSB0YWdcbiIuZm9ybWF0KHJldmlzaW9uKSkKICAgICAgICAgICAg
ICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIGZpbmQgJ3t9JyBvbiAne30nIi5m
b3JtYXQocmV2aXNpb24sIGJyYW5jaCkpCi0gICAgICAgICAgICByZXR1cm4gYmlzZWN0LmJpc2Vj
dF9sZWZ0KHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF0sIGludChyZXZpc2lvbikpCisgICAg
ICAgICAgICByZXR1cm4gYmlzZWN0LmJpc2VjdF9sZWZ0KHNlbGYuY2FjaGUuX2RhdGFbYnJhbmNo
XSwgaW50KHJldmlzaW9uKSkKICAgICAgICAgaWYgYnJhbmNoID09IHNlbGYuZGVmYXVsdF9icmFu
Y2g6Ci0gICAgICAgICAgICByZXR1cm4gbGVuKHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF0p
Ci0gICAgICAgIHJldHVybiBzZWxmLl9jb21taXRfY291bnQocmV2aXNpb249c2VsZi5fbWV0YWRh
dGFfY2FjaGVbYnJhbmNoXVswXSwgYnJhbmNoPXNlbGYuZGVmYXVsdF9icmFuY2gpCisgICAgICAg
ICAgICByZXR1cm4gbGVuKHNlbGYuY2FjaGUuX2RhdGFbYnJhbmNoXSkKKyAgICAgICAgcmV0dXJu
IHNlbGYuX2NvbW1pdF9jb3VudChyZXZpc2lvbj1zZWxmLmNhY2hlLl9kYXRhW2JyYW5jaF1bMF0s
IGJyYW5jaD1zZWxmLmRlZmF1bHRfYnJhbmNoKQogCiAgICAgZGVmIHJlbW90ZShzZWxmLCBuYW1l
PU5vbmUpOgogICAgICAgICByZXR1cm4gc2VsZi5pbmZvKGNhY2hlZD1UcnVlKVsnUmVwb3NpdG9y
eSBSb290J10KIAogICAgIGRlZiBfYnJhbmNoX2ZvcihzZWxmLCByZXZpc2lvbik6Ci0gICAgICAg
IGNhbmRpZGF0ZXMgPSBbYnJhbmNoIGZvciBicmFuY2gsIHJldmlzaW9ucyBpbiBzZWxmLl9tZXRh
ZGF0YV9jYWNoZS5pdGVtcygpIGlmIGJyYW5jaCAhPSAndmVyc2lvbicgYW5kIHJldmlzaW9uIGlu
IHJldmlzaW9uc10KKyAgICAgICAgY2FuZGlkYXRlcyA9IFticmFuY2ggZm9yIGJyYW5jaCwgcmV2
aXNpb25zIGluIHNlbGYuY2FjaGUuX2RhdGEuaXRlbXMoKSBpZiBicmFuY2ggIT0gJ3ZlcnNpb24n
IGFuZCByZXZpc2lvbiBpbiByZXZpc2lvbnNdCiAgICAgICAgIGNhbmRpZGF0ZSA9IHNlbGYucHJp
b3JpdGl6ZV9icmFuY2hlcyhjYW5kaWRhdGVzKSBpZiBjYW5kaWRhdGVzIGVsc2UgTm9uZQogCiAg
ICAgICAgICMgSW4gdGhlIGRlZmF1bHQgYnJhbmNoIGNhc2UsIHdlIGRvbid0IGV2ZW4gbmVlZCB0
byBhc2sgdGhlIHJlbW90ZQpAQCAtMjkzLDExICszNjksMTEgQEAgY2xhc3MgU3ZuKFNjbSk6CiAK
ICAgICAgICAgICAgICMgUG9wdWxhdGUgbWFwcGluZyBvZiByZXZpc2lvbnMgb24gdGhlaXIgcmVz
cGVjdGl2ZSBicmFuY2hlcyBpZiB3ZSBkb24ndCBoYXZlIGVub3VnaCByZXZpc2lvbnMgb24gdGhl
CiAgICAgICAgICAgICAjIGJyYW5jaCBzcGVjaWZpZWQgYnkgdGhlIHByb3ZpZGVkIGlkZW50aWZp
ZXIKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9tZXRhZGF0YV9jYWNoZS5nZXQoYnJhbmNoLCBb
XSkgb3IgaWRlbnRpZmllciA+PSBsZW4oc2VsZi5fbWV0YWRhdGFfY2FjaGUuZ2V0KGJyYW5jaCwg
W10pKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNhY2hlLl9kYXRhLmdldChicmFuY2gsIFtd
KSBvciBpZGVudGlmaWVyID49IGxlbihzZWxmLmNhY2hlLl9kYXRhLmdldChicmFuY2gsIFtdKSk6
CiAgICAgICAgICAgICAgICAgaWYgYnJhbmNoICE9IHNlbGYuZGVmYXVsdF9icmFuY2g6Ci0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlX3JldmlzaW9ucyhicmFuY2g9c2VsZi5kZWZhdWx0
X2JyYW5jaCkKLSAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZV9yZXZpc2lvbnMoYnJhbmNoPWJy
YW5jaCkKLSAgICAgICAgICAgIGlmIGlkZW50aWZpZXIgPiBsZW4oc2VsZi5fbWV0YWRhdGFfY2Fj
aGUuZ2V0KGJyYW5jaCwgW10pKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jYWNoZS5wb3B1
bGF0ZShicmFuY2g9c2VsZi5kZWZhdWx0X2JyYW5jaCkKKyAgICAgICAgICAgICAgICBzZWxmLmNh
Y2hlLnBvcHVsYXRlKGJyYW5jaD1icmFuY2gpCisgICAgICAgICAgICBpZiBpZGVudGlmaWVyID4g
bGVuKHNlbGYuY2FjaGUuX2RhdGEuZ2V0KGJyYW5jaCwgW10pKToKICAgICAgICAgICAgICAgICBy
YWlzZSBzZWxmLkV4Y2VwdGlvbignSWRlbnRpZmllciB7fSBjYW5ub3QgYmUgZm91bmQgb24gdGhl
IHNwZWNpZmllZCBicmFuY2ggaW4gdGhlIGN1cnJlbnQgY2hlY2tvdXQnLmZvcm1hdChpZGVudGlm
aWVyKSkKIAogICAgICAgICAgICAgaWYgaWRlbnRpZmllciA8PSAwOgpAQCAtMzA5LDExICszODUs
MTEgQEAgY2xhc3MgU3ZuKFNjbSk6CiAKICAgICAgICAgICAgICAgICBicmFuY2ggPSBzZWxmLmRl
ZmF1bHRfYnJhbmNoCiAKLSAgICAgICAgICAgIHJldmlzaW9uID0gc2VsZi5fbWV0YWRhdGFfY2Fj
aGVbYnJhbmNoXVtpZGVudGlmaWVyXQorICAgICAgICAgICAgcmV2aXNpb24gPSBzZWxmLmNhY2hl
Ll9kYXRhW2JyYW5jaF1baWRlbnRpZmllcl0KICAgICAgICAgICAgIGluZm8gPSBzZWxmLmluZm8o
Y2FjaGVkPVRydWUsIGJyYW5jaD1icmFuY2gsIHJldmlzaW9uPXJldmlzaW9uKQogICAgICAgICAg
ICAgYnJhbmNoID0gc2VsZi5fYnJhbmNoX2ZvcihyZXZpc2lvbikKLSAgICAgICAgICAgIGlmIG5v
dCBzZWxmLl9tZXRhZGF0YV9jYWNoZS5nZXQoYnJhbmNoLCBbXSkgb3IgaWRlbnRpZmllciA+PSBs
ZW4oc2VsZi5fbWV0YWRhdGFfY2FjaGUuZ2V0KGJyYW5jaCwgW10pKToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9jYWNoZV9yZXZpc2lvbnMoYnJhbmNoPWJyYW5jaCkKKyAgICAgICAgICAgIGlmIG5v
dCBzZWxmLmNhY2hlLl9kYXRhLmdldChicmFuY2gsIFtdKSBvciBpZGVudGlmaWVyID49IGxlbihz
ZWxmLmNhY2hlLl9kYXRhLmdldChicmFuY2gsIFtdKSk6CisgICAgICAgICAgICAgICAgc2VsZi5j
YWNoZS5wb3B1bGF0ZShicmFuY2g9YnJhbmNoKQogCiAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBj
b21taXQgaW5mbyBhbmQgYnJhbmNoIGZvciBhIGdpdmVuIHJldmlzaW9uCiAgICAgICAgIGVsaWYg
cmV2aXNpb246CkBAIC0zNTMsMTAgKzQyOSwxMCBAQCBjbGFzcyBTdm4oU2NtKToKIAogICAgICAg
ICAjIENvbXB1dGUgdGhlIGlkZW50aWZpZXIgaWYgdGhlIGZ1bmN0aW9uIGRpZCBub3QgcmVjZWl2
ZSBvbmUgYW5kIHdlIHdlcmUgYXNrZWQgdG8KICAgICAgICAgaWYgaW5jbHVkZV9pZGVudGlmaWVy
IGFuZCBub3QgaWRlbnRpZmllcjoKLSAgICAgICAgICAgIGlmIGJyYW5jaCAhPSBzZWxmLmRlZmF1
bHRfYnJhbmNoIGFuZCByZXZpc2lvbiA+IHNlbGYuX21ldGFkYXRhX2NhY2hlLmdldChzZWxmLmRl
ZmF1bHRfYnJhbmNoLCBbMF0pWy0xXToKLSAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZV9yZXZp
c2lvbnMoYnJhbmNoPXNlbGYuZGVmYXVsdF9icmFuY2gpCi0gICAgICAgICAgICBpZiByZXZpc2lv
biBub3QgaW4gc2VsZi5fbWV0YWRhdGFfY2FjaGUuZ2V0KGJyYW5jaCwgW10pOgotICAgICAgICAg
ICAgICAgIHNlbGYuX2NhY2hlX3JldmlzaW9ucyhicmFuY2g9YnJhbmNoKQorICAgICAgICAgICAg
aWYgYnJhbmNoICE9IHNlbGYuZGVmYXVsdF9icmFuY2ggYW5kIHJldmlzaW9uID4gc2VsZi5jYWNo
ZS5fZGF0YS5nZXQoc2VsZi5kZWZhdWx0X2JyYW5jaCwgWzBdKVstMV06CisgICAgICAgICAgICAg
ICAgc2VsZi5jYWNoZS5wb3B1bGF0ZShicmFuY2g9c2VsZi5kZWZhdWx0X2JyYW5jaCkKKyAgICAg
ICAgICAgIGlmIHJldmlzaW9uIG5vdCBpbiBzZWxmLmNhY2hlLl9kYXRhLmdldChicmFuY2gsIFtd
KToKKyAgICAgICAgICAgICAgICBzZWxmLmNhY2hlLnBvcHVsYXRlKGJyYW5jaD1icmFuY2gpCiAg
ICAgICAgICAgICBpZGVudGlmaWVyID0gc2VsZi5fY29tbWl0X2NvdW50KHJldmlzaW9uPXJldmlz
aW9uLCBicmFuY2g9YnJhbmNoKQogCiAgICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUgaWYgbm90
IGluY2x1ZGVfaWRlbnRpZmllciBvciBicmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaCBlbHNl
IHNlbGYuX2NvbW1pdF9jb3VudChicmFuY2g9YnJhbmNoKQpJbmRleDogVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9zdm5fdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvdGVzdC9zdm5fdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3OTkyMykKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNiArMjQ3LDE4IEBAIGNsYXNzIFRlc3RMb2NhbFN2bih0
ZXN0aW5nLlBhdGhUZXN0Q2FzZSkKICAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJldmlzaW9u
PSdyMScpLAogICAgICAgICAgICAgXSksIENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChsaXN0KHN2
bi5jb21taXRzKGJlZ2luPWRpY3QoYXJndW1lbnQ9J3IxJyksIGVuZD1kaWN0KGFyZ3VtZW50PSdy
NycpKSkpKQogCisgICAgZGVmIHRlc3RfcmV2aXNpb25fY2FjaGUoc2VsZik6CisgICAgICAgIHdp
dGggbW9ja3MubG9jYWwuU3ZuKHNlbGYucGF0aCksIExvZ2dlckNhcHR1cmUoKToKKyAgICAgICAg
ICAgIHN2biA9IGxvY2FsLlN2bihzZWxmLnBhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN2bi5jYWNoZS50b19yZXZpc2lvbihpZGVudGlmaWVyPScxQHRydW5rJyksIDEpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN2bi5jYWNoZS50b19yZXZpc2lvbihpZGVudGlmaWVy
PScyLjFAYnJhbmNoLWEnKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ZuLmNh
Y2hlLnRvX3JldmlzaW9uKGlkZW50aWZpZXI9JzIuLTFAYnJhbmNoLWEnKSwgMSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ZuLmNhY2hlLnRvX2lkZW50aWZpZXIocmV2aXNpb249J3I2
JyksICc0QHRydW5rJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ZuLmNhY2hlLnRv
X2lkZW50aWZpZXIocmV2aXNpb249J3IzJywgYnJhbmNoPSdicmFuY2gtYScpLCAnMi4xQGJyYW5j
aC1hJykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdm4uY2FjaGUudG9faWRlbnRp
ZmllcihyZXZpc2lvbj0xMDApLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dm4uY2FjaGUudG9fcmV2aXNpb24oaGFzaD0nYmFkYzBkZDFmJyksIE5vbmUpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN2bi5jYWNoZS50b19yZXZpc2lvbihpZGVudGlmaWVyPSc2QHRy
dW5rJyksIE5vbmUpCiAKIGNsYXNzIFRlc3RSZW1vdGVTdm4odGVzdGluZy5UZXN0Q2FzZSk6CiAg
ICAgcmVtb3RlID0gJ2h0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvd2Via2l0Jwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433682</attachid>
            <date>2021-07-16 10:12:23 -0700</date>
            <delta_ts>2021-07-16 11:18:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-228000-20210716101222.patch</filename>
            <type>text/plain</type>
            <size>21691</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3OTk4NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMxIEBACisyMDIxLTA3LTE1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0c2NtcHldIFByb3ZpZGUgQVBJIHRvIGFjY2VzcyBTVk4gY2Fj
aGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODAw
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODA2NDY0NzE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGV3ZWkgWmh1LgorCisgICAgICAgIENyZWF0ZSBhIFN2biBjYWNoZSB3aXRoIHRoZSBzYW1l
IEFQSSBhcyB0aGUgR2l0IGNhY2hlLiBUaGlzIGFsbG93cworICAgICAgICBnaXQgYW5kIHN2biB0
byBzaGFyZSBsb2dpYyB3aGVuIGluc2VydGluZyBpZGVudGlmaWVycyBpbiBgbG9nYCBhbmQgYGJs
YW1lYC4KKworICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5
OiBCdW1wIHZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvX19pbml0X18ucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3N2bi5weToKKyAgICAgICAgKFN2bi5D
YWNoZS5wYXRoKTogUGF0aCB0byBjYWhjZSBmaWxlLgorICAgICAgICAoU3ZuLkNhY2hlLnBvcHVs
YXRlKTogRmlsbCBjYWNoZSBmcm9tIGBzdm4gbG9nYCBvcGVyYXRpb24uCisgICAgICAgIChTdm4u
Q2FjaGUudG9faGFzaCk6IFN2biBpcyB1bmF3YXJlIG9mIGhhc2hlcywgYW5kIGNhbiBuZXZlciBt
YXAgdGhlbS4KKyAgICAgICAgKFN2bi5DYWNoZS50b19yZXZpc2lvbik6IE1hcCBpZGVudGlmaWVy
cyB0byByZXZpc2lvbnMuCisgICAgICAgIChTdm4uQ2FjaGUudG9faWRlbnRpZmllcik6IE1hcCBy
ZXZpc2lvbnMgdG8gaWRlbnRpZmllcnMuCisgICAgICAgIChTdm4uX19pbml0X18pOiBVc2UgY2Fj
aGUgb2JqZWN0IGluc3RlYWQgb2YgX21ldGFkYXRhX2NhY2hlLgorICAgICAgICAoU3ZuLl9jb21t
aXRfY291bnQpOiBBY2Nlc3MgY2FjaGUgb2JqZWN0LgorICAgICAgICAoU3ZuLl9icmFuY2hfZm9y
KTogRGl0dG8uCisgICAgICAgIChTdm4uY29tbWl0KTogRGl0dG8uCisgICAgICAgIChTdm4uX2Nh
Y2hlX3BhdGgpOiBEZWxldGVkLgorICAgICAgICAoU3ZuLl9jYWNoZV9yZXZpc2lvbnMpOiBEZWxl
dGVkLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdExvY2FsU3ZuLnRlc3RfcmV2aXNp
b25fY2FjaGUpOgorCiAyMDIxLTA3LTE2ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
IGFuZCBWaWRlb0VuY29kZXIgYXJlIG5vdCBsaWJ3ZWJydGMtc3BlY2lmaWMKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5CShyZXZpc2lvbiAyNzk5
ODcpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weQkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAg
IG5hbWU9J3dlYmtpdHNjbXB5JywKLSAgICB2ZXJzaW9uPScwLjE0LjcnLAorICAgIHZlcnNpb249
JzAuMTUuMCcsCiAgICAgZGVzY3JpcHRpb249J0xpYnJhcnkgZGVzaWduZWQgdG8gaW50ZXJhY3Qg
d2l0aCBnaXQgYW5kIHN2biByZXBvc2l0b3JpZXMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJl
YWRtZSgpLAogICAgIGNsYXNzaWZpZXJzPVsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5CShy
ZXZpc2lvbiAyNzk5ODcpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBl
eGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICJQbGVhc2UgaW5zdGFsbCB3ZWJraXRjb3JlcHkg
d2l0aCBgcGlwIGluc3RhbGwgd2Via2l0Y29yZXB5IC0tZXh0cmEtaW5kZXgtdXJsIDxwYWNrYWdl
IGluZGV4IFVSTD5gIgogICAgICkKIAotdmVyc2lvbiA9IFZlcnNpb24oMCwgMTQsIDcpCit2ZXJz
aW9uID0gVmVyc2lvbigwLCAxNSwgMCkKIAogQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgn
ZmFzdGVuZXJzJywgVmVyc2lvbigwLCAxNSwgMCkpKQogQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFj
a2FnZSgnbW9ub3RvbmljJywgVmVyc2lvbigxLCA1KSkpCkluZGV4OiBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zdm4ucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwv
c3ZuLnB5CShyZXZpc2lvbiAyNzk5ODcpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zdm4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAgaW1wb3J0IHJlCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3VicHJvY2VzcwogaW1w
b3J0IHN5cworaW1wb3J0IHRpbWUKIAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRp
bWVkZWx0YQogCkBAIC0zOCw4ICszOSwxNzEgQEAgZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQ29t
bWl0LCBDb250cmlidQogCiAKIGNsYXNzIFN2bihTY20pOgotICAgIExPR19SRSA9IHJlLmNvbXBp
bGUocidyKD9QPHJldmlzaW9uPlxkKykgXHwgKD9QPGVtYWlsPi4qKSBcfCAoP1A8ZGF0ZT4uKikn
KQotICAgIENBQ0hFX1ZFUlNJT04gPSBWZXJzaW9uKDEpCisgICAgY2xhc3MgQ2FjaGUob2JqZWN0
KToKKyAgICAgICAgTE9HX1JFID0gcmUuY29tcGlsZShyJ3IoP1A8cmV2aXNpb24+XGQrKSBcfCAo
P1A8ZW1haWw+LiopIFx8ICg/UDxkYXRlPi4qKScpCisgICAgICAgIFZFUlNJT04gPSBWZXJzaW9u
KDEpCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcG8sIGd1cmFudGVlZF9mb3I9MTAp
OgorICAgICAgICAgICAgc2VsZi5yZXBvID0gcmVwbworICAgICAgICAgICAgc2VsZi5fbGFzdF9w
b3B1bGF0ZWQgPSB7fQorICAgICAgICAgICAgc2VsZi5fZ3VyYW50ZWVkX2ZvciA9IGd1cmFudGVl
ZF9mb3IKKworICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5wYXRoKToKKyAgICAg
ICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLnBhdGgs
ICdyJykgYXMgZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RhdGEgPSBqc29u
LmxvYWQoZmlsZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fZGF0YSA9IGRpY3QodmVyc2lvbj1zdHIoc2VsZi5WRVJTSU9O
KSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fZGF0YSA9IGRpY3Qo
dmVyc2lvbj1zdHIoc2VsZi5WRVJTSU9OKSkKKworICAgICAgICBAcHJvcGVydHkKKyAgICAgICAg
ZGVmIHBhdGgoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYucmVw
by5yb290X3BhdGgsICcuc3ZuJywgJ3dlYmtpdHNjbXB5LWNhY2hlLmpzb24nKQorCisgICAgICAg
IGRlZiBwb3B1bGF0ZShzZWxmLCBicmFuY2g9Tm9uZSk6CisgICAgICAgICAgICBicmFuY2ggPSBi
cmFuY2ggb3Igc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoCisgICAgICAgICAgICBpZiBzZWxmLl9s
YXN0X3BvcHVsYXRlZC5nZXQoYnJhbmNoLCAwKSArIHNlbGYuX2d1cmFudGVlZF9mb3IgPiB0aW1l
LnRpbWUoKToKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgaXNfZGVmYXVs
dF9icmFuY2ggPSBicmFuY2ggPT0gc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoCisgICAgICAgICAg
ICBpZiBicmFuY2ggbm90IGluIHNlbGYuX2RhdGE6CisgICAgICAgICAgICAgICAgc2VsZi5fZGF0
YVticmFuY2hdID0gWzBdIGlmIGlzX2RlZmF1bHRfYnJhbmNoIGVsc2UgW10KKyAgICAgICAgICAg
IHBvcyA9IGxlbihzZWxmLl9kYXRhW2JyYW5jaF0pCisKKyAgICAgICAgICAgICMgSWYgd2UgYXJl
bid0IG9uIHRoZSBkZWZhdWx0IGJyYW5jaCwgd2Ugd2lsbCBuZWVkIHRoZSBkZWZhdWx0IGJyYW5j
aCB0byBkZXRlcm1pbmUgd2hlbgorICAgICAgICAgICAgIyBvdXIgIGJyYW5jaCAgaW50ZXJzZWN0
cyB3aXRoIHRoZSBkZWZhdWx0IGJyYW5jaC4KKyAgICAgICAgICAgIGlmIG5vdCBpc19kZWZhdWx0
X2JyYW5jaDoKKyAgICAgICAgICAgICAgICBzZWxmLnBvcHVsYXRlKGJyYW5jaD1zZWxmLnJlcG8u
ZGVmYXVsdF9icmFuY2gpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkaWRf
d2FybiA9IEZhbHNlCisgICAgICAgICAgICAgICAgY291bnQgPSAwCisgICAgICAgICAgICAgICAg
bG9nID0gTm9uZQorCisgICAgICAgICAgICAgICAgaWYgaXNfZGVmYXVsdF9icmFuY2ggb3IgJy8n
IGluIGJyYW5jaDoKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoX2FyZyA9ICdeL3t9Jy5mb3Jt
YXQoYnJhbmNoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGJy
YW5jaF9hcmcgPSAnXi9icmFuY2hlcy97fScuZm9ybWF0KGJyYW5jaCkKKworICAgICAgICAgICAg
ICAgIGt3YXJncyA9IGRpY3QoKQorICAgICAgICAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8g
Pj0gKDMsIDApOgorICAgICAgICAgICAgICAgICAgICBrd2FyZ3MgPSBkaWN0KGVuY29kaW5nPSd1
dGYtOCcpCisKKyAgICAgICAgICAgICAgICBzZWxmLl9sYXN0X3BvcHVsYXRlZFticmFuY2hdID0g
dGltZS50aW1lKCkKKyAgICAgICAgICAgICAgICBsb2cgPSBzdWJwcm9jZXNzLlBvcGVuKAorICAg
ICAgICAgICAgICAgICAgICBbc2VsZi5yZXBvLmV4ZWN1dGFibGUoKSwgJ2xvZycsICctcScsIGJy
YW5jaF9hcmddLAorICAgICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5yZXBvLnJvb3RfcGF0aCwK
KyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAg
ICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgKipr
d2FyZ3MKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgaWYgbG9nLnBvbGwoKToK
KyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5yZXBvLkV4Y2VwdGlvbigiRmFpbGVkIHRv
IGNvbnN0cnVjdCBicmFuY2ggaGlzdG9yeSBmb3IgJ3t9JyIuZm9ybWF0KGJyYW5jaCkpCisKKyAg
ICAgICAgICAgICAgICBkZWZhdWx0X2NvdW50ID0gMAorICAgICAgICAgICAgICAgIGxpbmUgPSBs
b2cuc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICB3aGlsZSBsaW5lOgorICAgICAg
ICAgICAgICAgICAgICBtYXRjaCA9IHNlbGYuTE9HX1JFLm1hdGNoKGxpbmUpCisgICAgICAgICAg
ICAgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRpZF93
YXJuOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiBjb3VudCA+IDEwMDA6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYucmVwby5sb2coJ0NhY2hpbmcgY29tbWl0IGRhdGEgZm9yIHt9LCB0aGlz
IHdpbGwgdGFrZSBhIGZldyBtaW51dGVzLi4uJy5mb3JtYXQoYnJhbmNoKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlkX3dhcm4gPSBUcnVlCisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldmlzaW9uID0gaW50KG1hdGNoLmdyb3VwKCdyZXZpc2lvbicpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgcG9zID4gMCBhbmQgc2VsZi5fZGF0YVticmFuY2hdW3BvcyAtIDFd
ID09IHJldmlzaW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiBub3QgaXNfZGVmYXVsdF9icmFuY2g6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgcmV2aXNpb24gaW4gc2VsZi5fZGF0YVtzZWxmLnJlcG8uZGVmYXVs
dF9icmFuY2hdOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9ubHkgaGFuZGxl
IDIgc2VxdWVudGlhbCBjcm9zcy1icmFuY2ggY29tbWl0cworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiBkZWZhdWx0X2NvdW50ID4gMjoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHRfY291bnQgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfY291bnQgPSAwCisgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9kYXRhW2JyYW5jaF0uaW5zZXJ0KHBvcywgcmV2aXNpb24pCisgICAg
ICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAg
IGZpbmFsbHk6CisgICAgICAgICAgICAgICAgaWYgbG9nOgorICAgICAgICAgICAgICAgICAgICBs
b2cua2lsbCgpCisKKyAgICAgICAgICAgIGlmIGRlZmF1bHRfY291bnQ6CisgICAgICAgICAgICAg
ICAgc2VsZi5fZGF0YVticmFuY2hdID0gc2VsZi5fZGF0YVticmFuY2hdW2RlZmF1bHRfY291bnQg
LSAxOl0KKyAgICAgICAgICAgIGlmIHNlbGYuX2RhdGFbc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNo
XVswXSA9PSBbMF06CisgICAgICAgICAgICAgICAgc2VsZi5fZGF0YVsnaWRlbnRpZmllciddID0g
bGVuKHNlbGYuX2RhdGFbYnJhbmNoXSkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ICAgIHdpdGggb3BlbihzZWxmLnBhdGgsICd3JykgYXMgZmlsZToKKyAgICAgICAgICAgICAgICAg
ICAganNvbi5kdW1wKHNlbGYuX2RhdGEsIGZpbGUsIGluZGVudD00KQorICAgICAgICAgICAgZXhj
ZXB0IChJT0Vycm9yLCBPU0Vycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLnJlcG8ubG9nKCJG
YWlsZWQgdG8gd3JpdGUgU1ZOIGNhY2hlIHRvICd7fSciLmZvcm1hdChzZWxmLnBhdGgpKQorCisg
ICAgICAgICAgICByZXR1cm4gc2VsZi5fZGF0YVticmFuY2hdCisKKyAgICAgICAgZGVmIHRvX2hh
c2goc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBk
ZWYgdG9fcmV2aXNpb24oc2VsZiwgaGFzaD1Ob25lLCBpZGVudGlmaWVyPU5vbmUsIHBvcHVsYXRl
PVRydWUsIGJyYW5jaD1Ob25lKToKKyAgICAgICAgICAgIGlmIGhhc2g6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHBhcnRzID0gQ29tbWl0Ll9wYXJzZV9pZGVudGlm
aWVyKGlkZW50aWZpZXIsIGRvX2Fzc2VydD1GYWxzZSkKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0
czoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICBfLCBiX2NvdW50
LCBicmFuY2ggPSBwYXJ0cworICAgICAgICAgICAgaWYgYnJhbmNoIG5vdCBpbiBzZWxmLl9kYXRh
IGFuZCBwb3B1bGF0ZToKKyAgICAgICAgICAgICAgICBzZWxmLnBvcHVsYXRlKGJyYW5jaD1icmFu
Y2gpCisgICAgICAgICAgICBpZiBicmFuY2ggbm90IGluIHNlbGYuX2RhdGE6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgaWYgYl9jb3VudCA8IDA6CisgICAgICAg
ICAgICAgICAgYnBfaWRlbnRpZmllciA9IHNlbGYudG9faWRlbnRpZmllcihyZXZpc2lvbj1zZWxm
Ll9kYXRhW2JyYW5jaF1bMF0pCisgICAgICAgICAgICAgICAgaWYgbm90IGJwX2lkZW50aWZpZXI6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICAgICAgaW5kZXgg
PSBpbnQoYnBfaWRlbnRpZmllci5zcGxpdCgnQCcpWzBdKSArIGJfY291bnQKKyAgICAgICAgICAg
ICAgICBpZiBpbmRleCA8PSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAg
ICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kYXRhW3NlbGYucmVwby5kZWZhdWx0X2JyYW5jaF1b
aW5kZXhdCisgICAgICAgICAgICBpZiBiX2NvdW50ID49IGxlbihzZWxmLl9kYXRhW2JyYW5jaF0p
IGFuZCBwb3B1bGF0ZToKKyAgICAgICAgICAgICAgICBzZWxmLnBvcHVsYXRlKGJyYW5jaD1icmFu
Y2gpCisgICAgICAgICAgICBpZiBiX2NvdW50ID49IGxlbihzZWxmLl9kYXRhW2JyYW5jaF0pOgor
ICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZGF0
YVticmFuY2hdW2JfY291bnRdCisKKyAgICAgICAgZGVmIHRvX2lkZW50aWZpZXIoc2VsZiwgaGFz
aD1Ob25lLCByZXZpc2lvbj1Ob25lLCBwb3B1bGF0ZT1UcnVlLCBicmFuY2g9Tm9uZSk6CisgICAg
ICAgICAgICBpZiBoYXNoOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAg
ICAgIHJldmlzaW9uID0gQ29tbWl0Ll9wYXJzZV9yZXZpc2lvbihyZXZpc2lvbiwgZG9fYXNzZXJ0
PUZhbHNlKQorICAgICAgICAgICAgaWYgbm90IHJldmlzaW9uOgorICAgICAgICAgICAgICAgIHJl
dHVybiBOb25lCisKKyAgICAgICAgICAgIGJyYW5jaCA9IGJyYW5jaCBvciBzZWxmLnJlcG8uYnJh
bmNoCisgICAgICAgICAgICBpZiBicmFuY2ggbm90IGluIHNlbGYuX2RhdGEgYW5kIHBvcHVsYXRl
OgorICAgICAgICAgICAgICAgIHNlbGYucG9wdWxhdGUoYnJhbmNoPWJyYW5jaCkKKyAgICAgICAg
ICAgIGlmIGJyYW5jaCBub3QgaW4gc2VsZi5fZGF0YToKKyAgICAgICAgICAgICAgICByZXR1cm4g
Tm9uZQorCisgICAgICAgICAgICBpbmRleCA9IGJpc2VjdC5iaXNlY3RfbGVmdChzZWxmLl9kYXRh
W2JyYW5jaF0sIHJldmlzaW9uKQorICAgICAgICAgICAgZXhpc3RzID0gaW5kZXggPCBsZW4oc2Vs
Zi5fZGF0YVticmFuY2hdKSBhbmQgc2VsZi5fZGF0YVticmFuY2hdW2luZGV4XSA9PSByZXZpc2lv
bgorICAgICAgICAgICAgaWYgbm90IGV4aXN0czoKKyAgICAgICAgICAgICAgICBzZWxmLnBvcHVs
YXRlKGJyYW5jaD1icmFuY2gpCisgICAgICAgICAgICAgICAgaW5kZXggPSBiaXNlY3QuYmlzZWN0
X2xlZnQoc2VsZi5fZGF0YVticmFuY2hdLCByZXZpc2lvbikKKyAgICAgICAgICAgICAgICBleGlz
dHMgPSBpbmRleCA8IGxlbihzZWxmLl9kYXRhW2JyYW5jaF0pIGFuZCBzZWxmLl9kYXRhW2JyYW5j
aF0gPT0gcmV2aXNpb24KKworICAgICAgICAgICAgaWYgbm90IGV4aXN0cyBvciBub3QgaW5kZXg6
CisgICAgICAgICAgICAgICAgaWYgYnJhbmNoICE9IHNlbGYucmVwby5kZWZhdWx0X2JyYW5jaDoK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudG9faWRlbnRpZmllcihicmFuY2g9c2Vs
Zi5yZXBvLmRlZmF1bHRfYnJhbmNoLCBwb3B1bGF0ZT1wb3B1bGF0ZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICBpZiBicmFuY2ggPT0gc2VsZi5yZXBvLmRlZmF1
bHRfYnJhbmNoOgorICAgICAgICAgICAgICAgIHJldHVybiAne31AdHJ1bmsnLmZvcm1hdChpbmRl
eCwgc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoKQorCisgICAgICAgICAgICBicmFuY2hfcG9pbnQg
PSBiaXNlY3QuYmlzZWN0X2xlZnQoc2VsZi5fZGF0YVtzZWxmLnJlcG8uZGVmYXVsdF9icmFuY2hd
LCBzZWxmLl9kYXRhW2JyYW5jaF1bMF0pCisgICAgICAgICAgICByZXR1cm4gJ3t9Lnt9QHt9Jy5m
b3JtYXQoYnJhbmNoX3BvaW50LCBpbmRleCwgYnJhbmNoKQorCiAKICAgICBAY2xhc3NtZXRob2QK
ICAgICBAZGVjb3JhdG9ycy5NZW1vaXplKCkKQEAgLTUwLDcgKzIxNCw3IEBAIGNsYXNzIFN2bihT
Y20pOgogICAgIGRlZiBpc19jaGVja291dChjbHMsIHBhdGgpOgogICAgICAgICByZXR1cm4gcnVu
KFtjbHMuZXhlY3V0YWJsZSgpLCAnaW5mbyddLCBjd2Q9cGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1
ZSkucmV0dXJuY29kZSA9PSAwCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZGV2X2Jy
YW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9uZSwgY29udHJpYnV0b3JzPU5vbmUsIGlkPU5v
bmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJv
ZF9icmFuY2hlcz1Ob25lLCBjb250cmlidXRvcnM9Tm9uZSwgaWQ9Tm9uZSwgY2FjaGVkPVRydWUp
OgogICAgICAgICBzdXBlcihTdm4sIHNlbGYpLl9faW5pdF9fKHBhdGgsIGRldl9icmFuY2hlcz1k
ZXZfYnJhbmNoZXMsIHByb2RfYnJhbmNoZXM9cHJvZF9icmFuY2hlcywgY29udHJpYnV0b3JzPWNv
bnRyaWJ1dG9ycywgaWQ9aWQpCiAKICAgICAgICAgc2VsZi5fcm9vdF9wYXRoID0gc2VsZi5wYXRo
CkBAIC01OSwxNCArMjIzLDcgQEAgY2xhc3MgU3ZuKFNjbSk6CiAgICAgICAgIGlmIG5vdCBzZWxm
LnJvb3RfcGF0aDoKICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ1Byb3ZpZGVkIHBhdGgge30g
aXMgbm90IGEgc3ZuIHJlcG9zaXRvcnknLmZvcm1hdChwYXRoKSkKIAotICAgICAgICBpZiBvcy5w
YXRoLmV4aXN0cyhzZWxmLl9jYWNoZV9wYXRoKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgICAgICB3aXRoIG9wZW4oc2VsZi5fY2FjaGVfcGF0aCkgYXMgZmlsZToKLSAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fbWV0YWRhdGFfY2FjaGUgPSBqc29uLmxvYWQoZmlsZSkKLSAgICAgICAg
ICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHNlbGYuX21ldGFkYXRh
X2NhY2hlID0gZGljdCh2ZXJzaW9uPXN0cihzZWxmLkNBQ0hFX1ZFUlNJT04pKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgc2VsZi5fbWV0YWRhdGFfY2FjaGUgPSBkaWN0KHZlcnNpb249c3Ry
KHNlbGYuQ0FDSEVfVkVSU0lPTikpCisgICAgICAgIHNlbGYuY2FjaGUgPSBzZWxmLkNhY2hlKHNl
bGYpIGlmIGNhY2hlZCBlbHNlIE5vbmUKIAogICAgIEBkZWNvcmF0b3JzLk1lbW9pemUoY2FjaGVk
PUZhbHNlKQogICAgIGRlZiBpbmZvKHNlbGYsIGJyYW5jaD1Ob25lLCByZXZpc2lvbj1Ob25lLCB0
YWc9Tm9uZSk6CkBAIC0xMjUsMTA1ICsyODIsMjggQEAgY2xhc3MgU3ZuKFNjbSk6CiAgICAgZGVm
IHRhZ3Moc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmxpc3QoJ3RhZ3MnKQogCi0gICAgQHBy
b3BlcnR5Ci0gICAgZGVmIF9jYWNoZV9wYXRoKHNlbGYpOgotICAgICAgICByZXR1cm4gb3MucGF0
aC5qb2luKHNlbGYucm9vdF9wYXRoLCAnLnN2bicsICd3ZWJraXRzY21weS1jYWNoZS5qc29uJykK
LQotICAgIGRlZiBfY2FjaGVfcmV2aXNpb25zKHNlbGYsIGJyYW5jaD1Ob25lKToKLSAgICAgICAg
YnJhbmNoID0gYnJhbmNoIG9yIHNlbGYuZGVmYXVsdF9icmFuY2gKLSAgICAgICAgaXNfZGVmYXVs
dF9icmFuY2ggPSBicmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaAotICAgICAgICBpZiBicmFu
Y2ggbm90IGluIHNlbGYuX21ldGFkYXRhX2NhY2hlOgotICAgICAgICAgICAgc2VsZi5fbWV0YWRh
dGFfY2FjaGVbYnJhbmNoXSA9IFswXSBpZiBpc19kZWZhdWx0X2JyYW5jaCBlbHNlIFtdCi0gICAg
ICAgIHBvcyA9IGxlbihzZWxmLl9tZXRhZGF0YV9jYWNoZVticmFuY2hdKQotCi0gICAgICAgICMg
SWYgd2UgYXJlbid0IG9uIHRoZSBkZWZhdWx0IGJyYW5jaCwgd2Ugd2lsbCBuZWVkIHRoZSBkZWZh
dWx0IGJyYW5jaCB0byBkZXRlcm1pbmUgd2hlbgotICAgICAgICAjIG91ciAgYnJhbmNoICBpbnRl
cnNlY3RzIHdpdGggdGhlIGRlZmF1bHQgYnJhbmNoLgotICAgICAgICBpZiBub3QgaXNfZGVmYXVs
dF9icmFuY2g6Ci0gICAgICAgICAgICBzZWxmLl9jYWNoZV9yZXZpc2lvbnMoYnJhbmNoPXNlbGYu
ZGVmYXVsdF9icmFuY2gpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGlkX3dhcm4gPSBG
YWxzZQotICAgICAgICAgICAgY291bnQgPSAwCi0gICAgICAgICAgICBsb2cgPSBOb25lCi0KLSAg
ICAgICAgICAgIGlmIGlzX2RlZmF1bHRfYnJhbmNoIG9yICcvJyBpbiBicmFuY2g6Ci0gICAgICAg
ICAgICAgICAgYnJhbmNoX2FyZyA9ICdeL3t9Jy5mb3JtYXQoYnJhbmNoKQotICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICBicmFuY2hfYXJnID0gJ14vYnJhbmNoZXMve30nLmZvcm1h
dChicmFuY2gpCi0KLSAgICAgICAgICAgIGt3YXJncyA9IGRpY3QoKQotICAgICAgICAgICAgaWYg
c3lzLnZlcnNpb25faW5mbyA+PSAoMywgMCk6Ci0gICAgICAgICAgICAgICAga3dhcmdzID0gZGlj
dChlbmNvZGluZz0ndXRmLTgnKQotCi0gICAgICAgICAgICBsb2cgPSBzdWJwcm9jZXNzLlBvcGVu
KAotICAgICAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUoKSwgJ2xvZycsICctcScsIGJyYW5j
aF9hcmddLAotICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnJvb3RfcGF0aCwKLSAgICAgICAgICAg
ICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJw
cm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgKiprd2FyZ3MKLSAgICAgICAgICAgICkKLSAg
ICAgICAgICAgIGlmIGxvZy5wb2xsKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNl
cHRpb24oIkZhaWxlZCB0byBjb25zdHJ1Y3QgYnJhbmNoIGhpc3RvcnkgZm9yICd7fSciLmZvcm1h
dChicmFuY2gpKQotCi0gICAgICAgICAgICBkZWZhdWx0X2NvdW50ID0gMAotICAgICAgICAgICAg
bGluZSA9IGxvZy5zdGRvdXQucmVhZGxpbmUoKQotICAgICAgICAgICAgd2hpbGUgbGluZToKLSAg
ICAgICAgICAgICAgICBtYXRjaCA9IHNlbGYuTE9HX1JFLm1hdGNoKGxpbmUpCi0gICAgICAgICAg
ICAgICAgaWYgbWF0Y2g6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkaWRfd2FybjoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIGNvdW50ID4gMTAwMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZygn
Q2FjaGluZyBjb21taXQgZGF0YSBmb3Ige30sIHRoaXMgd2lsbCB0YWtlIGEgZmV3IG1pbnV0ZXMu
Li4nLmZvcm1hdChicmFuY2gpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZF93YXJu
ID0gVHJ1ZQotCi0gICAgICAgICAgICAgICAgICAgIHJldmlzaW9uID0gaW50KG1hdGNoLmdyb3Vw
KCdyZXZpc2lvbicpKQotICAgICAgICAgICAgICAgICAgICBpZiBwb3MgPiAwIGFuZCBzZWxmLl9t
ZXRhZGF0YV9jYWNoZVticmFuY2hdW3BvcyAtIDFdID09IHJldmlzaW9uOgotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzX2RlZmF1bHRf
YnJhbmNoOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmV2aXNpb24gaW4gc2VsZi5fbWV0
YWRhdGFfY2FjaGVbc2VsZi5kZWZhdWx0X2JyYW5jaF06Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIyBPbmx5IGhhbmRsZSAyIHNlcXVlbnRpYWwgY3Jvc3MtYnJhbmNoIGNvbW1pdHMKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWZhdWx0X2NvdW50ID4gMjoKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0X2NvdW50ICs9IDEKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9jb3VudCA9IDAKLSAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXS5pbnNlcnQocG9zLCByZXZpc2lvbikK
LSAgICAgICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpCi0gICAgICAgIGZp
bmFsbHk6Ci0gICAgICAgICAgICBpZiBsb2c6Ci0gICAgICAgICAgICAgICAgbG9nLmtpbGwoKQot
Ci0gICAgICAgIGlmIGRlZmF1bHRfY291bnQ6Ci0gICAgICAgICAgICBzZWxmLl9tZXRhZGF0YV9j
YWNoZVticmFuY2hdID0gc2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXVtkZWZhdWx0X2NvdW50
IC0gMTpdCi0gICAgICAgIGlmIHNlbGYuX21ldGFkYXRhX2NhY2hlW3NlbGYuZGVmYXVsdF9icmFu
Y2hdWzBdID09IFswXToKLSAgICAgICAgICAgIHNlbGYuX21ldGFkYXRhX2NhY2hlWydpZGVudGlm
aWVyJ10gPSBsZW4oc2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXSkKLQotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5fY2FjaGVfcGF0aCwgJ3cnKSBhcyBmaWxlOgot
ICAgICAgICAgICAgICAgIGpzb24uZHVtcChzZWxmLl9tZXRhZGF0YV9jYWNoZSwgZmlsZSwgaW5k
ZW50PTQpCi0gICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgT1NFcnJvcik6Ci0gICAgICAgICAgICBz
ZWxmLmxvZygiRmFpbGVkIHRvIHdyaXRlIFNWTiBjYWNoZSB0byAne30nIi5mb3JtYXQoc2VsZi5f
Y2FjaGVfcGF0aCkpCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5j
aF0KLQogICAgIGRlZiBfY29tbWl0X2NvdW50KHNlbGYsIHJldmlzaW9uPU5vbmUsIGJyYW5jaD1O
b25lKToKICAgICAgICAgYnJhbmNoID0gYnJhbmNoIG9yIHNlbGYuZGVmYXVsdF9icmFuY2gKKyAg
ICAgICAgaWYgbm90IHNlbGYuY2FjaGU6CisgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlv
bignTm8gYXZhaWxhYmxlIGNhY2hlLCBjYW5ub3QgY291bnQgY29tbWl0cycpCiAKICAgICAgICAg
aWYgcmV2aXNpb246Ci0gICAgICAgICAgICBpZiByZXZpc2lvbiBub3QgaW4gc2VsZi5fbWV0YWRh
dGFfY2FjaGVbYnJhbmNoXToKKyAgICAgICAgICAgIGlmIHJldmlzaW9uIG5vdCBpbiBzZWxmLmNh
Y2hlLl9kYXRhW2JyYW5jaF06CiAgICAgICAgICAgICAgICAgaWYgJ2JyYW5jaCcgbm90IGluIGJy
YW5jaCBhbmQgYnJhbmNoICE9ICd0cnVuayc6CiAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRl
cnIud3JpdGUoIkNoZWNrIGlmICdye30nIGlzIGEgdGFnXG4iLmZvcm1hdChyZXZpc2lvbikpCiAg
ICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byBmaW5kICd7fScg
b24gJ3t9JyIuZm9ybWF0KHJldmlzaW9uLCBicmFuY2gpKQotICAgICAgICAgICAgcmV0dXJuIGJp
c2VjdC5iaXNlY3RfbGVmdChzZWxmLl9tZXRhZGF0YV9jYWNoZVticmFuY2hdLCBpbnQocmV2aXNp
b24pKQorICAgICAgICAgICAgcmV0dXJuIGJpc2VjdC5iaXNlY3RfbGVmdChzZWxmLmNhY2hlLl9k
YXRhW2JyYW5jaF0sIGludChyZXZpc2lvbikpCiAgICAgICAgIGlmIGJyYW5jaCA9PSBzZWxmLmRl
ZmF1bHRfYnJhbmNoOgotICAgICAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9tZXRhZGF0YV9jYWNo
ZVticmFuY2hdKQotICAgICAgICByZXR1cm4gc2VsZi5fY29tbWl0X2NvdW50KHJldmlzaW9uPXNl
bGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF1bMF0sIGJyYW5jaD1zZWxmLmRlZmF1bHRfYnJhbmNo
KQorICAgICAgICAgICAgcmV0dXJuIGxlbihzZWxmLmNhY2hlLl9kYXRhW2JyYW5jaF0pCisgICAg
ICAgIHJldHVybiBzZWxmLl9jb21taXRfY291bnQocmV2aXNpb249c2VsZi5jYWNoZS5fZGF0YVti
cmFuY2hdWzBdLCBicmFuY2g9c2VsZi5kZWZhdWx0X2JyYW5jaCkKIAogICAgIGRlZiByZW1vdGUo
c2VsZiwgbmFtZT1Ob25lKToKICAgICAgICAgcmV0dXJuIHNlbGYuaW5mbyhjYWNoZWQ9VHJ1ZSlb
J1JlcG9zaXRvcnkgUm9vdCddCiAKICAgICBkZWYgX2JyYW5jaF9mb3Ioc2VsZiwgcmV2aXNpb24p
OgotICAgICAgICBjYW5kaWRhdGVzID0gW2JyYW5jaCBmb3IgYnJhbmNoLCByZXZpc2lvbnMgaW4g
c2VsZi5fbWV0YWRhdGFfY2FjaGUuaXRlbXMoKSBpZiBicmFuY2ggIT0gJ3ZlcnNpb24nIGFuZCBy
ZXZpc2lvbiBpbiByZXZpc2lvbnNdCisgICAgICAgIGlmIG5vdCBzZWxmLmNhY2hlOgorICAgICAg
ICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ05vIGF2YWlsYWJsZSBjYWNoZSwgY2Fubm90IGRl
dGVybWluZSBicmFuY2gnKQorICAgICAgICBjYW5kaWRhdGVzID0gW2JyYW5jaCBmb3IgYnJhbmNo
LCByZXZpc2lvbnMgaW4gc2VsZi5jYWNoZS5fZGF0YS5pdGVtcygpIGlmIGJyYW5jaCAhPSAndmVy
c2lvbicgYW5kIHJldmlzaW9uIGluIHJldmlzaW9uc10KICAgICAgICAgY2FuZGlkYXRlID0gc2Vs
Zi5wcmlvcml0aXplX2JyYW5jaGVzKGNhbmRpZGF0ZXMpIGlmIGNhbmRpZGF0ZXMgZWxzZSBOb25l
CiAKICAgICAgICAgIyBJbiB0aGUgZGVmYXVsdCBicmFuY2ggY2FzZSwgd2UgZG9uJ3QgZXZlbiBu
ZWVkIHRvIGFzayB0aGUgcmVtb3RlCkBAIC0yNzYsNiArMzU2LDggQEAgY2xhc3MgU3ZuKFNjbSk6
CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fubm90IGRlZmluZSBib3RoIHJl
dmlzaW9uIGFuZCBpZGVudGlmaWVyJykKICAgICAgICAgICAgIGlmIHRhZzoKICAgICAgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5ub3QgZGVmaW5lIGJvdGggdGFnIGFuZCBpZGVudGlm
aWVyJykKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNhY2hlOgorICAgICAgICAgICAgICAgIHJh
aXNlIHNlbGYuRXhjZXB0aW9uKCdObyBhdmFpbGFibGUgY2FjaGUsIGNhbm5vdCBhY2Nlc3MgYnkg
aWRlbnRpZmllcicpCiAKICAgICAgICAgICAgIHBhcnNlZF9icmFuY2hfcG9pbnQsIGlkZW50aWZp
ZXIsIHBhcnNlZF9icmFuY2ggPSBDb21taXQuX3BhcnNlX2lkZW50aWZpZXIoaWRlbnRpZmllciwg
ZG9fYXNzZXJ0PVRydWUpCiAgICAgICAgICAgICBpZiBwYXJzZWRfYnJhbmNoOgpAQCAtMjkzLDEx
ICszNzUsMTEgQEAgY2xhc3MgU3ZuKFNjbSk6CiAKICAgICAgICAgICAgICMgUG9wdWxhdGUgbWFw
cGluZyBvZiByZXZpc2lvbnMgb24gdGhlaXIgcmVzcGVjdGl2ZSBicmFuY2hlcyBpZiB3ZSBkb24n
dCBoYXZlIGVub3VnaCByZXZpc2lvbnMgb24gdGhlCiAgICAgICAgICAgICAjIGJyYW5jaCBzcGVj
aWZpZWQgYnkgdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKLSAgICAgICAgICAgIGlmIG5vdCBzZWxm
Ll9tZXRhZGF0YV9jYWNoZS5nZXQoYnJhbmNoLCBbXSkgb3IgaWRlbnRpZmllciA+PSBsZW4oc2Vs
Zi5fbWV0YWRhdGFfY2FjaGUuZ2V0KGJyYW5jaCwgW10pKToKKyAgICAgICAgICAgIGlmIG5vdCBz
ZWxmLmNhY2hlLl9kYXRhLmdldChicmFuY2gsIFtdKSBvciBpZGVudGlmaWVyID49IGxlbihzZWxm
LmNhY2hlLl9kYXRhLmdldChicmFuY2gsIFtdKSk6CiAgICAgICAgICAgICAgICAgaWYgYnJhbmNo
ICE9IHNlbGYuZGVmYXVsdF9icmFuY2g6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hl
X3JldmlzaW9ucyhicmFuY2g9c2VsZi5kZWZhdWx0X2JyYW5jaCkKLSAgICAgICAgICAgICAgICBz
ZWxmLl9jYWNoZV9yZXZpc2lvbnMoYnJhbmNoPWJyYW5jaCkKLSAgICAgICAgICAgIGlmIGlkZW50
aWZpZXIgPiBsZW4oc2VsZi5fbWV0YWRhdGFfY2FjaGUuZ2V0KGJyYW5jaCwgW10pKToKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5jYWNoZS5wb3B1bGF0ZShicmFuY2g9c2VsZi5kZWZhdWx0X2Jy
YW5jaCkKKyAgICAgICAgICAgICAgICBzZWxmLmNhY2hlLnBvcHVsYXRlKGJyYW5jaD1icmFuY2gp
CisgICAgICAgICAgICBpZiBpZGVudGlmaWVyID4gbGVuKHNlbGYuY2FjaGUuX2RhdGEuZ2V0KGJy
YW5jaCwgW10pKToKICAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignSWRlbnRp
ZmllciB7fSBjYW5ub3QgYmUgZm91bmQgb24gdGhlIHNwZWNpZmllZCBicmFuY2ggaW4gdGhlIGN1
cnJlbnQgY2hlY2tvdXQnLmZvcm1hdChpZGVudGlmaWVyKSkKIAogICAgICAgICAgICAgaWYgaWRl
bnRpZmllciA8PSAwOgpAQCAtMzA5LDExICszOTEsMTEgQEAgY2xhc3MgU3ZuKFNjbSk6CiAKICAg
ICAgICAgICAgICAgICBicmFuY2ggPSBzZWxmLmRlZmF1bHRfYnJhbmNoCiAKLSAgICAgICAgICAg
IHJldmlzaW9uID0gc2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXVtpZGVudGlmaWVyXQorICAg
ICAgICAgICAgcmV2aXNpb24gPSBzZWxmLmNhY2hlLl9kYXRhW2JyYW5jaF1baWRlbnRpZmllcl0K
ICAgICAgICAgICAgIGluZm8gPSBzZWxmLmluZm8oY2FjaGVkPVRydWUsIGJyYW5jaD1icmFuY2gs
IHJldmlzaW9uPXJldmlzaW9uKQogICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5fYnJhbmNoX2Zv
cihyZXZpc2lvbikKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9tZXRhZGF0YV9jYWNoZS5nZXQo
YnJhbmNoLCBbXSkgb3IgaWRlbnRpZmllciA+PSBsZW4oc2VsZi5fbWV0YWRhdGFfY2FjaGUuZ2V0
KGJyYW5jaCwgW10pKToKLSAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZV9yZXZpc2lvbnMoYnJh
bmNoPWJyYW5jaCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNhY2hlLl9kYXRhLmdldChicmFu
Y2gsIFtdKSBvciBpZGVudGlmaWVyID49IGxlbihzZWxmLmNhY2hlLl9kYXRhLmdldChicmFuY2gs
IFtdKSk6CisgICAgICAgICAgICAgICAgc2VsZi5jYWNoZS5wb3B1bGF0ZShicmFuY2g9YnJhbmNo
KQogCiAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBjb21taXQgaW5mbyBhbmQgYnJhbmNoIGZvciBh
IGdpdmVuIHJldmlzaW9uCiAgICAgICAgIGVsaWYgcmV2aXNpb246CkBAIC0zNTIsMTEgKzQzNCwx
MSBAQCBjbGFzcyBTdm4oU2NtKToKICAgICAgICAgICAgICkgKiAoMSBpZiB0el9kaWZmWzBdID09
ICctJyBlbHNlIC0xKQogCiAgICAgICAgICMgQ29tcHV0ZSB0aGUgaWRlbnRpZmllciBpZiB0aGUg
ZnVuY3Rpb24gZGlkIG5vdCByZWNlaXZlIG9uZSBhbmQgd2Ugd2VyZSBhc2tlZCB0bwotICAgICAg
ICBpZiBpbmNsdWRlX2lkZW50aWZpZXIgYW5kIG5vdCBpZGVudGlmaWVyOgotICAgICAgICAgICAg
aWYgYnJhbmNoICE9IHNlbGYuZGVmYXVsdF9icmFuY2ggYW5kIHJldmlzaW9uID4gc2VsZi5fbWV0
YWRhdGFfY2FjaGUuZ2V0KHNlbGYuZGVmYXVsdF9icmFuY2gsIFswXSlbLTFdOgotICAgICAgICAg
ICAgICAgIHNlbGYuX2NhY2hlX3JldmlzaW9ucyhicmFuY2g9c2VsZi5kZWZhdWx0X2JyYW5jaCkK
LSAgICAgICAgICAgIGlmIHJldmlzaW9uIG5vdCBpbiBzZWxmLl9tZXRhZGF0YV9jYWNoZS5nZXQo
YnJhbmNoLCBbXSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVfcmV2aXNpb25zKGJyYW5j
aD1icmFuY2gpCisgICAgICAgIGlmIHNlbGYuY2FjaGUgYW5kIGluY2x1ZGVfaWRlbnRpZmllciBh
bmQgbm90IGlkZW50aWZpZXI6CisgICAgICAgICAgICBpZiBicmFuY2ggIT0gc2VsZi5kZWZhdWx0
X2JyYW5jaCBhbmQgcmV2aXNpb24gPiBzZWxmLmNhY2hlLl9kYXRhLmdldChzZWxmLmRlZmF1bHRf
YnJhbmNoLCBbMF0pWy0xXToKKyAgICAgICAgICAgICAgICBzZWxmLmNhY2hlLnBvcHVsYXRlKGJy
YW5jaD1zZWxmLmRlZmF1bHRfYnJhbmNoKQorICAgICAgICAgICAgaWYgcmV2aXNpb24gbm90IGlu
IHNlbGYuY2FjaGUuX2RhdGEuZ2V0KGJyYW5jaCwgW10pOgorICAgICAgICAgICAgICAgIHNlbGYu
Y2FjaGUucG9wdWxhdGUoYnJhbmNoPWJyYW5jaCkKICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBz
ZWxmLl9jb21taXRfY291bnQocmV2aXNpb249cmV2aXNpb24sIGJyYW5jaD1icmFuY2gpCiAKICAg
ICAgICAgYnJhbmNoX3BvaW50ID0gTm9uZSBpZiBub3QgaW5jbHVkZV9pZGVudGlmaWVyIG9yIGJy
YW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoIGVsc2Ugc2VsZi5fY29tbWl0X2NvdW50KGJyYW5j
aD1icmFuY2gpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS90ZXN0L3N2bl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L3N2bl91bml0dGVzdC5weQko
cmV2aXNpb24gMjc5OTg3KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvdGVzdC9zdm5fdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw2
ICsyNDcsMTggQEAgY2xhc3MgVGVzdExvY2FsU3ZuKHRlc3RpbmcuUGF0aFRlc3RDYXNlKQogICAg
ICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3IxJyksCiAgICAgICAgICAgICBdKSwg
Q29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KGxpc3Qoc3ZuLmNvbW1pdHMoYmVnaW49ZGljdChhcmd1
bWVudD0ncjEnKSwgZW5kPWRpY3QoYXJndW1lbnQ9J3I3JykpKSkpCiAKKyAgICBkZWYgdGVzdF9y
ZXZpc2lvbl9jYWNoZShzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5Tdm4oc2VsZi5w
YXRoKSwgTG9nZ2VyQ2FwdHVyZSgpOgorICAgICAgICAgICAgc3ZuID0gbG9jYWwuU3ZuKHNlbGYu
cGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ZuLmNhY2hlLnRvX3JldmlzaW9u
KGlkZW50aWZpZXI9JzFAdHJ1bmsnKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3ZuLmNhY2hlLnRvX3JldmlzaW9uKGlkZW50aWZpZXI9JzIuMUBicmFuY2gtYScpLCAzKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdm4uY2FjaGUudG9fcmV2aXNpb24oaWRlbnRpZmll
cj0nMi4tMUBicmFuY2gtYScpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdm4u
Y2FjaGUudG9faWRlbnRpZmllcihyZXZpc2lvbj0ncjYnKSwgJzRAdHJ1bmsnKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdm4uY2FjaGUudG9faWRlbnRpZmllcihyZXZpc2lvbj0ncjMn
LCBicmFuY2g9J2JyYW5jaC1hJyksICcyLjFAYnJhbmNoLWEnKQorCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHN2bi5jYWNoZS50b19pZGVudGlmaWVyKHJldmlzaW9uPTEwMCksIE5vbmUp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN2bi5jYWNoZS50b19yZXZpc2lvbihoYXNo
PSdiYWRjMGRkMWYnKSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ZuLmNh
Y2hlLnRvX3JldmlzaW9uKGlkZW50aWZpZXI9JzZAdHJ1bmsnKSwgTm9uZSkKIAogY2xhc3MgVGVz
dFJlbW90ZVN2bih0ZXN0aW5nLlRlc3RDYXNlKToKICAgICByZW1vdGUgPSAnaHR0cHM6Ly9zdm4u
ZXhhbXBsZS5vcmcvcmVwb3NpdG9yeS93ZWJraXQnCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>