<?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>233734</bug_id>
          
          <creation_ts>2021-12-01 16:29:40 -0800</creation_ts>
          <short_desc>[reporelaypy] Add implementation of commits.webkit.org</short_desc>
          <delta_ts>2022-07-28 19:37:15 -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 Local 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=233934</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=243329</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>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1819463</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-12-01 16:29:40 -0800</bug_when>
    <thetext>Move the implementation of commits.webkit.org to WebKit, add unit tests and script to run local instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819465</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-01 16:30:05 -0800</bug_when>
    <thetext>&lt;rdar://problem/85945101&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819508</commentid>
    <comment_count>2</comment_count>
      <attachid>445644</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-12-01 17:26:00 -0800</bug_when>
    <thetext>Created attachment 445644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821069</commentid>
    <comment_count>3</comment_count>
      <attachid>446187</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-12-07 09:27:28 -0800</bug_when>
    <thetext>Created attachment 446187
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821101</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-07 10:25:48 -0800</bug_when>
    <thetext>Committed r286600 (244925@trunk): &lt;https://commits.webkit.org/244925@trunk&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446187.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445644</attachid>
            <date>2021-12-01 17:26:00 -0800</date>
            <delta_ts>2021-12-07 09:27:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233734-20211201172559.patch</filename>
            <type>text/plain</type>
            <size>63193</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDA2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjk1YWU2Y2E3OTEwY2Q2ZjA5YzU4ZDdkNDdjYTMwYjIz
