<?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>117520</bug_id>
          
          <creation_ts>2013-06-11 13:25:46 -0700</creation_ts>
          <short_desc>remove existing CodeCoverage tool</short_desc>
          <delta_ts>2013-08-20 09:03:45 -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>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>899274</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-06-11 13:25:46 -0700</bug_when>
    <thetext>The existing Tools/CodeCoverage directory contains code that doesn&apos;t work, hasn&apos;t been touched in 4-6 years, and needs improvements.  I&apos;m working on a new code coverage/code heat tool that will replace this, but I suggest the old one be removed before adding the new one (which is still in the works).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899275</commentid>
    <comment_count>1</comment_count>
      <attachid>204355</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-06-11 13:27:34 -0700</bug_when>
    <thetext>Created attachment 204355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899292</commentid>
    <comment_count>2</comment_count>
      <attachid>204355</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-11 14:16:31 -0700</bug_when>
    <thetext>Comment on attachment 204355
Patch

Rejecting attachment 204355 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 204355, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
m bug 117520.
Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Sam Weinig&apos;]&quot; exit_code: 255 cwd: /Volumes/Data/EWS/WebKit

Did not find end of header block corresponding to index path &quot;Tools/CodeCoverage/snow.png&quot;. at /Volumes/Data/EWS/WebKit/Tools/Scripts/VCSUtils.pm line 880, &lt;ARGV&gt; line 1033.

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Sam Weinig&apos;]&quot; exit_code: 255 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/738512</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899296</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-06-11 14:24:25 -0700</bug_when>
    <thetext>I committed this manually.  r151472</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919066</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-08-20 09:03:45 -0700</bug_when>
    <thetext>r151474</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204355</attachid>
            <date>2013-06-11 13:27:34 -0700</date>
            <delta_ts>2013-06-11 14:16:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117520-20130611132556.patch</filename>
            <type>text/plain</type>
            <size>36906</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1MTQ2NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIyIEBACisyMDEzLTA2LTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW1vdmVkIG9sZCBicm9rZW4gY29kZSBjb3ZlcmFnZSB0b29s
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3NTIw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb2Rl
Q292ZXJhZ2U6IFJlbW92ZWQuCisgICAgICAgICogQ29kZUNvdmVyYWdlL1JFQURNRTogUmVtb3Zl
ZC4KKyAgICAgICAgKiBDb2RlQ292ZXJhZ2UvYW1iZXIucG5nOiBSZW1vdmVkLgorICAgICAgICAq
IENvZGVDb3ZlcmFnZS9jb3YucHk6IFJlbW92ZWQuCisgICAgICAgICogQ29kZUNvdmVyYWdlL2Vt
ZXJhbGQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIENvZGVDb3ZlcmFnZS9nY292LmNzczogUmVt
b3ZlZC4KKyAgICAgICAgKiBDb2RlQ292ZXJhZ2UvZ2xhc3MucG5nOiBSZW1vdmVkLgorICAgICAg
ICAqIENvZGVDb3ZlcmFnZS9yZWdlbmVyYXRlLWNvdmVyYWdlLWRpc3BsYXk6IFJlbW92ZWQuCisg
ICAgICAgICogQ29kZUNvdmVyYWdlL3J1YnkucG5nOiBSZW1vdmVkLgorICAgICAgICAqIENvZGVD
b3ZlcmFnZS9ydW4tZ2VuZXJhdGUtY292ZXJhZ2UtZGF0YTogUmVtb3ZlZC4KKyAgICAgICAgKiBD
b2RlQ292ZXJhZ2Uvc25vdy5wbmc6IFJlbW92ZWQuCisKIDIwMTMtMDYtMTEgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGFuIG9wdGlvbiB0byBydW4td2Vi
a2l0LXRlc3RzIHRvIHNraXAgamF2YSBkZXBlbmRlbmN5IGNoZWNrCkluZGV4OiBUb29scy9Db2Rl
Q292ZXJhZ2UvUkVBRE1FCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NvZGVDb3ZlcmFnZS9SRUFETUUJ
KHJldmlzaW9uIDE1MTQ2NCkKKysrIFRvb2xzL0NvZGVDb3ZlcmFnZS9SRUFETUUJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMjIgKzAsMCBAQAotR2VuZXJhdGUgY292ZXJhZ2Ugb24gTWFjCi0KLWNhbGwg
VG9vbHMvU2NyaXB0L2dlbmVyYXRlLWNvdmVyYWdlLWRhdGEKLQotb3IgYnkgaGFuZAotCi0KLSMg
ZGVsZXRlCi1maW5kIC4gLW5hbWUgJyouZ2NkYScgLWRlbGV0ZQotCi0jIGJ1aWxkLCAtZnJhbWV3
b3JrIENvcmVGb3VuZGF0aW9uIG1pZ2h0IHN1ZmZpY2UgYXMgd2VsbAotVG9vbHMvU2NyaXB0cy9i
dWlsZC13ZWJraXQgR0NDX0dFTkVSQVRFX1RFU1RfQ09WRVJBR0VfRklMRVM9WUVTIEdDQ19JTlNU
UlVNRU5UX1BST0dSQU1fRkxPV19BUkNTPVlFUyBFWFRSQV9MSU5LPSIgLWZ0ZXN0LWNvdmVyYWdl
IC1mcHJvZmlsZS1hcmNzIiBPVEhFUl9DRkxBR1M9IiAtTUQgIiBPVEhFUl9MREZMQUdTPSIgLWZ0
ZXN0LWNvdmVyYWdlIC1mcHJvZmlsZS1hcmNzIC1mcmFtZXdvcmsgQXBwS2l0IgotVG9vbHMvU2Ny
aXB0cy9ydW4td2Via2l0LXRlc3RzCi1Ub29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10
ZXN0cyBHQ0NfR0VORVJBVEVfVEVTVF9DT1ZFUkFHRV9GSUxFUz1ZRVMgR0NDX0lOU1RSVU1FTlRf
UFJPR1JBTV9GTE9XX0FSQ1M9WUVTIEVYVFJBX0xJTks9IiAtZnRlc3QtY292ZXJhZ2UgLWZwcm9m
aWxlLWFyY3MiIE9USEVSX0NGTEFHUz0iIC1NRCAiIE9USEVSX0xERkxBR1M9IiAtZnRlc3QtY292
ZXJhZ2UgLWZwcm9maWxlLWFyY3MgLWZyYW1ld29yayBBcHBLaXQiCi0KLQotIyBDb2xsZWN0IGZp
bGVzCi1Ub29scy9Db2RlQ292ZXJhZ2UvcnVuLWdlbmVyYXRlLWNvdmVyYWdlLWRhdGEgPFJVTl9J
RD4gLi4vY292ZXJhZ2UtcmVzdWx0cy8KLQotCi0jIEdlbmVyYXRlIGdyYXBoCi1Ub29scy9Db2Rl
Q292ZXJhZ2UvcmVnZW5lcmF0ZS1jb3ZlcmFnZS1kaXNwbGF5IC4uL2NvdmVyYWdlLXJlc3VsdHMv
IC4uL2NvdmVyYWdlLXJlc3VsdHMvaHRtbApJbmRleDogVG9vbHMvQ29kZUNvdmVyYWdlL2FtYmVy
LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0
eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCkluZGV4OiBUb29s
cy9Db2RlQ292ZXJhZ2UvY292LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NvZGVDb3ZlcmFnZS9j
b3YucHkJKHJldmlzaW9uIDE1MTQ2NCkKKysrIFRvb2xzL0NvZGVDb3ZlcmFnZS9jb3YucHkJKHdv
cmtpbmcgY29weSkKQEAgLTEsMjAxICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2IE5hdGhhbmllbCBTbWl0aAotIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgSG9sZ2Vy
IEhhbnMgUGV0ZXIgRnJleXRoZXIKLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIwotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0jICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCi0jICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uIAotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0
IGNzdgotaW1wb3J0IHRpbWUKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgc2h1dGlsCi0KLWRlZiBh
bmFseXplX2NvdmVyYWdlKHBvc3NpYmxlX2djb3ZfZmlsZXMsIHNvdXJjZV9maWxlcywgcnVuaWQs
IGRhdGFfZGlyLCBiYXNlKToKLQotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkYXRhX2Rpcik6
Ci0gICAgICAgIG9zLm1ha2VkaXJzKGRhdGFfZGlyKQotCi0gICAgb3V0cHV0ID0gb3Blbihvcy5w
YXRoLmpvaW4oZGF0YV9kaXIsIHJ1bmlkICsgIi5jc3YiKSwgInciKQotICAgIHcgPSBjc3Yud3Jp
dGVyKG91dHB1dCkKLSAgICAjIEZpcnN0IHJvdzogaWQgYW5kIHRpbWUKLSAgICB3LndyaXRlcm93
KFtydW5pZCwgdGltZS50aW1lKCldKQotCi0gICAgcmVzdWx0cyA9IHNjYW5fZ2Nvdl9maWxlcyhw
b3NzaWJsZV9nY292X2ZpbGVzLCBzb3VyY2VfZmlsZXMpCi0gICAgYW5ub3RhdGVkX2RpciA9IG9z
LnBhdGguam9pbihkYXRhX2RpciwgcnVuaWQgKyAiLmFubm90YXRlZCIpCi0gICAgaWYgb3MucGF0
aC5leGlzdHMoYW5ub3RhdGVkX2Rpcik6Ci0gICAgICAgIHNodXRpbC5ybXRyZWUoYW5ub3RhdGVk
X2RpcikKLQotICAgIGtleXMgPSByZXN1bHRzLmtleXMoKQotICAgIGtleXMuc29ydCgpCi0gICAg
Zm9yIHBhdGggaW4ga2V5czoKLSAgICAgICAgKHRvdGFsLCBjb3ZlcmVkLCBhbm5vdGF0ZWRfZGF0
YSkgPSByZXN1bHRzW3BhdGhdCi0gICAgICAgIHBhdGggPSBwYXRoW3BhdGguZmluZChiYXNlKSts
ZW4oYmFzZSk6XQotICAgICAgICAjIFJlc3Qgb2YgdGhlIHJvd3M6IGZpbGVuYW1lLCB0b3RhbF9s
aW5lcywgY292ZXJlZF9saW5lcwotICAgICAgICB3LndyaXRlcm93KFtwYXRoLCB0b3RhbCwgY292
ZXJlZF0pCi0KLSAgICAgICAgaWYgcGF0aFs6MV0gPT0gIi8iOgotICAgICAgICAgICAgcGF0aCA9
IHBhdGhbMTpdCi0gICAgICAgIGFubm90YXRlZF9wYXRoID0gb3MucGF0aC5qb2luKGFubm90YXRl
ZF9kaXIsIHBhdGgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKG9zLnBh
dGguZGlybmFtZShhbm5vdGF0ZWRfcGF0aCkpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAg
ICAgICAgICAgcGFzcwotICAgICAgICBhID0gb3Blbihhbm5vdGF0ZWRfcGF0aCwgInciKQotICAg
ICAgICBhLndyaXRlKGFubm90YXRlZF9kYXRhKQotICAgICAgICBhLmNsb3NlKCkKLQotCi0jIHpl
Y2tlJ3MgcmV3cml0ZQotU1RBVEVfTk9UX0NPREUgPSAtMQotU1RBVEVfTk9UX1NFRU4gPSAtMgot
U1RBVEVfVEVTVF9DT0RFID0gLTMKLQotZGVmIGZpbmRfZ2NvdihmLCBwb3NzaWJsZV9nY292cyk6
Ci0gICAgIiIiCi0gICAgRmluZCAuZ2NvdiBmaWxlcyB0aGF0IGNvdWxkIGJlIG9mIGludGVyZXN0
IGZvciB1cwotICAgICIiIgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIHBvc3NpYmxlX2djb3Zz
W2ZdCi0gICAgZXhjZXB0OgotICAgICAgICByZXR1cm4gW10KLQotCi1kZWYgcGFyc2Vfc291cmNl
X2ZpbGUoZmlsZSk6Ci0gICAgIiIiCi0gICAgUGFyc2Ugb25lIHNvdXJjZSBmaWxlIGFuZCByZXR1
cm4gYSBsaXN0IG9mIGxpbmVzCi0gICAgIiIiCi0gICAgZl9zb3VyY2VfbGlzdCA9IFtdCi0gICAg
aW5pdF9zdGF0ZSA9IFNUQVRFX05PVF9TRUVOCi0gICAgaW5fdGVzdF9jb2RlID0gRmFsc2UKLSAg
ICBuZXN0aW5nID0gMAotCi0gICAgZm9yIGxpbmUgaW4gb3BlbihmaWxlLCAiciIpOgotICAgICAg
ICBjb2RlID0gbGluZS5zcGxpdCgiOiIsIDIpWy0xXQotICAgICAgICBpZiBub3QgaW5fdGVzdF9j
b2RlIGFuZCBjb2RlLnN0YXJ0c3dpdGgoIiNpZmRlZiBCVUlMRF9VTklUX1RFU1RTIik6Ci0gICAg
ICAgICAgICBpbl90ZXN0X2NvZGUgPSAxCi0gICAgICAgIGlmIGluX3Rlc3RfY29kZSBhbmQgY29k
ZS5zdGFydHN3aXRoKCIjaWYiKToKLSAgICAgICAgICAgIG5lc3RpbmcgKz0gMQotICAgICAgICBp
ZiBpbl90ZXN0X2NvZGUgYW5kIGNvZGUuc3RhcnRzd2l0aCgiI2VuZGlmIik6Ci0gICAgICAgICAg
ICBuZXN0aW5nIC09IDEKLSAgICAgICAgICAgIGlmIG5vdCBuZXN0aW5nOgotICAgICAgICAgICAg
ICAgIGluX3Rlc3RfY29kZSA9IFRydWUKLSAgICAgICAgaWYgaW5fdGVzdF9jb2RlOgotICAgICAg
ICAgICAgaW5pdF9zdGF0ZSA9IFNUQVRFX1RFU1RfQ09ERQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgaW5pdF9zdGF0ZSA9IFNUQVRFX05PVF9TRUVOCi0gICAgICAgIGZfc291cmNlX2xpc3Qu
YXBwZW5kKFtpbml0X3N0YXRlLCBsaW5lLnNwbGl0KCI6IiwgMSlbMV1dKQotCi0gICAgcmV0dXJu
IGZfc291cmNlX2xpc3QKLQotIyBSdW5uZXItdXAsIDNyZCBhbm51YWwgIndyaXRlIFB5dGhvbiB0
aGF0IGxvb2tzIGxpa2UgUGVybCIgY29tcGV0aXRpb24sCi0jIFdlbGwsIG5vdCByZWFsbHkuICBJ
dCBkb2Vzbid0IGV2ZW4gdXNlIHJlZ2V4cHMuCi0jIEhlIGlzIHJpZ2h0IHNvIEknbSBjbGVhbmlu
ZyBpdCB1cCAoemVja2UpCi1kZWYgc2Nhbl9nY292X2ZpbGVzKHBvc3NpYmxlX2djb3ZfZmlsZXMs
IHNvdXJjZV9maWxlcyk6Ci0gICAgIiIiVGFrZXMgYSBsaXN0IG9mIGdjb3YgZmlsZW5hbWVzIGFu
ZCBhIGxpc3Qgb2Ygc291cmNlIGZpbGVuYW1lcy4KLQotICAgIFRoZSBnY292IGZpbGVzIHNob3Vs
ZCBoYXZlIG5hbWVzIG9mIHRoZSBmb3JtIGZvby5vIyNmb28uY2MuZ2NvdiwgYXMKLSAgICBjcmVh
dGVkIGJ5ICdnY292IC1sJy4KLQotICAgIFJldHVybnMgYSBkaWN0IG1hcHBpbmcgc291cmNlIGZp
bGVuYW1lcyB0byB0dXBsZXMKLSAgICAgICh0b3RhbF9saW5lcywgdGVzdGVkX2xpbmVzLCBnY292
X2Fubm90YXRlZF9zb3VyY2UpCi0gICAgd2hpY2ggYXJlIGEgbnVtYmVyLCBhIG51bWJlciwgYW5k
IGEgdmVyeSBsb25nIHN0cmluZywgcmVzcGVjdGl2ZWx5LgotCi0gICAgVGhlIGZ1biBiaXQgaXMg
dGhhdCB3ZSBtZXJnZSAuZ2NvdiBvdXRwdXQgZ2VuZXJhdGVkIGJ5IGRpZmZlcmVudCBvYmplY3QK
LSAgICBmaWxlczsgdGhpcyB3YXkgd2UgY2FuIHByb3ZpZGUgYWNjdXJhdGUgaW5mb3JtYXRpb24g
Zm9yIGhlYWRlciBmaWxlcyBhbmQKLSAgICBmb3IgbW9ub3RvbmUncyBjdXJyZW50IHVuaXQgdGVz
dCBzeXN0ZW0uIiIiCi0gICAgcmVzdWx0cyA9IHt9Ci0gICAgZm9yIGYgaW4gc291cmNlX2ZpbGVz
OgotICAgICAgICBwb3NzaWJsZV9nY292cyA9IGZpbmRfZ2NvdihmLCBwb3NzaWJsZV9nY292X2Zp
bGVzKQotICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5h
bWUoZikpWzBdCi0gICAgICAgIGlmIGxlbihwb3NzaWJsZV9nY292cykgPT0gMDoKLSAgICAgICAg
ICAgIHByaW50ICJObyBnY292IGZpbGVzIGZvdW5kIGZvcjogJyVzJyBidXQgaXQgd2FzIGNvbXBp
bGVkIiAlIGYKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIChnYXJiYWdlLGV4
dGVuc2lvbikgPSBvcy5wYXRoLnNwbGl0ZXh0KGYpCi0gICAgICAgICAgICBpZiBleHRlbnNpb24g
IGluIFsiLmNjIiwgIi5jIiwgIi5tb2MiLCAiLmNwcCIsICIuY3h4IiwgIi5tIiwgIi5tbSJdOgot
ICAgICAgICAgICAgICAgIGxpbmVzID0gb3BlbihmLCAiciIpLnJlYWRsaW5lcygpCi0gICAgICAg
ICAgICAgICAgcmVzdWx0c1tmXSA9IChsZW4obGluZXMpLCAwLCAiIi5qb2luKGxpbmVzKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVsaWYgbGVuKHBvc3NpYmxlX2djb3ZzKSA+IDE6
Ci0gICAgICAgICAgICBwcmludCAiTW9yZSB0aGFuIG9uZSBnY292IGZpbGUgZm9yICVzICVkIiAl
IChmLGxlbihwb3NzaWJsZV9nY292cykpCi0gICAgICAgIGJhc2VfZ2Nvdl9saW5lcyA9IHBhcnNl
X3NvdXJjZV9maWxlKHBvc3NpYmxlX2djb3ZzWzBdKQotCi0gICAgICAgICMgTm93IHdlIHdpbGwg
dHJ5IGhhcmQgdG8gbWVyZ2UgdGhlIHJlc3VsdHMgd2l0aCBvdGhlcnMKLSAgICAgICAgIyBPdXIg
cmVxdWlyZW1lbnQgaXMgdGhhdCB3ZSBoYXZlIHRoZSBzYW1lIGFtb3VudCBvZiBsaW5lcyBhcwot
ICAgICAgICAjIGFzIHRoZSBvcmlnaW5hbCBmaWxlCi0gICAgICAgIGZvciBjb3ZfZmlsZSBpbiBw
b3NzaWJsZV9nY292czoKLSAgICAgICAgICAgIGxpbmVzID0gb3Blbihjb3ZfZmlsZSwgInIiKS5y
ZWFkbGluZXMoKQotCi0gICAgICAgICAgICAjIGUuZy4gd2l0aCBwaG9ub24gd2UgaGF2ZSB2aXN1
YWxpc2F0aW9uLmggYW5kIHdlIGNhbiBub3Qga25vdwotICAgICAgICAgICAgIyB3aGljaCBoZWFk
ZXIgZmlsZSAoZm9sZGVybmFtZSkgaXQgaXMgcmVmZXJpbmcgdG8uIFRoaXMgaXMgYSBnY292Ci0g
ICAgICAgICAgICAjIGxpbWl0YXRpb24gYW5kIGkgaGF2ZSBubyB3b3JrYXJvdW5kIHlldC4gV2Ug
anVzdCBob3BlIHdlIHdpbGwgcGljawotICAgICAgICAgICAgIyB0aGUgcmlnaHQgaGVhZGVyIGZp
bGUuLi4KLSAgICAgICAgICAgIGlmIGxlbihsaW5lcykgIT0gbGVuKGJhc2VfZ2Nvdl9saW5lcyk6
Ci0gICAgICAgICAgICAgICAgcHJpbnQgIkVycm9yIEJhc2U6ICVzIGFuZCBUYXJnZXQ6ICVzIGhh
dmUgZGlmZmVyZW50IGFtb3VudCBvZiBsaW5lcyIgJSAocG9zc2libGVfZ2NvdnNbMF0sY292X2Zp
bGUpCi0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgIyBub3cgZG8gdGhl
IG1lcmdpbmcgb2YgdGhlIGZpbGUuIElmIGl0IGhhcyB0aGUgc2FtZSBiYXNlbmFtZQotICAgICAg
ICAgICAgIyBhbmQgdGhlIHNhbWUgbnVtYmVyIG9mIGxpbmVzIHRoaW5ncyBtaWdodCB3b3JrIG91
dAotICAgICAgICAgICAgIyBJbiB0aGUgZnV0dXJlIHRha2UgYSBsb29rIGF0IHRoZSBoZWFkZXIg
b2YgdGhlIGZpbGUKLSAgICAgICAgICAgIGkgPSAwCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBs
aW5lczoKLSAgICAgICAgICAgICAgICBhY2N1bXVsYXRvciA9IGJhc2VfZ2Nvdl9saW5lc1tpXQot
ICAgICAgICAgICAgICAgIGlmIGFjY3VtdWxhdG9yWzBdICE9IFNUQVRFX1RFU1RfQ09ERToKLSAg
ICAgICAgICAgICAgICAgICAgaW5mbyA9IGxpbmUuc3BsaXQoIjoiLCAxKVswXQotICAgICAgICAg
ICAgICAgICAgICBpZiBpbmZvLmVuZHN3aXRoKCItIik6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiBhY2N1bXVsYXRvclswXSA9PSBTVEFURV9OT1RfU0VFTjoKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhY2N1bXVsYXRvclswXSA9IFNUQVRFX05PVF9DT0RFCi0gICAgICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpbmZvLmVuZHN3aXRoKCIj
Iik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gMAotICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0gPSBpbnQoaW5m
bykKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFjY3VtdWxhdG9yWzBdIGluIChTVEFURV9O
T1RfU0VFTiwgU1RBVEVfTk9UX0NPREUpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFj
Y3VtdWxhdG9yWzBdID0gMAotICAgICAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0b3JbMF0g
Kz0gbnVtCi0gICAgICAgICAgICAgICAgaSArPSAxCi0KLSAgICAgICAgIyBwb3N0IHByb2Nlc3Np
bmcgb2YgdGhzIGZpbGUKLSAgICAgICAgKHRvdGFsX2xpbmVzLCB0b3RhbF9jb3ZlcmVkKSA9ICgw
LCAwKQotICAgICAgICBhbm5vdGF0ZWRfbGluZXMgPSBbXQotICAgICAgICBmb3Igc3RhdGUsIGxp
bmUgaW4gYmFzZV9nY292X2xpbmVzOgotICAgICAgICAgICAgaWYgc3RhdGUgPT0gU1RBVEVfTk9U
X1NFRU46Ci0gICAgICAgICAgICAgICAgZGVzYyA9ICI/Pz8/PyIKLSAgICAgICAgICAgIGVsaWYg
c3RhdGUgPT0gU1RBVEVfVEVTVF9DT0RFOgotICAgICAgICAgICAgICAgIGRlc2MgPSAiKyIKLSAg
ICAgICAgICAgIGVsaWYgc3RhdGUgPT0gU1RBVEVfTk9UX0NPREU6Ci0gICAgICAgICAgICAgICAg
ZGVzYyA9ICItIgotICAgICAgICAgICAgZWxpZiBzdGF0ZSA9PSAwOgotICAgICAgICAgICAgICAg
IGRlc2MgPSAiIyMjIyMiCi0gICAgICAgICAgICAgICAgdG90YWxfbGluZXMgKz0gMQotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkZXNjID0gc3RyKHN0YXRlKQotICAgICAgICAg
ICAgICAgIHRvdGFsX2xpbmVzICs9IDEKLSAgICAgICAgICAgICAgICB0b3RhbF9jb3ZlcmVkICs9
IDEKLSAgICAgICAgICAgIGFubm90YXRlZF9saW5lcy5hcHBlbmQoIjoiLmpvaW4oW2Rlc2Mucmp1
c3QoOSksIGxpbmVdKSkKLSAgICAgICAgcmVzdWx0c1tmXSA9ICh0b3RhbF9saW5lcywgdG90YWxf
Y292ZXJlZCwgIiIuam9pbihhbm5vdGF0ZWRfbGluZXMpKQotICAgIHJldHVybiByZXN1bHRzCi0K
LQotCi0gICAgcmV0dXJuIHJlc3VsdHMKSW5kZXg6IFRvb2xzL0NvZGVDb3ZlcmFnZS9lbWVyYWxk
LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0
eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCkluZGV4OiBUb29s
cy9Db2RlQ292ZXJhZ2UvZ2Nvdi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ29kZUNvdmVyYWdl
L2djb3YuY3NzCShyZXZpc2lvbiAxNTE0NjQpCisrKyBUb29scy9Db2RlQ292ZXJhZ2UvZ2Nvdi5j
c3MJKHdvcmtpbmcgY29weSkKQEAgLTEsMTE2ICswLDAgQEAKLWJvZHkgewotICBjb2xvcjogYmxh
Y2s7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwotICBmb250LWZhbWlseTogSGVsdmV0aWNhLEFy
aWFsLHNhbnMtc2VyaWY7Ci0gIG1hcmdpbjogMDsgcGFkZGluZzogMGVtOwotCXRleHQtYWxpZ246
IGNlbnRlcjsKLX0KLQotLnRpdGxlIHsKLQl0ZXh0LWFsaWduOmNlbnRlcjsKLQlmb250LXdlaWdo
dDpib2xkOwotCWZvbnQtc3R5bGU6aXRhbGljOwotCWZvbnQtc2l6ZToxLjhlbTsKLQlwYWRkaW5n
OjEwcHg7Ci19Ci0KLS5ydWxlciB7Ci0JaGVpZ2h0OjNweDsKLQliYWNrZ3JvdW5kLWNvbG9yOiM2
MzhBRDY7Ci0JbWFyZ2luLWxlZnQ6MTBweDsKLQltYXJnaW4tcmlnaHQ6MTBweDsKLX0KLQotLmhl
YWRlckl0ZW0gewotCXRleHQtYWxpZ246cmlnaHQ7Ci0JZm9udC13ZWlnaHQ6Ym9sZDsKLX0KLQot
LmhlYWRlclZhbHVlIHsKLQl0ZXh0LWFsaWduOmxlZnQ7Ci0JZm9udC13ZWlnaHQ6Ym9sZDsKLQlj
b2xvcjojNjM4QUQ2OwotfQotCi0udGFibGVIZWFkIHsKLQl0ZXh0LWFsaWduOmNlbnRlcjsKLQlm
b250LXdlaWdodDpib2xkOwotCWJhY2tncm91bmQtY29sb3I6IzYzOEFENjsKLQljb2xvcjp3aGl0
ZTsKLQkKLX0KLQotLmNvdmVyRmlsZSB7Ci0gIGZvbnQtZmFtaWx5OiBDb3VyaWVyOwotCWJhY2tn
cm91bmQtY29sb3I6I0RFRTdGRjsKLQlwYWRkaW5nOjNweDsKLQl3aWR0aDo3MCU7Ci19Ci0KLS5j
b3ZlckJhciB7Ci0JYmFja2dyb3VuZC1jb2xvcjojREVFN0ZGOwotCXBhZGRpbmc6M3B4OwotCXdp
ZHRoOjUlOwotfQotCi0uY292ZXJCYXJPdXRsaW5lIHsKLX0KLQotLmNvdmVyUGVySGkgewotICBm
b250LWZhbWlseTogVGltZXM7Ci0JdGV4dC1hbGlnbjpjZW50ZXI7Ci0JZm9udC13ZWlnaHQ6Ym9s
ZDsKLQliYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Z3JlZW47CQotCXBhZGRpbmc6M3B4OwotCXdpZHRo
OjUlOwotfQotCi0uY292ZXJOdW1IaSB7Ci0gIGZvbnQtZmFtaWx5OiBUaW1lczsKLQl0ZXh0LWFs
aWduOnJpZ2h0OwotCWJhY2tncm91bmQtY29sb3I6bGlnaHRncmVlbjsJCi0JcGFkZGluZzozcHg7
Ci0Jd2lkdGg6MjUlOwotfQotCi0uY292ZXJQZXJNZWQgewotICBmb250LWZhbWlseTogVGltZXM7
Ci0JdGV4dC1hbGlnbjpjZW50ZXI7Ci0JZm9udC13ZWlnaHQ6Ym9sZDsKLQliYWNrZ3JvdW5kLWNv
bG9yOnllbGxvdzsJCi0JcGFkZGluZzozcHg7Ci19Ci0KLS5jb3Zlck51bU1lZCB7Ci0gIGZvbnQt
ZmFtaWx5OiBUaW1lczsKLQl0ZXh0LWFsaWduOnJpZ2h0OwotCWJhY2tncm91bmQtY29sb3I6eWVs
bG93OwkKLQlwYWRkaW5nOjNweDsKLX0KLQotLmNvdmVyUGVyTG8gewotICBmb250LWZhbWlseTog
VGltZXM7Ci0JdGV4dC1hbGlnbjpjZW50ZXI7Ci0JZm9udC13ZWlnaHQ6Ym9sZDsKLQliYWNrZ3Jv
dW5kLWNvbG9yOnJlZDsJCi0JcGFkZGluZzozcHg7Ci19Ci0KLS5jb3Zlck51bUxvIHsKLSAgZm9u
dC1mYW1pbHk6IFRpbWVzOwotCXRleHQtYWxpZ246cmlnaHQ7Ci0JYmFja2dyb3VuZC1jb2xvcjpy
ZWQ7CQotCXBhZGRpbmc6M3B4OwotfQotCi0ubGluZU51bSB7Ci0JYmFja2dyb3VuZC1jb2xvcjoj
RUZFMzg0OwkKLX0KLQotLmxpbmVDb3YgewotCWJhY2tncm91bmQtY29sb3I6I0NFRDdGRjsJCi19
Ci0KLS5saW5lTm9Db3YgewotCWJhY2tncm91bmQtY29sb3I6I0ZGNjEzMTsJCi19Ci0KSW5kZXg6
IFRvb2xzL0NvZGVDb3ZlcmFnZS9nbGFzcy5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTog
ZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbQpJbmRleDogVG9vbHMvQ29kZUNvdmVyYWdlL3JlZ2VuZXJhdGUtY292ZXJh
Z2UtZGlzcGxheQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9Db2RlQ292ZXJhZ2UvcmVnZW5lcmF0ZS1j
b3ZlcmFnZS1kaXNwbGF5CShyZXZpc2lvbiAxNTE0NjQpCisrKyBUb29scy9Db2RlQ292ZXJhZ2Uv
cmVnZW5lcmF0ZS1jb3ZlcmFnZS1kaXNwbGF5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4MiArMCww
IEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2IE5hdGhhbmllbCBTbWl0aAotIyBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMg
UGV0ZXIgRnJleXRoZXIKLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0Ogot
IwotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0jICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0jICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uIAotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIwotIyBIVE1MIG91
dHB1dCBpbnNwaXJlZCBieSB0aGUgb3V0cHV0IG9mIGxjb3YgYXMgZm91bmQgb24gdGhlIEdTdHJl
YW1lcgotIyBzaXRlLiBJIGFzc3VtZSB0aGlzIGlzIG5vdCBjb3B5cmlnaHRhYmxlLgotIwotCi0K
LSMKLSMgUmVhZCBhbGwgQ1NWIGZpbGVzIGFuZAotIyAgQ3JlYXRlIGFuIG92ZXJ2aWV3IGZpbGUK
LSMKLSMKLQotCi1pbXBvcnQgc3lzCi1pbXBvcnQgY3N2Ci1pbXBvcnQgZ2xvYgotaW1wb3J0IHRp
bWUKLWltcG9ydCBvcwotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCBkYXRldGltZQotaW1wb3J0IHNo
dXRpbAotCi1vcy5lbnZpcm9uWyJUVEZQQVRIIl0gPSAiOiIuam9pbihbIi91c3Ivc2hhcmUvZm9u
dHMvdHJ1ZXR5cGUvIiArIGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
ZCBpbiAidHRmLWJpdHN0cmVhbS12ZXJhIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZnJlZWZvbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJtc3R0Y29yZWZvbnRzIl0pCi0KLWxldmVsX0xPVyAgICA9IDEwCi1sZXZl
bF9NRURJVU0gPSA3MAotCi1kZWYgY29weV9maWxlcyhkZXN0X2Rpcik6Ci0gICAgIiIiCi0gICAg
Q29weSB0aGUgQ1NTIGFuZCB0aGUgcG5nJ3MgdG8gdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeQot
ICAgICIiIgotICAgIGltYWdlcyA9IFsiYW1iZXIucG5nIiwgImVtZXJhbGQucG5nIiwgImdsYXNz
LnBuZyIsICJydWJ5LnBuZyIsICJzbm93LnBuZyJdCi0gICAgY3NzICAgID0gImdjb3YuY3NzIgot
ICAgIChiYXNlX3BhdGgsIG5hbWUpID0gb3MucGF0aC5zcGxpdChfX2ZpbGVfXykKLSAgICBiYXNl
X3BhdGggPSBvcy5wYXRoLmFic3BhdGgoYmFzZV9wYXRoKQotCi0gICAgc2h1dGlsLmNvcHlmaWxl
KG9zLnBhdGguam9pbihiYXNlX3BhdGgsY3NzKSwgb3MucGF0aC5qb2luKGRlc3RfZGlyLGNzcykp
Ci0gICAgbWFwKGxhbWJkYSB4OiBzaHV0aWwuY29weWZpbGUob3MucGF0aC5qb2luKGJhc2VfcGF0
aCx4KSwgb3MucGF0aC5qb2luKGRlc3RfZGlyLHgpKSwgaW1hZ2VzKQotCi1kZWYgc3VtY292KGNv
dik6Ci0gICAgICAgIHJldHVybiAiJS4yZiUlICglcy8lcykiICUgKGNvdlsxXSAqIDEwMC4wIC8g
KGNvdlswXSBvciAxKSwgY292WzFdLCBjb3ZbMF0pCi0KLWRlZiBjcmVhdGVfcGFnZShkZXN0X2Rp
ciwgbmFtZSk6Ci0gICAgaW5kZXggPSBvcGVuKG9zLnBhdGguam9pbihkZXN0X2RpciwgbmFtZSks
ICJ3IikKLSAgICBpbmRleC53cml0ZSgiIiI8SFRNTD4KLSAgICA8SEVBRD4KLSAgICAgICAgPFRJ
VExFPldlYktpdCB0ZXN0IGNvdmVyYWdlIGluZm9ybWF0aW9uPC9USVRMRT4KLSAgICAgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iZ2Nvdi5jc3MiPgotICAg
IDwvSEVBRD4KLSAgICA8Qk9EWT4KLSAgICAiIiIpCi0gICAgcmV0dXJuIGluZGV4Ci0KLWRlZiBn
ZW5lcmF0ZV9oZWFkZXIoZmlsZSwgbGFzdF90aW1lLCB0b3RhbF9saW5lcywgdG90YWxfZXhlY3V0
ZWQsIHBhdGgsIGltYWdlKToKLSAgICBwcm9kdWN0ID0gIldlYktpdCIKLSAgICBkYXRlID0gdGlt
ZS5zdHJmdGltZSgiJVktJW0tJWQgJUg6JU06JVMiLCB0aW1lLmdtdGltZShsYXN0X3RpbWUpKQot
ICAgIGNvdmVyZWRfbGluZXMgPSBzdW1jb3YoKHRvdGFsX2xpbmVzLCB0b3RhbF9leGVjdXRlZCkp
Ci0KLSAgICBmaWxlLndyaXRlKCIiIjx0YWJsZSB3aWR0aD0iMTAwJSUiIGJvcmRlcj0wIGNlbGxz
cGFjaW5nPTAgY2VsbHBhZGRpbmc9MD4KLSAgICA8dHI+PHRkIGNsYXNzPSJ0aXRsZSI+R0NPViBj
b2RlIGNvdmVyYWdlIHJlcG9ydDwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJydWxlciI+
PGltZyBzcmM9ImdsYXNzLnBuZyIgd2lkdGg9MyBoZWlnaHQ9MyBhbHQ9IiI+PC90ZD48L3RyPgot
Ci0gICAgPHRyPgotICAgICAgPHRkIHdpZHRoPSIxMDAlJSI+Ci0gICAgICAgIDx0YWJsZSBjZWxs
cGFkZGluZz0xIGJvcmRlcj0wIHdpZHRoPSIxMDAlJSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAg
ICA8dGQgY2xhc3M9ImhlYWRlckl0ZW0iIHdpZHRoPSIyMCUlIj5DdXJyZW50Jm5ic3A7dmlldzo8
L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0iaGVhZGVyVmFsdWUiIHdpZHRoPSI4MCUlIiBjb2xz
cGFuPTQ+JShwYXRoKXM8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAg
ICAgPHRkIGNsYXNzPSJoZWFkZXJJdGVtIiB3aWR0aD0iMjAlJSI+VGVzdDo8L3RkPgotICAgICAg
ICAgIDx0ZCBjbGFzcz0iaGVhZGVyVmFsdWUiIHdpZHRoPSI4MCUlIiBjb2xzcGFuPTQ+JShwcm9k
dWN0KXM8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNs
YXNzPSJoZWFkZXJJdGVtIiB3aWR0aD0iMjAlJSI+RGF0ZTo8L3RkPgotICAgICAgICAgIDx0ZCBj
bGFzcz0iaGVhZGVyVmFsdWUiIHdpZHRoPSIyMCUlIj4lKGRhdGUpczwvdGQ+Ci0gICAgICAgICAg
PHRkIHdpZHRoPSIyMCUlIj48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0iaGVhZGVySXRlbSIg
d2lkdGg9IjIwJSUiPkluc3RydW1lbnRlZCZuYnNwO2xpbmVzOjwvdGQ+Ci0gICAgICAgICAgPHRk
IGNsYXNzPSJoZWFkZXJWYWx1ZSIgd2lkdGg9IjIwJSUiPiUodG90YWxfbGluZXMpczwvdGQ+Ci0g
ICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9ImhlYWRlckl0
ZW0iIHdpZHRoPSIyMCUlIj5Db2RlJm5ic3A7Y292ZXJlZDo8L3RkPgotICAgICAgICAgIDx0ZCBj
bGFzcz0iaGVhZGVyVmFsdWUiIHdpZHRoPSIyMCUlIj4lKGNvdmVyZWRfbGluZXMpczwvdGQ+Ci0g
ICAgICAgICAgPHRkIHdpZHRoPSIyMCUlIj48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0iaGVh
ZGVySXRlbSIgd2lkdGg9IjIwJSUiPkV4ZWN1dGVkJm5ic3A7bGluZXM6PC90ZD4KLSAgICAgICAg
ICA8dGQgY2xhc3M9ImhlYWRlclZhbHVlIiB3aWR0aD0iMjAlJSI+JSh0b3RhbF9leGVjdXRlZClz
PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPC90YWJsZT4KLSAgICAgIDwvdGQ+Ci0gICAg
PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJydWxlciI+PGltZyBzcmM9ImdsYXNzLnBuZyIgd2lk
dGg9MyBoZWlnaHQ9MyBhbHQ9IiI+PC90ZD48L3RyPgotICA8L3RhYmxlPiIiIiAlIHZhcnMoKSkK
LSAgICAjIGRpc2FibGVkIGZvciBub3cgPHRyPjx0ZD48aW1nIHNyYz0iJShpbWFnZSlzIj48L3Rk
PjwvdHI+Ci0KLWRlZiBnZW5lcmF0ZV90YWJsZV9pdGVtKGZpbGUsIG5hbWUsIHRvdGFsX2xpbmVz
LCBjb3ZlcmVkX2xpbmVzKToKLSAgICBjb3ZlcmVkX3ByZWNpc2UgPSAoY292ZXJlZF9saW5lcyox
MDAuMCkvKHRvdGFsX2xpbmVzIG9yIDEuMCkKLSAgICBjb3ZlcmVkID0gaW50KHJvdW5kKGNvdmVy
ZWRfcHJlY2lzZSkpCi0gICAgcmVtYWluZGVyID0gMTAwLWNvdmVyZWQKLSAgICAoaW1hZ2UscGVy
Q2xhc3MsbnVtQ2xhc3MpID0gY292ZXJhZ2VfaWNvbihjb3ZlcmVkX3ByZWNpc2UpCi0gICAgc2l0
ZSA9ICIlcy5odG1sIiAlIG5hbWUucmVwbGFjZShvcy5wYXRoLnNlcCwnX18nKQotICAgIGZpbGUu
d3JpdGUoIiIiCi0gICAgICAgIDx0cj4KLSAgICAgIDx0ZCBjbGFzcz0iY292ZXJGaWxlIj48YSBo
cmVmPSIlKHNpdGUpcyI+JShuYW1lKXM8L2E+PC90ZD4KLSAgICAgIDx0ZCBjbGFzcz0iY292ZXJC
YXIiIGFsaWduPSJjZW50ZXIiPgotICAgICAgICA8dGFibGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9
MCBjZWxscGFkZGluZz0xPjx0cj48dGQgY2xhc3M9ImNvdmVyQmFyT3V0bGluZSI+PGltZyBzcmM9
IiUoaW1hZ2UpcyIgd2lkdGg9JShjb3ZlcmVkKXMgaGVpZ2h0PTEwIGFsdD0iJShjb3ZlcmVkX3By
ZWNpc2UpLjJmIj48aW1nIHNyYz0ic25vdy5wbmciIHdpZHRoPSUocmVtYWluZGVyKXMgaGVpZ2h0
PTEwIGFsdD0iJShjb3ZlcmVkX3ByZWNpc2UpLjJmIj48L3RkPjwvdHI+PC90YWJsZT4KLSAgICAg
IDwvdGQ+Ci0gICAgICA8dGQgY2xhc3M9IiUocGVyQ2xhc3MpcyI+JShjb3ZlcmVkX3ByZWNpc2Up
LjJmJm5ic3A7JSU8L3RkPgotICAgICAgPHRkIGNsYXNzPSIlKG51bUNsYXNzKXMiPiUoY292ZXJl
ZF9saW5lcylzJm5ic3A7LyZuYnNwOyUodG90YWxfbGluZXMpcyZuYnNwO2xpbmVzPC90ZD4KLSAg
ICA8L3RyPgotICAgICIiIiAlIHZhcnMoKSkKLQotZGVmIGdlbmVyYXRlX3RhYmxlX2hlYWRlcl9z
dGFydChmaWxlKToKLSAgZmlsZS53cml0ZSgiIiI8Y2VudGVyPgotICA8dGFibGUgd2lkdGg9Ijgw
JSUiIGNlbGxwYWRkaW5nPTIgY2VsbHNwYWNpbmc9MSBib3JkZXI9MD4KLQotICAgIDx0cj4KLSAg
ICAgIDx0ZCB3aWR0aD0iNTAlJSI+PGJyPjwvdGQ+Ci0gICAgICA8dGQgd2lkdGg9IjE1JSUiPjwv
dGQ+Ci0gICAgICA8dGQgd2lkdGg9IjE1JSUiPjwvdGQ+Ci0gICAgICA8dGQgd2lkdGg9IjIwJSUi
PjwvdGQ+Ci0gICAgPC90cj4KLQotICAgIDx0cj4KLSAgICAgIDx0ZCBjbGFzcz0idGFibGVIZWFk
Ij5EaXJlY3RvcnkmbmJzcDtuYW1lPC90ZD4KLSAgICAgIDx0ZCBjbGFzcz0idGFibGVIZWFkIiBj
b2xzcGFuPTM+Q292ZXJhZ2U8L3RkPgotICAgIDwvdHI+Ci0gICAgIiIiKQotCi1kZWYgY292ZXJh
Z2VfaWNvbihwZXJjZW50KToKLSAgICBpZiBwZXJjZW50IDwgbGV2ZWxfTE9XOgotICAgICAgICBy
ZXR1cm4gKCJydWJ5LnBuZyIsICJjb3ZlclBlckxvIiwgImNvdmVyTnVtTG8iKQotICAgIGVsaWYg
cGVyY2VudCA8IGxldmVsX01FRElVTToKLSAgICAgICAgcmV0dXJuICgiYW1iZXIucG5nIiwgImNv
dmVyUGVyTWVkIiwgImNvdmVyTnVtTWVkIikKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gKCJl
bWVyYWxkLnBuZyIsICJjb3ZlclBlckhpIiwgImNvdmVyTnVtSGkiKQotCi1kZWYgcmVwbGFjZSh0
ZXh0LCAqcGFpcnMpOgotICAgICIiIgotICAgIEZyb20gcHlkb2MuLi4gYWxtb3N0IGlkZW50aWNh
bCBhdCBsZWFzdAotICAgICIiIgotICAgIGZyb20gc3RyaW5nIGltcG9ydCBzcGxpdCwgam9pbgot
ICAgIHdoaWxlIHBhaXJzOgotICAgICAgICAoYSxiKSA9IHBhaXJzWzBdCi0gICAgICAgIHRleHQg
PSBqb2luKHNwbGl0KHRleHQsIGEpLCBiKQotICAgICAgICBwYWlycyA9IHBhaXJzWzE6XQotICAg
IHJldHVybiB0ZXh0Ci0KLWRlZiBlc2NhcGUodGV4dCk6Ci0gICAgIiIiCi0gICAgRXNjYXBlIHN0
cmluZyB0byBiZSBjb25mb3JtIEhUTUwKLSAgICAiIiIKLSAgICByZXR1cm4gcmVwbGFjZSh0ZXh0
LAotICAgICAgICAgICAgICAgICAgICAgICAgKCcmJywgJyZhbXA7JyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAoJzwnLCAnJmx0OycgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICgnPics
ICcmZ3Q7JyApICkKLQotZGVmIGdlbmVyYXRlX3RhYmxlX2hlYWRlcl9lbmQoZmlsZSk6Ci0gICAg
ZmlsZS53cml0ZSgiIiI8L3RhYmxlPgotICAgIDwvY2VudGVyPiIiIikKLQotZGVmIHdyaXRlX3Rp
dGxlX3BhZ2UoZGVzdF9kaXIsIGxhc3RfdGltZSwgbGFzdF90b3RfbGluZXMsIGxhc3RfdG90X2Nv
dmVyZWQsIGRpcl9zZXJpZXMpOgotICAgICIiIgotICAgIFdyaXRlIHRoZSBpbmRleC5odG1sIHdp
dGggYSBvdmVydmlldyBvZiBlYWNoIGRpcmVjdG9yeQotICAgICIiIgotICAgIGluZGV4PSBjcmVh
dGVfcGFnZShkZXN0X2RpciwgImluZGV4Lmh0bWwiKQotICAgIGdlbmVyYXRlX2hlYWRlcihpbmRl
eCwgbGFzdF90aW1lLCBsYXN0X3RvdF9saW5lcywgbGFzdF90b3RfY292ZXJlZCwgImRpcmVjdG9y
eSIsICJpbWFnZXMvVG90YWwucG5nIikKLSAgICAjIENyZWF0ZSB0aGUgZGlyZWN0b3J5IG92ZXJ2
aWV3Ci0gICAgZ2VuZXJhdGVfdGFibGVfaGVhZGVyX3N0YXJ0KGluZGV4KQotICAgIGRpcnMgPSBk
aXJfc2VyaWVzLmtleXMoKQotICAgIGRpcnMuc29ydCgpCi0gICAgZm9yIGRpciBpbiBkaXJzOgot
ICAgICAgICAoZGlyX2ZpbGVzLCB0b3RhbF9saW5lcywgY292ZXJlZF9saW5lcyxfKSA9IGRpcl9z
ZXJpZXNbZGlyXVstMV0KLSAgICAgICAgZ2VuZXJhdGVfdGFibGVfaXRlbShpbmRleCwgZGlyLCB0
b3RhbF9saW5lcywgY292ZXJlZF9saW5lcykKLSAgICBnZW5lcmF0ZV90YWJsZV9oZWFkZXJfZW5k
KGluZGV4KQotCi0gICAgaW5kZXgud3JpdGUoIiIiPC9CT0RZPjwvSFRNTD4iIiIpCi0gICAgaW5k
ZXguY2xvc2UoKQotCi1kZWYgd3JpdGVfZGlyZWN0b3J5X3NpdGUoZGVzdF9kaXIsIGRpcl9uYW1l
LCBsYXN0X3RpbWUsIGRpcl9zZXJpZXMsIGZpbGVfc2VyaWVzKToKLSAgICBlc2NhcGVkX2RpciA9
IGRpcl9uYW1lLnJlcGxhY2Uob3MucGF0aC5zZXAsJ19fJykKLSAgICBzaXRlID0gY3JlYXRlX3Bh
Z2UoZGVzdF9kaXIsICIlcy5odG1sIiAlIGVzY2FwZWRfZGlyKQotICAgIChfLHRvdF9saW5lcyx0
b3RfY292ZXJlZCxmaWxlcykgPSBkaXJfc2VyaWVzW2Rpcl9uYW1lXVstMV0KLSAgICBnZW5lcmF0
ZV9oZWFkZXIoc2l0ZSwgbGFzdF90aW1lLCB0b3RfbGluZXMsIHRvdF9jb3ZlcmVkLCAiZGlyZWN0
b3J5IC0gJXMiICUgZGlyX25hbWUsICJpbWFnZXMvJXMucG5nIiAlIGVzY2FwZWRfZGlyKQotCi0g
ICAgZmlsZXMuc29ydCgpCi0KLSAgICBnZW5lcmF0ZV90YWJsZV9oZWFkZXJfc3RhcnQoc2l0ZSkK
LSAgICBmb3IgZmlsZSBpbiBmaWxlczoKLSAgICAgICAgKGxpbmVzLGNvdmVyZWQpID0gZmlsZV9z
ZXJpZXNbZmlsZV1bLTFdCi0gICAgICAgIGdlbmVyYXRlX3RhYmxlX2l0ZW0oc2l0ZSwgZmlsZSwg
bGluZXMsIGNvdmVyZWQpCi0KLSAgICBnZW5lcmF0ZV90YWJsZV9oZWFkZXJfZW5kKHNpdGUpCi0g
ICAgc2l0ZS53cml0ZSgiIiI8L0JPRFk+PC9IVE1MPiIiIikKLSAgICBzaXRlLmNsb3NlKCkKLQot
ZGVmIHdyaXRlX2ZpbGVfc2l0ZShkZXN0X2RpciwgZmlsZV9uYW1lLCBsYXN0X3RpbWUsIGRhdGFf
ZGlyLCBsYXN0X2lkLCBmaWxlX3Nlcmllcyk6Ci0gICAgZXNjYXBlZF9uYW1lID0gZmlsZV9uYW1l
LnJlcGxhY2Uob3MucGF0aC5zZXAsJ19fJykKLSAgICBzaXRlID0gY3JlYXRlX3BhZ2UoZGVzdF9k
aXIsICIlcy5odG1sIiAlIGVzY2FwZWRfbmFtZSkKLSAgICAodG90X2xpbmVzLHRvdF9jb3ZlcmVk
KSA9IGZpbGVfc2VyaWVzW2ZpbGVfbmFtZV1bLTFdCi0gICAgZ2VuZXJhdGVfaGVhZGVyKHNpdGUs
IGxhc3RfdGltZSwgdG90X2xpbmVzLCB0b3RfY292ZXJlZCwgImZpbGUgLSAlcyIgJSBmaWxlX25h
bWUsICJpbWFnZXMvJXMucG5nIiAlIGVzY2FwZWRfbmFtZSkKLQotICAgIHBhdGggPSAiJXMvJXMu
YW5ub3RhdGVkJXMiICUgKGRhdGFfZGlyLGxhc3RfaWQsZmlsZV9uYW1lKQotCi0gICAgIyBJbiBj
b250cmFzdCB0byB0aGUgbGNvdiB3ZSB3YW50IHRvIHNob3cgZmlsZXMgdGhhdCBoYXZlIGJlZW4g
Y29tcGlsZWQKLSAgICAjIGJ1dCBoYXZlIG5vdCBiZWVuIHRlc3RlZCBhdCBhbGwuIFRoaXMgbWVh
bnMgd2UgaGF2ZSBzb3VyY2VmaWxlcyB3aXRoIDAKLSAgICAjIGxpbmVzIGNvdmVyZWQgaW4gdGhl
IHBhdGggYnV0IHRoZXkgYXJlIG5vdCBsY292IGZpbGVzLgotICAgICMgVG8gaWRlbnRpZnkgdGhl
bSB3ZSBjaGVjayB0aGUgZmlyc3QgbGluZSBub3cuIElmIHdlIHNlZSB0aGF0IHdlIGNhbgotICAg
ICMgY29udGludWUKLSAgICAjICAgICAgICAgLTogICAgMDpTb3VyY2U6Ci0gICAgdHJ5OgotICAg
ICAgICBmaWxlID0gb3BlbihwYXRoLCAiciIpCi0gICAgZXhjZXB0OgotICAgICAgICByZXR1cm4K
LSAgICBhbGxfbGluZXMgPSBmaWxlLnJlYWQoKS5zcGxpdCgiXG4iKQotCi0gICAgIyBDb252ZXJ0
IHRoZSBnY292IGZpbGUgdG8gSFRNTCBpZiB3ZSBoYXZlIGEgY2hhbmNoZSB0byBkbyBzbwotICAg
ICMgU2NhbiBlYWNoIGxpbmUgYW5kIHNlZSBpZiBpdCB3YXMgY292ZXJlZCBvciBub3QgYW5kIGVz
Y2FwZSB0aGUKLSAgICAjIHRleHQKLSAgICBpZiBsZW4oYWxsX2xpbmVzKSA9PSAwIG9yIG5vdCAi
LTogICAgMDpTb3VyY2U6IiBpbiBhbGxfbGluZXNbMF06Ci0gICAgICAgIHNpdGUud3JpdGUoIjxw
PlRoZSBmaWxlIHdhcyBub3QgZXhjZXJjaXNlZDwvcD4iKQotICAgIGVsc2U6Ci0gICAgICAgIHNp
dGUud3JpdGUoIiIiPC9icj48dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJvcmRl
cj0wPgotICAgIDx0cj4KLSAgICAgIDx0ZD48YnI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4K
LSAgICAgIDx0ZD48cHJlIGNsYXNzPSJzb3VyY2UiPgotICAgICIiIikKLSAgICAgICAgZm9yIGxp
bmUgaW4gYWxsX2xpbmVzOgotICAgICAgICAgICAgc3BsaXRfbGluZSA9IGxpbmUuc3BsaXQoJzon
LDIpCi0gICAgICAgICAgICAjIGUuZy4gYXQgdGhlIEVPRgotICAgICAgICAgICAgaWYgbGVuKHNw
bGl0X2xpbmUpID09IDE6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGxp
bmVfbnVtYmVyID0gc3BsaXRfbGluZVsxXS5zdHJpcCgpCi0gICAgICAgICAgICBpZiBsaW5lX251
bWJlciA9PSAiMCI6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGNvdmVy
ZWQgPSAxNSoiICIKLSAgICAgICAgICAgIGVuZCA9ICIiCi0gICAgICAgICAgICBpZiAiIyMjIyMi
IGluIHNwbGl0X2xpbmVbMF06Ci0gICAgICAgICAgICAgICAgY292ZXJlZCA9ICc8c3BhbiBjbGFz
cz0ibGluZU5vQ292Ij4lMTVzJyAlICIwIgotICAgICAgICAgICAgICAgIGVuZCA9ICI8L3NwYW4+
IgotICAgICAgICAgICAgZWxpZiBzcGxpdF9saW5lWzBdLnN0cmlwKCkgIT0gIi0iOgotICAgICAg
ICAgICAgICAgIGNvdmVyZWQgPSAnPHNwYW4gY2xhc3M9ImxpbmVDb3YiPiUxNXMnICUgc3BsaXRf
bGluZVswXS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgZW5kID0gIjwvc3Bhbj4iCi0KLSAgICAg
ICAgICAgIGVzY2FwZWRfbGluZSA9IGVzY2FwZShzcGxpdF9saW5lWzJdKQotICAgICAgICAgICAg
c3RyID0gJzxzcGFuIGNsYXNzPSJsaW5lTnVtIj4lKGxpbmVfbnVtYmVyKTEwcyA8L3NwYW4+JShj
b3ZlcmVkKXM6ICUoZXNjYXBlZF9saW5lKXMlKGVuZClzXG4nICUgdmFycygpCi0gICAgICAgICAg
ICBzaXRlLndyaXRlKHN0cikKLSAgICAgICAgc2l0ZS53cml0ZSgiPC9wcmU+PC90ZD48L3RyPjwv
dGFibGU+IikKLSAgICBzaXRlLndyaXRlKCI8L0JPRFk+PC9IVE1MPiIpCi0gICAgc2l0ZS5jbG9z
ZSgpCi0KLWRlZiBtYWluKHByb2duYW1lLCBhcmdzKToKLSAgICBpZiBsZW4oYXJncykgIT0gMjoK
LSAgICAgICAgc3lzLmV4aXQoIlVzYWdlOiAlcyBEQVRBRElSIE9VVERJUiIgJSBwcm9nbmFtZSkK
LQotICAgIGJyYW5jaCA9ICJXZWJLaXQgZnJvbSB0cnVuayIKLSAgICBkYXRhZGlyLCBvdXRkaXIg
PSBhcmdzCi0KLSAgICAjIEZpcnN0LCBsb2FkIGluIGFsbCBkYXRhIGZyb20gdGhlIGRhdGEgZGly
ZWN0b3J5LgotICAgIGRhdGEgPSBbXQotICAgIGZvciBkYXRhcGF0aCBpbiBnbG9iLmdsb2Iob3Mu
cGF0aC5qb2luKGRhdGFkaXIsICIqLmNzdiIpKToKLSAgICAgICAgZGF0YS5hcHBlbmQocmVhZF9j
c3YoZGF0YXBhdGgpKQotICAgICMgU29ydCBieSB0aW1lCi0gICAgZGF0YS5zb3J0KCkKLQotICAg
ICMgQ2FsY3VsYXRlIHRpbWUgc2VyaWVzIGZvciBlYWNoIGZpbGUuCi0gICAgdGltZXMgPSBbc2Ft
cGxlWzBdIGZvciBzYW1wbGUgaW4gZGF0YV0KLSAgICB0aW1lcyA9IFtkYXRldGltZS5kYXRldGlt
ZS51dGNmcm9tdGltZXN0YW1wKHQpIGZvciB0IGluIHRpbWVzXQotCi0gICAgYWxsX2ZpbGVzID0g
e30KLSAgICBhbGxfZGlycyAgPSB7fQotICAgIGZvciBzYW1wbGUgaW4gZGF0YToKLSAgICAgICAg
dCwgaSwgdG90X2xpbmUsIHRvdF9jb3ZlciwgcGVyX2ZpbGUsIHBlcl9kaXIgPSBzYW1wbGUKLSAg
ICAgICAgYWxsX2ZpbGVzLnVwZGF0ZShwZXJfZmlsZSkKLSAgICAgICAgYWxsX2RpcnMudXBkYXRl
KHBlcl9kaXIpCi0gICAgdG90YWxfc2VyaWVzID0gW10KLSAgICBmaWxlX3Nlcmllc2VzID0gZGlj
dChbW2ssIFsoMCwgMCldICogbGVuKHRpbWVzKV0gZm9yIGsgaW4gYWxsX2ZpbGVzLmtleXMoKV0p
Ci0gICAgZGlyX3Nlcmllc2VzICA9IGRpY3QoW1trLCBbKDAsIDAsIDAsIFtdKV0gKiBsZW4odGlt
ZXMpXSBmb3IgayBpbiBhbGxfZGlycy5rZXlzKCldKQotICAgIGRhdGFfaWR4ID0gMAotICAgIGZv
ciBzYW1wbGUgaW4gZGF0YToKLSAgICAgICAgdCwgaSwgdG90X2xpbmUsIHRvdF9jb3ZlciwgcGVy
X2ZpbGUsIHBlcl9kaXIgPSBzYW1wbGUKLSAgICAgICAgdG90YWxfc2VyaWVzLmFwcGVuZChbdG90
X2xpbmUsIHRvdF9jb3Zlcl0pCi0gICAgICAgIGZvciBmLCBjb3ZpbmZvIGluIHBlcl9maWxlLml0
ZW1zKCk6Ci0gICAgICAgICAgICBmaWxlX3Nlcmllc2VzW2ZdW2RhdGFfaWR4XSA9IGNvdmluZm8K
LSAgICAgICAgZm9yIGYsIGNvdmluZm8gaW4gcGVyX2Rpci5pdGVtcygpOgotICAgICAgICAgICAg
ZGlyX3Nlcmllc2VzW2ZdW2RhdGFfaWR4XSA9IGNvdmluZm8KLSAgICAgICAgZGF0YV9pZHggKz0g
MQotCi0KLSAgICAjIE9rYXksIHJlYWR5IHRvIHN0YXJ0IG91dHB1dHRpbmcuICBGaXJzdCBtYWtl
IHN1cmUgb3VyIGRpcmVjdG9yaWVzCi0gICAgIyBleGlzdC4KLSAgICBpZiBub3Qgb3MucGF0aC5l
eGlzdHMob3V0ZGlyKToKLSAgICAgICAgb3MubWFrZWRpcnMob3V0ZGlyKQotICAgIHJlbF9pbWdk
aXIgPSAiaW1hZ2VzIgotICAgIGltZ2RpciA9IG9zLnBhdGguam9pbihvdXRkaXIsIHJlbF9pbWdk
aXIpCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGltZ2Rpcik6Ci0gICAgICAgIG9zLm1ha2Vk
aXJzKGltZ2RpcikKLQotCi0gICAgIyBBbmQgbG9vayB1cCB0aGUgbGF0ZXN0IHJldmlzaW9uIGlk
LCBhbmQgY292ZXJhZ2UgaW5mb3JtYXRpb24KLSAgICBsYXN0X3RpbWUsIGxhc3RfaWQsIGxhc3Rf
dG90X2xpbmVzLCBsYXN0X3RvdF9jb3ZlcmVkID0gZGF0YVstMV1bOjRdCi0KLSAgICAjIE5vdyBz
dGFydCBnZW5lcmF0aW5nIG91ciBodG1sIGZpbGUKLSAgICBjb3B5X2ZpbGVzKG91dGRpcikKLSAg
ICB3cml0ZV90aXRsZV9wYWdlKG91dGRpciwgbGFzdF90aW1lLCBsYXN0X3RvdF9saW5lcywgbGFz
dF90b3RfY292ZXJlZCwgZGlyX3Nlcmllc2VzKQotCi0gICAgZGlyX2tleXMgPSBkaXJfc2VyaWVz
ZXMua2V5cygpCi0gICAgZGlyX2tleXMuc29ydCgpCi0gICAgZm9yIGRpcl9uYW1lIGluIGRpcl9r
ZXlzOgotICAgICAgICB3cml0ZV9kaXJlY3Rvcnlfc2l0ZShvdXRkaXIsIGRpcl9uYW1lLCBsYXN0
X3RpbWUsIGRpcl9zZXJpZXNlcywgZmlsZV9zZXJpZXNlcykKLQotICAgIGZpbGVfa2V5cyA9IGZp
bGVfc2VyaWVzZXMua2V5cygpCi0gICAgZm9yIGZpbGVfbmFtZSBpbiBmaWxlX2tleXM6Ci0gICAg
ICAgIHdyaXRlX2ZpbGVfc2l0ZShvdXRkaXIsIGZpbGVfbmFtZSwgbGFzdF90aW1lLCBkYXRhZGly
LCBsYXN0X2lkLCBmaWxlX3Nlcmllc2VzKQotCi1kZWYgcmVhZF9jc3YocGF0aCk6Ci0gICAgciA9
IGNzdi5yZWFkZXIob3BlbihwYXRoLCAiciIpKQotICAgICMgRmlyc3QgbGluZSBpcyBpZCwgdGlt
ZQotICAgIGZvciByb3cgaW4gcjoKLSAgICAgICAgaWQsIHRpbWVfc3RyID0gcm93Ci0gICAgICAg
IGJyZWFrCi0gICAgdGltZSA9IGludChmbG9hdCh0aW1lX3N0cikpCi0gICAgIyBSZXN0IG9mIGxp
bmVzIGFyZSBwYXRoLCB0b3RhbF9saW5lcywgY292ZXJlZF9saW5lcwotICAgIHBlcl9maWxlID0g
e30KLSAgICBwZXJfZGlyICA9IHt9Ci0gICAgZ3JhbmRfdG90YWxfbGluZXMsIGdyYW5kX2NvdmVy
ZWRfbGluZXMgPSAwLCAwCi0gICAgZm9yIHJvdyBpbiByOgotICAgICAgICBwYXRoLCB0b3RhbF9s
aW5lc19zdHIsIGNvdmVyZWRfbGluZXNfc3RyID0gcm93Ci0gICAgICAgIHRvdGFsX2xpbmVzID0g
aW50KHRvdGFsX2xpbmVzX3N0cikKLSAgICAgICAgY292ZXJlZF9saW5lcyA9IGludChjb3ZlcmVk
X2xpbmVzX3N0cikKLSAgICAgICAgZ3JhbmRfdG90YWxfbGluZXMgKz0gdG90YWxfbGluZXMKLSAg
ICAgICAgZ3JhbmRfY292ZXJlZF9saW5lcyArPSBjb3ZlcmVkX2xpbmVzCi0gICAgICAgIHBlcl9m
aWxlW3BhdGhdID0gW3RvdGFsX2xpbmVzLCBjb3ZlcmVkX2xpbmVzXQotCi0gICAgICAgICMgVXBk
YXRlIGRpciBzdGF0aXN0aWNzCi0gICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUocGF0
aCkKLSAgICAgICAgaWYgbm90IGRpcm5hbWUgaW4gcGVyX2RpcjoKLSAgICAgICAgICAgIHBlcl9k
aXJbZGlybmFtZV0gPSAoMCwwLDAsW10pCi0gICAgICAgIChkaXJfZmlsZXMsZGlyX3RvdGFsX2xp
bmVzLGRpcl9jb3ZlcmVkX2xpbmVzLCBmaWxlcykgPSBwZXJfZGlyW2Rpcm5hbWVdCi0gICAgICAg
IGRpcl9maWxlcyArPSAxCi0gICAgICAgIGRpcl90b3RhbF9saW5lcyArPSB0b3RhbF9saW5lcwot
ICAgICAgICBkaXJfY292ZXJlZF9saW5lcyArPSBjb3ZlcmVkX2xpbmVzCi0gICAgICAgIGZpbGVz
LmFwcGVuZChwYXRoKQotICAgICAgICBwZXJfZGlyW2Rpcm5hbWVdID0gKGRpcl9maWxlcyxkaXJf
dG90YWxfbGluZXMsZGlyX2NvdmVyZWRfbGluZXMsZmlsZXMpCi0gICAgcmV0dXJuIFt0aW1lLCBp
ZCwgZ3JhbmRfdG90YWxfbGluZXMsIGdyYW5kX2NvdmVyZWRfbGluZXMsIHBlcl9maWxlLCBwZXJf
ZGlyXQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIGltcG9ydCBzeXMKLSAgICBt
YWluKHN5cy5hcmd2WzBdLCBzeXMuYXJndlsxOl0pCkluZGV4OiBUb29scy9Db2RlQ292ZXJhZ2Uv
cnVieS5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5h
cnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQpJbmRleDog
VG9vbHMvQ29kZUNvdmVyYWdlL3J1bi1nZW5lcmF0ZS1jb3ZlcmFnZS1kYXRhCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NvZGVDb3ZlcmFnZS9ydW4tZ2VuZXJhdGUtY292ZXJhZ2UtZGF0YQkocmV2aXNp
b24gMTUxNDY0KQorKysgVG9vbHMvQ29kZUNvdmVyYWdlL3J1bi1nZW5lcmF0ZS1jb3ZlcmFnZS1k
YXRhCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI0MCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRo
b24KLQotIyBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmF0aGFuaWVsIFNtaXRoCi0j
IENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LiAKLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAK
LSMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKLSMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSMgICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgb3MsIHN5cwotCi0jIGZyb20gQml0QmFrZQotZGVm
IG1rZGlyaGllcihkaXIpOgotICAgICIiIkNyZWF0ZSBhIGRpcmVjdG9yeSBsaWtlICdta2RpciAt
cCcsIGJ1dCBkb2VzIG5vdCBjb21wbGFpbiBpZgotICAgIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0
cyBsaWtlIG9zLm1ha2VkaXJzCi0gICAgIiIiCi0gICAgdHJ5OgotICAgICAgICBvcy5tYWtlZGly
cyhkaXIpCi0gICAgZXhjZXB0IE9TRXJyb3IsIGU6Ci0gICAgICAgIGlmIGUuZXJybm8gIT0gMTc6
IHJhaXNlIGUKLQotZGVmIGNvbGxlY3RfYmFzZShzcmMsbWF0Y2hfYXJyYXkpOgotICAgICIiIgot
ICAgIENvbGxlY3QgYWxsIGZpbGVzIHRoYXQgbWF0Y2ggdGhlIG1hdGNoX2FycmF5LgotICAgICIi
IgotCi0gICAgc291cmNlcyA9IFtdCi0gICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndh
bGsoc3JjKToKLSAgICAgICAgaWYgIi5zdm4iIGluIHJvb3Q6Ci0gICAgICAgICAgICBjb250aW51
ZQotCi0gICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgotICAgICAgICAgICAgYmFzZSxleHQgPSBv
cy5wYXRoLnNwbGl0ZXh0KGZpbGUpCi0gICAgICAgICAgICBpZiBleHQgaW4gbWF0Y2hfYXJyYXk6
Ci0gICAgICAgICAgICAgICAgc291cmNlcy5hcHBlbmQoIG9zLnBhdGguam9pbihyb290LCBmaWxl
KSApCi0KLSAgICByZXR1cm4gc291cmNlcwotCi1kZWYgY29sbGVjdF9kZXBlbmRzKHNyYyk6Ci0g
ICAgcmV0dXJuIGNvbGxlY3RfYmFzZShzcmMsIFsiLmQiXSkKLQotZGVmIHBhcnNlX2RlcGVuZGVu
Y3lfZmlsZShzcmMsIGJhc2VfZGlyLCBibGFja19saXN0KToKLSAgICAiIiIKLSAgICBQYXJzZSB0
aGUgLmQgZmlsZXMgb2YgdGhlIGdjYwotCi0gICAgV293LCB0aGUgZmlyc3QgdGltZSBvcy5wYXRo
LmpvaW4gaXMgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nLiBXZSBtaWdodAotICAgIGhhdmUgYSByZWxh
dGl2ZSBwYXRoIGluIHRoZSBkZXBlbmRzIHVzaW5nIG9zLnBhdGguam9pbihkaXJuYW1lIG9mIC5k
LCBkZXApCi0gICAgd2Ugd2lsbCBlbmQgdXAgaW4gCi0gICAgIiIiCi0gICAgZmlsZSA9IG9wZW4o
c3JjKQotICAgIGZpbGUgPSBmaWxlLnJlYWQoKQotICAgIGZpbGUgPSBmaWxlLnJlcGxhY2UoJ1xc
JywgJycpLnJlcGxhY2UoJ1xuJywgJycpCi0KLSAgICAjIFdlIG5vdyBoYXZlIG9iamVjdDogZGVw
ZW5kZW5jaWVzIHNwbGl0dGVkCi0gICAgYXIgID0gZmlsZS5zcGxpdCgnOicsIDEpCi0gICAgb2Jq
ID0gYXJbMF0uc3RyaXAoKQotICAgIGRpciA9IG9zLnBhdGguZGlybmFtZShvYmopCi0gICAgZGVw
cyA9IGFyWzFdLnNwbGl0KCcgJykKLQotICAgICMgUmVtb3ZlIGZpbGVzIG91dHNpZGUgV2ViS2l0
LCBtYWtlIHBhdGggYWJzb2x1dGUKLSAgICBkZXBzID0gZmlsdGVyKGxhbWJkYSB4OiBiYXNlX2Rp
ciBpbiB4LCBkZXBzKQotICAgIGRlcHMgPSBtYXAobGFtYmRhIHg6IG9zLnBhdGguYWJzcGF0aChv
cy5wYXRoLmpvaW4oZGlyLCB4KSksIGRlcHMpCi0gICAgcmV0dXJuIChvYmosIGRpciwgZGVwcykK
LQotZGVmIGNvbGxlY3RfY292KGJhc2VfcGF0aCx0YXJnZXRzKToKLSAgICAiIiIKLSAgICBDb2xs
ZWN0IGdjb3YgZmlsZXMsIGNvbGxlY3Rfc291cmNlcyBpcyBub3QgdXNlZCBhcyBpdCBhbHNvIGNy
ZWF0ZXMKLSAgICBkaXJzIGFuZCBuZWVkcyB0byBkbyBzdWJzdGl0dXRpbmcuCi0gICAgQWN0dWFs
bHkgd2Ugd2lsbCBidWlsZCBhIG1hcHBpbmcgZnJvbSBzb3VyY2UgZmlsZSB0byBnY292IGZpbGVz
IG9mCi0gICAgaW50ZXJlc3QuIFRoaXMgaXMgYmVjYXVzZSB3ZSBjb3VsZCBoYXZlIGJ5dGVzdHJl
YW0uaCBpbiBtYW55IGRpZmZlcmVudAotICAgIHN1YmRpcmVjdG9yaWVzLiBBbmQgd2Ugd291bGQg
ZW5kdXAgd2l0aCBibGEuY3BwIyNieXRlc3RyZWFtLmggYW5kIHdlCi0gICAgZG8gbm90IGtub3cg
d2hpY2ggYnl0ZXN0cmVhbSBmaWxlIHdhcyB0ZXN0ZWQKLSAgICAiIiIKLSAgICBkZWYgZmluZF9z
b3VyY2VfZmlsZShyb290LGNvdl9maWxlKToKLSAgICAgICAgIiIiIEZpbmQgYSBTb3VyY2UgbGlu
ZSBvciBjcmFzaAotCi0gICAgICAgICcjVXNlcnMjaWNoI3Byb2pla3RlI3NyYyN0aHJlYWRtZXNz
YWdlLmNwcCMjI3NwYWNlI2Rwb3J0cyNpbmNsdWRlI3F0MyNxc3RyaW5nLmguZ2NvdicKLSAgICAg
ICAgJyNVc2VycyNpY2gjcHJvamVrdGUjc3JjI3RocmVhZG1lc3NhZ2UuY3BwIyMuLiNeI3NyYyN0
aHJlYWRtZXNzYWdlLmNwcC5nY292JwotCi0gICAgICAgICMjIyBpcyBhYnNvbHV0ZSBwYXRoCi0g
ICAgICAgICMjLi4jXiMgaXMgcmVsYXRpdmUgcGF0aC4uLiB3ZWxsIGEgZ2NvdiBidWcgYXMgd2Vs
bAotICAgICAgICAjIyAgbm9ybWFsIHNwbGl0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Ci0g
ICAgICAgICIiIgotICAgICAgICBpZiAnIyMjJyBpbiBjb3ZfZmlsZToKLSAgICAgICAgICAgIHNw
bGl0ID0gY292X2ZpbGUuc3BsaXQoJyMjIycpCi0gICAgICAgICAgICBpZiBub3QgbGVuKHNwbGl0
KSA9PSAyOgotICAgICAgICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVkIHNwbGl0IHJlc3VsdCIK
LSAgICAgICAgICAgIGZpbGVwYXRoID0gc3BsaXRbMV1bOi01XS5yZXBsYWNlKCcjJyxvcy5wYXRo
LnNlcCkKLSAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsZmlsZXBh
dGgpCi0gICAgICAgIGVsaWYgJyMjLi4jXiMnIGluIGNvdl9maWxlOiAKLSAgICAgICAgICAgIHNw
bGl0ID0gY292X2ZpbGUuc3BsaXQoJyMjLi4jXiMnKQotICAgICAgICAgICAgaWYgbm90IGxlbihz
cGxpdCkgPT0gMjoKLSAgICAgICAgICAgICAgICByYWlzZSAiVW5leHBlY3RlZCBzcGxpdCByZXN1
bHQiCi0gICAgICAgICAgICBmaWxlcGF0aCA9IHNwbGl0WzFdWzotNV0ucmVwbGFjZSgnIycsb3Mu
cGF0aC5zZXApCi0gICAgICAgICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9p
bihyb290LG9zLnBhdGgucGFyZGlyLG9zLnBhdGgucGFyZGlyLGZpbGVwYXRoKSkKLSAgICAgICAg
ZWxpZiAnIyMnIGluIGNvdl9maWxlOgotICAgICAgICAgICAgc3BsaXQgPSBjb3ZfZmlsZS5zcGxp
dCgnIyMnKQotICAgICAgICAgICAgaWYgbm90IGxlbihzcGxpdCkgPT0gMjoKLSAgICAgICAgICAg
ICAgICByYWlzZSAiVW5leHBlY3RlZCBzcGxpdCByZXN1bHQiCi0gICAgICAgICAgICBmaWxlcGF0
aCA9IHNwbGl0WzFdWzotNV0ucmVwbGFjZSgnIycsb3MucGF0aC5zZXApCi0gICAgICAgICAgICBy
ZXR1cm4gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihyb290LGZpbGVwYXRoKSkKLSAgICAg
ICAgZWxpZiAnIycgaW4gY292X2ZpbGU6Ci0gICAgICAgICAgICAjIHdvdyBhIG5vdCBicm9rZW4g
Z2NvdiBvbiBPU1gKLSAgICAgICAgICAgIGJhc2VuYW1lPW9zLnBhdGguYmFzZW5hbWUoY292X2Zp
bGUpLnJlcGxhY2UoJyMnLG9zLnBhdGguc2VwKVs6LTVdCi0gICAgICAgICAgICByZXR1cm4gb3Mu
cGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihyb290LGJhc2VuYW1lKSkKLQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgcmFpc2UgIk5vIHNvdXJjZSBmb3VuZCAlcyIgJSBjb3ZfZmlsZQotCi0g
ICAgZGVmIHNhbml0aXplX3BhdGgocGF0aCk6Ci0gICAgICAgICIiIgotICAgICAgICBXZWxsIGZp
eCB1cCBwYXRocyBvbmNlIGFnYWluIC91c3IvbGliL2djYy9pNDg2LWxpbnV4LWdudS80LjEuMi9e
L14vXi9eL2luY2x1ZGUvYysrLzQuMS4yL2JpdHMvc3RsX3BhaXIuaAotICAgICAgICBhY2NvcmRp
bmcgdG8gZ2NvdiAnXicgaXMgYSByZWxhdGl2ZSBwYXRoLCB3ZSB3aWxsIG5vdyBidWlsZCBvbmUg
ZnJvbSB0aGlzIG9uZS4gU29tZWhvdyBpdCBkZXBlbmRzCi0gICAgICAgIG9uIHRoZSBnY292IHZl
cnNpb24gaWYgLi4gcmVhbGx5IGdldHMgcmVwbGFjZWQgdG8gXi4uLi4KLSAgICAgICAgIiIiCi0g
ICAgICAgIGltcG9ydCBvcwotICAgICAgICBzcGxpdCA9IHBhdGguc3BsaXQob3MucGF0aC5zZXAp
Ci0gICAgICAgIHN0ciA9ICIiCi0gICAgICAgIGZvciBwYXJ0IGluIHNwbGl0OgotICAgICAgICAg
ICAgaWYgcGFydCA9PSAnJzoKLSAgICAgICAgICAgICAgICBzdHIgPSBvcy5wYXRoLnNlcAotICAg
ICAgICAgICAgZWxpZiBwYXJ0ID09ICdeJzoKLSAgICAgICAgICAgICAgICBzdHIgPSAiJXMuLiVz
IiAlIChzdHIsb3MucGF0aC5zZXApCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IHN0ciA9ICIlcyVzJXMiICUgKHN0cixwYXJ0LG9zLnBhdGguc2VwKQotICAgICAgICByZXR1cm4g
b3MucGF0aC5hYnNwYXRoKHN0cikKLQotCi0gICAgZ2NvdiA9IHt9Ci0gICAgZm9yIHJvb3QsIGRp
cnMsIGZpbGVzIGluIG9zLndhbGsoYmFzZV9wYXRoKToKLSAgICAgICAgaWYgIi5zdm4iIGluIHJv
b3Q6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKLSAg
ICAgICAgICAgIGJhc2UsZXh0ID0gb3MucGF0aC5zcGxpdGV4dChmaWxlKQotICAgICAgICAgICAg
aWYgZXh0IGluIFsiLmdjb3YiXToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgICAgIGNvdiA9IG9zLnBhdGguam9pbihyb290LCBmaWxlKQotICAgICAgICAgICAgICAgICAg
ICBzcmMgPSBmaW5kX3NvdXJjZV9maWxlKCByb290LCBjb3YgKQotICAgICAgICAgICAgICAgICAg
ICBzcmMgPSBzYW5pdGl6ZV9wYXRoKCBzcmMgKQotCi0gICAgICAgICAgICAgICAgICAgIGlmIG5v
dCBzcmMgaW4gZ2NvdjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGdjb3Zbc3JjXSA9IFtdCi0g
ICAgICAgICAgICAgICAgICAgIGdjb3Zbc3JjXS5hcHBlbmQoIGNvdiApCi0gICAgICAgICAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbixlOgotICAgICAgICAgICAgICAgICAgICBwcmludCAiRXhjZXB0
aW9uIG9uICIsIGUKLSAgICAgICAgICAgICAgICAgICAgI2ltcG9ydCBzeXMKLSAgICAgICAgICAg
ICAgICAgICAgI3N5cy5leGl0KDApCi0gICAgICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICNw
cmludCBnY292Ci0gICAgcmV0dXJuIGdjb3YKLQotZGVmIGdlbmVyYXRlX2NvdnMoY2FuZGlkYXRl
cyk6Ci0gICAgIiIiCi0gICAgR2VuZXJhdGUgZ2NvdiBmaWxlcyBpbiB0aGUgcmlnaHQgZGlyZWN0
b3J5Ci0KLSAgICBjYW5kaWR0YWVzIGNvbnRhaW5zIHRoZSBkaXJlY3RvcmllcyB3ZSBoYXZlIHVz
ZWQgd2hlbgotICAgIGJ1aWxkaW5nLiBFYWNoIGRpcmVjdG9yeSBjb250YWlucyBhIHNldCBvZiBm
aWxlcyB3ZSB3aWxsCi0gICAgdHJ5IHRvIGdlbmVyYXRlIGdjb3YgZmlsZXMgZm9yLgotICAgICIi
IgotICAgIHByaW50IGNhbmRpZGF0ZXMua2V5cygpCi0gICAgZm9yIGRpciBpbiBjYW5kaWRhdGVz
LmtleXMoKToKLSAgICAgICAgcHJpbnQgIlRyeWluZyBpbiAlcyIgJSAoZGlyKQotICAgICAgICBm
b3IgZGVwIGluIGNhbmRpZGF0ZXNbZGlyXS5rZXlzKCk6Ci0gICAgICAgICAgICBjbWQgPSAiY2Qg
JXM7IGdjb3YgLXAgLWwgJXMiICUgKGRpciwgZGVwKQotICAgICAgICAgICAgb3Muc3lzdGVtKCIl
cyA+IC9kZXYvbnVsbCAyPiYxICIgJSBjbWQpCi0KLQotZGVmIGFuYWx5emVfY292ZXJhZ2Uoc291
cmNlcyxkYXRhLGRpcnMscnVuaWQsYmFzZSk6Ci0gICAgIiIiCi0gICAgc291cmNlcyBhY3R1YWwg
c291cmNlIGZpbGVzIHJlbGF0aXZlIHRvIHNyY19kaXIgZS5nIGtkZWxpYnMva2RlY29yZS9rbGli
bG9hZGVyLmNwcAotICAgIGRhdGEgICAgV2hlcmUgdG8gcHV0IHRoZSBzdHVmZgotICAgIGRpcnMg
ICAgV2hlcmUgdG8gdGFrZSBhIGxvb2sgZm9yIGdjb3YgZmlsZXMKLSAgICBiYXNlICAgIFRoZSBi
YXNlIGRpcmVjdG9yeSBmb3IgZmlsZXMuIEFsbCBmaWxlcyBub3QgaW5zaWRlIGJhc2Ugd2lsbCBi
ZSBpZ25vcmVkCi0gICAgIiIiCi0gICAgaW1wb3J0IGNvdgotICAgIHByaW50IGJhc2UKLSAgICBn
Y292ID0gY29sbGVjdF9jb3YoYmFzZSxkaXJzKQotICAgIHJlc3VsdCA9IGNvdi5hbmFseXplX2Nv
dmVyYWdlKGdjb3YsIHNvdXJjZXMsIHJ1bmlkLCBkYXRhLCBiYXNlKQotICAgIHByaW50IHJlc3Vs
dAotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgICNnbG9iYWwgdGFyZ2V0cwotICAg
IGlmIG5vdCBsZW4oc3lzLmFyZ3YpID09IDM6Ci0gICAgICAgIHByaW50ICJUaGlzIHNjcmlwdCBu
ZWVkcyB0aHJlZSBwYXJhbWV0ZXJzIgotICAgICAgICBwcmludCAiQ2FsbCBpdCB3aXRoIGdlbmVy
YXRlX2NvdiBSVU5JRCBSZXN1bHRzRGlyIgotICAgICAgICBzeXMuZXhpdCgtMSkKLSAgICBydW5p
ZCA9IHN5cy5hcmd2WzFdCi0gICAgcmVzdWx0cyA9IHN5cy5hcmd2WzJdCi0KLSAgICAjIGNyZWF0
ZSBkaXJlY3RvcmllcyBmb3Igb3V0IHJlc3VsdAotICAgIG1rZGlyaGllcihyZXN1bHRzKQotCi0g
ICAgcHJpbnQgIkNvbGxlY3Rpb24gU291cmNlcyBhbmQgcHJlcGFyaW5nIGRhdGEgdHJlZSIKLSAg
ICBiYXNlX2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmN1cmRpcikKLSAgICBkZXBlbmRz
ID0gY29sbGVjdF9kZXBlbmRzKGJhc2VfZGlyKQotICAgIGNhbmRpZGF0ZXMgPSBtYXAobGFtYmRh
IHg6IHBhcnNlX2RlcGVuZGVuY3lfZmlsZSh4LGJhc2VfZGlyLFtdKSwgZGVwZW5kcykKLQotICAg
ICMgQnVpbGQgYSBudW1iZXIgb2Ygc291cmNlcyBmcm9tIHRoZSBjYW5kaWRhdGVzLiBUaGlzIGlz
IGEgU2V0IGZvciB0aGUgcG9vcgotICAgICMgVHdvIGxldmVsIGRpY3QuIE9uZSBmb3IgCi0gICAg
ZGlycyA9IHt9Ci0gICAgZmlsZXMgPSB7fQotICAgIGZvciAoXyxkaXIsZGVwcykgaW4gY2FuZGlk
YXRlczoKLSAgICAgICAgaWYgbm90IGRpciBpbiBkaXJzOgotICAgICAgICAgICAgZGlyc1tkaXJd
ID0ge30KLSAgICAgICAgZm9yIGRlcCBpbiBkZXBzOgotICAgICAgICAgICAgaWYgbm90IGRlcCBp
biBkaXJzW2Rpcl06Ci0gICAgICAgICAgICAgICAgZGlyc1tkaXJdW2RlcF0gPSBkZXAKLSAgICAg
ICAgICAgIGlmIG5vdCBkZXAgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgZmlsZXNbZGVwXSA9
IGRlcAotCi0gICAgc291cmNlcyA9IGZpbGVzLmtleXMoKQotCi0gICAgcHJpbnQgIkZvdW5kICVk
IGNhbmRpZGF0ZXMiICUgKGxlbihzb3VyY2VzKSkKLSAgICBwcmludCAiV2lsbCBydW4gaW5lZmZp
Y2llbnQgZ2VuZXJhdGlvbiBvZiBnY292IGZpbGVzIG5vdyIKLSAgICBnZW5lcmF0ZV9jb3ZzKGRp
cnMpCi0KLSAgICBwcmludCAiQW5hbHl6aW5nIEdjb3YiCi0gICAgYW5hbHl6ZV9jb3ZlcmFnZShz
b3VyY2VzLCByZXN1bHRzLCBkaXJzLmtleXMoKSwgcnVuaWQsIGJhc2VfZGlyKQotICAgIHByaW50
ICJEb25lIgpJbmRleDogVG9vbHMvQ29kZUNvdmVyYWdlL3Nub3cucG5nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fu
bm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUg
PSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0K
</data>
<flag name="review"
          id="225815"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="225822"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>