N2M4N2I3OS4uMTNjMTFlZTljOGU1OTIzZDJkZGUyMDMyYzVlMjkwYWRiNjI5MjU3YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4
IEBACisyMDIxLTEyLTAxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbcmVwb3JlbGF5cHldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiBjb21taXRzLndlYmtp
dC5vcmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzczNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODU5NDUxMDE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgY29tbWl0cy53ZWJraXQub3JnIGJl
Y29tZXMgbW9yZSBpbXBvcnRhbnQgdG8gV2ViS2l0IGRldmVsb3BtZW50LCB3ZSBuZWVkIHRvIGFw
cGx5CisgICAgICAgIG91ciBub3JtYWwgcm9idXN0IHRlc3RpbmcgYW5kIHJldmlldyB0byB0aGUg
Y29kZSBiYWNraW5nIGl0LgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVwb3JlbGF5
cHkvcmVwb3JlbGF5cHkvX19pbml0X18ucHk6IEFkZCBlbnRyeXBvaW50IHRvIGxpYnJhcnkuCisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVwb3JlbGF5cHkvcmVwb3JlbGF5cHkvY2hlY2tv
dXQucHk6IEFkZGVkLgorICAgICAgICAoQ2hlY2tvdXQpOiBBYnN0cmFjdGlvbiBtYW5hZ2luZyBs
b2NhbCByZXBvc2l0b3J5IGNoZWNrb3V0LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jl
cG9yZWxheXB5L3JlcG9yZWxheXB5L2NoZWNrb3V0cm91dGUucHk6IEFkZGVkLgorICAgICAgICAo
UmVkaXJlY3Rvcik6IEdlbmVyYXRlcyByZWRpcmVjdHMgZm9yIGNlcnRhaW4gU0NNIHNlcnZpY2Vz
LgorICAgICAgICAoQ2hlY2tvdXRSb3V0ZSk6IGh0dHAgcm91dGVzIHJldHVybmluZyBpbmZvcm1h
dGlvbiBiYXNlZCBvbiBhIGNoZWNrb3V0LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jl
cG9yZWxheXB5L3JlcG9yZWxheXB5L2RhdGFiYXNlLnB5OiBBZGRlZC4KKyAgICAgICAgKERhdGFi
YXNlKTogQSBjb25uZWN0aW9uIHRvIGEgdHJ1ZSBSZWRpcyBvciBUaW55UmVkaXMgZGF0YWJhc2Uu
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVwb3JlbGF5cHkvcmVwb3JlbGF5cHkvdGVz
dHMvY2hlY2tvdXRfdW5pdHRlc3QucHk6CisgICAgICAgIChDaGVja291dFVuaXR0ZXN0KToKKyAg
ICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXBvcmVsYXlweS9yZXBvcmVsYXlweS90ZXN0cy9j
aGVja291dHJvdXRlX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKFJlZGlyZWN0b3JVbml0
dGVzdCk6CisgICAgICAgIChDaGVja291dFJvdXRlVW5pdHRlc3QpOgorICAgICAgICAqIFNjcmlw
dHMvbGlicmFyaWVzL3JlcG9yZWxheXB5L3JlcG9yZWxheXB5L3Rlc3RzL2RhdGFiYXNlX3VuaXR0
ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKERhdGFiYXNlVW5pdHRlc3QpOgorICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3JlcG9yZWxheXB5L3JlcG9yZWxheXB5L3dlYnNlcnZlci5weTogQ29w
aWVkIGZyb20gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Zmxhc2tweS9zZXR1cC5weS4K
KyAgICAgICAgKGhlYWx0aCk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVwb3JlbGF5
cHkvcnVuOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXBvcmVsYXlweS9z
ZXR1cC5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvX19pbml0X18ucHk6IEJ1bXAgdmVyc2lvbi4KKyAgICAgICAgKiBTY3JpcHRz
L2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9mbGFza19zdXBwb3J0L2ZsYXNrX3Rl
c3RjYXNlLnB5OgorICAgICAgICAoRmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF9tb2NrX3dlYnNlcnZl
ci5kZWNvcmF0b3IucmVhbF9tZXRob2QpOgorICAgICAgICAoRmxhc2tSZXF1ZXN0c1Jlc3BvbnNl
KTogTW92ZWQgdG8gd2Via2l0Zmxhc2tweS4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRmbGFza3B5L3NldHVwLnB5OiBCdW1wIHZlcnNpb24sIHVwZGF0ZSBsaWJyYXJ5IGRlc2Ny
aXB0aW9uLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGZsYXNrcHkvd2Via2l0
Zmxhc2tweS9fX2luaXRfXy5weTogQnVtcCB2ZXJzaW9uLgorICAgICAgICAqIFNjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGZsYXNrcHkvd2Via2l0Zmxhc2tweS9tb2NrX2FwcC5weTogQWRkZWQuCisg
ICAgICAgIChtb2NrX2FwcCk6IFNldHVwIGEgZmxhc2sgYXBwIGZvciB0ZXN0aW5nLgorICAgICAg
ICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGZsYXNrcHkvd2Via2l0Zmxhc2tweS9yZXNwb25z
ZS5weTogQWRkZWQuCisgICAgICAgIChSZXNwb25zZSk6IE1vdmUgRmxhc2tSZXF1ZXN0c1Jlc3Bv
bnNlIHRvIG1vcmUgZ2VuZXJpYyBsb2NhdGlvbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L19faW5pdF9fLnB5OiBJbmNsdWRlIHJlcG9yZWxheXB5IGZvciB0ZXN0aW5nLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5OgorICAgICAgICAobWFpbik6IEluY2x1ZGUg
cmVwb3JlbGF5cHkgZm9yIHRlc3RpbmcuCisgICAgICAgIChUZXN0ZXIuX3J1bl90ZXN0cyk6IERp
dHRvLgorCiAyMDIxLTEyLTAxICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtFV1NdW0dUS11bV1BFXSBBZGQgYSBuZXcgQ2xhc3MgZm9y
IHJ1bm5pbmcgbGF5b3V0IHRlc3RzIG9uIHRoZSBFV1MgZm9yIHRoZSBHVEsgYW5kIFdQRSBwb3J0
cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3JlcG9yZWxheXB5L3JlcG9y
ZWxheXB5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVwb3JlbGF5cHkv
cmVwb3JlbGF5cHkvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZmYTdkMTVlMTkyYmIxNzdkOWI4
OWQwMDM0NDFmZTEyYzJlODdlOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3JlcG9yZWxheXB5L3JlcG9yZWxheXB5L19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNTkg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcworaW1w
b3J0IHN5cworCisKK2RlZiBfbWF5YmVfYWRkX3dlYmtpdF9weXRob25fbGlicmFyeV9wYXRocygp
OgorICAgICMgSG9wZWZ1bGx5IHdlJ3JlIGJlc2lkZSB3ZWJraXQqcHkgbGlicmFyaWVzLCBvdGhl
cndpc2Ugd2Via2l0KnB5IHdpbGwgbmVlZCB0byBiZSBpbnN0YWxsZWQuCisgICAgbGlicmFyaWVz
X3BhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChv
cy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSkpCisgICAgZm9yIGxpYnJhcnkgaW4gWyd3ZWJraXRj
b3JlcHknLCAnd2Via2l0c2NtcHknLCAnd2Via2l0Zmxhc2tweSddOgorICAgICAgICBsaWJyYXJ5
X3BhdGggPSBvcy5wYXRoLmpvaW4obGlicmFyaWVzX3BhdGgsIGxpYnJhcnkpCisgICAgICAgIGlm
IG9zLnBhdGguaXNkaXIobGlicmFyeV9wYXRoKSBhbmQgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpv
aW4obGlicmFyeV9wYXRoLCBsaWJyYXJ5KSkgYW5kIGxpYnJhcnlfcGF0aCBub3QgaW4gc3lzLnBh
dGg6CisgICAgICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgbGlicmFyeV9wYXRoKQorCisKK19t
YXliZV9hZGRfd2Via2l0X3B5dGhvbl9saWJyYXJ5X3BhdGhzKCkKKwordHJ5OgorICAgIGZyb20g
d2Via2l0Y29yZXB5IGltcG9ydCBBdXRvSW5zdGFsbCwgUGFja2FnZSwgVmVyc2lvbgorZXhjZXB0
IEltcG9ydEVycm9yOgorICAgIHJhaXNlIEltcG9ydEVycm9yKAorICAgICAgICAiJ3dlYmtpdGNv
cmVweScgY291bGQgbm90IGJlIGZvdW5kIG9uIHlvdXIgUHl0aG9uIHBhdGguXG4iICsKKyAgICAg
ICAgIllvdSBhcmUgbm90IHJ1bm5pbmcgZnJvbSBhIFdlYktpdCBjaGVja291dC5cbiIgKworICAg
ICAgICAiUGxlYXNlIGluc3RhbGwgd2Via2l0Y29yZXB5IHdpdGggYHBpcCBpbnN0YWxsIHdlYmtp
dGNvcmVweSAtLWV4dHJhLWluZGV4LXVybCA8cGFja2FnZSBpbmRleCBVUkw+YCIKKyAgICApCisK
K3ZlcnNpb24gPSBWZXJzaW9uKDAsIDEsIDApCisKK2ltcG9ydCB3ZWJraXRmbGFza3B5CisKK2Zy
b20gcmVwb3JlbGF5cHkuY2hlY2tvdXQgaW1wb3J0IENoZWNrb3V0Citmcm9tIHJlcG9yZWxheXB5
LmRhdGFiYXNlIGltcG9ydCBEYXRhYmFzZQorZnJvbSByZXBvcmVsYXlweS5jaGVja291dHJvdXRl
IGltcG9ydCBDaGVja291dFJvdXRlLCBSZWRpcmVjdG9yCisKK0F1dG9JbnN0YWxsLnJlZ2lzdGVy
KFBhY2thZ2UoJ2Zha2VyZWRpcycsIFZlcnNpb24oMSwgNSwgMikpKQorQXV0b0luc3RhbGwucmVn
aXN0ZXIoUGFja2FnZSgnaGlyZWRpcycsIFZlcnNpb24oMSwgMSwgMCkpKQorQXV0b0luc3RhbGwu
cmVnaXN0ZXIoUGFja2FnZSgncmVkaXMnLCBWZXJzaW9uKDMsIDUsIDMpKSkKKworbmFtZSA9ICdy
ZXBvcmVsYXlweScKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3JlcG9yZWxh
eXB5L3JlcG9yZWxheXB5L2NoZWNrb3V0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVw
b3JlbGF5cHkvcmVwb3JlbGF5cHkvY2hlY2tvdXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg2ZDRjMzg0NmMx
ODI3NTc5ZjY1Mzc4Mjc1MmQ1YjJmMTQ3Y2RmOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3JlcG9yZWxheXB5L3JlcG9yZWxheXB5L2NoZWNrb3V0LnB5CkBAIC0w
LDAgKzEsMTUwIEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBv
cnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCisKK2Zyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCBydW4KK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxvY2FsCisKKwor
Y2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKKyAgICBjbGFzcyBFeGNlcHRpb24oUnVudGltZUVycm9y
KToKKyAgICAgICAgcGFzcworCisgICAgY2xhc3MgRW5jb2Rlcihqc29uLkpTT05FbmNvZGVyKToK
KyAgICAgICAgZGVmIGRlZmF1bHQoc2VsZiwgb2JqKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFu
Y2Uob2JqLCBkaWN0KToKKyAgICAgICAgICAgICAgICByZXR1cm4ge2tleTogc2VsZi5kZWZhdWx0
KHZhbHVlKSBmb3Iga2V5LCB2YWx1ZSBpbiBvYmouaXRlbXMoKX0KKyAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2Uob2JqLCBsaXN0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gW3NlbGYuZGVmYXVs
dCh2YWx1ZSkgZm9yIHZhbHVlIGluIG9ial0KKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNl
KG9iaiwgQ2hlY2tvdXQpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcihDaGVja291dC5F
bmNvZGVyLCBzZWxmKS5kZWZhdWx0KG9iaikKKworICAgICAgICAgICAgcmV0dXJuIGRpY3QoCisg
ICAgICAgICAgICAgICAgcGF0aD1vYmoucmVwb3NpdG9yeS5yb290X3BhdGgsCisgICAgICAgICAg
ICAgICAgdXJsPW9iai5yZXBvc2l0b3J5LnVybChuYW1lPSdvcmlnaW4nKSwKKyAgICAgICAgICAg
ICAgICBzZW50aW5hbD1vYmouc2VudGluYWwsCisgICAgICAgICAgICApCisKKyAgICBAY2xhc3Nt
ZXRob2QKKyAgICBkZWYgZnJvbV9qc29uKGNscywgZGF0YSk6CisgICAgICAgIGRhdGEgPSBkYXRh
IGlmIGlzaW5zdGFuY2UoZGF0YSwgZGljdCkgZWxzZSBqc29uLmxvYWRzKGRhdGEpCisgICAgICAg
IGlmIGlzaW5zdGFuY2UoZGF0YSwgbGlzdCk6CisgICAgICAgICAgICByZXR1cm4gW2NscygqKm5v
ZGUpIGZvciBub2RlIGluIGRhdGFdCisgICAgICAgIHJldHVybiBjbHMoKipkYXRhKQorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIHVybD1Ob25lLCBodHRwX3Byb3h5PU5vbmUsIHNlbnRp
bmFsPVRydWUpOgorICAgICAgICBzZWxmLnNlbnRpbmFsID0gc2VudGluYWwKKworICAgICAgICBj
b250YWluaW5nX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUocGF0aCkKKyAgICAgICAgc2VudGluYWxf
ZmlsZSA9IG9zLnBhdGguam9pbihjb250YWluaW5nX3BhdGgsICdjbG9uZWQnKQorICAgICAgICBp
ZiBub3Qgb3MucGF0aC5pc2Rpcihjb250YWluaW5nX3BhdGgpOgorICAgICAgICAgICAgcmFpc2Ug
c2VsZi5FeGNlcHRpb24oIkNvbnRhaW5pbmcgcGF0aCAne30nIGRvZXMgbm90IGV4aXN0Ii5mb3Jt
YXQoY29udGFpbmluZ19wYXRoKSkKKworICAgICAgICBpZiAob3MucGF0aC5pc2ZpbGUoc2VudGlu
YWxfZmlsZSkgb3Igbm90IHNlbGYuc2VudGluYWwpIGFuZCBsb2NhbC5HaXQuaXNfY2hlY2tvdXQo
cGF0aCk6CisgICAgICAgICAgICBzZWxmLnJlcG9zaXRvcnkgPSBsb2NhbC5HaXQocGF0aCkKKyAg
ICAgICAgICAgIGlmIHVybCBhbmQgc2VsZi5yZXBvc2l0b3J5LnVybChuYW1lPSdvcmlnaW4nKSAh
PSB1cmw6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiU3BlY2lmaWVkICd7fScg
YXMgdGhlIFVSTCwgYnV0IHRoZSBzcGVjaWZpZWQgcGF0aCBpcyBmcm9tICd7fSdcbiIuZm9ybWF0
KAorICAgICAgICAgICAgICAgICAgICB1cmwsIHNlbGYucmVwb3NpdG9yeS51cmwobmFtZT0nb3Jp
Z2luJyksCisgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAg
IGlmIG5vdCB1cmw6CisgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignTm8gdXJsIHBy
b3ZpZGVkIHRvIGNsb25lIGZyb20nKQorCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHNlbnRp
bmFsX2ZpbGUpOgorICAgICAgICAgICAgb3MucmVtb3ZlKHNlbnRpbmFsX2ZpbGUpCisgICAgICAg
IGlmIG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKHBhdGgs
IGlnbm9yZV9lcnJvcnM9VHJ1ZSkKKworICAgICAgICBpZiBodHRwX3Byb3h5IGFuZCBydW4oWwor
ICAgICAgICAgICAgbG9jYWwuR2l0LmV4ZWN1dGFibGUoKSwgJ2NvbmZpZycsICctLWdsb2JhbCcs
ICdodHRwLnByb3h5JywgJ2h0dHA6Ly97fScuZm9ybWF0KGh0dHBfcHJveHkpLAorICAgICAgICBd
KS5yZXR1cm5jb2RlOgorICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0
byBzZXQgaHR0cHMgcHJveHkgdG8gJ3t9JyIuZm9ybWF0KGh0dHBfcHJveHkpKQorCisgICAgICAg
IGlmIHJ1bihbbG9jYWwuR2l0LmV4ZWN1dGFibGUoKSwgJ2Nsb25lJywgdXJsLCBwYXRoXSwgY3dk
PWNvbnRhaW5pbmdfcGF0aCkucmV0dXJuY29kZToKKyAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhj
ZXB0aW9uKCJGYWlsZWQgdG8gY2xvbmUgZnJvbSAne30nIi5mb3JtYXQodXJsKSkKKworICAgICAg
ICBpZiBzZWxmLnNlbnRpbmFsOgorICAgICAgICAgICAgd2l0aCBvcGVuKHNlbnRpbmFsX2ZpbGUs
ICd3JykgYXMgY2xvbmVkOgorICAgICAgICAgICAgICAgIGNsb25lZC53cml0ZSgneWVzXG4nKQor
CisgICAgZGVmIGlzX3VwZGF0ZWQoc2VsZiwgYnJhbmNoLCByZW1vdGU9J29yaWdpbicpOgorICAg
ICAgICByZXN1bHQgPSBydW4oCisgICAgICAgICAgICBbc2VsZi5yZXBvc2l0b3J5LmV4ZWN1dGFi
bGUoKSwgJ3Nob3ctcmVmJywgYnJhbmNoXSwKKyAgICAgICAgICAgIGN3ZD1zZWxmLnJlcG9zaXRv
cnkucm9vdF9wYXRoLAorICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwKKyAgICAgICAg
ICAgIGVuY29kaW5nPSd1dGYtOCcsCisgICAgICAgICkKKyAgICAgICAgaWYgcmVzdWx0LnJldHVy
bmNvZGU6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmVmID0gTm9uZQorICAg
ICAgICBmb3IgbGluZSBpbiByZXN1bHQuc3Rkb3V0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAg
IGlmIGxpbmUuc3BsaXQoKVstMV0uc3RhcnRzd2l0aCgncmVmcy9oZWFkcycpOgorICAgICAgICAg
ICAgICAgIHJlZiA9IGxpbmUuc3BsaXQoKVswXQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAg
ICAgIGlmIG5vdCByZWY6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgZm9yIGxp
bmUgaW4gcmVzdWx0LnN0ZG91dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBpZiBsaW5lLnNw
bGl0KClbLTFdLnN0YXJ0c3dpdGgoJ3JlZnMvcmVtb3Rlcy97fScuZm9ybWF0KHJlbW90ZSkpOgor
ICAgICAgICAgICAgICAgIHJldHVybiByZWYgPT0gbGluZS5zcGxpdCgpWzBdCisgICAgICAgIHJl
dHVybiBGYWxzZQorCisgICAgZGVmIHVwZGF0ZV9mb3Ioc2VsZiwgYnJhbmNoPU5vbmUsIHJlbW90
ZT0nb3JpZ2luJyk6CisgICAgICAgIGJyYW5jaCA9IGJyYW5jaCBvciBzZWxmLnJlcG9zaXRvcnku
ZGVmYXVsdF9icmFuY2gKKyAgICAgICAgaWYgYnJhbmNoID09IHNlbGYucmVwb3NpdG9yeS5kZWZh
dWx0X2JyYW5jaDoKKyAgICAgICAgICAgIHNlbGYucmVwb3NpdG9yeS5wdWxsKHJlbW90ZT1yZW1v
dGUpCisgICAgICAgICAgICBzZWxmLnJlcG9zaXRvcnkuY2FjaGUucG9wdWxhdGUoYnJhbmNoPWJy
YW5jaCkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIG5vdCBzZWxmLnJlcG9z
aXRvcnkucHJvZF9icmFuY2hlcy5tYXRjaChicmFuY2gpOgorICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCisgICAgICAgIGlmIHNlbGYuaXNfdXBkYXRlZChicmFuY2gsIHJlbW90ZT1yZW1vdGUpOgor
ICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBydW4oCisgICAgICAgICAgICBbc2Vs
Zi5yZXBvc2l0b3J5LmV4ZWN1dGFibGUoKSwgJ2ZldGNoJywgcmVtb3RlLCAne306e30nLmZvcm1h
dChicmFuY2gsIGJyYW5jaCldLAorICAgICAgICAgICAgY3dkPXNlbGYucmVwb3NpdG9yeS5yb290
X3BhdGgsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5yZXBvc2l0b3J5LmNhY2hlLnBvcHVsYXRl
KGJyYW5jaD1icmFuY2gpCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgdXBkYXRlX2Fs
bChzZWxmLCByZW1vdGU9J29yaWdpbicpOgorICAgICAgICBzZWxmLnJlcG9zaXRvcnkucHVsbChy
ZW1vdGU9cmVtb3RlKQorICAgICAgICBzZWxmLnJlcG9zaXRvcnkuY2FjaGUucG9wdWxhdGUoYnJh
bmNoPXNlbGYucmVwb3NpdG9yeS5kZWZhdWx0X2JyYW5jaCkKKworICAgICAgICAjIEZpcnN0LCB1
cGRhdGUgYWxsIGJyYW5jaGVzIHdlJ3JlIGFscmVhZHkgdHJhY2tpbmcKKyAgICAgICAgYWxsX2Jy
YW5jaGVzID0gc2V0KHNlbGYucmVwb3NpdG9yeS5icmFuY2hlc19mb3IocmVtb3RlPXJlbW90ZSkp
CisgICAgICAgIGZvciBicmFuY2ggaW4gc2VsZi5yZXBvc2l0b3J5LmJyYW5jaGVzX2ZvcihyZW1v
dGU9RmFsc2UpOgorICAgICAgICAgICAgaWYgYnJhbmNoIGluIGFsbF9icmFuY2hlczoKKyAgICAg
ICAgICAgICAgICBhbGxfYnJhbmNoZXMucmVtb3ZlKGJyYW5jaCkKKyAgICAgICAgICAgIHNlbGYu
dXBkYXRlX2ZvcihicmFuY2g9YnJhbmNoLCByZW1vdGU9cmVtb3RlKQorCisgICAgICAgICMgVGhl
biwgdHJhY2sgYWxsIHVudHJhY2tlZCBicmFuY2hlcworICAgICAgICBmb3IgYnJhbmNoIGluIGFs
bF9icmFuY2hlczoKKyAgICAgICAgICAgIHJ1bigKKyAgICAgICAgICAgICAgICBbc2VsZi5yZXBv
c2l0b3J5LmV4ZWN1dGFibGUoKSwgJ2JyYW5jaCcsICctLXRyYWNrJywgYnJhbmNoLCAncmVtb3Rl
cy97fS97fScuZm9ybWF0KHJlbW90ZSwgYnJhbmNoKV0sCisgICAgICAgICAgICAgICAgY3dkPXNl
bGYucmVwb3NpdG9yeS5yb290X3BhdGgsCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxm
LnJlcG9zaXRvcnkuY2FjaGUucG9wdWxhdGUoYnJhbmNoPWJyYW5jaCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3JlcG9yZWxheXB5L3JlcG9yZWxheXB5L2NoZWNrb3V0cm91
dGUucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXBvcmVsYXlweS9yZXBvcmVsYXlweS9j
aGVja291dHJvdXRlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiY2JiMmVkNjcyYzc4Y2U4YjMzMDIwZmZiYzE0
YjYyNTc3ZjhlMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9y
ZXBvcmVsYXlweS9yZXBvcmVsYXlweS9jaGVja291dHJvdXRlLnB5CkBAIC0wLDAgKzEsMTg2IEBA
CisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAor
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQganNvbgoraW1w
b3J0IHJlCisKK2Zyb20gZmxhc2sgaW1wb3J0IGFib3J0LCBjdXJyZW50X2FwcCwganNvbiBhcyBm
anNvbiwgcmVkaXJlY3QsIEZsYXNrLCBSZXNwb25zZQorZnJvbSByZXBvcmVsYXlweSBpbXBvcnQg
RGF0YWJhc2UKK2Zyb20gd2Via2l0Zmxhc2tweSBpbXBvcnQgQXV0aGVkQmx1ZXByaW50Citmcm9t
IHdlYmtpdHNjbXB5IGltcG9ydCBDb21taXQsIHJlbW90ZQorCisKK2NsYXNzIFJlZGlyZWN0b3Io
b2JqZWN0KToKKyAgICBjbGFzcyBFbmNvZGVyKGpzb24uSlNPTkVuY29kZXIpOgorICAgICAgICBk
ZWYgZGVmYXVsdChzZWxmLCBvYmopOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIGRp
Y3QpOgorICAgICAgICAgICAgICAgIHJldHVybiB7a2V5OiBzZWxmLmRlZmF1bHQodmFsdWUpIGZv
ciBrZXksIHZhbHVlIGluIG9iai5pdGVtcygpfQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShv
YmosIGxpc3QpOgorICAgICAgICAgICAgICAgIHJldHVybiBbc2VsZi5kZWZhdWx0KHZhbHVlKSBm
b3IgdmFsdWUgaW4gb2JqXQorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob2JqLCBSZWRp
cmVjdG9yKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoQ2hlY2tvdXQuRW5jb2Rlciwg
c2VsZikuZGVmYXVsdChvYmopCisKKyAgICAgICAgICAgIHJldHVybiBkaWN0KAorICAgICAgICAg
ICAgICAgIG5hbWU9b2JqLm5hbWUsCisgICAgICAgICAgICAgICAgdXJsPW9iai51cmwsCisgICAg
ICAgICAgICApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgYml0YnVja2V0X2dlbmVyYXRv
cihjbHMsIGJhc2UpOgorICAgICAgICBkZWYgcmVkaXJlY3Rvcihjb21taXQpOgorICAgICAgICAg
ICAgaWYgY29tbWl0IGFuZCBjb21taXQuaGFzaDoKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVk
aXJlY3QoJ3t9L2NvbW1pdHMve30nLmZvcm1hdChiYXNlLCBjb21taXQuaGFzaCkpCisgICAgICAg
ICAgICByZXR1cm4gcmVkaXJlY3QoJ3t9L2NvbW1pdHMnLmZvcm1hdChiYXNlKSkKKworICAgICAg
ICByZXR1cm4gcmVkaXJlY3RvcgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRyYWNfZ2Vu
ZXJhdG9yKGNscywgYmFzZSk6CisgICAgICAgIGRlZiByZWRpcmVjdG9yKGNvbW1pdCk6CisgICAg
ICAgICAgICBpZiBjb21taXQgYW5kIGNvbW1pdC5yZXZpc2lvbjoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVkaXJlY3QoJ3t9L2NoYW5nZXNldC97fS93ZWJraXQnLmZvcm1hdChiYXNlLCBjb21t
aXQucmV2aXNpb24pKQorICAgICAgICAgICAgcmV0dXJuIHJlZGlyZWN0KGJhc2UpCisKKyAgICAg
ICAgcmV0dXJuIHJlZGlyZWN0b3IKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBnaXRodWJf
Z2VuZXJhdG9yKGNscywgYmFzZSk6CisgICAgICAgIGRlZiByZWRpcmVjdG9yKGNvbW1pdCk6Cisg
ICAgICAgICAgICBpZiBjb21taXQgYW5kIGNvbW1pdC5oYXNoOgorICAgICAgICAgICAgICAgIHJl
dHVybiByZWRpcmVjdCgne30vY29tbWl0L3t9Jy5mb3JtYXQoYmFzZSwgY29tbWl0Lmhhc2gpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlZGlyZWN0KCd7fS9jb21taXRzJy5mb3JtYXQoYmFzZSkpCisK
KyAgICAgICAgcmV0dXJuIHJlZGlyZWN0b3IKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBm
cm9tX2pzb24oY2xzLCBkYXRhKToKKyAgICAgICAgZGF0YSA9IGRhdGEgaWYgaXNpbnN0YW5jZShk
YXRhLCBkaWN0KSBlbHNlIGpzb24ubG9hZHMoZGF0YSkKKyAgICAgICAgaWYgaXNpbnN0YW5jZShk
YXRhLCBsaXN0KToKKyAgICAgICAgICAgIHJldHVybiBbY2xzKCoqbm9kZSkgZm9yIG5vZGUgaW4g
ZGF0YV0KKyAgICAgICAgcmV0dXJuIGNscygqKmRhdGEpCisKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgdXJsLCBuYW1lPU5vbmUpOgorICAgICAgICBzZWxmLnVybCA9IHVybAorICAgICAgICBzZWxm
LnR5cGUgPSBOb25lCisgICAgICAgIHNlbGYuX3JlZGlyZWN0ID0gTm9uZQorCisgICAgICAgIGZv
ciBrZXksIHBhcmFtcyBpbiBkaWN0KAorICAgICAgICAgICAgYml0YnVja2V0PShyZW1vdGUuQml0
QnVja2V0LlVSTF9SRSwgc2VsZi5iaXRidWNrZXRfZ2VuZXJhdG9yKSwKKyAgICAgICAgICAgIHRy
YWM9KHJlLmNvbXBpbGUocidcQWh0dHBzPzovL3RyYWMuKD9QPGRvbWFpbj5cUyspXFonKSwgc2Vs
Zi50cmFjX2dlbmVyYXRvciksCisgICAgICAgICAgICBnaXRodWI9KHJlbW90ZS5HaXRIdWIuVVJM
X1JFLCBzZWxmLmdpdGh1Yl9nZW5lcmF0b3IpLAorICAgICAgICApLml0ZW1zKCk6CisgICAgICAg
ICAgICByZWdleCwgZ2VuZXJhdG9yID0gcGFyYW1zCisgICAgICAgICAgICBpZiByZWdleC5tYXRj
aCh1cmwpOgorICAgICAgICAgICAgICAgIHNlbGYudHlwZSA9IGtleQorICAgICAgICAgICAgICAg
IHNlbGYuX3JlZGlyZWN0ID0gZ2VuZXJhdG9yKHVybCkKKyAgICAgICAgICAgICAgICBicmVhawor
ICAgICAgICBpZiBub3Qgc2VsZi50eXBlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIn
e30nIGlzIG5vdCBhIHJlY29nbml6ZWQgcmVkaXJlY3QgYmFzZSIpCisgICAgICAgIHNlbGYubmFt
ZSA9IG5hbWUgb3Igc2VsZi50eXBlCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgY29tbWl0KToK
KyAgICAgICAgaWYgbm90IHNlbGYuX3JlZGlyZWN0OgorICAgICAgICAgICAgYWJvcnQoUmVzcG9u
c2UoIk5vIHZhbGlkIHJlZGlyZWN0IGZvciAne30nIi5mb3JtYXQoc2VsZi51cmwpLCBzdGF0dXM9
NTAwKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlZGlyZWN0KGNvbW1pdCkKKworCitjbGFzcyBD
aGVja291dFJvdXRlKEF1dGhlZEJsdWVwcmludCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNo
ZWNrb3V0LCByZWRpcmVjdG9ycz1Ob25lLCBpbXBvcnRfbmFtZT1fX25hbWVfXywgYXV0aF9kZWNv
cmF0b3I9Tm9uZSwgZGF0YWJhc2U9Tm9uZSk6CisgICAgICAgIHN1cGVyKENoZWNrb3V0Um91dGUs
IHNlbGYpLl9faW5pdF9fKCdjaGVja291dCcsIGltcG9ydF9uYW1lLCB1cmxfcHJlZml4PU5vbmUs
IGF1dGhfZGVjb3JhdG9yPWF1dGhfZGVjb3JhdG9yKQorCisgICAgICAgIHNlbGYuY2hlY2tvdXQg
PSBjaGVja291dAorICAgICAgICBzZWxmLmRhdGFiYXNlID0gZGF0YWJhc2Ugb3IgRGF0YWJhc2Uo
KQorCisgICAgICAgIGlmIG5vdCByZWRpcmVjdG9yczoKKyAgICAgICAgICAgIHJlZGlyZWN0b3Jz
ID0gW1JlZGlyZWN0b3Ioc2VsZi5jaGVja291dC5yZXBvc2l0b3J5LnJlbW90ZSgpLnVybCldCisg
ICAgICAgIHNlbGYucmVkaXJlY3RvcnMgPSByZWRpcmVjdG9ycworCisgICAgICAgIHNlbGYuYWRk
X3VybF9ydWxlKCcvJywgJ2xhbmRpbmcnLCBsYW1iZGE6IHNlbGYucmVkaXJlY3RvcnNbMF0oTm9u
ZSksIG1ldGhvZHM9KCdHRVQnLCkpCisgICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKAorICAgICAg
ICAgICAgJy88cGF0aDpyZWY+JywgJ3JlZGlyZWN0JywKKyAgICAgICAgICAgIGxhbWJkYSByZWY6
IHNlbGYucmVkaXJlY3RvcnNbMF0oc2VsZi5jb21taXQocmVmKSksCisgICAgICAgICAgICBtZXRo
b2RzPSgnR0VUJywpLAorICAgICAgICApCisgICAgICAgIGZvciByZWRpcmVjdG9yIGluIHNlbGYu
cmVkaXJlY3RvcnM6CisgICAgICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgKKyAgICAgICAgICAg
ICAgICAnL3t9Jy5mb3JtYXQocmVkaXJlY3Rvci5uYW1lKSwgJ2xhbmRpbmcte30nLmZvcm1hdChy
ZWRpcmVjdG9yLm5hbWUpLAorICAgICAgICAgICAgICAgIGxhbWJkYSByZWRpcmVjdG9yPXJlZGly
ZWN0b3I6IHJlZGlyZWN0b3IoTm9uZSksCisgICAgICAgICAgICAgICAgbWV0aG9kcz0oJ0dFVCcs
KSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKAorICAgICAg
ICAgICAgICAgICcvPHBhdGg6cmVmPi97fScuZm9ybWF0KHJlZGlyZWN0b3IubmFtZSksICdyZWRp
cmVjdC17fScuZm9ybWF0KHJlZGlyZWN0b3IubmFtZSksCisgICAgICAgICAgICAgICAgbGFtYmRh
IHJlZiwgcmVkaXJlY3Rvcj1yZWRpcmVjdG9yOiByZWRpcmVjdG9yKHNlbGYuY29tbWl0KHJlZikp
LCBtZXRob2RzPSgnR0VUJywpLAorICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuYWRkX3Vy
bF9ydWxlKCcvPHBhdGg6cmVmPi9qc29uJywgJ2FwaScsIHNlbGYuYXBpLCBtZXRob2RzPSgnR0VU
JywpKQorICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL2NoYW5nZXNldC88cGF0aDpyZXZpc2lv
bj4vd2Via2l0JywgJ3RyYWMnLCBzZWxmLnRyYWMsIG1ldGhvZHM9KCdHRVQnLCkpCisKKyAgICBk
ZWYgY29tbWl0KHNlbGYsIHJlZj1Ob25lKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0
cmlldmVkID0gc2VsZi5kYXRhYmFzZS5nZXQocmVmKQorICAgICAgICAgICAgaWYgcmV0cmlldmVk
OgorICAgICAgICAgICAgICAgIHJldHVybiBDb21taXQuZnJvbV9qc29uKHJldHJpZXZlZCkKKyAg
ICAgICAgZXhjZXB0IChyZWRpcy5leGNlcHRpb25zLlJlc3BvbnNlRXJyb3IsIFR5cGVFcnJvciwg
VmFsdWVFcnJvcikgYXMgZToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ3t9XG4nLmZv
cm1hdChlKSkKKworICAgICAgICBjb21taXQgPSBzZWxmLmNoZWNrb3V0LnJlcG9zaXRvcnkuZmlu
ZChyZWYpIGlmIHJlZiBlbHNlIHNlbGYuY2hlY2tvdXQucmVwb3NpdG9yeS5jb21taXQoKQorICAg
ICAgICBpZiBub3QgY29tbWl0OgorICAgICAgICAgICAgcmV0dXJuIGNvbW1pdAorCisgICAgICAg
IGVuY29kZWQgPSBqc29uLmR1bXBzKGNvbW1pdCwgY2xzPUNvbW1pdC5FbmNvZGVyKQorICAgICAg
ICBzZWxmLmRhdGFiYXNlLnNldChjb21taXQuaGFzaCwgZW5jb2RlZCkKKyAgICAgICAgc2VsZi5k
YXRhYmFzZS5zZXQoJ3J7fScuZm9ybWF0KGNvbW1pdC5yZXZpc2lvbiksIGVuY29kZWQpCisgICAg
ICAgIHNlbGYuZGF0YWJhc2Uuc2V0KHN0cihjb21taXQpLCBlbmNvZGVkKQorCisgICAgICAgIHJl
dHVybiBjb21taXQKKworICAgIGRlZiBhcGkoc2VsZiwgcmVmKToKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgcmV0dXJuIGN1cnJlbnRfYXBwLnJlc3BvbnNlX2NsYXNzKAorICAgICAgICAgICAg
ICAgIGZqc29uLmR1bXBzKENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChzZWxmLmNvbW1pdChyZWYp
KSwgaW5kZW50PTQpLAorICAgICAgICAgICAgICAgIG1pbWV0eXBlPSdhcHBsaWNhdGlvbi9qc29u
JywKKyAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgor
ICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRfYXBwLnJlc3BvbnNlX2NsYXNzKAorICAgICAgICAg
ICAgICAgIGZqc29uLmR1bXBzKGRpY3QoCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0nTm90
IEZvdW5kJywKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nTm8gY29tbWl0IHdpdGggdGhl
IHNwZWNpZmllZCByZWZlcmVuY2UgY291bGQgYmUgZm91bmQnLAorICAgICAgICAgICAgICAgICAg
ICBlcnJvcj1zdHIoZSksCisgICAgICAgICAgICAgICAgKSwgaW5kZW50PTQpLAorICAgICAgICAg
ICAgICAgIG1pbWV0eXBlPSdhcHBsaWNhdGlvbi9qc29uJywKKyAgICAgICAgICAgICAgICBzdGF0
dXM9NDA0LAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRyYWMoc2VsZiwgcmV2aXNpb24pOgor
ICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWRpcmVjdG9yc1swXShzZWxm
LmNvbW1pdCgncnt9Jy5mb3JtYXQoaW50KHJldmlzaW9uKSkpKQorICAgICAgICBleGNlcHQgQmFz
ZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRfYXBwLnJlc3BvbnNl
X2NsYXNzKAorICAgICAgICAgICAgICAgIGZqc29uLmR1bXBzKGRpY3QoCisgICAgICAgICAgICAg
ICAgICAgIHN0YXR1cz0nU2VydmVyIEVycm9yJywKKyAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZT0nRmFpbGVkIHRvIGRpZ2VzdCB0cmFjIGxpbmsnLAorICAgICAgICAgICAgICAgICAgICBlcnJv
cj1zdHIoZSksCisgICAgICAgICAgICAgICAgKSwgaW5kZW50PTQpLAorICAgICAgICAgICAgICAg
IG1pbWV0eXBlPSdhcHBsaWNhdGlvbi9qc29uJywKKyAgICAgICAgICAgICAgICBzdGF0dXM9NTAw
LAorICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVw
b3JlbGF5cHkvcmVwb3JlbGF5cHkvZGF0YWJhc2UucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmll
cy9yZXBvcmVsYXlweS9yZXBvcmVsYXlweS9kYXRhYmFzZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjBmNzMx
MmUwMDRkNzBkYTcxYTc4YTA1NDc4OTNjNDIyYzVmYTA1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvcmVwb3JlbGF5cHkvcmVwb3JlbGF5cHkvZGF0YWJhc2UucHkK
QEAgLTAsMCArMSw3NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
ZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IEVudmlyb25tZW50CisKKworY2xhc3MgRGF0YWJhc2Uo
b2JqZWN0KToKKyAgICBfaW5zdGFuY2UgPSBOb25lCisgICAgSE9TVF9FTlYgPSAnUkVESVNfSE9T
VCcKKyAgICBQQVNTV09SRF9FTlYgPSAnUkVESVNfUEFTU1dPUkQnCisgICAgRVhQSVJBVElPTl9F
TlYgPSAnUkVESVNfREVGQVVMVF9FWFBJUkFUSU9OJworICAgIERFRkFVTFRfRVhQSVJBVElPTiA9
IDYwICogNjAgKiAyNAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGluc3RhbmNlKGNscywg
Kiprd2FyZ3MpOgorICAgICAgICBpZiBub3QgY2xzLl9pbnN0YW5jZToKKyAgICAgICAgICAgIGNs
cy5faW5zdGFuY2UgPSBjbHMoKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBjbHMuX2luc3RhbmNl
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD1Ob25lLCBwYXNzd29yZD1Ob25lLCBwYXJ0
aXRpb249Tm9uZSwgZGVmYXVsdF9leHBpcmF0aW9uPU5vbmUpOgorICAgICAgICBzZWxmLnBhcnRp
dGlvbiA9IHBhcnRpdGlvbiBvciAnJworICAgICAgICBpZiBkZWZhdWx0X2V4cGlyYXRpb24gaXMg
Tm9uZToKKyAgICAgICAgICAgIHNlbGYuZGVmYXVsdF9leHBpcmF0aW9uID0gaW50KEVudmlyb25t
ZW50Lmluc3RhbmNlKCkuZ2V0KHNlbGYuRVhQSVJBVElPTl9FTlYpIG9yIHNlbGYuREVGQVVMVF9F
WFBJUkFUSU9OKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5kZWZhdWx0X2V4cGly
YXRpb24gPSBpbnQoZGVmYXVsdF9leHBpcmF0aW9uKQorCisgICAgICAgIHNlbGYuaG9zdCA9IGhv
c3Qgb3IgRW52aXJvbm1lbnQuaW5zdGFuY2UoKS5nZXQoc2VsZi5IT1NUX0VOVikKKyAgICAgICAg
c2VsZi5wYXNzd29yZCA9IHBhc3N3b3JkIG9yIEVudmlyb25tZW50Lmluc3RhbmNlKCkuZ2V0KHNl
bGYuUEFTU1dPUkRfRU5WKQorCisgICAgICAgIGlmIGhvc3Q6CisgICAgICAgICAgICBpbXBvcnQg
cmVkaXMKKyAgICAgICAgICAgIHNlbGYuX3JlZGlzID0gcmVkaXMuUmVkaXMoaG9zdD1ob3N0LCBw
YXNzd29yZD1wYXNzd29yZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGltcG9ydCBmYWtl
cmVkaXMKKyAgICAgICAgICAgIHNlbGYuX3JlZGlzID0gZmFrZXJlZGlzLkZha2VTdHJpY3RSZWRp
cygpCisKKyAgICBkZWYgcGluZyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlZGlzLnBp
bmcoKQorCisgICAgZGVmIGdldChzZWxmLCBuYW1lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Jl
ZGlzLmdldChzZWxmLnBhcnRpdGlvbiArIG5hbWUpCisKKyAgICBkZWYgc2V0KHNlbGYsIG5hbWUs
IHZhbHVlLCAqKmt3YXJncyk6CisgICAgICAgIGlmICdleCcgbm90IGluIGt3YXJncyBhbmQgc2Vs
Zi5kZWZhdWx0X2V4cGlyYXRpb246CisgICAgICAgICAgICBrd2FyZ3NbJ2V4J10gPSBzZWxmLmRl
ZmF1bHRfZXhwaXJhdGlvbgorICAgICAgICByZXR1cm4gc2VsZi5fcmVkaXMuc2V0KHNlbGYucGFy
dGl0aW9uICsgbmFtZSwgdmFsdWUsICoqa3dhcmdzKQorCisgICAgZGVmIGxvY2soc2VsZiwgbmFt
ZSwgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi5fcmVkaXMubG9jayhzZWxmLnBhcnRp
dGlvbiArIG5hbWUsICoqa3dhcmdzKQorCisgICAgZGVmIGRlbGV0ZShzZWxmLCAqbmFtZXMpOgor
ICAgICAgICBuYW1lc190b19kZWxldGUgPSBbc2VsZi5wYXJ0aXRpb24gKyBuYW1lIGZvciBuYW1l
IGluIG5hbWVzXQorICAgICAgICByZXR1cm4gc2VsZi5fcmVkaXMuZGVsZXRlKCpuYW1lc190b19k
ZWxldGUpCisKKyAgICBkZWYgc2Nhbl9pdGVyKHNlbGYsIG1hdGNoPU5vbmUsICoqa3dhcmdzKToK
KyAgICAgICAgZm9yIGtleSBpbiBzZWxmLl9yZWRpcy5zY2FuX2l0ZXIobWF0Y2g9c2VsZi5wYXJ0
aXRpb24gKyBtYXRjaCwgKiprd2FyZ3MpOgorICAgICAgICAgICAgeWllbGQga2V5W2xlbihzZWxm
LnBhcnRpdGlvbik6XQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVwb3Jl
bGF5cHkvcmVwb3JlbGF5cHkvdGVzdHMvY2hlY2tvdXRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy9yZXBvcmVsYXlweS9yZXBvcmVsYXlweS90ZXN0cy9jaGVja291dF91bml0
dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44YmY0NjVkZTk2OThkNzJmYmJiODdmZmMwNTdlNjlhODMzODJm
YjdiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVwb3JlbGF5
cHkvcmVwb3JlbGF5cHkvdGVzdHMvY2hlY2tvdXRfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw0OSBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCitpbXBv
cnQgdW5pdHRlc3QKKworZnJvbSByZXBvcmVsYXlweSBpbXBvcnQgQ2hlY2tvdXQKK2Zyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCB0ZXN0aW5nLCBPdXRwdXRDYXB0dXJlCitmcm9tIHdlYmtpdHNjbXB5
IGltcG9ydCBtb2NrcworCisKK2NsYXNzIENoZWNrb3V0VW5pdHRlc3QodGVzdGluZy5QYXRoVGVz
dENhc2UpOgorICAgIGJhc2VwYXRoID0gJ21vY2svcmVwb3NpdG9yeScKKworICAgIGRlZiBzZXRV
cChzZWxmKToKKyAgICAgICAgc3VwZXIoQ2hlY2tvdXRVbml0dGVzdCwgc2VsZikuc2V0VXAoKQor
ICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnLmdpdCcpKQorCisgICAg
ZGVmIHRlc3RfY29uc3RydWN0b3Jfc2VudGluYWwoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3Mu
bG9jYWwuR2l0KHNlbGYucGF0aCkgYXMgcmVwbywgT3V0cHV0Q2FwdHVyZSgpOgorICAgICAgICAg
ICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc2VsZi5wYXRoKSwgJ2Ns
b25lZCcpLCAndycpIGFzIHNlbnRpbmFsOgorICAgICAgICAgICAgICAgIHNlbnRpbmFsLndyaXRl
KCd5ZXNcbicpCisgICAgICAgICAgICBDaGVja291dChwYXRoPXNlbGYucGF0aCwgdXJsPXJlcG8u
cmVtb3RlLCBzZW50aW5hbD1UcnVlKQorCisgICAgZGVmIHRlc3RfY29uc3RydWN0b3Jfbm9fc2Vu
dGluYWwoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCkgYXMg
cmVwbzoKKyAgICAgICAgICAgIENoZWNrb3V0KHBhdGg9c2VsZi5wYXRoLCB1cmw9cmVwby5yZW1v
dGUsIHNlbnRpbmFsPUZhbHNlKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KENoZWNrb3V0LkV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgQ2hlY2tvdXQocGF0aD1zZWxm
LnBhdGgsIHVybD1yZXBvLnJlbW90ZSwgc2VudGluYWw9VHJ1ZSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3JlcG9yZWxheXB5L3JlcG9yZWxheXB5L3Rlc3RzL2NoZWNrb3V0
cm91dGVfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXBvcmVsYXlweS9y
ZXBvcmVsYXlweS90ZXN0cy9jaGVja291dHJvdXRlX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRi
NTE0NzM1YWU2ZDkyMTcxZGYzMTkwYjY4MmIzODk0ODhjMDA2ODcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXBvcmVsYXlweS9yZXBvcmVsYXlweS90ZXN0cy9j
aGVja291dHJvdXRlX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMTc2IEBACisjIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgb3MKK2ltcG9ydCBqc29uCitpbXBvcnQg
dW5pdHRlc3QKKworZnJvbSByZXBvcmVsYXlweSBpbXBvcnQgQ2hlY2tvdXQsIENoZWNrb3V0Um91
dGUsIFJlZGlyZWN0b3IKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCB0ZXN0aW5nLCBPdXRwdXRD
YXB0dXJlCitmcm9tIHdlYmtpdGZsYXNrcHkgaW1wb3J0IG1vY2tfYXBwCitmcm9tIHdlYmtpdHNj
bXB5IGltcG9ydCBtb2NrcywgQ29tbWl0CisKKworY2xhc3MgUmVkaXJlY3RvclVuaXR0ZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9lbXB0eShzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgUmVkaXJlY3Rvci5m
cm9tX2pzb24oanNvbi5kdW1wcyhbXSwgY2xzPVJlZGlyZWN0b3IuRW5jb2RlcikpLAorICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9iaXRidWNrZXQoc2VsZik6CisgICAgICAgIHJlZGlyID0gUmVk
aXJlY3RvcignaHR0cHM6Ly9iaXRidWNrZXQud2Via2l0Lm9yZy9wcm9qZWN0cy9XRUJLSVQvcmVw
b3Mvd2Via2l0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWRpci50eXBlLCAnYml0YnVj
a2V0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlZGlyKE5vbmUp
LmhlYWRlcnMuZ2V0KCdsb2NhdGlvbicpLAorICAgICAgICAgICAgJ2h0dHBzOi8vYml0YnVja2V0
LndlYmtpdC5vcmcvcHJvamVjdHMvV0VCS0lUL3JlcG9zL3dlYmtpdC9jb21taXRzJywKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVkaXIoQ29tbWl0
KGhhc2g9J2RlYWRiZWVmJykpLmhlYWRlcnMuZ2V0KCdsb2NhdGlvbicpLAorICAgICAgICAgICAg
J2h0dHBzOi8vYml0YnVja2V0LndlYmtpdC5vcmcvcHJvamVjdHMvV0VCS0lUL3JlcG9zL3dlYmtp
dC9jb21taXRzL2RlYWRiZWVmJywKKyAgICAgICAgKQorCisgICAgICAgIHRyYW5zZmVyZWQgPSBS
ZWRpcmVjdG9yLmZyb21fanNvbihqc29uLmR1bXBzKFtyZWRpcl0sIGNscz1SZWRpcmVjdG9yLkVu
Y29kZXIpKVswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZGlyLnR5cGUsIHRyYW5zZmVy
ZWQudHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWRpcihOb25lKS5oZWFkZXJzLmdl
dCgnbG9jYXRpb24nKSwgdHJhbnNmZXJlZChOb25lKS5oZWFkZXJzLmdldCgnbG9jYXRpb24nKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlZGlyKENvbW1pdChoYXNo
PSdkZWFkYmVlZicpKS5oZWFkZXJzLmdldCgnbG9jYXRpb24nKSwKKyAgICAgICAgICAgIHRyYW5z
ZmVyZWQoQ29tbWl0KGhhc2g9J2RlYWRiZWVmJykpLmhlYWRlcnMuZ2V0KCdsb2NhdGlvbicpLAor
ICAgICAgICApCisKKyAgICBkZWYgdGVzdF90cmFjKHNlbGYpOgorICAgICAgICByZWRpciA9IFJl
ZGlyZWN0b3IoJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZWRpci50eXBlLCAndHJhYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICByZWRpcihOb25lKS5oZWFkZXJzLmdldCgnbG9jYXRpb24nKSwKKyAgICAgICAgICAg
ICdodHRwczovL3RyYWMud2Via2l0Lm9yZycsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIHJlZGlyKENvbW1pdChyZXZpc2lvbj0xMjM0NSkpLmhlYWRl
cnMuZ2V0KCdsb2NhdGlvbicpLAorICAgICAgICAgICAgJ2h0dHBzOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMjM0NS93ZWJraXQnLAorICAgICAgICApCisKKyAgICAgICAgdHJhbnNmZXJl
ZCA9IFJlZGlyZWN0b3IuZnJvbV9qc29uKGpzb24uZHVtcHMoW3JlZGlyXSwgY2xzPVJlZGlyZWN0
b3IuRW5jb2RlcikpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVkaXIudHlwZSwgdHJh
bnNmZXJlZC50eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZGlyKE5vbmUpLmhlYWRl
cnMuZ2V0KCdsb2NhdGlvbicpLCB0cmFuc2ZlcmVkKE5vbmUpLmhlYWRlcnMuZ2V0KCdsb2NhdGlv
bicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVkaXIoQ29tbWl0
KHJldmlzaW9uPTEyMzQ1KSkuaGVhZGVycy5nZXQoJ2xvY2F0aW9uJyksCisgICAgICAgICAgICB0
cmFuc2ZlcmVkKENvbW1pdChyZXZpc2lvbj0xMjM0NSkpLmhlYWRlcnMuZ2V0KCdsb2NhdGlvbicp
LAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9naXRodWIoc2VsZik6CisgICAgICAgIHJlZGly
ID0gUmVkaXJlY3RvcignaHR0cHM6Ly9naXRodWIuY29tL1dlYktpdC9XZWJLaXQnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlZGlyLnR5cGUsICdnaXRodWInKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgcmVkaXIoTm9uZSkuaGVhZGVycy5nZXQoJ2xvY2F0aW9u
JyksCisgICAgICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL1dlYktpdC9XZWJLaXQvY29tbWl0
cycsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJl
ZGlyKENvbW1pdChoYXNoPSdkZWFkYmVlZicpKS5oZWFkZXJzLmdldCgnbG9jYXRpb24nKSwKKyAg
ICAgICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vV2ViS2l0L1dlYktpdC9jb21taXQvZGVhZGJl
ZWYnLAorICAgICAgICApCisKKyAgICAgICAgdHJhbnNmZXJlZCA9IFJlZGlyZWN0b3IuZnJvbV9q
c29uKGpzb24uZHVtcHMoW3JlZGlyXSwgY2xzPVJlZGlyZWN0b3IuRW5jb2RlcikpWzBdCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVkaXIudHlwZSwgdHJhbnNmZXJlZC50eXBlKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlZGlyKE5vbmUpLmhlYWRlcnMuZ2V0KCdsb2NhdGlvbicpLCB0
cmFuc2ZlcmVkKE5vbmUpLmhlYWRlcnMuZ2V0KCdsb2NhdGlvbicpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgcmVkaXIoQ29tbWl0KGhhc2g9J2RlYWRiZWVmJykpLmhl
YWRlcnMuZ2V0KCdsb2NhdGlvbicpLAorICAgICAgICAgICAgdHJhbnNmZXJlZChDb21taXQoaGFz
aD0nZGVhZGJlZWYnKSkuaGVhZGVycy5nZXQoJ2xvY2F0aW9uJyksCisgICAgICAgICkKKworCitj
bGFzcyBDaGVja291dFJvdXRlVW5pdHRlc3QodGVzdGluZy5QYXRoVGVzdENhc2UpOgorICAgIGJh
c2VwYXRoID0gJ21vY2svcmVwb3NpdG9yeScKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAg
ICAgc3VwZXIoQ2hlY2tvdXRSb3V0ZVVuaXR0ZXN0LCBzZWxmKS5zZXRVcCgpCisgICAgICAgIG9z
Lm1rZGlyKG9zLnBhdGguam9pbihzZWxmLnBhdGgsICcuZ2l0JykpCisKKyAgICBAbW9ja19hcHAK
KyAgICBkZWYgdGVzdF9sYW5kaW5nKHNlbGYsIGFwcD1Ob25lLCBjbGllbnQ9Tm9uZSk6CisgICAg
ICAgIHdpdGggbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCkgYXMgcmVwbzoKKyAgICAgICAgICAg
IGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoQ2hlY2tvdXRSb3V0ZSgKKyAgICAgICAgICAgICAgICBD
aGVja291dChwYXRoPXNlbGYucGF0aCwgdXJsPXJlcG8ucmVtb3RlLCBzZW50aW5hbD1GYWxzZSks
CisgICAgICAgICAgICAgICAgcmVkaXJlY3RvcnM9W1JlZGlyZWN0b3IoJ2h0dHBzOi8vdHJhYy53
ZWJraXQub3JnJyldLAorICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHJlc3BvbnNlID0gY2xp
ZW50LmdldCgnLycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1
c19jb2RlLCAzMDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmhlYWRl
cnMuZ2V0KCdsb2NhdGlvbicpLCAnaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcnKQorCisgICAgQG1v
Y2tfYXBwCisgICAgZGVmIHRlc3RfanNvbihzZWxmLCBhcHA9Tm9uZSwgY2xpZW50PU5vbmUpOgor
ICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpIGFzIHJlcG86CisgICAgICAg
ICAgICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KENoZWNrb3V0Um91dGUoCisgICAgICAgICAgICAg
ICAgQ2hlY2tvdXQocGF0aD1zZWxmLnBhdGgsIHVybD1yZXBvLnJlbW90ZSwgc2VudGluYWw9RmFs
c2UpLAorICAgICAgICAgICAgICAgIHJlZGlyZWN0b3JzPVtSZWRpcmVjdG9yKCdodHRwczovL3Ry
YWMud2Via2l0Lm9yZycpXSwKKyAgICAgICAgICAgICkpCisgICAgICAgICAgICByZWZlcmVuY2Ug
PSBDb21taXQuRW5jb2RlcigpLmRlZmF1bHQocmVwby5jb21taXRzWydtYWluJ11bM10pCisgICAg
ICAgICAgICByZWZlcmVuY2VbJ21lc3NhZ2UnXSA9IHJlZmVyZW5jZVsnbWVzc2FnZSddLnJzdHJp
cCgpCisKKyAgICAgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldCgnNEBtYWluL2pzb24nKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKCksIHJlZmVyZW5jZSkK
KworICAgIEBtb2NrX2FwcAorICAgIGRlZiB0ZXN0X3JlZGlyZWN0KHNlbGYsIGFwcD1Ob25lLCBj
bGllbnQ9Tm9uZSk6CisgICAgICAgIHdpdGggbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCkgYXMg
cmVwbzoKKyAgICAgICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoQ2hlY2tvdXRSb3V0ZSgK
KyAgICAgICAgICAgICAgICBDaGVja291dChwYXRoPXNlbGYucGF0aCwgdXJsPXJlcG8ucmVtb3Rl
LCBzZW50aW5hbD1GYWxzZSksCisgICAgICAgICAgICAgICAgcmVkaXJlY3RvcnM9W1JlZGlyZWN0
b3IoJ2h0dHBzOi8vZ2l0aHViLmNvbS9XZWJLaXQvV2ViS2l0JyldLAorICAgICAgICAgICAgKSkK
KworICAgICAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KCcxQGJyYW5jaC1hJykKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDMwMikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgcmVzcG9uc2UuaGVhZGVy
cy5nZXQoJ2xvY2F0aW9uJyksCisgICAgICAgICAgICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9X
ZWJLaXQvV2ViS2l0L2NvbW1pdC9hMzBjZTg0OTRiZjFhYzI4MDdhNjk4NDRmNzI2YmU0YTk4NDNj
YTU1JywKKyAgICAgICAgICAgICkKKworICAgIEBtb2NrX2FwcAorICAgIGRlZiB0ZXN0X2ludm9r
ZWRfcmVkaXJlY3Qoc2VsZiwgYXBwPU5vbmUsIGNsaWVudD1Ob25lKToKKyAgICAgICAgd2l0aCBt
b2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpIGFzIHJlcG86CisgICAgICAg
ICAgICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KENoZWNrb3V0Um91dGUoCisgICAgICAgICAgICAg
ICAgQ2hlY2tvdXQocGF0aD1zZWxmLnBhdGgsIHVybD1yZXBvLnJlbW90ZSwgc2VudGluYWw9RmFs
c2UpLAorICAgICAgICAgICAgICAgIHJlZGlyZWN0b3JzPVtSZWRpcmVjdG9yKCdodHRwczovL2dp
dGh1Yi5jb20vV2ViS2l0L1dlYktpdCcpLCBSZWRpcmVjdG9yKCdodHRwczovL3RyYWMud2Via2l0
Lm9yZycpXSwKKyAgICAgICAgICAgICkpCisKKyAgICAgICAgICAgIHJlc3BvbnNlID0gY2xpZW50
LmdldCgnYTMwY2U4NDkvdHJhYycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Bv
bnNlLnN0YXR1c19jb2RlLCAzMDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdsb2NhdGlvbicpLAorICAgICAgICAg
ICAgICAgICdodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMy93ZWJraXQnLAorICAg
ICAgICAgICAgKQorCisgICAgQG1vY2tfYXBwCisgICAgZGVmIHRlc3RfdHJhYyhzZWxmLCBhcHA9
Tm9uZSwgY2xpZW50PU5vbmUpOgorICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBh
dGgsIGdpdF9zdm49VHJ1ZSkgYXMgcmVwbzoKKyAgICAgICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVl
cHJpbnQoQ2hlY2tvdXRSb3V0ZSgKKyAgICAgICAgICAgICAgICBDaGVja291dChwYXRoPXNlbGYu
cGF0aCwgdXJsPXJlcG8ucmVtb3RlLCBzZW50aW5hbD1GYWxzZSksCisgICAgICAgICAgICAgICAg
cmVkaXJlY3RvcnM9W1JlZGlyZWN0b3IoJ2h0dHBzOi8vZ2l0aHViLmNvbS9XZWJLaXQvV2ViS2l0
JyldLAorICAgICAgICAgICAgKSkKKworICAgICAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0
KCcvY2hhbmdlc2V0LzYvd2Via2l0JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
cG9uc2Uuc3RhdHVzX2NvZGUsIDMwMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICAgICAgcmVzcG9uc2UuaGVhZGVycy5nZXQoJ2xvY2F0aW9uJyksCisgICAgICAg
ICAgICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9XZWJLaXQvV2ViS2l0L2NvbW1pdC82MjE2NTJh
ZGQ3ZmM0MTYwOTliZDIwNjMzNjZjYzM4ZmY2MWFmZTM2JywKKyAgICAgICAgICAgICkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3JlcG9yZWxheXB5L3JlcG9yZWxheXB5L3Rl
c3RzL2RhdGFiYXNlX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVwb3Jl
bGF5cHkvcmVwb3JlbGF5cHkvdGVzdHMvZGF0YWJhc2VfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDIxYmQ0ZmQ0MzM4MWY0ZDdmMzcxNzM2M2M0OWFkM2Y5ZWY0MmE1OQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3JlcG9yZWxheXB5L3JlcG9yZWxheXB5L3Rlc3Rz
L2RhdGFiYXNlX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsOTkgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHJlcG9yZWxheXB5
IGltcG9ydCBEYXRhYmFzZQorCisKK2NsYXNzIERhdGFiYXNlVW5pdHRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgorICAgIFBBUlRJVElPTl8xID0gJ3BhcnRpdGlvbl8xOicKKyAgICBQQVJUSVRJT05f
MiA9ICdwYXJ0aXRpb25fMjsnCisgICAgRU1QVFlfUEFSVElUSU9OID0gTm9uZQorCisgICAgZGVm
IHRlc3RfZ2V0KHNlbGYpOgorICAgICAgICByZWRpc18xID0gRGF0YWJhc2UocGFydGl0aW9uPXNl
bGYuUEFSVElUSU9OXzEpCisgICAgICAgIHJlZGlzXzIgPSBEYXRhYmFzZShwYXJ0aXRpb249c2Vs
Zi5QQVJUSVRJT05fMikKKyAgICAgICAgcmVkaXNfMyA9IERhdGFiYXNlKHBhcnRpdGlvbj1zZWxm
LkVNUFRZX1BBUlRJVElPTikKKyAgICAgICAgcmVkaXNfMS5zZXQoJ2tleScsICd2YWx1ZScpCisg
ICAgICAgIHJlZGlzXzIuc2V0KCdrZXknLCAnb3RoZXInKQorICAgICAgICByZWRpc18zLnNldCgn
a2V5JywgJ2VtcHR5JykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZGlzXzEuZ2V0KCdr
ZXknKS5kZWNvZGUoJ3V0Zi04JyksICd2YWx1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVkaXNfMi5nZXQoJ2tleScpLmRlY29kZSgndXRmLTgnKSwgJ290aGVyJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZWRpc18zLmdldCgna2V5JykuZGVjb2RlKCd1dGYtOCcpLCAnZW1wdHkn
KQorCisgICAgZGVmIHRlc3RfZGVsZXRlKHNlbGYpOgorICAgICAgICByZWRpc18xID0gRGF0YWJh
c2UocGFydGl0aW9uPXNlbGYuUEFSVElUSU9OXzEpCisgICAgICAgIHJlZGlzXzIgPSBEYXRhYmFz
ZShwYXJ0aXRpb249c2VsZi5QQVJUSVRJT05fMikKKyAgICAgICAgcmVkaXNfMyA9IERhdGFiYXNl
KHBhcnRpdGlvbj1zZWxmLkVNUFRZX1BBUlRJVElPTikKKworICAgICAgICByZWRpc18xLnNldCgn
a2V5LWEnLCAndmFsdWUtYScpCisgICAgICAgIHJlZGlzXzEuc2V0KCdrZXktYicsICd2YWx1ZS1i
JykKKyAgICAgICAgcmVkaXNfMi5zZXQoJ2tleS1hJywgJ290aGVyLWEnKQorICAgICAgICByZWRp
c18yLnNldCgna2V5LWInLCAnb3RoZXItYicpCisgICAgICAgIHJlZGlzXzMuc2V0KCdrZXktYScs
ICdlbXB0eS1hJykKKyAgICAgICAgcmVkaXNfMy5zZXQoJ2tleS1iJywgJ2VtcHR5LWInKQorCisg
ICAgICAgIHJlZGlzXzEuZGVsZXRlKCdrZXktYScsICdrZXktYicpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVkaXNfMS5nZXQoJ2tleS1hJyksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVkaXNfMS5nZXQoJ2tleS1iJyksIE5vbmUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZWRpc18yLmdldCgna2V5LWEnKS5kZWNvZGUoJ3V0Zi04JyksICdvdGhlci1hJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWRpc18yLmdldCgna2V5LWInKS5kZWNvZGUoJ3V0Zi04
JyksICdvdGhlci1iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWRpc18zLmdldCgna2V5
LWEnKS5kZWNvZGUoJ3V0Zi04JyksICdlbXB0eS1hJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZWRpc18zLmdldCgna2V5LWInKS5kZWNvZGUoJ3V0Zi04JyksICdlbXB0eS1iJykKKworICAg
ICAgICByZWRpc18yLmRlbGV0ZSgna2V5LWEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
ZGlzXzIuZ2V0KCdrZXktYScpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZGlz
XzIuZ2V0KCdrZXktYicpLmRlY29kZSgndXRmLTgnKSwgJ290aGVyLWInKQorCisgICAgICAgIHJl
ZGlzXzMuZGVsZXRlKCdrZXktYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVkaXNfMy5n
ZXQoJ2tleS1hJyksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVkaXNfMy5nZXQo
J2tleS1iJykuZGVjb2RlKCd1dGYtOCcpLCAnZW1wdHktYicpCisKKyAgICBkZWYgdGVzdF9sb2Nr
KHNlbGYpOgorICAgICAgICByZWRpc18xID0gRGF0YWJhc2UocGFydGl0aW9uPXNlbGYuUEFSVElU
SU9OXzEpCisgICAgICAgIHJlZGlzXzIgPSBEYXRhYmFzZShwYXJ0aXRpb249c2VsZi5QQVJUSVRJ
T05fMikKKyAgICAgICAgcmVkaXNfMyA9IERhdGFiYXNlKHBhcnRpdGlvbj1zZWxmLkVNUFRZX1BB
UlRJVElPTikKKyAgICAgICAgd2l0aCByZWRpc18xLmxvY2sobmFtZT0nbG9jaycsIGJsb2NraW5n
X3RpbWVvdXQ9LjUpOgorICAgICAgICAgICAgd2l0aCByZWRpc18yLmxvY2sobmFtZT0nbG9jaycs
IGJsb2NraW5nX3RpbWVvdXQ9LjUpOgorICAgICAgICAgICAgICAgIHdpdGggcmVkaXNfMy5sb2Nr
KG5hbWU9J2xvY2snLCBibG9ja2luZ190aW1lb3V0PS41KToKKyAgICAgICAgICAgICAgICAgICAg
cGFzcworCisgICAgZGVmIHRlc3Rfc2NhbihzZWxmKToKKyAgICAgICAgcmVkaXNfMSA9IERhdGFi
YXNlKHBhcnRpdGlvbj1zZWxmLlBBUlRJVElPTl8xKQorICAgICAgICByZWRpc18yID0gRGF0YWJh
c2UocGFydGl0aW9uPXNlbGYuUEFSVElUSU9OXzIpCisgICAgICAgIHJlZGlzXzMgPSBEYXRhYmFz
ZShwYXJ0aXRpb249c2VsZi5FTVBUWV9QQVJUSVRJT04pCisgICAgICAgIHJlZGlzXzEuc2V0KCdp
dGVyLWEnLCAndmFsdWUtYScpCisgICAgICAgIHJlZGlzXzEuc2V0KCdpdGVyLWInLCAndmFsdWUt
YicpCisgICAgICAgIHJlZGlzXzIuc2V0KCdpdGVyLWMnLCAndmFsdWUtYycpCisgICAgICAgIHJl
ZGlzXzIuc2V0KCdpdGVyLWQnLCAndmFsdWUtZCcpCisgICAgICAgIHJlZGlzXzMuc2V0KCdpdGVy
LWUnLCAndmFsdWUtZScpCisgICAgICAgIHJlZGlzXzMuc2V0KCdpdGVyLWYnLCAndmFsdWUtZicp
CisKKyAgICAgICAgZm9yIGtleSBpbiByZWRpc18xLnNjYW5faXRlcignaXRlcionKToKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0SW4oa2V5LmRlY29kZSgndXRmLTgnKSwgWydpdGVyLWEnLCAnaXRl
ci1iJ10pCisgICAgICAgIGZvciBrZXkgaW4gcmVkaXNfMi5zY2FuX2l0ZXIoJ2l0ZXIqJyk6Cisg
ICAgICAgICAgICBzZWxmLmFzc2VydEluKGtleS5kZWNvZGUoJ3V0Zi04JyksIFsnaXRlci1jJywg
J2l0ZXItZCddKQorICAgICAgICBmb3Iga2V5IGluIHJlZGlzXzMuc2Nhbl9pdGVyKCdpdGVyKicp
OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihrZXkuZGVjb2RlKCd1dGYtOCcpLCBbJ2l0ZXIt
ZScsICdpdGVyLWYnXSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3JlcG9y
ZWxheXB5L3JlcG9yZWxheXB5L3dlYnNlcnZlci5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3JlcG9yZWxheXB5L3JlcG9yZWxheXB5L3dlYnNlcnZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWI2N2Q5
NmY4YzE3ZWNkMmFkNDA4ZmViNWUxM2QwYTVlYTg1YzNhCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvcmVwb3JlbGF5cHkvcmVwb3JlbGF5cHkvd2Vic2VydmVyLnB5
CkBAIC0wLDAgKzEsNTMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K2ltcG9ydCBvcworCithdXRvaW5zdGFsbF9wYXRoID0gb3MuZW52aXJvbi5nZXQoJ0FVVE9JTlNU
QUxMX1BBVEgnKQoraWYgYXV0b2luc3RhbGxfcGF0aDoKKyAgICBmcm9tIHdlYmtpdGNvcmVweSBp
bXBvcnQgQXV0b0luc3RhbGwKKyAgICBBdXRvSW5zdGFsbC5zZXRfZGlyZWN0b3J5KGF1dG9pbnN0
YWxsX3BhdGgpCisKK2Zyb20gZmxhc2sgaW1wb3J0IEZsYXNrLCBjdXJyZW50X2FwcCwganNvbiBh
cyBmanNvbgorZnJvbSByZXBvcmVsYXlweSBpbXBvcnQgQ2hlY2tvdXQsIENoZWNrb3V0Um91dGUs
IERhdGFiYXNlLCBSZWRpcmVjdG9yCisKK2FwcCA9IEZsYXNrKF9fbmFtZV9fKQorCitkYXRhYmFz
ZSA9IERhdGFiYXNlKCkKK2NoZWNrb3V0ID0gQ2hlY2tvdXQuZnJvbV9qc29uKG9zLmVudmlyb24u
Z2V0KCdDSEVDS09VVCcsICd7fScpKQorY2hlY2tvdXRfcm91dGVzID0gQ2hlY2tvdXRSb3V0ZSgK
KyAgICBjaGVja291dCwgcmVkaXJlY3RvcnM9UmVkaXJlY3Rvci5mcm9tX2pzb24ob3MuZW52aXJv
bi5nZXQoJ1JFRElSRUNUT1JTJywgJ1tdJykpLAorICAgIGltcG9ydF9uYW1lPV9fbmFtZV9fLCBk
YXRhYmFzZT1kYXRhYmFzZSwKKykKKworCitAYXBwLnJvdXRlKCcvX19oZWFsdGgnKQorZGVmIGhl
YWx0aCgpOgorICAgIHJldHVybiAnb2snCisKKworYXBwLnJlZ2lzdGVyX2JsdWVwcmludChjaGVj
a291dF9yb3V0ZXMpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBwb3J0ID0g
aW50KG9zLmVudmlyb24uZ2V0KCdQT1JUJywgNTAwMCkpCisgICAgYXBwLnJ1bihob3N0PScwLjAu
MC4wJywgcG9ydD1wb3J0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVw
b3JlbGF5cHkvcnVuIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVwb3JlbGF5cHkvcnVuCm5l
dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFmMTRhYWU1ODE0YmViYzk0M2VjNjU2ZDA3NjYxZGEwZWFmN2EzNGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXBvcmVsYXlweS9ydW4KQEAg
LTAsMCArMSwxNTUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworIyBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBqc29uCitpbXBv
cnQgb3MKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQorCitpbXBv
cnQgcmVwb3JlbGF5cHkKK2ltcG9ydCB3ZWJraXRjb3JlcHkKKworc2NyaXB0cyA9IG9zLnBhdGgu
ZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChf
X2ZpbGVfXykpKSkKK2lmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHNjcmlwdHMsICd3ZWJr
aXRweScpKToKKyAgICBzeXMucGF0aC5pbnNlcnQoMCwgc2NyaXB0cykKKyAgICBpbXBvcnQgd2Vi
a2l0cHkKKworZnJvbSByZXBvcmVsYXlweSBpbXBvcnQgQ2hlY2tvdXQsIERhdGFiYXNlLCBSZWRp
cmVjdG9yCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgYXJndW1lbnRzLCBBdXRvSW5zdGFsbAor
ZnJvbSB3aGljaGNyYWZ0IGltcG9ydCB3aGljaAorCisKK2RlZiBtYWluKGFyZ3M9Tm9uZSk6Cisg
ICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J1J1biBhIGdp
dCByZWxheSBzZXJ2ZXIgZm9yIHRlc3RpbmcnKQorCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2Fy
Z3VtZW50X2dyb3VwKCdSZXBvc2l0b3J5JykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoCisgICAg
ICAgICctLXBhdGgnLCAnLXAnLCAnLUMnLAorICAgICAgICBkZXN0PSdwYXRoJywgZGVmYXVsdD1v
cy5nZXRjd2QoKSwgYWN0aW9uPSdzdG9yZScsCisgICAgICAgIGhlbHA9J1NldCB0aGUgcmVwb3Np
dG9yeSBwYXRoIHRvIGJlIHVzZWQnLAorICAgICkKKyAgICBncm91cC5hZGRfYXJndW1lbnQoCisg
ICAgICAgICctLWh0dHAtcHJveHknLCBkZXN0PSdodHRwX3Byb3h5JywgZGVmYXVsdD1Ob25lLCBh
Y3Rpb249J3N0b3JlJywKKyAgICAgICAgaGVscD0nU2V0IGFuIGh0dHAgcHJveHknLAorICAgICkK
KyAgICBncm91cC5hZGRfYXJndW1lbnQoCisgICAgICAgICctLXVybCcsIGRlc3Q9J3VybCcsIGRl
ZmF1bHQ9Tm9uZSwgYWN0aW9uPSdzdG9yZScsCisgICAgICAgIGhlbHA9J1NldCB0aGUgcmVwb3Np
dG9yeSBwYXRoIHRvIGJlIHVzZWQnLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAor
ICAgICAgICAnLS1zZW50aW5hbCcsICctLW5vLXNlbnRpbmFsJywgYWN0aW9uPWFyZ3VtZW50cy5O
b0FjdGlvbiwgZGVzdD0nc2VudGluYWwnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICBoZWxwPSdM
YXkgZG93biBzZW50aW5hbCBmaWxlIG9uIGRpc2sgdG8gZGV0ZXJtaW5lIGNoZWNrb3V0IHN0YXRl
LicsCisgICAgKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy0tdXBkYXRlJywg
ZGVzdD0ndXBkYXRlX2ludGVydmFsJywgZGVmYXVsdD0wLCBhY3Rpb249J3N0b3JlJywgdHlwZT1p
bnQsCisgICAgICAgIGhlbHA9J1NldCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBiZXR3
ZWVuIHBvbGxpbmcgZ2l0IGNoZWNrb3V0JywKKyAgICApCisKKyAgICBncm91cCA9IHBhcnNlci5h
ZGRfYXJndW1lbnRfZ3JvdXAoJ0RhdGFiYXNlJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoCisg
ICAgICAgICctLXJlZGlzLWhvc3QnLCBkZXN0PSdyZWRpc19ob3N0JywgZGVmYXVsdD1Ob25lLCBh
Y3Rpb249J3N0b3JlJywKKyAgICAgICAgaGVscD0iU2V0IHRoZSBob3N0bmFtZSBvZiB0aGUgUmVk
aXMgZGF0YWJhc2UgdG8gYmUgdXNlZC4gKEVudmlyb25tZW50IHZhcmlhYmxlICd7fScgdXNlZCBi
eSBkZWZhdWx0KSIuZm9ybWF0KERhdGFiYXNlLkhPU1RfRU5WKSwKKyAgICApCisgICAgZ3JvdXAu
YWRkX2FyZ3VtZW50KAorICAgICAgICAnLS1yZWRpcy1wYXNzd29yZCcsIGRlc3Q9J3JlZGlzX3Bh
c3N3b3JkJywgZGVmYXVsdD1Ob25lLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgaGVscD0iU2V0
IHRoZSBwYXNzd29yZCBvZiB0aGUgUmVkaXMgZGF0YWJhc2UgdG8gYmUgdXNlZC4gKEVudmlyb25t
ZW50IHZhcmlhYmxlICd7fScgdXNlZCBieSBkZWZhdWx0KSIuZm9ybWF0KERhdGFiYXNlLlBBU1NX
T1JEX0VOViksCisgICAgKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy0tcmVk
aXMtZXhwaXJhdGlvbicsIGRlc3Q9J3JlZGlzX2V4cGlyYXRpb24nLCBkZWZhdWx0PURhdGFiYXNl
LkRFRkFVTFRfRVhQSVJBVElPTiwgYWN0aW9uPSdzdG9yZScsIHR5cGU9aW50LAorICAgICAgICBo
ZWxwPSJTZXQgdGhlIGRlZmF1bHQgUmVkaXMgZXhwaXJhdGlvbiB0aW1lIGluIHNlY29uZHMiLAor
ICAgICkKKworICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnV2Vic2VydmVy
JykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoCisgICAgICAgICctLXBvcnQnLCBkZXN0PSdwb3J0
JywgZGVmYXVsdD01MDAwLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgaGVscD0nUG9ydCB0byBl
eHBvc2Ugd2Vic2VydmVyIG9uLicsCisgICAgKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgKKyAg
ICAgICAgJy0tcG9sbCcsIGRlc3Q9J3BvbGwnLCBkZWZhdWx0PTEwLCBhY3Rpb249J3N0b3JlJywK
KyAgICAgICAgaGVscD0nTnVtYmVyIG9mIHNlY29uZHMgYmV0d2VlbiBwb2xscyBvZiB0aGUgd2Vi
c2VydmVyIHByb2Nlc3MuJywKKyAgICApCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KAorICAgICAg
ICAnLS1yZWRpcmVjdG9yJywgJy1yJywgZGVzdD0ncmVkaXJlY3RvcicsIGFjdGlvbj0nYXBwZW5k
JywKKyAgICAgICAgaGVscD0nQmFzZSBVUkwgdG8gcmVkaXJlY3QgdXNlciB0byBmb3IgY29tbWl0
IGluZm9ybWF0aW9uLicsCisgICAgKQorCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFy
Z3M9YXJncykKKworICAgIGRhdGFiYXNlID0gRGF0YWJhc2UoaG9zdD1hcmdzLnJlZGlzX2hvc3Qs
IHBhc3N3b3JkPWFyZ3MucmVkaXNfcGFzc3dvcmQpCisgICAgcHJpbnQoJ0NvbnN0cnVjdGVkIGRh
dGFiYXNlIHdpdGggcGFyYW1ldGVyczonKQorICAgIHByaW50KCcgICAgSG9zdDoge30nLmZvcm1h
dChkYXRhYmFzZS5ob3N0IG9yICdOb25lIChpbi1tZW1vcnkgZmFrZSBkYXRhYmFzZSknKSkKKyAg
ICBpZiBkYXRhYmFzZS5wYXNzd29yZDoKKyAgICAgICAgcHJpbnQoJyAgICBQYXNzd29yZDoge30n
LmZvcm1hdChsZW4oZGF0YWJhc2UucGFzc3dvcmQpICogJyonKSkKKyAgICBpZiBkYXRhYmFzZS5k
ZWZhdWx0X2V4cGlyYXRpb246CisgICAgICAgIHByaW50KCcgICAgRXhwaXJhdGlvbjoge30gaG91
cnMnLmZvcm1hdChkYXRhYmFzZS5kZWZhdWx0X2V4cGlyYXRpb24gLyAoNjAuMCAqIDYwLjApKSkK
KyAgICBwcmludCgnQ29ubmVjdGluZyB0byBkYXRhYmFzZS4uLicpCisgICAgZGF0YWJhc2UucGlu
ZygpCisgICAgcHJpbnQoJ0Nvbm5lY3RlZCB0byBkYXRhYmFzZSEnKQorCisgICAgcHJpbnQoJ0Zp
bmRpbmcgY2hlY2tvdXQuLi4nKQorICAgIGNoZWNrb3V0ID0gQ2hlY2tvdXQocGF0aD1hcmdzLnBh
dGgsIHVybD1hcmdzLnVybCwgaHR0cF9wcm94eT1hcmdzLmh0dHBfcHJveHksIHNlbnRpbmFsPWFy
Z3Muc2VudGluYWwpCisgICAgcHJpbnQoJ0dpdCBjaGVja291dDonKQorICAgIHByaW50KCcgICAg
UGF0aDoge30nLmZvcm1hdChjaGVja291dC5yZXBvc2l0b3J5LnJvb3RfcGF0aCkpCisgICAgcHJp
bnQoJyAgICBVUkw6IHt9Jy5mb3JtYXQoY2hlY2tvdXQucmVwb3NpdG9yeS51cmwobmFtZT0nb3Jp
Z2luJykpKQorCisgICAgaWYgYXJncy51cGRhdGVfaW50ZXJ2YWw6CisgICAgICAgIHByaW50KCcg
ICAgUG9sbGluZyBjaGVja291dCB3aXRoIGludGVydmFsIG9mIHt9IHNlY29uZHMsIGRvaW5nIGZp
cnN0IHBvbGwgbm93Li4uJy5mb3JtYXQoYXJncy51cGRhdGVfaW50ZXJ2YWwpKQorICAgICAgICBj
aGVja291dC51cGRhdGVfYWxsKCkKKworICAgIGlmIGFyZ3MucmVkaXJlY3RvcjoKKyAgICAgICAg
cHJpbnQoJ1VzZXIgc3BlY2lmaWVkIHRoZSBmb2xsb3dpbmcgcmVkaXJlY3QgdXJsczonKQorICAg
ICAgICBmb3IgdXJsIGluIGFyZ3MucmVkaXJlY3RvcjoKKyAgICAgICAgICAgIHJlZGlyZWN0b3Ig
PSBSZWRpcmVjdG9yKHVybCkKKyAgICAgICAgICAgIHByaW50KCcgICAge306IHt9Jy5mb3JtYXQo
cmVkaXJlY3Rvci5uYW1lLCByZWRpcmVjdG9yLnVybCkpCisKKyAgICBlbnYgPSBkaWN0KAorICAg
ICAgICBQWVRIT05QQVRIPSc6Jy5qb2luKHN5cy5wYXRoKSwKKyAgICAgICAgQ0hFQ0tPVVQ9anNv
bi5kdW1wcyhjaGVja291dCwgY2xzPUNoZWNrb3V0LkVuY29kZXIpLAorICAgICAgICBSRURJUkVD
VE9SUz1qc29uLmR1bXBzKFtSZWRpcmVjdG9yKHVybCkgZm9yIHVybCBpbiBhcmdzLnJlZGlyZWN0
b3Igb3IgW11dLCBjbHM9UmVkaXJlY3Rvci5FbmNvZGVyKQorICAgICkKKworICAgIGlmIEF1dG9J
bnN0YWxsLmRpcmVjdG9yeToKKyAgICAgICAgZW52WydBVVRPSU5TVEFMTF9QQVRIJ10gPSBBdXRv
SW5zdGFsbC5kaXJlY3RvcnkKKyAgICBpZiBkYXRhYmFzZS5ob3N0OgorICAgICAgICBlbnZbZGF0
YWJhc2UuSE9TVF9FTlZdID0gZGF0YWJhc2UuaG9zdAorICAgIGlmIGRhdGFiYXNlLnBhc3N3b3Jk
OgorICAgICAgICBlbnZbZGF0YWJhc2UuUEFTU1dPUkRfRU5WXSA9IGRhdGFiYXNlLnBhc3N3b3Jk
CisgICAgaWYgZGF0YWJhc2UuZGVmYXVsdF9leHBpcmF0aW9uOgorICAgICAgICBlbnZbZGF0YWJh
c2UuRVhQSVJBVElPTl9FTlZdID0gc3RyKGRhdGFiYXNlLmRlZmF1bHRfZXhwaXJhdGlvbikKKwor
ICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbigKKyAgICAgICAgW3doaWNoKCdndW5pY29ybicpLCAn
cmVwb3JlbGF5cHkud2Vic2VydmVyOmFwcCddLAorICAgICAgICBjd2Q9b3MucGF0aC5kaXJuYW1l
KG9zLnBhdGguZGlybmFtZShyZXBvcmVsYXlweS5fX2ZpbGVfXykpLAorICAgICAgICBlbnY9ZW52
LAorICAgICkgYXMgd2Vic2VydmVyOgorICAgICAgICB3aGlsZSB3ZWJzZXJ2ZXIucG9sbCgpIGlz
IE5vbmU6CisgICAgICAgICAgICB0aW1lLnNsZWVwKGFyZ3MucG9sbCkKKworICAgIHJldHVybiAw
CisKKworaWYgJ19fbWFpbl9fJyA9PSBfX25hbWVfXzoKKyAgICBzeXMuZXhpdChtYWluKGFyZ3M9
c3lzLmFyZ3ZbMTpdKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3JlcG9y
ZWxheXB5L3NldHVwLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVwb3JlbGF5cHkvc2V0
dXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjYwZGM3OTc0M2NhMDU1ZmNkZDk2ZmYwMGRlNTczNjE3NTI2MDUz
ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3JlcG9yZWxheXB5
L3NldHVwLnB5CkBAIC0wLDAgKzEsNjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
IyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK2Zyb20gc2V0dXB0b29scyBpbXBvcnQgc2V0dXAKKworCitkZWYgcmVhZG1lKCk6
CisgICAgd2l0aCBvcGVuKCdSRUFETUUubWQnKSBhcyBmOgorICAgICAgICByZXR1cm4gZi5yZWFk
KCkKKworCitzZXR1cCgKKyAgICBuYW1lPSdyZXBvcmVsYXlweScsCisgICAgdmVyc2lvbj0nMC4x
LjAnLAorICAgIGRlc2NyaXB0aW9uPSdMaWJyYXJ5IGZvciB2aXN1YWxpemluZywgcHJvY2Vzc2lu
ZyBhbmQgc3RvcmluZyB0ZXN0IHJlc3VsdHMuJywKKyAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRt
ZSgpLAorICAgIGNsYXNzaWZpZXJzPVsKKyAgICAgICAgJ0RldmVsb3BtZW50IFN0YXR1cyA6OiA0
IC0gQmV0YScsCisgICAgICAgICdGcmFtZXdvcmsgOjogRmxhc2snLAorICAgICAgICAnSW50ZW5k
ZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycycsCisgICAgICAgICdMaWNlbnNlIDo6IE9TSSBBcHBy
b3ZlZCA6OiBCU0QgTGljZW5zZScsCisgICAgICAgICdPcGVyYXRpbmcgU3lzdGVtIDo6IE1hY09T
JywKKyAgICAgICAgJ05hdHVyYWwgTGFuZ3VhZ2UgOjogRW5nbGlzaCcsCisgICAgICAgICdQcm9n
cmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMyA6OiBPbmx5JywKKyAgICAgICAgJ1RvcGlj
IDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcyA6OiBQeXRob24gTW9kdWxlcycs
CisgICAgICAgICdUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBWZXJzaW9uIENvbnRy
b2wgOjogR2l0JywKKyAgICBdLAorICAgIGtleXdvcmRzPSdnaXQgaG9vayBtaXJyb3Igd2Via2l0
JywKKyAgICB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9XZWJLaXQvV2ViS2l0L3RyZWUvbWFpbi9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXBvcmVsYXlweScsCisgICAgYXV0aG9yPSdKb25hdGhh
biBCZWRhcmQnLAorICAgIGF1dGhvcl9lbWFpbD0namJlZGFyZEBhcHBsZS5jb20nLAorICAgIGxp
Y2Vuc2U9J01vZGlmaWVkIEJTRCcsCisgICAgcGFja2FnZXM9WworICAgICAgICAncmVwb3JlbGF5
cHknLAorICAgICAgICAncmVwb3JlbGF5cHkudGVzdCcsCisgICAgXSwKKyAgICBpbnN0YWxsX3Jl
cXVpcmVzPVsKKyAgICAgICAgJ2Zha2VyZWRpcycsCisgICAgICAgICdyZWRpcycsCisgICAgICAg
ICd4bWx0b2RpY3QnLAorICAgICAgICAnd2Via2l0Y29yZXB5JywKKyAgICAgICAgJ3dlYmtpdHNj
bXB5JywKKyAgICAgICAgJ3dlYmtpdGZsYXNrcHknLAorICAgIF0sCisgICAgaW5jbHVkZV9wYWNr
YWdlX2RhdGE9VHJ1ZSwKKyAgICB6aXBfc2FmZT1GYWxzZSwKKykKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5IGIv
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvX19pbml0X18u
cHkKaW5kZXggZTEzZDMzZDg1ZjcxYWEyNjE1YmU1Mjc0NWVmMDc0MjdhYmIwMWRlMi4uOGNmYjhi
MmQwMzM2NjY0MmU4MzA4NWNkNGE5YmUxYWZhZDE3NGM0NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvX19pbml0X18ucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvX19pbml0X18u
cHkKQEAgLTQ0LDcgKzQ0LDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAiUGxlYXNl
IGluc3RhbGwgd2Via2l0Y29yZXB5IHdpdGggYHBpcCBpbnN0YWxsIHdlYmtpdGNvcmVweSAtLWV4
dHJhLWluZGV4LXVybCA8cGFja2FnZSBpbmRleCBVUkw+YCIKICAgICApCiAKLXZlcnNpb24gPSBW
ZXJzaW9uKDMsIDEsIDUpCit2ZXJzaW9uID0gVmVyc2lvbigzLCAxLCA2KQogCiBpbXBvcnQgd2Vi
a2l0Zmxhc2tweQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS9mbGFza19zdXBwb3J0L2ZsYXNrX3Rlc3RjYXNlLnB5IGIvVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvZmxhc2tfc3VwcG9ydC9m
bGFza190ZXN0Y2FzZS5weQppbmRleCAyMGVlNzc1YzQ3NmJkZDBlOWYzOWU3NjAwM2M4ZDk4NTMw
ZTMxYThmLi4xZGQ2OWFlNmJmMjI4ZWE2MGM3Yzg4NTY4ZGE3YTJkYjJlMDY1Y2IwIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9mbGFz
a19zdXBwb3J0L2ZsYXNrX3Rlc3RjYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2ZsYXNrX3N1cHBvcnQvZmxhc2tfdGVzdGNhc2UucHkK
QEAgLTIxLDI5ICsyMSwxNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgYXRleGl0Ci1pbXBv
cnQganNvbgogaW1wb3J0IG9zCiBpbXBvcnQgcmVxdWVzdHMKIGltcG9ydCB1bml0dGVzdAogCiBm
cm9tIGZsYXNrIGltcG9ydCBGbGFzawotZnJvbSBmbGFzay53cmFwcGVycyBpbXBvcnQgUmVzcG9u
c2UKIGZyb20gc2VsZW5pdW0gaW1wb3J0IHdlYmRyaXZlcgogZnJvbSBzZWxlbml1bS5jb21tb24u
ZXhjZXB0aW9ucyBpbXBvcnQgV2ViRHJpdmVyRXhjZXB0aW9uCiBmcm9tIHJlc3VsdHNkYnB5LmZs
YXNrX3N1cHBvcnQuZmxhc2tfdGVzdF9jb250ZXh0IGltcG9ydCBGbGFza1Rlc3RDb250ZXh0Ci0K
LQotY2xhc3MgRmxhc2tSZXF1ZXN0c1Jlc3BvbnNlKFJlc3BvbnNlKToKLSAgICBAcHJvcGVydHkK
LSAgICBkZWYgdGV4dChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5kZWNvZGUoJ3V0
Zi04JykKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBjb250ZW50KHNlbGYpOgotICAgICAgICBy
ZXR1cm4gc2VsZi5kYXRhCi0KLSAgICBkZWYganNvbihzZWxmKToKLSAgICAgICAgcmV0dXJuIGpz
b24ubG9hZHMoc2VsZi50ZXh0KQorZnJvbSB3ZWJraXRmbGFza3B5IGltcG9ydCBSZXNwb25zZQog
CiAKIGNsYXNzIEZsYXNrVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTA0LDcgKzkw
LDcgQEAgY2xhc3MgRmxhc2tUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGRl
ZiBkZWNvcmF0b3IobWV0aG9kKToKICAgICAgICAgICAgIGRlZiByZWFsX21ldGhvZCh2YWwsIG1l
dGhvZD1tZXRob2QsICoqa3dhcmdzKToKICAgICAgICAgICAgICAgICBhcHAgPSBGbGFzaygndGVz
dGluZycpCi0gICAgICAgICAgICAgICAgYXBwLnJlc3BvbnNlX2NsYXNzID0gRmxhc2tSZXF1ZXN0
c1Jlc3BvbnNlCisgICAgICAgICAgICAgICAgYXBwLnJlc3BvbnNlX2NsYXNzID0gUmVzcG9uc2UK
ICAgICAgICAgICAgICAgICBhcHAuY29uZmlnWydURVNUSU5HJ10gPSBUcnVlCiAgICAgICAgICAg
ICAgICAgdmFsLnNldHVwX3dlYnNlcnZlcihhcHAsICoqa3dhcmdzKQogICAgICAgICAgICAgICAg
IGFwcC5hZGRfdXJsX3J1bGUoJy9fX2hlYWx0aCcsICdoZWFsdGgnLCBsYW1iZGE6ICdvaycsIG1l
dGhvZHM9KCdHRVQnLCkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9zZXR1cC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Nl
dHVwLnB5CmluZGV4IGUyNDAyMTc4OTIxYmZiNzExZDA1YTA2OGNiNDAxMDk5MDZlNzM5MGYuLjc0
YjI3MDljOGJjNjc2YTg2ODZkYjEzNWRiOWEzMjFhYTI3ODFiODEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5CkBAIC0zMCw3ICszMCw3IEBAIGRlZiBy
ZWFkbWUoKToKIAogc2V0dXAoCiAgICAgbmFtZT0ncmVzdWx0c2RicHknLAotICAgIHZlcnNpb249
JzMuMS41JywKKyAgICB2ZXJzaW9uPSczLjEuNicsCiAgICAgZGVzY3JpcHRpb249J0xpYnJhcnkg
Zm9yIHZpc3VhbGl6aW5nLCBwcm9jZXNzaW5nIGFuZCBzdG9yaW5nIHRlc3QgcmVzdWx0cy4nLAog
ICAgIGxvbmdfZGVzY3JpcHRpb249cmVhZG1lKCksCiAgICAgY2xhc3NpZmllcnM9WwpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Zmxhc2tweS9zZXR1cC5weSBiL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGZsYXNrcHkvc2V0dXAucHkKaW5kZXggOWIwYTM0
OTZlMzAyYmJhZTNiYTFkZTYwODRkNTdhZjEwZmZjYzk2Yi4uY2Y0M2RkMDI4YjU1ZTQ3ZmZiYmIx
N2YxNDYzMjNlMTU4MmQ4OTliZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0Zmxhc2tweS9zZXR1cC5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRmbGFza3B5L3NldHVwLnB5CkBAIC0zMCw4ICszMCw4IEBAIGRlZiByZWFkbWUoKToKIAogc2V0
dXAoCiAgICAgbmFtZT0nd2Via2l0Zmxhc2tweScsCi0gICAgdmVyc2lvbj0nMC4yLjAnLAotICAg
IGRlc2NyaXB0aW9uPSdMaWJyYXJ5IGZvciB2aXN1YWxpemluZywgcHJvY2Vzc2luZyBhbmQgc3Rv
cmluZyB0ZXN0IHJlc3VsdHMuJywKKyAgICB2ZXJzaW9uPScwLjMuMCcsCisgICAgZGVzY3JpcHRp
b249IkxpYnJhcnkgc3VwcG9ydGluZyB0aGUgV2ViS2l0IFRlYW0ncyBmbGFzayBiYXNlZCB3ZWIg
c2VydmljZXMuIiwKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAgIGNsYXNzaWZp
ZXJzPVsKICAgICAgICAgJ0RldmVsb3BtZW50IFN0YXR1cyA6OiA0IC0gQmV0YScsCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRmbGFza3B5L3dlYmtpdGZsYXNrcHkv
X19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRmbGFza3B5L3dlYmtp
dGZsYXNrcHkvX19pbml0X18ucHkKaW5kZXggM2U2MTJiNmY4ZjIwNTE5YTM2MDM2OGQ3ZDY3YWVl
MzQ5NDY1YjVjNS4uOWJjNGNkMTU3ZDU2ZjkyMTQ2ZTIzNDUyZjZkZjI4NDI1YWEyNzM2NSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Zmxhc2tweS93ZWJraXRmbGFz
a3B5L19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGZsYXNr
cHkvd2Via2l0Zmxhc2tweS9fX2luaXRfXy5weQpAQCAtNDMsNyArNDMsNyBAQCBleGNlcHQgSW1w
b3J0RXJyb3I6CiAgICAgICAgICJQbGVhc2UgaW5zdGFsbCB3ZWJraXRjb3JlcHkgd2l0aCBgcGlw
IGluc3RhbGwgd2Via2l0Y29yZXB5IC0tZXh0cmEtaW5kZXgtdXJsIDxwYWNrYWdlIGluZGV4IFVS
TD5gIgogICAgICkKIAotdmVyc2lvbiA9IFZlcnNpb24oMCwgMiwgMCkKK3ZlcnNpb24gPSBWZXJz
aW9uKDAsIDMsIDApCiAKIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2NsaWNrJywgVmVy
c2lvbig3LCAxLCAyKSkpCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdmbGFzaycsIFZl
cnNpb24oMSwgMSwgMikpKQpAQCAtNTMsNSArNTMsNyBAQCBBdXRvSW5zdGFsbC5yZWdpc3RlcihQ
YWNrYWdlKCdtYXJrdXBzYWZlJywgVmVyc2lvbigxLCAxLCAxKSkpCiBBdXRvSW5zdGFsbC5yZWdp
c3RlcihQYWNrYWdlKCd3ZXJremV1ZycsIFZlcnNpb24oMSwgMCwgMSkpKQogCiBmcm9tIHdlYmtp
dGZsYXNrcHkuYXV0aGVkX2JsdWVwcmludCBpbXBvcnQgQXV0aGVkQmx1ZXByaW50ICAjIG5vcWE6
IEU0MDIKK2Zyb20gd2Via2l0Zmxhc2tweS5yZXNwb25zZSBpbXBvcnQgUmVzcG9uc2UKK2Zyb20g
d2Via2l0Zmxhc2tweS5tb2NrX2FwcCBpbXBvcnQgbW9ja19hcHAKIAogbmFtZSA9ICd3ZWJraXRm
bGFza3B5JwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Zmxhc2tw
eS93ZWJraXRmbGFza3B5L21vY2tfYXBwLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0Zmxhc2tweS93ZWJraXRmbGFza3B5L21vY2tfYXBwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3N2U5ODk2
NWRjZDNhMzlmODY1YTU4NGQ3ZWJhOWYyZGY4Nzk4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRmbGFza3B5L3dlYmtpdGZsYXNrcHkvbW9ja19hcHAu
cHkKQEAgLTAsMCArMSwzNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworZnJvbSBmbGFzayBpbXBvcnQgRmxhc2sKKworZnJvbSAucmVzcG9uc2UgaW1wb3J0IFJlc3Bv
bnNlCisKKworZGVmIG1vY2tfYXBwKG1ldGhvZCk6CisgICAgZGVmIHJlYWxfbWV0aG9kKHZhbCwg
bWV0aG9kPW1ldGhvZCwgKiprd2FyZ3MpOgorICAgICAgICBhcHAgPSBGbGFzaygndGVzdGluZycp
CisgICAgICAgIGFwcC5yZXNwb25zZV9jbGFzcyA9IFJlc3BvbnNlCisgICAgICAgIGFwcC5jb25m
aWdbJ1RFU1RJTkcnXSA9IFRydWUKKyAgICAgICAgYXBwLmFkZF91cmxfcnVsZSgnL19faGVhbHRo
JywgJ2hlYWx0aCcsIGxhbWJkYTogJ29rJywgbWV0aG9kcz0oJ0dFVCcsKSkKKyAgICAgICAgcmV0
dXJuIG1ldGhvZCh2YWwsIGFwcD1hcHAsIGNsaWVudD1hcHAudGVzdF9jbGllbnQoKSwgKiprd2Fy
Z3MpCisKKyAgICByZWFsX21ldGhvZC5fX25hbWVfXyA9IG1ldGhvZC5fX25hbWVfXworICAgIHJl
dHVybiByZWFsX21ldGhvZApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0Zmxhc2tweS93ZWJraXRmbGFza3B5L3Jlc3BvbnNlLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Zmxhc2tweS93ZWJraXRmbGFza3B5L3Jlc3BvbnNlLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmIxNWIxNmU3YzZhYTU0YjNiZTM2YzQ0YzA5M2YyMTI5NmZhNDE4NTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRmbGFza3B5L3dlYmtpdGZsYXNrcHkv
cmVzcG9uc2UucHkKQEAgLTAsMCArMSwzOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworaW1wb3J0IGpzb24KKworZnJvbSBmbGFzay53cmFwcGVycyBpbXBvcnQgUmVz
cG9uc2UgYXMgRmxhc2tSZXNwb25zZQorCisKK2NsYXNzIFJlc3BvbnNlKEZsYXNrUmVzcG9uc2Up
OgorICAgIEBwcm9wZXJ0eQorICAgIGRlZiB0ZXh0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5kYXRhLmRlY29kZSgndXRmLTgnKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbnRlbnQo
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmRhdGEKKworICAgIGRlZiBqc29uKHNlbGYpOgor
ICAgICAgICByZXR1cm4ganNvbi5sb2FkcyhzZWxmLnRleHQpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9fX2lu
aXRfXy5weQppbmRleCBhZGRhOTY4NDFmZjE2NmI0YjI2ZmUxYTU0ODhjZGZhMThlNDFhNjU2Li4y
N2E2ODNhNmNjODk5NWJiYTVlNTc5YTQ0ZTIwYWM3YWIxN2NjMjc1IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvX19pbml0X18ucHkKQEAgLTgwLDYgKzgwLDEwIEBAIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBh
Y2thZ2UoJ3dlYmVuY29kaW5ncycsIFZlcnNpb24oMCwgNSwgMSkpKQogQXV0b0luc3RhbGwucmVn
aXN0ZXIoUGFja2FnZSgnemlwcCcsIFZlcnNpb24oMSwgMiwgMCkpKQogQXV0b0luc3RhbGwucmVn
aXN0ZXIoUGFja2FnZSgnem9wZS5pbnRlcmZhY2UnLCBWZXJzaW9uKDUsIDEsIDApLCBhbGlhc2Vz
PVsnem9wZSddLCBweXBpX25hbWU9J3pvcGUtaW50ZXJmYWNlJykpCiAKK2lmIHN5cy52ZXJzaW9u
X2luZm8gPiAoMywgMCk6CisgICAgQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgncmVwb3Jl
bGF5cHknLCBWZXJzaW9uKDAsIDEsIDApKSwgbG9jYWw9VHJ1ZSkKKworQXV0b0luc3RhbGwucmVn
aXN0ZXIoUGFja2FnZSgnd2Via2l0Zmxhc2tweScsIFZlcnNpb24oMCwgMSwgMSkpLCBsb2NhbD1U
cnVlKQogQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnd2Via2l0c2NtcHknLCBWZXJzaW9u
KDAsIDEyLCA1KSksIGxvY2FsPVRydWUpCiAKIGltcG9ydCB3ZWJraXRzY21weQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rlc3QvbWFpbi5weQppbmRleCA5NTcwY2E0M2IxMGI0YTc1NzYxNjUyNWY4NzcxN2Zi
ZDAwMTJkYzc3Li41ZTZmMDM1YWYwNTFjZjFjMDgzYmExOGUyYWRiOGI3MzA5NTlkMjNiIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQpAQCAtNjUsNiArNjUsOCBAQCBkZWYgbWFpbigp
OgogICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMn
LCAnU2NyaXB0cycsICdsaWJyYXJpZXMnLCAnd2Via2l0Y29yZXB5JyksICd3ZWJraXRjb3JlcHkn
KQogICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMn
LCAnU2NyaXB0cycsICdsaWJyYXJpZXMnLCAnd2Via2l0c2NtcHknKSwgJ3dlYmtpdHNjbXB5JykK
ICAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9vdCwgJ1Rvb2xzJywg
J1NjcmlwdHMnLCAnbGlicmFyaWVzJywgJ3dlYmtpdGZsYXNrcHknKSwgJ3dlYmtpdGZsYXNrcHkn
KQorICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6CisgICAgICAgIHRlc3Rlci5hZGRf
dHJlZShvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnU2NyaXB0cycsICdsaWJy
YXJpZXMnLCAncmVwb3JlbGF5cHknKSwgJ3JlcG9yZWxheXB5JykKIAogICAgICMgQXBwbGVXaW4g
aXMgdGhlIG9ubHkgcGxhdGZvcm0gdGhhdCBkb2VzIG5vdCBzdXBwb3J0IE1vZGVybiBXZWJLaXQK
ICAgICAjIEZJWE1FOiBGaW5kIGEgYmV0dGVyIHdheSB0byBkZXRlY3QgdGhpcyBjdXJyZW50bHkg
YXNzdW1pbmcgY3lnd2luIG1lYW5zIEFwcGxlV2luCkBAIC0xODgsNiArMTkwLDEyIEBAIGNsYXNz
IFRlc3RlcihvYmplY3QpOgogICAgICAgICBzeXMucGF0aCA9IHNlbGYuZmluZGVyLmFkZGl0aW9u
YWxfcGF0aHMoc3lzLnBhdGgpICsgc3lzLnBhdGgKIAogICAgICAgICBmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgQXV0b0luc3RhbGwKKworICAgICAgICAjIEZvcmNlIHJlZ2lzdHJhdGlvbiBvZiBh
bGwgYXV0b2luc3RhbGxlZCBwYWNrYWdlcy4KKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+
ICgzLCAwKToKKyAgICAgICAgICAgIGltcG9ydCByZXBvcmVsYXlweQorICAgICAgICBpbXBvcnQg
d2Via2l0Zmxhc2tweQorCiAgICAgICAgIEF1dG9JbnN0YWxsLmluc3RhbGxfZXZlcnl0aGluZygp
CiAKICAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446187</attachid>
            <date>2021-12-07 09:27:28 -0800</date>
            <delta_ts>2021-12-07 10:25:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233734-20211207092727.patch</filename>
            <type>text/plain</type>
            <size>2286</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTk3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjBjOGJlOGNjMTg3YWVmODRmZjZmM2FmNzhiNWRmNzUy
NzNiYTM1Ny4uZTMzZjlhNTBmNWQ1MzY0ZjJkZDVhMDcxM2ZlYzI4YWMyYzQ0ZGM5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIxLTEyLTA3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbcmVwb3JlbGF5cHldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiBjb21taXRzLndlYmtp
dC5vcmcgKEZvbGxvdy11cCBmaXgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzM3MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg1OTQ1MTAxPgor
CisgICAgICAgIFVucmV2aWV3ZWQgZm9sbG93LXVwIGZpeC4KKworICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3JlcG9yZWxheXB5L3JlcG9yZWxheXB5L19faW5pdF9fLnB5OiBCdW1wIHZlcnNp
b24sIGFkZCBzb3J0ZWRjb250YWluZXJzIGRlcGVuZGVuY3kuCisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvcmVwb3JlbGF5cHkvc2V0dXAucHk6IEJ1bXAgdmVyc2lvbi4KKwogMjAyMS0xMi0w
NyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIENvY29h
IFdlYkdMIHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3JlcG9yZWxheXB5L3JlcG9yZWxheXB5L19faW5pdF9fLnB5
IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVwb3JlbGF5cHkvcmVwb3JlbGF5cHkvX19pbml0
X18ucHkKaW5kZXggMDZmYTdkMTVlMTkyYmIxNzdkOWI4OWQwMDM0NDFmZTEyYzJlODdlOC4uY2Rh
ZDZmYWJkOGVlZDRjYzAwNTFhNDNlM2ZmNTVmZTZlMThiY2JmNCAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvcmVwb3JlbGF5cHkvcmVwb3JlbGF5cHkvX19pbml0X18ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVwb3JlbGF5cHkvcmVwb3JlbGF5cHkvX19pbml0
X18ucHkKQEAgLTQ0LDcgKzQ0LDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAiUGxl
YXNlIGluc3RhbGwgd2Via2l0Y29yZXB5IHdpdGggYHBpcCBpbnN0YWxsIHdlYmtpdGNvcmVweSAt
LWV4dHJhLWluZGV4LXVybCA8cGFja2FnZSBpbmRleCBVUkw+YCIKICAgICApCiAKLXZlcnNpb24g
PSBWZXJzaW9uKDAsIDEsIDApCit2ZXJzaW9uID0gVmVyc2lvbigwLCAxLCAxKQogCiBpbXBvcnQg
d2Via2l0Zmxhc2tweQogCkBAIC01NSw1ICs1NSw2IEBAIGZyb20gcmVwb3JlbGF5cHkuY2hlY2tv
dXRyb3V0ZSBpbXBvcnQgQ2hlY2tvdXRSb3V0ZSwgUmVkaXJlY3RvcgogQXV0b0luc3RhbGwucmVn
aXN0ZXIoUGFja2FnZSgnZmFrZXJlZGlzJywgVmVyc2lvbigxLCA1LCAyKSkpCiBBdXRvSW5zdGFs
bC5yZWdpc3RlcihQYWNrYWdlKCdoaXJlZGlzJywgVmVyc2lvbigxLCAxLCAwKSkpCiBBdXRvSW5z
dGFsbC5yZWdpc3RlcihQYWNrYWdlKCdyZWRpcycsIFZlcnNpb24oMywgNSwgMykpKQorQXV0b0lu
c3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnc29ydGVkY29udGFpbmVycycsIFZlcnNpb24oMiwgNCwg
MCkpKQogCiBuYW1lID0gJ3JlcG9yZWxheXB5JwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvcmVwb3JlbGF5cHkvc2V0dXAucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9y
ZXBvcmVsYXlweS9zZXR1cC5weQppbmRleCA2NjBkYzc5NzQzY2EwNTVmY2RkOTZmZjAwZGU1NzM2
MTc1MjYwNTNmLi43MDBmZThhYWU1N2U5NGYwYWYyMGYxOGFhNzYwOWY5MDEwMjlhYjIyIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXBvcmVsYXlweS9zZXR1cC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXBvcmVsYXlweS9zZXR1cC5weQpAQCAtMzAsNyAr
MzAsNyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAgIG5hbWU9J3JlcG9yZWxheXB5JywK
LSAgICB2ZXJzaW9uPScwLjEuMCcsCisgICAgdmVyc2lvbj0nMC4xLjEnLAogICAgIGRlc2NyaXB0
aW9uPSdMaWJyYXJ5IGZvciB2aXN1YWxpemluZywgcHJvY2Vzc2luZyBhbmQgc3RvcmluZyB0ZXN0
IHJlc3VsdHMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAgIGNsYXNzaWZp
ZXJzPVsK
</data>

          </attachment>
      

    </bug>

</bugzilla>