<?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>60196</bug_id>
          
          <creation_ts>2011-05-04 11:57:41 -0700</creation_ts>
          <short_desc>sheriff-bot can&apos;t parse results.html</short_desc>
          <delta_ts>2011-05-04 15:02:44 -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>All</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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>398141</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-04 11:57:41 -0700</bug_when>
    <thetext>Traceback (most recent call last):
  File &quot;/mnt/git/webkit-sheriff-bot/Tools/Scripts/webkitpy/tool/bot/queueengine.py&quot;, line 96, in run
    work_item = self._delegate.next_work_item()
  File &quot;/mnt/git/webkit-sheriff-bot/Tools/Scripts/webkitpy/tool/commands/sheriffbot.py&quot;, line 69, in next_work_item
    failure_map = self._tool.buildbot.failure_map()
  File &quot;/mnt/git/webkit-sheriff-bot/Tools/Scripts/webkitpy/common/net/buildbot/buildbot.py&quot;, line 451, in failure_map
    regression_window = builder.find_blameworthy_regression_window(builder_status[&quot;build_number&quot;])
  File &quot;/mnt/git/webkit-sheriff-bot/Tools/Scripts/webkitpy/common/net/buildbot/buildbot.py&quot;, line 203, in find_blameworthy_regression_window
    regression_window = self.find_regression_window(red_build, look_back_limit)
  File &quot;/mnt/git/webkit-sheriff-bot/Tools/Scripts/webkitpy/common/net/buildbot/buildbot.py&quot;, line 176, in find_regression_window
    results = current_build.layout_test_results()
  File &quot;/mnt/git/webkit-sheriff-bot/Tools/Scripts/webkitpy/common/net/buildbot/buildbot.py&quot;, line 257, in layout_test_results
    self._layout_test_results = LayoutTestResults.results_from_string(self._fetch_results_html())
  File &quot;/mnt/git/webkit-sheriff-bot/Tools/Scripts/webkitpy/common/net/layouttestresults.py&quot;, line 138, in results_from_string
    test_results = ORWTResultsHTMLParser.parse_results_html(string)
  File &quot;/mnt/git/webkit-sheriff-bot/Tools/Scripts/webkitpy/common/net/layouttestresults.py&quot;, line 122, in parse_results_html
    tables = BeautifulSoup(page).findAll(&quot;table&quot;)
  File &quot;/mnt/git/webkit-sheriff-bot/Tools/Scripts/webkitpy/thirdparty/BeautifulSoup.py&quot;, line 1499, in __init__
    BeautifulStoneSoup.__init__(self, *args, **kwargs)
  File &quot;/mnt/git/webkit-sheriff-bot/Tools/Scripts/webkitpy/thirdparty/BeautifulSoup.py&quot;, line 1230, in __init__
    self._feed(isHTML=isHTML)
  File &quot;/mnt/git/webkit-sheriff-bot/Tools/Scripts/webkitpy/thirdparty/BeautifulSoup.py&quot;, line 1263, in _feed
    self.builder.feed(markup)
  File &quot;/usr/lib/python2.6/HTMLParser.py&quot;, line 108, in feed
    self.goahead(0)
  File &quot;/usr/lib/python2.6/HTMLParser.py&quot;, line 150, in goahead
    k = self.parse_endtag(i)
  File &quot;/usr/lib/python2.6/HTMLParser.py&quot;, line 317, in parse_endtag
    self.error(&quot;bad end tag: %r&quot; % (rawdata[i:j],))
  File &quot;/usr/lib/python2.6/HTMLParser.py&quot;, line 115, in error
    raise HTMLParseError(message, self.getpos())
HTMLParseError: bad end tag: u&quot;&lt;/&apos; + tagName + &apos;&gt;&quot;, at line 219, column 111</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398166</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-04 12:17:20 -0700</bug_when>
    <thetext>I suspect this is the NRWT bot, but I don&apos;t know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398167</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-04 12:18:39 -0700</bug_when>
    <thetext>Yup.  I&apos;m able to repro this locally using failure-reason.  Will write up a patch.

We should also make the NRWT bots non-core.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398183</commentid>
    <comment_count>3</comment_count>
      <attachid>92301</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-04 12:38:21 -0700</bug_when>
    <thetext>Created attachment 92301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398202</commentid>
    <comment_count>4</comment_count>
      <attachid>92301</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-05-04 13:22:27 -0700</bug_when>
    <thetext>Comment on attachment 92301
Patch

rubber-stamp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398281</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-04 15:02:44 -0700</bug_when>
    <thetext>Committed r85792: &lt;http://trac.webkit.org/changeset/85792&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92301</attachid>
            <date>2011-05-04 12:38:21 -0700</date>
            <delta_ts>2011-05-04 13:22:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60196-20110504123820.patch</filename>
            <type>text/plain</type>
            <size>45798</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU0NjMKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzZDUzMThhMjVhNTZhYzcwNGY3Zjk3MGQ2MTQ2ZDQ5Mjcz
Yzg3MWM0Li5hOGI5MGZmZGQzOWIzMDczNjg0YjY5NmIxOThjZTg4YjNmOGMzNDlhIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMDUtMDQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHNoZXJpZmYtYm90IGNhbid0
IHBhcnNlIHJlc3VsdHMuaHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjAxOTYKKworICAgICAgICBUaGUgcHJvYmxlbSB3YXMgdGhhdCB0aGUgTlJX
VCBib3RzIGFyZSBjdXJyZW50bHkgY29yZQorICAgICAgICBhbmQgc28gc2hlcmlmZi1ib3Qgd2Fz
IHRyeWluZyB0byBkaWFnbm9zZSBmYWlsdXJlcyBvbgorICAgICAgICB0aGVtLiAgSXQgd2FzIHRy
eWluZyB0byBwYXJzZSB0aGVpciByZXN1bHRzLmh0bWwgZmlsZQorICAgICAgICBhbmQgQmVhdXRp
ZnVsU291cCB3YXMgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLgorCisgICAgICAgIEl0IHNlZW1zIG91
ciB2ZXJzaW9uIG9mIEJlYXV0aWZ1bFNvdXAgd2FzIHF1aXRlIG9sZAorICAgICAgICBhbmQgdW5h
YmxlIHRvIGhhbmRsZSA8c2NyaXB0PiB0YWdzIGNvcnJlY3RseS4KKyAgICAgICAgVGhpcyBtb3Zl
cyB1cyB0byAzLjIgd2hpY2ggZG9lc24ndCBzZWVtIHRvIGhhdmUgdGhpcyBidWcuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvQmVhdXRpZnVsU291cC5weToKKwogMjAx
MS0wNS0wMSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhp
cmRwYXJ0eS9CZWF1dGlmdWxTb3VwLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBh
cnR5L0JlYXV0aWZ1bFNvdXAucHkKaW5kZXggMzQyMDRlNzQwMjQ5Y2IwYzM4NzU1OWViYmRiOGZh
YjlmYzJkZjAwNS4uNGIxN2I4NTNkMGM3MGVhZGM3ODEzMTA4NTVkYjQwNWU3ODdmZDFjZSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L0JlYXV0aWZ1bFNvdXAu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L0JlYXV0aWZ1bFNvdXAu
cHkKQEAgLTQyLDcgKzQyLDcgQEAgaHR0cDovL3d3dy5jcnVtbXkuY29tL3NvZnR3YXJlL0JlYXV0
aWZ1bFNvdXAvZG9jdW1lbnRhdGlvbi5odG1sCiAKIEhlcmUsIGhhdmUgc29tZSBsZWdhbGVzZToK
IAotQ29weXJpZ2h0IChjKSAyMDA0LTIwMDksIExlb25hcmQgUmljaGFyZHNvbgorQ29weXJpZ2h0
IChjKSAyMDA0LTIwMTAsIExlb25hcmQgUmljaGFyZHNvbgogCiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogCkBAIC03OSwzOSArNzksMzggQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UsIERBTU1JVC4KIGZyb20gX19mdXR1cmVfXyBpbXBv
cnQgZ2VuZXJhdG9ycwogCiBfX2F1dGhvcl9fID0gIkxlb25hcmQgUmljaGFyZHNvbiAobGVvbmFy
ZHJAc2VnZmF1bHQub3JnKSIKLV9fdmVyc2lvbl9fID0gIjMuMS4wLjEiCi1fX2NvcHlyaWdodF9f
ID0gIkNvcHlyaWdodCAoYykgMjAwNC0yMDA5IExlb25hcmQgUmljaGFyZHNvbiIKK19fdmVyc2lv
bl9fID0gIjMuMi4wIgorX19jb3B5cmlnaHRfXyA9ICJDb3B5cmlnaHQgKGMpIDIwMDQtMjAxMCBM
ZW9uYXJkIFJpY2hhcmRzb24iCiBfX2xpY2Vuc2VfXyA9ICJOZXctc3R5bGUgQlNEIgogCitmcm9t
IHNnbWxsaWIgaW1wb3J0IFNHTUxQYXJzZXIsIFNHTUxQYXJzZUVycm9yCiBpbXBvcnQgY29kZWNz
CiBpbXBvcnQgbWFya3VwYmFzZQogaW1wb3J0IHR5cGVzCiBpbXBvcnQgcmUKLWZyb20gSFRNTFBh
cnNlciBpbXBvcnQgSFRNTFBhcnNlciwgSFRNTFBhcnNlRXJyb3IKK2ltcG9ydCBzZ21sbGliCiB0
cnk6Ci0gICAgZnJvbSBodG1sZW50aXR5ZGVmcyBpbXBvcnQgbmFtZTJjb2RlcG9pbnQKKyAgZnJv
bSBodG1sZW50aXR5ZGVmcyBpbXBvcnQgbmFtZTJjb2RlcG9pbnQKIGV4Y2VwdCBJbXBvcnRFcnJv
cjoKLSAgICBuYW1lMmNvZGVwb2ludCA9IHt9CisgIG5hbWUyY29kZXBvaW50ID0ge30KIHRyeToK
ICAgICBzZXQKIGV4Y2VwdCBOYW1lRXJyb3I6CiAgICAgZnJvbSBzZXRzIGltcG9ydCBTZXQgYXMg
c2V0CiAKICNUaGVzZSBoYWNrcyBtYWtlIEJlYXV0aWZ1bCBTb3VwIGFibGUgdG8gcGFyc2UgWE1M
IHdpdGggbmFtZXNwYWNlcworc2dtbGxpYi50YWdmaW5kID0gcmUuY29tcGlsZSgnW2EtekEtWl1b
LV8uOmEtekEtWjAtOV0qJykKIG1hcmt1cGJhc2UuX2RlY2xuYW1lX21hdGNoID0gcmUuY29tcGls
ZShyJ1thLXpBLVpdWy1fLjphLXpBLVowLTldKlxzKicpLm1hdGNoCiAKIERFRkFVTFRfT1VUUFVU
X0VOQ09ESU5HID0gInV0Zi04IgogCi0jIEZpcnN0LCB0aGUgY2xhc3NlcyB0aGF0IHJlcHJlc2Vu
dCBtYXJrdXAgZWxlbWVudHMuCitkZWYgX21hdGNoX2Nzc19jbGFzcyhzdHIpOgorICAgICIiIkJ1
aWxkIGEgUkUgdG8gbWF0Y2ggdGhlIGdpdmVuIENTUyBjbGFzcy4iIiIKKyAgICByZXR1cm4gcmUu
Y29tcGlsZShyIihefC4qXHMpJXMoJHxccykiICUgc3RyKQogCi1kZWYgc29iKHVuaWNvZGUsIGVu
Y29kaW5nKToKLSAgICAiIiJSZXR1cm5zIGVpdGhlciB0aGUgZ2l2ZW4gVW5pY29kZSBzdHJpbmcg
b3IgaXRzIGVuY29kaW5nLiIiIgotICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6Ci0gICAgICAgIHJl
dHVybiB1bmljb2RlCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIHVuaWNvZGUuZW5jb2RlKGVu
Y29kaW5nKQorIyBGaXJzdCwgdGhlIGNsYXNzZXMgdGhhdCByZXByZXNlbnQgbWFya3VwIGVsZW1l
bnRzLgogCi1jbGFzcyBQYWdlRWxlbWVudDoKK2NsYXNzIFBhZ2VFbGVtZW50KG9iamVjdCk6CiAg
ICAgIiIiQ29udGFpbnMgdGhlIG5hdmlnYXRpb25hbCBpbmZvcm1hdGlvbiBmb3Igc29tZSBwYXJ0
IG9mIHRoZSBwYWdlCiAgICAgKGVpdGhlciBhIHRhZyBvciBhIHBpZWNlIG9mIHRleHQpIiIiCiAK
QEAgLTEyOSwxMCArMTI4LDExIEBAIGNsYXNzIFBhZ2VFbGVtZW50OgogCiAgICAgZGVmIHJlcGxh
Y2VXaXRoKHNlbGYsIHJlcGxhY2VXaXRoKToKICAgICAgICAgb2xkUGFyZW50ID0gc2VsZi5wYXJl
bnQKLSAgICAgICAgbXlJbmRleCA9IHNlbGYucGFyZW50LmNvbnRlbnRzLmluZGV4KHNlbGYpCi0g
ICAgICAgIGlmIGhhc2F0dHIocmVwbGFjZVdpdGgsICdwYXJlbnQnKSBhbmQgcmVwbGFjZVdpdGgu
cGFyZW50ID09IHNlbGYucGFyZW50OgorICAgICAgICBteUluZGV4ID0gc2VsZi5wYXJlbnQuaW5k
ZXgoc2VsZikKKyAgICAgICAgaWYgaGFzYXR0cihyZXBsYWNlV2l0aCwgInBhcmVudCIpXAorICAg
ICAgICAgICAgICAgICAgYW5kIHJlcGxhY2VXaXRoLnBhcmVudCBpcyBzZWxmLnBhcmVudDoKICAg
ICAgICAgICAgICMgV2UncmUgcmVwbGFjaW5nIHRoaXMgZWxlbWVudCB3aXRoIG9uZSBvZiBpdHMg
c2libGluZ3MuCi0gICAgICAgICAgICBpbmRleCA9IHNlbGYucGFyZW50LmNvbnRlbnRzLmluZGV4
KHJlcGxhY2VXaXRoKQorICAgICAgICAgICAgaW5kZXggPSByZXBsYWNlV2l0aC5wYXJlbnQuaW5k
ZXgocmVwbGFjZVdpdGgpCiAgICAgICAgICAgICBpZiBpbmRleCBhbmQgaW5kZXggPCBteUluZGV4
OgogICAgICAgICAgICAgICAgICMgRnVydGhlcm1vcmUsIGl0IGNvbWVzIGJlZm9yZSB0aGlzIGVs
ZW1lbnQuIFRoYXQKICAgICAgICAgICAgICAgICAjIG1lYW5zIHRoYXQgd2hlbiB3ZSBleHRyYWN0
IGl0LCB0aGUgaW5kZXggb2YgdGhpcwpAQCAtMTQxLDExICsxNDEsMjAgQEAgY2xhc3MgUGFnZUVs
ZW1lbnQ6CiAgICAgICAgIHNlbGYuZXh0cmFjdCgpCiAgICAgICAgIG9sZFBhcmVudC5pbnNlcnQo
bXlJbmRleCwgcmVwbGFjZVdpdGgpCiAKKyAgICBkZWYgcmVwbGFjZVdpdGhDaGlsZHJlbihzZWxm
KToKKyAgICAgICAgbXlQYXJlbnQgPSBzZWxmLnBhcmVudAorICAgICAgICBteUluZGV4ID0gc2Vs
Zi5wYXJlbnQuaW5kZXgoc2VsZikKKyAgICAgICAgc2VsZi5leHRyYWN0KCkKKyAgICAgICAgcmV2
ZXJzZWRDaGlsZHJlbiA9IGxpc3Qoc2VsZi5jb250ZW50cykKKyAgICAgICAgcmV2ZXJzZWRDaGls
ZHJlbi5yZXZlcnNlKCkKKyAgICAgICAgZm9yIGNoaWxkIGluIHJldmVyc2VkQ2hpbGRyZW46Cisg
ICAgICAgICAgICBteVBhcmVudC5pbnNlcnQobXlJbmRleCwgY2hpbGQpCisKICAgICBkZWYgZXh0
cmFjdChzZWxmKToKICAgICAgICAgIiIiRGVzdHJ1Y3RpdmVseSByaXBzIHRoaXMgZWxlbWVudCBv
dXQgb2YgdGhlIHRyZWUuIiIiCiAgICAgICAgIGlmIHNlbGYucGFyZW50OgogICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgIHNlbGYucGFyZW50LmNvbnRlbnRzLnJlbW92ZShzZWxmKQor
ICAgICAgICAgICAgICAgIGRlbCBzZWxmLnBhcmVudC5jb250ZW50c1tzZWxmLnBhcmVudC5pbmRl
eChzZWxmKV0KICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAg
IHBhc3MKIApAQCAtMTc4LDE4ICsxODcsMTcgQEAgY2xhc3MgUGFnZUVsZW1lbnQ6CiAgICAgICAg
IHJldHVybiBsYXN0Q2hpbGQKIAogICAgIGRlZiBpbnNlcnQoc2VsZiwgcG9zaXRpb24sIG5ld0No
aWxkKToKLSAgICAgICAgaWYgKGlzaW5zdGFuY2UobmV3Q2hpbGQsIGJhc2VzdHJpbmcpCi0gICAg
ICAgICAgICBvciBpc2luc3RhbmNlKG5ld0NoaWxkLCB1bmljb2RlKSkgXAorICAgICAgICBpZiBp
c2luc3RhbmNlKG5ld0NoaWxkLCBiYXNlc3RyaW5nKSBcCiAgICAgICAgICAgICBhbmQgbm90IGlz
aW5zdGFuY2UobmV3Q2hpbGQsIE5hdmlnYWJsZVN0cmluZyk6CiAgICAgICAgICAgICBuZXdDaGls
ZCA9IE5hdmlnYWJsZVN0cmluZyhuZXdDaGlsZCkKIAogICAgICAgICBwb3NpdGlvbiA9ICBtaW4o
cG9zaXRpb24sIGxlbihzZWxmLmNvbnRlbnRzKSkKLSAgICAgICAgaWYgaGFzYXR0cihuZXdDaGls
ZCwgJ3BhcmVudCcpIGFuZCBuZXdDaGlsZC5wYXJlbnQgIT0gTm9uZToKKyAgICAgICAgaWYgaGFz
YXR0cihuZXdDaGlsZCwgJ3BhcmVudCcpIGFuZCBuZXdDaGlsZC5wYXJlbnQgaXMgbm90IE5vbmU6
CiAgICAgICAgICAgICAjIFdlJ3JlICdpbnNlcnRpbmcnIGFuIGVsZW1lbnQgdGhhdCdzIGFscmVh
ZHkgb25lCiAgICAgICAgICAgICAjIG9mIHRoaXMgb2JqZWN0J3MgY2hpbGRyZW4uCi0gICAgICAg
ICAgICBpZiBuZXdDaGlsZC5wYXJlbnQgPT0gc2VsZjoKLSAgICAgICAgICAgICAgICBpbmRleCA9
IHNlbGYuZmluZChuZXdDaGlsZCkKLSAgICAgICAgICAgICAgICBpZiBpbmRleCBhbmQgaW5kZXgg
PCBwb3NpdGlvbjoKKyAgICAgICAgICAgIGlmIG5ld0NoaWxkLnBhcmVudCBpcyBzZWxmOgorICAg
ICAgICAgICAgICAgIGluZGV4ID0gc2VsZi5pbmRleChuZXdDaGlsZCkKKyAgICAgICAgICAgICAg
ICBpZiBpbmRleCA+IHBvc2l0aW9uOgogICAgICAgICAgICAgICAgICAgICAjIEZ1cnRoZXJtb3Jl
IHdlJ3JlIG1vdmluZyBpdCBmdXJ0aGVyIGRvd24gdGhlCiAgICAgICAgICAgICAgICAgICAgICMg
bGlzdCBvZiB0aGlzIG9iamVjdCdzIGNoaWxkcmVuLiBUaGF0IG1lYW5zIHRoYXQKICAgICAgICAg
ICAgICAgICAgICAgIyB3aGVuIHdlIGV4dHJhY3QgdGhpcyBlbGVtZW50LCBvdXIgdGFyZ2V0IGlu
ZGV4CkBAIC0zMjcsOCArMzM1LDIxIEBAIGNsYXNzIFBhZ2VFbGVtZW50OgogCiAgICAgICAgIGlm
IGlzaW5zdGFuY2UobmFtZSwgU291cFN0cmFpbmVyKToKICAgICAgICAgICAgIHN0cmFpbmVyID0g
bmFtZQorICAgICAgICAjIChQb3NzaWJseSkgc3BlY2lhbCBjYXNlIHNvbWUgZmluZEFsbCooLi4u
KSBzZWFyY2hlcworICAgICAgICBlbGlmIHRleHQgaXMgTm9uZSBhbmQgbm90IGxpbWl0IGFuZCBu
b3QgYXR0cnMgYW5kIG5vdCBrd2FyZ3M6CisgICAgICAgICAgICAjIGZpbmRBbGwqKFRydWUpCisg
ICAgICAgICAgICBpZiBuYW1lIGlzIFRydWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIFtlbGVt
ZW50IGZvciBlbGVtZW50IGluIGdlbmVyYXRvcigpCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiBpc2luc3RhbmNlKGVsZW1lbnQsIFRhZyldCisgICAgICAgICAgICAjIGZpbmRBbGwqKCd0YWct
bmFtZScpCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UobmFtZSwgYmFzZXN0cmluZyk6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIFtlbGVtZW50IGZvciBlbGVtZW50IGluIGdlbmVyYXRvcigp
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGVsZW1lbnQsIFRhZykgYW5k
CisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm5hbWUgPT0gbmFtZV0KKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3RyYWluZXIgPSBTb3VwU3RyYWluZXIobmFtZSwg
YXR0cnMsIHRleHQsICoqa3dhcmdzKQorICAgICAgICAjIEJ1aWxkIGEgU291cFN0cmFpbmVyCiAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIEJ1aWxkIGEgU291cFN0cmFpbmVyCiAgICAgICAg
ICAgICBzdHJhaW5lciA9IFNvdXBTdHJhaW5lcihuYW1lLCBhdHRycywgdGV4dCwgKiprd2FyZ3Mp
CiAgICAgICAgIHJlc3VsdHMgPSBSZXN1bHRTZXQoc3RyYWluZXIpCiAgICAgICAgIGcgPSBnZW5l
cmF0b3IoKQpAQCAtMzQ5LDMxICszNzAsMzEgQEAgY2xhc3MgUGFnZUVsZW1lbnQ6CiAgICAgI05h
dmlnYWJsZVN0cmluZ3MgYW5kIFRhZ3MuCiAgICAgZGVmIG5leHRHZW5lcmF0b3Ioc2VsZik6CiAg
ICAgICAgIGkgPSBzZWxmCi0gICAgICAgIHdoaWxlIGk6CisgICAgICAgIHdoaWxlIGkgaXMgbm90
IE5vbmU6CiAgICAgICAgICAgICBpID0gaS5uZXh0CiAgICAgICAgICAgICB5aWVsZCBpCiAKICAg
ICBkZWYgbmV4dFNpYmxpbmdHZW5lcmF0b3Ioc2VsZik6CiAgICAgICAgIGkgPSBzZWxmCi0gICAg
ICAgIHdoaWxlIGk6CisgICAgICAgIHdoaWxlIGkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBp
ID0gaS5uZXh0U2libGluZwogICAgICAgICAgICAgeWllbGQgaQogCiAgICAgZGVmIHByZXZpb3Vz
R2VuZXJhdG9yKHNlbGYpOgogICAgICAgICBpID0gc2VsZgotICAgICAgICB3aGlsZSBpOgorICAg
ICAgICB3aGlsZSBpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaSA9IGkucHJldmlvdXMKICAg
ICAgICAgICAgIHlpZWxkIGkKIAogICAgIGRlZiBwcmV2aW91c1NpYmxpbmdHZW5lcmF0b3Ioc2Vs
Zik6CiAgICAgICAgIGkgPSBzZWxmCi0gICAgICAgIHdoaWxlIGk6CisgICAgICAgIHdoaWxlIGkg
aXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpID0gaS5wcmV2aW91c1NpYmxpbmcKICAgICAgICAg
ICAgIHlpZWxkIGkKIAogICAgIGRlZiBwYXJlbnRHZW5lcmF0b3Ioc2VsZik6CiAgICAgICAgIGkg
PSBzZWxmCi0gICAgICAgIHdoaWxlIGk6CisgICAgICAgIHdoaWxlIGkgaXMgbm90IE5vbmU6CiAg
ICAgICAgICAgICBpID0gaS5wYXJlbnQKICAgICAgICAgICAgIHlpZWxkIGkKIApAQCAtNDE1LDcg
KzQzNiw3IEBAIGNsYXNzIE5hdmlnYWJsZVN0cmluZyh1bmljb2RlLCBQYWdlRWxlbWVudCk6CiAg
ICAgICAgIHJldHVybiB1bmljb2RlLl9fbmV3X18oY2xzLCB2YWx1ZSwgREVGQVVMVF9PVVRQVVRf
RU5DT0RJTkcpCiAKICAgICBkZWYgX19nZXRuZXdhcmdzX18oc2VsZik6Ci0gICAgICAgIHJldHVy
biAodW5pY29kZShzZWxmKSwpCisgICAgICAgIHJldHVybiAoTmF2aWdhYmxlU3RyaW5nLl9fc3Ry
X18oc2VsZiksKQogCiAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgogICAgICAgICAi
IiJ0ZXh0LnN0cmluZyBnaXZlcyB5b3UgdGV4dC4gVGhpcyBpcyBmb3IgYmFja3dhcmRzCkBAIC00
MjYsMzIgKzQ0NywzNCBAQCBjbGFzcyBOYXZpZ2FibGVTdHJpbmcodW5pY29kZSwgUGFnZUVsZW1l
bnQpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IsICIn
JXMnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclcyciICUgKHNlbGYuX19jbGFzc19fLl9fbmFt
ZV9fLCBhdHRyKQogCi0gICAgZGVmIGVuY29kZShzZWxmLCBlbmNvZGluZz1ERUZBVUxUX09VVFBV
VF9FTkNPRElORyk6Ci0gICAgICAgIHJldHVybiBzZWxmLmRlY29kZSgpLmVuY29kZShlbmNvZGlu
ZykKKyAgICBkZWYgX191bmljb2RlX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZiku
ZGVjb2RlKERFRkFVTFRfT1VUUFVUX0VOQ09ESU5HKQogCi0gICAgZGVmIGRlY29kZUdpdmVuRXZl
bnR1YWxFbmNvZGluZyhzZWxmLCBldmVudHVhbEVuY29kaW5nKToKLSAgICAgICAgcmV0dXJuIHNl
bGYKKyAgICBkZWYgX19zdHJfXyhzZWxmLCBlbmNvZGluZz1ERUZBVUxUX09VVFBVVF9FTkNPRElO
Ryk6CisgICAgICAgIGlmIGVuY29kaW5nOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZW5jb2Rl
KGVuY29kaW5nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKIAogY2xh
c3MgQ0RhdGEoTmF2aWdhYmxlU3RyaW5nKToKIAotICAgIGRlZiBkZWNvZGVHaXZlbkV2ZW50dWFs
RW5jb2Rpbmcoc2VsZiwgZXZlbnR1YWxFbmNvZGluZyk6Ci0gICAgICAgIHJldHVybiB1JzwhW0NE
QVRBWycgKyBzZWxmICsgdSddXT4nCisgICAgZGVmIF9fc3RyX18oc2VsZiwgZW5jb2Rpbmc9REVG
QVVMVF9PVVRQVVRfRU5DT0RJTkcpOgorICAgICAgICByZXR1cm4gIjwhW0NEQVRBWyVzXV0+IiAl
IE5hdmlnYWJsZVN0cmluZy5fX3N0cl9fKHNlbGYsIGVuY29kaW5nKQogCiBjbGFzcyBQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24oTmF2aWdhYmxlU3RyaW5nKToKLQotICAgIGRlZiBkZWNvZGVHaXZlbkV2
ZW50dWFsRW5jb2Rpbmcoc2VsZiwgZXZlbnR1YWxFbmNvZGluZyk6CisgICAgZGVmIF9fc3RyX18o
c2VsZiwgZW5jb2Rpbmc9REVGQVVMVF9PVVRQVVRfRU5DT0RJTkcpOgogICAgICAgICBvdXRwdXQg
PSBzZWxmCi0gICAgICAgIGlmIHUnJVNPVVAtRU5DT0RJTkclJyBpbiBvdXRwdXQ6Ci0gICAgICAg
ICAgICBvdXRwdXQgPSBzZWxmLnN1YnN0aXR1dGVFbmNvZGluZyhvdXRwdXQsIGV2ZW50dWFsRW5j
b2RpbmcpCi0gICAgICAgIHJldHVybiB1Jzw/JyArIG91dHB1dCArIHUnPz4nCisgICAgICAgIGlm
ICIlU09VUC1FTkNPRElORyUiIGluIG91dHB1dDoKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYu
c3Vic3RpdHV0ZUVuY29kaW5nKG91dHB1dCwgZW5jb2RpbmcpCisgICAgICAgIHJldHVybiAiPD8l
cz8+IiAlIHNlbGYudG9FbmNvZGluZyhvdXRwdXQsIGVuY29kaW5nKQogCiBjbGFzcyBDb21tZW50
KE5hdmlnYWJsZVN0cmluZyk6Ci0gICAgZGVmIGRlY29kZUdpdmVuRXZlbnR1YWxFbmNvZGluZyhz
ZWxmLCBldmVudHVhbEVuY29kaW5nKToKLSAgICAgICAgcmV0dXJuIHUnPCEtLScgKyBzZWxmICsg
dSctLT4nCisgICAgZGVmIF9fc3RyX18oc2VsZiwgZW5jb2Rpbmc9REVGQVVMVF9PVVRQVVRfRU5D
T0RJTkcpOgorICAgICAgICByZXR1cm4gIjwhLS0lcy0tPiIgJSBOYXZpZ2FibGVTdHJpbmcuX19z
dHJfXyhzZWxmLCBlbmNvZGluZykKIAogY2xhc3MgRGVjbGFyYXRpb24oTmF2aWdhYmxlU3RyaW5n
KToKLSAgICBkZWYgZGVjb2RlR2l2ZW5FdmVudHVhbEVuY29kaW5nKHNlbGYsIGV2ZW50dWFsRW5j
b2RpbmcpOgotICAgICAgICByZXR1cm4gdSc8IScgKyBzZWxmICsgdSc+JworICAgIGRlZiBfX3N0
cl9fKHNlbGYsIGVuY29kaW5nPURFRkFVTFRfT1VUUFVUX0VOQ09ESU5HKToKKyAgICAgICAgcmV0
dXJuICI8ISVzPiIgJSBOYXZpZ2FibGVTdHJpbmcuX19zdHJfXyhzZWxmLCBlbmNvZGluZykKIAog
Y2xhc3MgVGFnKFBhZ2VFbGVtZW50KToKIApAQCAtNTA2LDggKzUyOSwxMCBAQCBjbGFzcyBUYWco
UGFnZUVsZW1lbnQpOgogICAgICAgICBzZWxmLnBhcnNlckNsYXNzID0gcGFyc2VyLl9fY2xhc3Nf
XwogICAgICAgICBzZWxmLmlzU2VsZkNsb3NpbmcgPSBwYXJzZXIuaXNTZWxmQ2xvc2luZ1RhZyhu
YW1lKQogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIGlmIGF0dHJzID09IE5vbmU6
CisgICAgICAgIGlmIGF0dHJzIGlzIE5vbmU6CiAgICAgICAgICAgICBhdHRycyA9IFtdCisgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShhdHRycywgZGljdCk6CisgICAgICAgICAgICBhdHRycyA9IGF0
dHJzLml0ZW1zKCkKICAgICAgICAgc2VsZi5hdHRycyA9IGF0dHJzCiAgICAgICAgIHNlbGYuY29u
dGVudHMgPSBbXQogICAgICAgICBzZWxmLnNldHVwKHBhcmVudCwgcHJldmlvdXMpCkBAIC01MTcs
MjEgKzU0Miw1NiBAQCBjbGFzcyBUYWcoUGFnZUVsZW1lbnQpOgogICAgICAgICBzZWxmLmNvbnZl
cnRYTUxFbnRpdGllcyA9IHBhcnNlci5jb252ZXJ0WE1MRW50aXRpZXMKICAgICAgICAgc2VsZi5l
c2NhcGVVbnJlY29nbml6ZWRFbnRpdGllcyA9IHBhcnNlci5lc2NhcGVVbnJlY29nbml6ZWRFbnRp
dGllcwogCi0gICAgICAgIGRlZiBjb252ZXJ0KGt2YWwpOgotICAgICAgICAgICAgIkNvbnZlcnRz
IEhUTUwsIFhNTCBhbmQgbnVtZXJpYyBlbnRpdGllcyBpbiB0aGUgYXR0cmlidXRlIHZhbHVlLiIK
LSAgICAgICAgICAgIGssIHZhbCA9IGt2YWwKLSAgICAgICAgICAgIGlmIHZhbCBpcyBOb25lOgot
ICAgICAgICAgICAgICAgIHJldHVybiBrdmFsCi0gICAgICAgICAgICByZXR1cm4gKGssIHJlLnN1
YigiJigjXGQrfCN4WzAtOWEtZkEtRl0rfFx3Kyk7IiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX2NvbnZlcnRFbnRpdGllcywgdmFsKSkKKyAgICAgICAgIyBDb252ZXJ0IGFu
eSBIVE1MLCBYTUwsIG9yIG51bWVyaWMgZW50aXRpZXMgaW4gdGhlIGF0dHJpYnV0ZSB2YWx1ZXMu
CisgICAgICAgIGNvbnZlcnQgPSBsYW1iZGEoaywgdmFsKTogKGssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlLnN1YigiJigjXGQrfCN4WzAtOWEtZkEtRl0rfFx3Kyk7IiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbnZlcnRF
bnRpdGllcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCkp
CiAgICAgICAgIHNlbGYuYXR0cnMgPSBtYXAoY29udmVydCwgc2VsZi5hdHRycykKIAorICAgIGRl
ZiBnZXRTdHJpbmcoc2VsZik6CisgICAgICAgIGlmIChsZW4oc2VsZi5jb250ZW50cykgPT0gMQor
ICAgICAgICAgICAgYW5kIGlzaW5zdGFuY2Uoc2VsZi5jb250ZW50c1swXSwgTmF2aWdhYmxlU3Ry
aW5nKSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jb250ZW50c1swXQorCisgICAgZGVmIHNl
dFN0cmluZyhzZWxmLCBzdHJpbmcpOgorICAgICAgICAiIiJSZXBsYWNlIHRoZSBjb250ZW50cyBv
ZiB0aGUgdGFnIHdpdGggYSBzdHJpbmciIiIKKyAgICAgICAgc2VsZi5jbGVhcigpCisgICAgICAg
IHNlbGYuYXBwZW5kKHN0cmluZykKKworICAgIHN0cmluZyA9IHByb3BlcnR5KGdldFN0cmluZywg
c2V0U3RyaW5nKQorCisgICAgZGVmIGdldFRleHQoc2VsZiwgc2VwYXJhdG9yPXUiIik6CisgICAg
ICAgIGlmIG5vdCBsZW4oc2VsZi5jb250ZW50cyk6CisgICAgICAgICAgICByZXR1cm4gdSIiCisg
ICAgICAgIHN0b3BOb2RlID0gc2VsZi5fbGFzdFJlY3Vyc2l2ZUNoaWxkKCkubmV4dAorICAgICAg
ICBzdHJpbmdzID0gW10KKyAgICAgICAgY3VycmVudCA9IHNlbGYuY29udGVudHNbMF0KKyAgICAg
ICAgd2hpbGUgY3VycmVudCBpcyBub3Qgc3RvcE5vZGU6CisgICAgICAgICAgICBpZiBpc2luc3Rh
bmNlKGN1cnJlbnQsIE5hdmlnYWJsZVN0cmluZyk6CisgICAgICAgICAgICAgICAgc3RyaW5ncy5h
cHBlbmQoY3VycmVudC5zdHJpcCgpKQorICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4
dAorICAgICAgICByZXR1cm4gc2VwYXJhdG9yLmpvaW4oc3RyaW5ncykKKworICAgIHRleHQgPSBw
cm9wZXJ0eShnZXRUZXh0KQorCiAgICAgZGVmIGdldChzZWxmLCBrZXksIGRlZmF1bHQ9Tm9uZSk6
CiAgICAgICAgICIiIlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAna2V5JyBhdHRyaWJ1dGUgZm9y
IHRoZSB0YWcsIG9yCiAgICAgICAgIHRoZSB2YWx1ZSBnaXZlbiBmb3IgJ2RlZmF1bHQnIGlmIGl0
IGRvZXNuJ3QgaGF2ZSB0aGF0CiAgICAgICAgIGF0dHJpYnV0ZS4iIiIKICAgICAgICAgcmV0dXJu
IHNlbGYuX2dldEF0dHJNYXAoKS5nZXQoa2V5LCBkZWZhdWx0KQogCisgICAgZGVmIGNsZWFyKHNl
bGYpOgorICAgICAgICAiIiJFeHRyYWN0IGFsbCBjaGlsZHJlbi4iIiIKKyAgICAgICAgZm9yIGNo
aWxkIGluIHNlbGYuY29udGVudHNbOl06CisgICAgICAgICAgICBjaGlsZC5leHRyYWN0KCkKKwor
ICAgIGRlZiBpbmRleChzZWxmLCBlbGVtZW50KToKKyAgICAgICAgZm9yIGksIGNoaWxkIGluIGVu
dW1lcmF0ZShzZWxmLmNvbnRlbnRzKToKKyAgICAgICAgICAgIGlmIGNoaWxkIGlzIGVsZW1lbnQ6
CisgICAgICAgICAgICAgICAgcmV0dXJuIGkKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGFn
LmluZGV4OiBlbGVtZW50IG5vdCBpbiB0YWciKQorCiAgICAgZGVmIGhhc19rZXkoc2VsZiwga2V5
KToKICAgICAgICAgcmV0dXJuIHNlbGYuX2dldEF0dHJNYXAoKS5oYXNfa2V5KGtleSkKIApAQCAt
NjAwLDYgKzY2MCw4IEBAIGNsYXNzIFRhZyhQYWdlRWxlbWVudCk6CiAKICAgICAgICAgTk9URTog
cmlnaHQgbm93IHRoaXMgd2lsbCByZXR1cm4gZmFsc2UgaWYgdHdvIHRhZ3MgaGF2ZSB0aGUKICAg
ICAgICAgc2FtZSBhdHRyaWJ1dGVzIGluIGEgZGlmZmVyZW50IG9yZGVyLiBTaG91bGQgdGhpcyBi
ZSBmaXhlZD8iIiIKKyAgICAgICAgaWYgb3RoZXIgaXMgc2VsZjoKKyAgICAgICAgICAgIHJldHVy
biBUcnVlCiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG90aGVyLCAnbmFtZScpIG9yIG5vdCBoYXNh
dHRyKG90aGVyLCAnYXR0cnMnKSBvciBub3QgaGFzYXR0cihvdGhlciwgJ2NvbnRlbnRzJykgb3Ig
c2VsZi5uYW1lICE9IG90aGVyLm5hbWUgb3Igc2VsZi5hdHRycyAhPSBvdGhlci5hdHRycyBvciBs
ZW4oc2VsZikgIT0gbGVuKG90aGVyKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAg
ICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oc2VsZi5jb250ZW50cykpOgpAQCAtNjE0LDcgKzY3Niwx
MCBAQCBjbGFzcyBUYWcoUGFnZUVsZW1lbnQpOgogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYsIGVu
Y29kaW5nPURFRkFVTFRfT1VUUFVUX0VOQ09ESU5HKToKICAgICAgICAgIiIiUmVuZGVycyB0aGlz
IHRhZyBhcyBhIHN0cmluZy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuZGVjb2RlKGV2ZW50dWFs
RW5jb2Rpbmc9ZW5jb2RpbmcpCisgICAgICAgIHJldHVybiBzZWxmLl9fc3RyX18oZW5jb2Rpbmcp
CisKKyAgICBkZWYgX191bmljb2RlX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fc3Ry
X18oTm9uZSkKIAogICAgIEJBUkVfQU1QRVJTQU5EX09SX0JSQUNLRVQgPSByZS5jb21waWxlKCIo
Wzw+XXwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiJig/
ISNcZCs7fCN4WzAtOWEtZkEtRl0rO3xcdys7KSIKQEAgLTYyNSwzMCArNjkwLDI0IEBAIGNsYXNz
IFRhZyhQYWdlRWxlbWVudCk6CiAgICAgICAgIGFwcHJvcHJpYXRlIFhNTCBlbnRpdHkgZm9yIGFu
IFhNTCBzcGVjaWFsIGNoYXJhY3Rlci4iIiIKICAgICAgICAgcmV0dXJuICImIiArIHNlbGYuWE1M
X1NQRUNJQUxfQ0hBUlNfVE9fRU5USVRJRVNbeC5ncm91cCgwKVswXV0gKyAiOyIKIAotICAgIGRl
ZiBfX3VuaWNvZGVfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZGVjb2RlKCkKLQotICAg
IGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5lbmNvZGUoKQorICAgIGRl
ZiBfX3N0cl9fKHNlbGYsIGVuY29kaW5nPURFRkFVTFRfT1VUUFVUX0VOQ09ESU5HLAorICAgICAg
ICAgICAgICAgIHByZXR0eVByaW50PUZhbHNlLCBpbmRlbnRMZXZlbD0wKToKKyAgICAgICAgIiIi
UmV0dXJucyBhIHN0cmluZyBvciBVbmljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdGFnIGFu
ZAorICAgICAgICBpdHMgY29udGVudHMuIFRvIGdldCBVbmljb2RlLCBwYXNzIE5vbmUgZm9yIGVu
Y29kaW5nLgogCi0gICAgZGVmIGVuY29kZShzZWxmLCBlbmNvZGluZz1ERUZBVUxUX09VVFBVVF9F
TkNPRElORywKLSAgICAgICAgICAgICAgIHByZXR0eVByaW50PUZhbHNlLCBpbmRlbnRMZXZlbD0w
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuZGVjb2RlKHByZXR0eVByaW50LCBpbmRlbnRMZXZlbCwg
ZW5jb2RpbmcpLmVuY29kZShlbmNvZGluZykKKyAgICAgICAgTk9URTogc2luY2UgUHl0aG9uJ3Mg
SFRNTCBwYXJzZXIgY29uc3VtZXMgd2hpdGVzcGFjZSwgdGhpcworICAgICAgICBtZXRob2QgaXMg
bm90IGNlcnRhaW4gdG8gcmVwcm9kdWNlIHRoZSB3aGl0ZXNwYWNlIHByZXNlbnQgaW4KKyAgICAg
ICAgdGhlIG9yaWdpbmFsIHN0cmluZy4iIiIKIAotICAgIGRlZiBkZWNvZGUoc2VsZiwgcHJldHR5
UHJpbnQ9RmFsc2UsIGluZGVudExldmVsPTAsCi0gICAgICAgICAgICAgICBldmVudHVhbEVuY29k
aW5nPURFRkFVTFRfT1VUUFVUX0VOQ09ESU5HKToKLSAgICAgICAgIiIiUmV0dXJucyBhIHN0cmlu
ZyBvciBVbmljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdGFnIGFuZAotICAgICAgICBpdHMg
Y29udGVudHMuIFRvIGdldCBVbmljb2RlLCBwYXNzIE5vbmUgZm9yIGVuY29kaW5nLiIiIgorICAg
ICAgICBlbmNvZGVkTmFtZSA9IHNlbGYudG9FbmNvZGluZyhzZWxmLm5hbWUsIGVuY29kaW5nKQog
CiAgICAgICAgIGF0dHJzID0gW10KICAgICAgICAgaWYgc2VsZi5hdHRyczoKICAgICAgICAgICAg
IGZvciBrZXksIHZhbCBpbiBzZWxmLmF0dHJzOgogICAgICAgICAgICAgICAgIGZtdCA9ICclcz0i
JXMiJwotICAgICAgICAgICAgICAgIGlmIGlzU3RyaW5nKHZhbCk6Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChzZWxmLmNvbnRhaW5zU3Vic3RpdHV0aW9ucwotICAgICAgICAgICAgICAgICAgICAg
ICAgYW5kIGV2ZW50dWFsRW5jb2RpbmcgaXMgbm90IE5vbmUKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGFuZCAnJVNPVVAtRU5DT0RJTkclJyBpbiB2YWwpOgotICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsID0gc2VsZi5zdWJzdGl0dXRlRW5jb2RpbmcodmFsLCBldmVudHVhbEVuY29kaW5nKQor
ICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsLCBiYXNlc3RyaW5nKToKKyAgICAgICAg
ICAgICAgICAgICAgaWYgc2VsZi5jb250YWluc1N1YnN0aXR1dGlvbnMgYW5kICclU09VUC1FTkNP
RElORyUnIGluIHZhbDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IHNlbGYuc3Vic3Rp
dHV0ZUVuY29kaW5nKHZhbCwgZW5jb2RpbmcpCiAKICAgICAgICAgICAgICAgICAgICAgIyBUaGUg
YXR0cmlidXRlIHZhbHVlIGVpdGhlcjoKICAgICAgICAgICAgICAgICAgICAgIwpAQCAtNjc3LDI2
ICs3MzYsMjIgQEAgY2xhc3MgVGFnKFBhZ2VFbGVtZW50KToKICAgICAgICAgICAgICAgICAgICAg
IyBhbXBlcnNhbmRzIHRoYXQgYXJlbid0IHBhcnQgb2YgZW50aXRpZXMuIFdlIG5lZWQKICAgICAg
ICAgICAgICAgICAgICAgIyB0byBlc2NhcGUgdGhvc2UgdG8gWE1MIGVudGl0aWVzIHRvby4KICAg
ICAgICAgICAgICAgICAgICAgdmFsID0gc2VsZi5CQVJFX0FNUEVSU0FORF9PUl9CUkFDS0VULnN1
YihzZWxmLl9zdWJfZW50aXR5LCB2YWwpCi0gICAgICAgICAgICAgICAgaWYgdmFsIGlzIE5vbmU6
Ci0gICAgICAgICAgICAgICAgICAgICMgSGFuZGxlIGJvb2xlYW4gYXR0cmlidXRlcy4KLSAgICAg
ICAgICAgICAgICAgICAgZGVjb2RlZCA9IGtleQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgICAgIGRlY29kZWQgPSBmbXQgJSAoa2V5LCB2YWwpCi0gICAgICAgICAgICAg
ICAgYXR0cnMuYXBwZW5kKGRlY29kZWQpCisKKyAgICAgICAgICAgICAgICBhdHRycy5hcHBlbmQo
Zm10ICUgKHNlbGYudG9FbmNvZGluZyhrZXksIGVuY29kaW5nKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYudG9FbmNvZGluZyh2YWwsIGVuY29kaW5nKSkpCiAgICAg
ICAgIGNsb3NlID0gJycKICAgICAgICAgY2xvc2VUYWcgPSAnJwogICAgICAgICBpZiBzZWxmLmlz
U2VsZkNsb3Npbmc6CiAgICAgICAgICAgICBjbG9zZSA9ICcgLycKICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIGNsb3NlVGFnID0gJzwvJXM+JyAlIHNlbGYubmFtZQorICAgICAgICAgICAgY2xv
c2VUYWcgPSAnPC8lcz4nICUgZW5jb2RlZE5hbWUKIAogICAgICAgICBpbmRlbnRUYWcsIGluZGVu
dENvbnRlbnRzID0gMCwgMAogICAgICAgICBpZiBwcmV0dHlQcmludDoKICAgICAgICAgICAgIGlu
ZGVudFRhZyA9IGluZGVudExldmVsCiAgICAgICAgICAgICBzcGFjZSA9ICgnICcgKiAoaW5kZW50
VGFnLTEpKQogICAgICAgICAgICAgaW5kZW50Q29udGVudHMgPSBpbmRlbnRUYWcgKyAxCi0gICAg
ICAgIGNvbnRlbnRzID0gc2VsZi5kZWNvZGVDb250ZW50cyhwcmV0dHlQcmludCwgaW5kZW50Q29u
dGVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHVhbEVu
Y29kaW5nKQorICAgICAgICBjb250ZW50cyA9IHNlbGYucmVuZGVyQ29udGVudHMoZW5jb2Rpbmcs
IHByZXR0eVByaW50LCBpbmRlbnRDb250ZW50cykKICAgICAgICAgaWYgc2VsZi5oaWRkZW46CiAg
ICAgICAgICAgICBzID0gY29udGVudHMKICAgICAgICAgZWxzZToKQEAgLTcwNiw3ICs3NjEsNyBA
QCBjbGFzcyBUYWcoUGFnZUVsZW1lbnQpOgogICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVN0cmlu
ZyA9ICcgJyArICcgJy5qb2luKGF0dHJzKQogICAgICAgICAgICAgaWYgcHJldHR5UHJpbnQ6CiAg
ICAgICAgICAgICAgICAgcy5hcHBlbmQoc3BhY2UpCi0gICAgICAgICAgICBzLmFwcGVuZCgnPCVz
JXMlcz4nICUgKHNlbGYubmFtZSwgYXR0cmlidXRlU3RyaW5nLCBjbG9zZSkpCisgICAgICAgICAg
ICBzLmFwcGVuZCgnPCVzJXMlcz4nICUgKGVuY29kZWROYW1lLCBhdHRyaWJ1dGVTdHJpbmcsIGNs
b3NlKSkKICAgICAgICAgICAgIGlmIHByZXR0eVByaW50OgogICAgICAgICAgICAgICAgIHMuYXBw
ZW5kKCJcbiIpCiAgICAgICAgICAgICBzLmFwcGVuZChjb250ZW50cykKQEAgLTcyMiwzMiArNzc3
LDM1IEBAIGNsYXNzIFRhZyhQYWdlRWxlbWVudCk6CiAKICAgICBkZWYgZGVjb21wb3NlKHNlbGYp
OgogICAgICAgICAiIiJSZWN1cnNpdmVseSBkZXN0cm95cyB0aGUgY29udGVudHMgb2YgdGhpcyB0
cmVlLiIiIgotICAgICAgICBjb250ZW50cyA9IFtpIGZvciBpIGluIHNlbGYuY29udGVudHNdCi0g
ICAgICAgIGZvciBpIGluIGNvbnRlbnRzOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpLCBU
YWcpOgotICAgICAgICAgICAgICAgIGkuZGVjb21wb3NlKCkKLSAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgaS5leHRyYWN0KCkKICAgICAgICAgc2VsZi5leHRyYWN0KCkKKyAgICAg
ICAgaWYgbGVuKHNlbGYuY29udGVudHMpID09IDA6CisgICAgICAgICAgICByZXR1cm4KKyAgICAg
ICAgY3VycmVudCA9IHNlbGYuY29udGVudHNbMF0KKyAgICAgICAgd2hpbGUgY3VycmVudCBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIG5leHQgPSBjdXJyZW50Lm5leHQKKyAgICAgICAgICAgIGlm
IGlzaW5zdGFuY2UoY3VycmVudCwgVGFnKToKKyAgICAgICAgICAgICAgICBkZWwgY3VycmVudC5j
b250ZW50c1s6XQorICAgICAgICAgICAgY3VycmVudC5wYXJlbnQgPSBOb25lCisgICAgICAgICAg
ICBjdXJyZW50LnByZXZpb3VzID0gTm9uZQorICAgICAgICAgICAgY3VycmVudC5wcmV2aW91c1Np
YmxpbmcgPSBOb25lCisgICAgICAgICAgICBjdXJyZW50Lm5leHQgPSBOb25lCisgICAgICAgICAg
ICBjdXJyZW50Lm5leHRTaWJsaW5nID0gTm9uZQorICAgICAgICAgICAgY3VycmVudCA9IG5leHQK
IAogICAgIGRlZiBwcmV0dGlmeShzZWxmLCBlbmNvZGluZz1ERUZBVUxUX09VVFBVVF9FTkNPRElO
Ryk6Ci0gICAgICAgIHJldHVybiBzZWxmLmVuY29kZShlbmNvZGluZywgVHJ1ZSkKKyAgICAgICAg
cmV0dXJuIHNlbGYuX19zdHJfXyhlbmNvZGluZywgVHJ1ZSkKIAotICAgIGRlZiBlbmNvZGVDb250
ZW50cyhzZWxmLCBlbmNvZGluZz1ERUZBVUxUX09VVFBVVF9FTkNPRElORywKKyAgICBkZWYgcmVu
ZGVyQ29udGVudHMoc2VsZiwgZW5jb2Rpbmc9REVGQVVMVF9PVVRQVVRfRU5DT0RJTkcsCiAgICAg
ICAgICAgICAgICAgICAgICAgIHByZXR0eVByaW50PUZhbHNlLCBpbmRlbnRMZXZlbD0wKToKLSAg
ICAgICAgcmV0dXJuIHNlbGYuZGVjb2RlQ29udGVudHMocHJldHR5UHJpbnQsIGluZGVudExldmVs
KS5lbmNvZGUoZW5jb2RpbmcpCi0KLSAgICBkZWYgZGVjb2RlQ29udGVudHMoc2VsZiwgcHJldHR5
UHJpbnQ9RmFsc2UsIGluZGVudExldmVsPTAsCi0gICAgICAgICAgICAgICAgICAgICAgIGV2ZW50
dWFsRW5jb2Rpbmc9REVGQVVMVF9PVVRQVVRfRU5DT0RJTkcpOgogICAgICAgICAiIiJSZW5kZXJz
IHRoZSBjb250ZW50cyBvZiB0aGlzIHRhZyBhcyBhIHN0cmluZyBpbiB0aGUgZ2l2ZW4KICAgICAg
ICAgZW5jb2RpbmcuIElmIGVuY29kaW5nIGlzIE5vbmUsIHJldHVybnMgYSBVbmljb2RlIHN0cmlu
Zy4uIiIiCiAgICAgICAgIHM9W10KICAgICAgICAgZm9yIGMgaW4gc2VsZjoKICAgICAgICAgICAg
IHRleHQgPSBOb25lCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGMsIE5hdmlnYWJsZVN0cmlu
Zyk6Ci0gICAgICAgICAgICAgICAgdGV4dCA9IGMuZGVjb2RlR2l2ZW5FdmVudHVhbEVuY29kaW5n
KGV2ZW50dWFsRW5jb2RpbmcpCisgICAgICAgICAgICAgICAgdGV4dCA9IGMuX19zdHJfXyhlbmNv
ZGluZykKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShjLCBUYWcpOgotICAgICAgICAgICAg
ICAgIHMuYXBwZW5kKGMuZGVjb2RlKHByZXR0eVByaW50LCBpbmRlbnRMZXZlbCwgZXZlbnR1YWxF
bmNvZGluZykpCisgICAgICAgICAgICAgICAgcy5hcHBlbmQoYy5fX3N0cl9fKGVuY29kaW5nLCBw
cmV0dHlQcmludCwgaW5kZW50TGV2ZWwpKQogICAgICAgICAgICAgaWYgdGV4dCBhbmQgcHJldHR5
UHJpbnQ6CiAgICAgICAgICAgICAgICAgdGV4dCA9IHRleHQuc3RyaXAoKQogICAgICAgICAgICAg
aWYgdGV4dDoKQEAgLTc4OCw3ICs4NDYsNyBAQCBjbGFzcyBUYWcoUGFnZUVsZW1lbnQpOgogICAg
ICAgICByZXR1cm4gc2VsZi5fZmluZEFsbChuYW1lLCBhdHRycywgdGV4dCwgbGltaXQsIGdlbmVy
YXRvciwgKiprd2FyZ3MpCiAgICAgZmluZENoaWxkcmVuID0gZmluZEFsbAogCi0gICAgIyBQcmUt
My54IGNvbXBhdGliaWxpdHkgbWV0aG9kcy4gV2lsbCBnbyBhd2F5IGluIDQuMC4KKyAgICAjIFBy
ZS0zLnggY29tcGF0aWJpbGl0eSBtZXRob2RzCiAgICAgZmlyc3QgPSBmaW5kCiAgICAgZmV0Y2gg
PSBmaW5kQWxsCiAKQEAgLTc5OCwxNSArODU2LDYgQEAgY2xhc3MgVGFnKFBhZ2VFbGVtZW50KToK
ICAgICBkZWYgZmlyc3RUZXh0KHNlbGYsIHRleHQ9Tm9uZSwgcmVjdXJzaXZlPVRydWUpOgogICAg
ICAgICByZXR1cm4gc2VsZi5maW5kKHRleHQ9dGV4dCwgcmVjdXJzaXZlPXJlY3Vyc2l2ZSkKIAot
ICAgICMgMy54IGNvbXBhdGliaWxpdHkgbWV0aG9kcy4gV2lsbCBnbyBhd2F5IGluIDQuMC4KLSAg
ICBkZWYgcmVuZGVyQ29udGVudHMoc2VsZiwgZW5jb2Rpbmc9REVGQVVMVF9PVVRQVVRfRU5DT0RJ
TkcsCi0gICAgICAgICAgICAgICAgICAgICAgIHByZXR0eVByaW50PUZhbHNlLCBpbmRlbnRMZXZl
bD0wKToKLSAgICAgICAgaWYgZW5jb2RpbmcgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBz
ZWxmLmRlY29kZUNvbnRlbnRzKHByZXR0eVByaW50LCBpbmRlbnRMZXZlbCwgZW5jb2RpbmcpCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5lbmNvZGVDb250ZW50cyhlbmNv
ZGluZywgcHJldHR5UHJpbnQsIGluZGVudExldmVsKQotCi0KICAgICAjUHJpdmF0ZSBtZXRob2Rz
CiAKICAgICBkZWYgX2dldEF0dHJNYXAoc2VsZik6CkBAIC04MTksNiArODY4LDEwIEBAIGNsYXNz
IFRhZyhQYWdlRWxlbWVudCk6CiAgICAgICAgIHJldHVybiBzZWxmLmF0dHJNYXAKIAogICAgICNH
ZW5lcmF0b3IgbWV0aG9kcworICAgIGRlZiBjaGlsZEdlbmVyYXRvcihzZWxmKToKKyAgICAgICAg
IyBKdXN0IHVzZSB0aGUgaXRlcmF0b3IgZnJvbSB0aGUgY29udGVudHMKKyAgICAgICAgcmV0dXJu
IGl0ZXIoc2VsZi5jb250ZW50cykKKwogICAgIGRlZiByZWN1cnNpdmVDaGlsZEdlbmVyYXRvcihz
ZWxmKToKICAgICAgICAgaWYgbm90IGxlbihzZWxmLmNvbnRlbnRzKToKICAgICAgICAgICAgIHJh
aXNlIFN0b3BJdGVyYXRpb24KQEAgLTgyOCwxNCArODgxLDYgQEAgY2xhc3MgVGFnKFBhZ2VFbGVt
ZW50KToKICAgICAgICAgICAgIHlpZWxkIGN1cnJlbnQKICAgICAgICAgICAgIGN1cnJlbnQgPSBj
dXJyZW50Lm5leHQKIAotICAgIGRlZiBjaGlsZEdlbmVyYXRvcihzZWxmKToKLSAgICAgICAgaWYg
bm90IGxlbihzZWxmLmNvbnRlbnRzKToKLSAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24K
LSAgICAgICAgY3VycmVudCA9IHNlbGYuY29udGVudHNbMF0KLSAgICAgICAgd2hpbGUgY3VycmVu
dDoKLSAgICAgICAgICAgIHlpZWxkIGN1cnJlbnQKLSAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJy
ZW50Lm5leHRTaWJsaW5nCi0gICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KIAogIyBOZXh0LCBh
IGNvdXBsZSBjbGFzc2VzIHRvIHJlcHJlc2VudCBxdWVyaWVzIGFuZCB0aGVpciByZXN1bHRzLgog
Y2xhc3MgU291cFN0cmFpbmVyOgpAQCAtODQ0LDggKzg4OSw4IEBAIGNsYXNzIFNvdXBTdHJhaW5l
cjoKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lPU5vbmUsIGF0dHJzPXt9LCB0ZXh0PU5v
bmUsICoqa3dhcmdzKToKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBpZiBpc1N0
cmluZyhhdHRycyk6Ci0gICAgICAgICAgICBrd2FyZ3NbJ2NsYXNzJ10gPSBhdHRycworICAgICAg
ICBpZiBpc2luc3RhbmNlKGF0dHJzLCBiYXNlc3RyaW5nKToKKyAgICAgICAgICAgIGt3YXJnc1sn
Y2xhc3MnXSA9IF9tYXRjaF9jc3NfY2xhc3MoYXR0cnMpCiAgICAgICAgICAgICBhdHRycyA9IE5v
bmUKICAgICAgICAgaWYga3dhcmdzOgogICAgICAgICAgICAgaWYgYXR0cnM6CkBAIC05MDQsNyAr
OTQ5LDggQEAgY2xhc3MgU291cFN0cmFpbmVyOgogICAgICAgICBmb3VuZCA9IE5vbmUKICAgICAg
ICAgIyBJZiBnaXZlbiBhIGxpc3Qgb2YgaXRlbXMsIHNjYW4gaXQgZm9yIGEgdGV4dCBlbGVtZW50
IHRoYXQKICAgICAgICAgIyBtYXRjaGVzLgotICAgICAgICBpZiBpc0xpc3QobWFya3VwKSBhbmQg
bm90IGlzaW5zdGFuY2UobWFya3VwLCBUYWcpOgorICAgICAgICBpZiBoYXNhdHRyKG1hcmt1cCwg
Il9faXRlcl9fIikgXAorICAgICAgICAgICAgICAgIGFuZCBub3QgaXNpbnN0YW5jZShtYXJrdXAs
IFRhZyk6CiAgICAgICAgICAgICBmb3IgZWxlbWVudCBpbiBtYXJrdXA6CiAgICAgICAgICAgICAg
ICAgaWYgaXNpbnN0YW5jZShlbGVtZW50LCBOYXZpZ2FibGVTdHJpbmcpIFwKICAgICAgICAgICAg
ICAgICAgICAgICAgYW5kIHNlbGYuc2VhcmNoKGVsZW1lbnQpOgpAQCAtOTE3LDcgKzk2Myw3IEBA
IGNsYXNzIFNvdXBTdHJhaW5lcjoKICAgICAgICAgICAgICAgICBmb3VuZCA9IHNlbGYuc2VhcmNo
VGFnKG1hcmt1cCkKICAgICAgICAgIyBJZiBpdCdzIHRleHQsIG1ha2Ugc3VyZSB0aGUgdGV4dCBt
YXRjaGVzLgogICAgICAgICBlbGlmIGlzaW5zdGFuY2UobWFya3VwLCBOYXZpZ2FibGVTdHJpbmcp
IG9yIFwKLSAgICAgICAgICAgICAgICAgaXNTdHJpbmcobWFya3VwKToKKyAgICAgICAgICAgICAg
ICAgaXNpbnN0YW5jZShtYXJrdXAsIGJhc2VzdHJpbmcpOgogICAgICAgICAgICAgaWYgc2VsZi5f
bWF0Y2hlcyhtYXJrdXAsIHNlbGYudGV4dCk6CiAgICAgICAgICAgICAgICAgZm91bmQgPSBtYXJr
dXAKICAgICAgICAgZWxzZToKQEAgLTkyOCw4ICs5NzQsOCBAQCBjbGFzcyBTb3VwU3RyYWluZXI6
CiAgICAgZGVmIF9tYXRjaGVzKHNlbGYsIG1hcmt1cCwgbWF0Y2hBZ2FpbnN0KToKICAgICAgICAg
I3ByaW50ICJNYXRjaGluZyAlcyBhZ2FpbnN0ICVzIiAlIChtYXJrdXAsIG1hdGNoQWdhaW5zdCkK
ICAgICAgICAgcmVzdWx0ID0gRmFsc2UKLSAgICAgICAgaWYgbWF0Y2hBZ2FpbnN0ID09IFRydWUg
YW5kIHR5cGUobWF0Y2hBZ2FpbnN0KSA9PSB0eXBlcy5Cb29sZWFuVHlwZToKLSAgICAgICAgICAg
IHJlc3VsdCA9IG1hcmt1cCAhPSBOb25lCisgICAgICAgIGlmIG1hdGNoQWdhaW5zdCBpcyBUcnVl
OgorICAgICAgICAgICAgcmVzdWx0ID0gbWFya3VwIGlzIG5vdCBOb25lCiAgICAgICAgIGVsaWYg
Y2FsbGFibGUobWF0Y2hBZ2FpbnN0KToKICAgICAgICAgICAgIHJlc3VsdCA9IG1hdGNoQWdhaW5z
dChtYXJrdXApCiAgICAgICAgIGVsc2U6CkBAIC05MzcsMTggKzk4MywxNyBAQCBjbGFzcyBTb3Vw
U3RyYWluZXI6CiAgICAgICAgICAgICAjb3RoZXIgd2F5cyBvZiBtYXRjaGluZyBtYXRjaCB0aGUg
dGFnIG5hbWUgYXMgYSBzdHJpbmcuCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG1hcmt1cCwg
VGFnKToKICAgICAgICAgICAgICAgICBtYXJrdXAgPSBtYXJrdXAubmFtZQotICAgICAgICAgICAg
aWYgbWFya3VwIGlzIG5vdCBOb25lIGFuZCBub3QgaXNTdHJpbmcobWFya3VwKToKKyAgICAgICAg
ICAgIGlmIG1hcmt1cCBhbmQgbm90IGlzaW5zdGFuY2UobWFya3VwLCBiYXNlc3RyaW5nKToKICAg
ICAgICAgICAgICAgICBtYXJrdXAgPSB1bmljb2RlKG1hcmt1cCkKICAgICAgICAgICAgICNOb3cg
d2Uga25vdyB0aGF0IGNodW5rIGlzIGVpdGhlciBhIHN0cmluZywgb3IgTm9uZS4KICAgICAgICAg
ICAgIGlmIGhhc2F0dHIobWF0Y2hBZ2FpbnN0LCAnbWF0Y2gnKToKICAgICAgICAgICAgICAgICAj
IEl0J3MgYSByZWdleHAgb2JqZWN0LgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1hcmt1cCBh
bmQgbWF0Y2hBZ2FpbnN0LnNlYXJjaChtYXJrdXApCi0gICAgICAgICAgICBlbGlmIChpc0xpc3Qo
bWF0Y2hBZ2FpbnN0KQotICAgICAgICAgICAgICAgICAgYW5kIChtYXJrdXAgaXMgbm90IE5vbmUg
b3Igbm90IGlzU3RyaW5nKG1hdGNoQWdhaW5zdCkpKToKKyAgICAgICAgICAgIGVsaWYgaGFzYXR0
cihtYXRjaEFnYWluc3QsICdfX2l0ZXJfXycpOiAjIGxpc3QtbGlrZQogICAgICAgICAgICAgICAg
IHJlc3VsdCA9IG1hcmt1cCBpbiBtYXRjaEFnYWluc3QKICAgICAgICAgICAgIGVsaWYgaGFzYXR0
cihtYXRjaEFnYWluc3QsICdpdGVtcycpOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1hcmt1
cC5oYXNfa2V5KG1hdGNoQWdhaW5zdCkKLSAgICAgICAgICAgIGVsaWYgbWF0Y2hBZ2FpbnN0IGFu
ZCBpc1N0cmluZyhtYXJrdXApOgorICAgICAgICAgICAgZWxpZiBtYXRjaEFnYWluc3QgYW5kIGlz
aW5zdGFuY2UobWFya3VwLCBiYXNlc3RyaW5nKToKICAgICAgICAgICAgICAgICBpZiBpc2luc3Rh
bmNlKG1hcmt1cCwgdW5pY29kZSk6CiAgICAgICAgICAgICAgICAgICAgIG1hdGNoQWdhaW5zdCA9
IHVuaWNvZGUobWF0Y2hBZ2FpbnN0KQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC05NjcsMjAg
KzEwMTIsNiBAQCBjbGFzcyBSZXN1bHRTZXQobGlzdCk6CiAKICMgTm93LCBzb21lIGhlbHBlciBm
dW5jdGlvbnMuCiAKLWRlZiBpc0xpc3QobCk6Ci0gICAgIiIiQ29udmVuaWVuY2UgbWV0aG9kIHRo
YXQgd29ya3Mgd2l0aCBhbGwgMi54IHZlcnNpb25zIG9mIFB5dGhvbgotICAgIHRvIGRldGVybWlu
ZSB3aGV0aGVyIG9yIG5vdCBzb21ldGhpbmcgaXMgbGlzdGxpa2UuIiIiCi0gICAgcmV0dXJuICgo
aGFzYXR0cihsLCAnX19pdGVyX18nKSBhbmQgbm90IGlzU3RyaW5nKGwpKQotICAgICAgICAgICAg
b3IgKHR5cGUobCkgaW4gKHR5cGVzLkxpc3RUeXBlLCB0eXBlcy5UdXBsZVR5cGUpKSkKLQotZGVm
IGlzU3RyaW5nKHMpOgotICAgICIiIkNvbnZlbmllbmNlIG1ldGhvZCB0aGF0IHdvcmtzIHdpdGgg
YWxsIDIueCB2ZXJzaW9ucyBvZiBQeXRob24KLSAgICB0byBkZXRlcm1pbmUgd2hldGhlciBvciBu
b3Qgc29tZXRoaW5nIGlzIHN0cmluZ2xpa2UuIiIiCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4g
aXNpbnN0YW5jZShzLCB1bmljb2RlKSBvciBpc2luc3RhbmNlKHMsIGJhc2VzdHJpbmcpCi0gICAg
ZXhjZXB0IE5hbWVFcnJvcjoKLSAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uocywgc3RyKQotCiBk
ZWYgYnVpbGRUYWdNYXAoZGVmYXVsdCwgKmFyZ3MpOgogICAgICIiIlR1cm5zIGEgbGlzdCBvZiBt
YXBzLCBsaXN0cywgb3Igc2NhbGFycyBpbnRvIGEgc2luZ2xlIG1hcC4KICAgICBVc2VkIHRvIGJ1
aWxkIHRoZSBTRUxGX0NMT1NJTkdfVEFHUywgTkVTVEFCTEVfVEFHUywgYW5kCkBAIC05OTEsNyAr
MTAyMiw3IEBAIGRlZiBidWlsZFRhZ01hcChkZWZhdWx0LCAqYXJncyk6CiAgICAgICAgICAgICAj
SXQncyBhIG1hcC4gTWVyZ2UgaXQuCiAgICAgICAgICAgICBmb3Igayx2IGluIHBvcnRpb24uaXRl
bXMoKToKICAgICAgICAgICAgICAgICBidWlsdFtrXSA9IHYKLSAgICAgICAgZWxpZiBpc0xpc3Qo
cG9ydGlvbikgYW5kIG5vdCBpc1N0cmluZyhwb3J0aW9uKToKKyAgICAgICAgZWxpZiBoYXNhdHRy
KHBvcnRpb24sICdfX2l0ZXJfXycpOiAjIGlzIGEgbGlzdAogICAgICAgICAgICAgI0l0J3MgYSBs
aXN0LiBNYXAgZWFjaCBpdGVtIHRvIHRoZSBkZWZhdWx0LgogICAgICAgICAgICAgZm9yIGsgaW4g
cG9ydGlvbjoKICAgICAgICAgICAgICAgICBidWlsdFtrXSA9IGRlZmF1bHQKQEAgLTEwMDIsMTIy
ICsxMDMzLDcgQEAgZGVmIGJ1aWxkVGFnTWFwKGRlZmF1bHQsICphcmdzKToKIAogIyBOb3csIHRo
ZSBwYXJzZXIgY2xhc3Nlcy4KIAotY2xhc3MgSFRNTFBhcnNlckJ1aWxkZXIoSFRNTFBhcnNlcik6
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc291cCk6Ci0gICAgICAgIEhUTUxQYXJzZXIuX19p
bml0X18oc2VsZikKLSAgICAgICAgc2VsZi5zb3VwID0gc291cAotCi0gICAgIyBXZSBpbmhlcml0
IGZlZWQoKSBhbmQgcmVzZXQoKS4KLQotICAgIGRlZiBoYW5kbGVfc3RhcnR0YWcoc2VsZiwgbmFt
ZSwgYXR0cnMpOgotICAgICAgICBpZiBuYW1lID09ICdtZXRhJzoKLSAgICAgICAgICAgIHNlbGYu
c291cC5leHRyYWN0Q2hhcnNldEZyb21NZXRhKGF0dHJzKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgc2VsZi5zb3VwLnVua25vd25fc3RhcnR0YWcobmFtZSwgYXR0cnMpCi0KLSAgICBkZWYg
aGFuZGxlX2VuZHRhZyhzZWxmLCBuYW1lKToKLSAgICAgICAgc2VsZi5zb3VwLnVua25vd25fZW5k
dGFnKG5hbWUpCi0KLSAgICBkZWYgaGFuZGxlX2RhdGEoc2VsZiwgY29udGVudCk6Ci0gICAgICAg
IHNlbGYuc291cC5oYW5kbGVfZGF0YShjb250ZW50KQotCi0gICAgZGVmIF90b1N0cmluZ1N1YmNs
YXNzKHNlbGYsIHRleHQsIHN1YmNsYXNzKToKLSAgICAgICAgIiIiQWRkcyBhIGNlcnRhaW4gcGll
Y2Ugb2YgdGV4dCB0byB0aGUgdHJlZSBhcyBhIE5hdmlnYWJsZVN0cmluZwotICAgICAgICBzdWJj
bGFzcy4iIiIKLSAgICAgICAgc2VsZi5zb3VwLmVuZERhdGEoKQotICAgICAgICBzZWxmLmhhbmRs
ZV9kYXRhKHRleHQpCi0gICAgICAgIHNlbGYuc291cC5lbmREYXRhKHN1YmNsYXNzKQotCi0gICAg
ZGVmIGhhbmRsZV9waShzZWxmLCB0ZXh0KToKLSAgICAgICAgIiIiSGFuZGxlIGEgcHJvY2Vzc2lu
ZyBpbnN0cnVjdGlvbiBhcyBhIFByb2Nlc3NpbmdJbnN0cnVjdGlvbgotICAgICAgICBvYmplY3Qs
IHBvc3NpYmx5IG9uZSB3aXRoIGEgJVNPVVAtRU5DT0RJTkclIHNsb3QgaW50byB3aGljaCBhbgot
ICAgICAgICBlbmNvZGluZyB3aWxsIGJlIHBsdWdnZWQgbGF0ZXIuIiIiCi0gICAgICAgIGlmIHRl
eHRbOjNdID09ICJ4bWwiOgotICAgICAgICAgICAgdGV4dCA9IHUieG1sIHZlcnNpb249JzEuMCcg
ZW5jb2Rpbmc9JyVTT1VQLUVOQ09ESU5HJSciCi0gICAgICAgIHNlbGYuX3RvU3RyaW5nU3ViY2xh
c3ModGV4dCwgUHJvY2Vzc2luZ0luc3RydWN0aW9uKQotCi0gICAgZGVmIGhhbmRsZV9jb21tZW50
KHNlbGYsIHRleHQpOgotICAgICAgICAiSGFuZGxlIGNvbW1lbnRzIGFzIENvbW1lbnQgb2JqZWN0
cy4iCi0gICAgICAgIHNlbGYuX3RvU3RyaW5nU3ViY2xhc3ModGV4dCwgQ29tbWVudCkKLQotICAg
IGRlZiBoYW5kbGVfY2hhcnJlZihzZWxmLCByZWYpOgotICAgICAgICAiSGFuZGxlIGNoYXJhY3Rl
ciByZWZlcmVuY2VzIGFzIGRhdGEuIgotICAgICAgICBpZiBzZWxmLnNvdXAuY29udmVydEVudGl0
aWVzOgotICAgICAgICAgICAgZGF0YSA9IHVuaWNocihpbnQocmVmKSkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIGRhdGEgPSAnJiMlczsnICUgcmVmCi0gICAgICAgIHNlbGYuaGFuZGxlX2Rh
dGEoZGF0YSkKLQotICAgIGRlZiBoYW5kbGVfZW50aXR5cmVmKHNlbGYsIHJlZik6Ci0gICAgICAg
ICIiIkhhbmRsZSBlbnRpdHkgcmVmZXJlbmNlcyBhcyBkYXRhLCBwb3NzaWJseSBjb252ZXJ0aW5n
IGtub3duCi0gICAgICAgIEhUTUwgYW5kL29yIFhNTCBlbnRpdHkgcmVmZXJlbmNlcyB0byB0aGUg
Y29ycmVzcG9uZGluZyBVbmljb2RlCi0gICAgICAgIGNoYXJhY3RlcnMuIiIiCi0gICAgICAgIGRh
dGEgPSBOb25lCi0gICAgICAgIGlmIHNlbGYuc291cC5jb252ZXJ0SFRNTEVudGl0aWVzOgotICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRhdGEgPSB1bmljaHIobmFtZTJjb2RlcG9p
bnRbcmVmXSkKLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICBw
YXNzCi0KLSAgICAgICAgaWYgbm90IGRhdGEgYW5kIHNlbGYuc291cC5jb252ZXJ0WE1MRW50aXRp
ZXM6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuc291cC5YTUxfRU5USVRJRVNfVE9fU1BF
Q0lBTF9DSEFSUy5nZXQocmVmKQotCi0gICAgICAgIGlmIG5vdCBkYXRhIGFuZCBzZWxmLnNvdXAu
Y29udmVydEhUTUxFbnRpdGllcyBhbmQgXAotICAgICAgICAgICAgbm90IHNlbGYuc291cC5YTUxf
RU5USVRJRVNfVE9fU1BFQ0lBTF9DSEFSUy5nZXQocmVmKToKLSAgICAgICAgICAgICAgICAjIFRP
RE86IFdlJ3ZlIGdvdCBhIHByb2JsZW0gaGVyZS4gV2UncmUgdG9sZCB0aGlzIGlzCi0gICAgICAg
ICAgICAgICAgIyBhbiBlbnRpdHkgcmVmZXJlbmNlLCBidXQgaXQncyBub3QgYW4gWE1MIGVudGl0
eQotICAgICAgICAgICAgICAgICMgcmVmZXJlbmNlIG9yIGFuIEhUTUwgZW50aXR5IHJlZmVyZW5j
ZS4gTm9uZXRoZWxlc3MsCi0gICAgICAgICAgICAgICAgIyB0aGUgbG9naWNhbCB0aGluZyB0byBk
byBpcyB0byBwYXNzIGl0IHRocm91Z2ggYXMgYW4KLSAgICAgICAgICAgICAgICAjIHVucmVjb2du
aXplZCBlbnRpdHkgcmVmZXJlbmNlLgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAg
ICAjIEV4Y2VwdDogd2hlbiB0aGUgaW5wdXQgaXMgIiZjYXJvbDsiIHRoaXMgZnVuY3Rpb24KLSAg
ICAgICAgICAgICAgICAjIHdpbGwgYmUgY2FsbGVkIHdpdGggaW5wdXQgImNhcm9sIi4gV2hlbiB0
aGUgaW5wdXQgaXMKLSAgICAgICAgICAgICAgICAjICJBVCZUIiwgdGhpcyBmdW5jdGlvbiB3aWxs
IGJlIGNhbGxlZCB3aXRoIGlucHV0Ci0gICAgICAgICAgICAgICAgIyAiVCIuIFdlIGhhdmUgbm8g
d2F5IG9mIGtub3dpbmcgd2hldGhlciBhIHNlbWljb2xvbgotICAgICAgICAgICAgICAgICMgd2Fz
IHByZXNlbnQgb3JpZ2luYWxseSwgc28gd2UgZG9uJ3Qga25vdyB3aGV0aGVyCi0gICAgICAgICAg
ICAgICAgIyB0aGlzIGlzIGFuIHVua25vd24gZW50aXR5IG9yIGp1c3QgYSBtaXNwbGFjZWQKLSAg
ICAgICAgICAgICAgICAjIGFtcGVyc2FuZC4KLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAg
ICAgICAgIyBUaGUgbW9yZSBjb21tb24gY2FzZSBpcyBhIG1pc3BsYWNlZCBhbXBlcnNhbmQsIHNv
IEkKLSAgICAgICAgICAgICAgICAjIGVzY2FwZSB0aGUgYW1wZXJzYW5kIGFuZCBvbWl0IHRoZSB0
cmFpbGluZyBzZW1pY29sb24uCi0gICAgICAgICAgICAgICAgZGF0YSA9ICImYW1wOyVzIiAlIHJl
ZgotICAgICAgICBpZiBub3QgZGF0YToKLSAgICAgICAgICAgICMgVGhpcyBjYXNlIGlzIGRpZmZl
cmVudCBmcm9tIHRoZSBvbmUgYWJvdmUsIGJlY2F1c2Ugd2UKLSAgICAgICAgICAgICMgaGF2ZW4n
dCBhbHJlYWR5IGdvbmUgdGhyb3VnaCBhIHN1cHBvc2VkbHkgY29tcHJlaGVuc2l2ZQotICAgICAg
ICAgICAgIyBtYXBwaW5nIG9mIGVudGl0aWVzIHRvIFVuaWNvZGUgY2hhcmFjdGVycy4gV2UgbWln
aHQgbm90Ci0gICAgICAgICAgICAjIGhhdmUgZ29uZSB0aHJvdWdoIGFueSBtYXBwaW5nIGF0IGFs
bC4gU28gdGhlIGNoYW5jZXMgYXJlCi0gICAgICAgICAgICAjIHZlcnkgaGlnaCB0aGF0IHRoaXMg
aXMgYSByZWFsIGVudGl0eSwgYW5kIG5vdCBhCi0gICAgICAgICAgICAjIG1pc3BsYWNlZCBhbXBl
cnNhbmQuCi0gICAgICAgICAgICBkYXRhID0gIiYlczsiICUgcmVmCi0gICAgICAgIHNlbGYuaGFu
ZGxlX2RhdGEoZGF0YSkKLQotICAgIGRlZiBoYW5kbGVfZGVjbChzZWxmLCBkYXRhKToKLSAgICAg
ICAgIkhhbmRsZSBET0NUWVBFcyBhbmQgdGhlIGxpa2UgYXMgRGVjbGFyYXRpb24gb2JqZWN0cy4i
Ci0gICAgICAgIHNlbGYuX3RvU3RyaW5nU3ViY2xhc3MoZGF0YSwgRGVjbGFyYXRpb24pCi0KLSAg
ICBkZWYgcGFyc2VfZGVjbGFyYXRpb24oc2VsZiwgaSk6Ci0gICAgICAgICIiIlRyZWF0IGEgYm9n
dXMgU0dNTCBkZWNsYXJhdGlvbiBhcyByYXcgZGF0YS4gVHJlYXQgYSBDREFUQQotICAgICAgICBk
ZWNsYXJhdGlvbiBhcyBhIENEYXRhIG9iamVjdC4iIiIKLSAgICAgICAgaiA9IE5vbmUKLSAgICAg
ICAgaWYgc2VsZi5yYXdkYXRhW2k6aSs5XSA9PSAnPCFbQ0RBVEFbJzoKLSAgICAgICAgICAgICBr
ID0gc2VsZi5yYXdkYXRhLmZpbmQoJ11dPicsIGkpCi0gICAgICAgICAgICAgaWYgayA9PSAtMToK
LSAgICAgICAgICAgICAgICAgayA9IGxlbihzZWxmLnJhd2RhdGEpCi0gICAgICAgICAgICAgZGF0
YSA9IHNlbGYucmF3ZGF0YVtpKzk6a10KLSAgICAgICAgICAgICBqID0gayszCi0gICAgICAgICAg
ICAgc2VsZi5fdG9TdHJpbmdTdWJjbGFzcyhkYXRhLCBDRGF0YSkKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBqID0gSFRNTFBhcnNlci5wYXJzZV9kZWNs
YXJhdGlvbihzZWxmLCBpKQotICAgICAgICAgICAgZXhjZXB0IEhUTUxQYXJzZUVycm9yOgotICAg
ICAgICAgICAgICAgIHRvSGFuZGxlID0gc2VsZi5yYXdkYXRhW2k6XQotICAgICAgICAgICAgICAg
IHNlbGYuaGFuZGxlX2RhdGEodG9IYW5kbGUpCi0gICAgICAgICAgICAgICAgaiA9IGkgKyBsZW4o
dG9IYW5kbGUpCi0gICAgICAgIHJldHVybiBqCi0KLQotY2xhc3MgQmVhdXRpZnVsU3RvbmVTb3Vw
KFRhZyk6CitjbGFzcyBCZWF1dGlmdWxTdG9uZVNvdXAoVGFnLCBTR01MUGFyc2VyKToKIAogICAg
ICIiIlRoaXMgY2xhc3MgY29udGFpbnMgdGhlIGJhc2ljIHBhcnNlciBhbmQgc2VhcmNoIGNvZGUu
IEl0IGRlZmluZXMKICAgICBhIHBhcnNlciB0aGF0IGtub3dzIG5vdGhpbmcgYWJvdXQgdGFnIGJl
aGF2aW9yIGV4Y2VwdCBmb3IgdGhlCkBAIC0xMTYzLDE1ICsxMDc5LDE0IEBAIGNsYXNzIEJlYXV0
aWZ1bFN0b25lU291cChUYWcpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hcmt1cD0iIiwg
cGFyc2VPbmx5VGhlc2U9Tm9uZSwgZnJvbUVuY29kaW5nPU5vbmUsCiAgICAgICAgICAgICAgICAg
IG1hcmt1cE1hc3NhZ2U9VHJ1ZSwgc21hcnRRdW90ZXNUbz1YTUxfRU5USVRJRVMsCi0gICAgICAg
ICAgICAgICAgIGNvbnZlcnRFbnRpdGllcz1Ob25lLCBzZWxmQ2xvc2luZ1RhZ3M9Tm9uZSwgaXNI
VE1MPUZhbHNlLAotICAgICAgICAgICAgICAgICBidWlsZGVyPUhUTUxQYXJzZXJCdWlsZGVyKToK
KyAgICAgICAgICAgICAgICAgY29udmVydEVudGl0aWVzPU5vbmUsIHNlbGZDbG9zaW5nVGFncz1O
b25lLCBpc0hUTUw9RmFsc2UpOgogICAgICAgICAiIiJUaGUgU291cCBvYmplY3QgaXMgaW5pdGlh
bGl6ZWQgYXMgdGhlICdyb290IHRhZycsIGFuZCB0aGUKICAgICAgICAgcHJvdmlkZWQgbWFya3Vw
ICh3aGljaCBjYW4gYmUgYSBzdHJpbmcgb3IgYSBmaWxlLWxpa2Ugb2JqZWN0KQogICAgICAgICBp
cyBmZWQgaW50byB0aGUgdW5kZXJseWluZyBwYXJzZXIuCiAKLSAgICAgICAgSFRNTFBhcnNlciB3
aWxsIHByb2Nlc3MgbW9zdCBiYWQgSFRNTCwgYW5kIHRoZSBCZWF1dGlmdWxTb3VwCisgICAgICAg
IHNnbWxsaWIgd2lsbCBwcm9jZXNzIG1vc3QgYmFkIEhUTUwsIGFuZCB0aGUgQmVhdXRpZnVsU291
cAogICAgICAgICBjbGFzcyBoYXMgc29tZSB0cmlja3MgZm9yIGRlYWxpbmcgd2l0aCBzb21lIEhU
TUwgdGhhdCBraWxscwotICAgICAgICBIVE1MUGFyc2VyLCBidXQgQmVhdXRpZnVsIFNvdXAgY2Fu
IG5vbmV0aGVsZXNzIGNob2tlIG9yIGxvc2UgZGF0YQorICAgICAgICBzZ21sbGliLCBidXQgQmVh
dXRpZnVsIFNvdXAgY2FuIG5vbmV0aGVsZXNzIGNob2tlIG9yIGxvc2UgZGF0YQogICAgICAgICBp
ZiB5b3VyIGRhdGEgdXNlcyBzZWxmLWNsb3NpbmcgdGFncyBvciBkZWNsYXJhdGlvbnMKICAgICAg
ICAgaW5jb3JyZWN0bHkuCiAKQEAgLTExODEsNyArMTA5Niw3IEBAIGNsYXNzIEJlYXV0aWZ1bFN0
b25lU291cChUYWcpOgogICAgICAgICB5b3UnbGwgZ2V0IGJldHRlciBwZXJmb3JtYW5jZS4KIAog
ICAgICAgICBUaGUgZGVmYXVsdCBwYXJzZXIgbWFzc2FnZSB0ZWNobmlxdWVzIGZpeCB0aGUgdHdv
IG1vc3QgY29tbW9uCi0gICAgICAgIGluc3RhbmNlcyBvZiBpbnZhbGlkIEhUTUwgdGhhdCBjaG9r
ZSBIVE1MUGFyc2VyOgorICAgICAgICBpbnN0YW5jZXMgb2YgaW52YWxpZCBIVE1MIHRoYXQgY2hv
a2Ugc2dtbGxpYjoKIAogICAgICAgICAgPGJyLz4gKE5vIHNwYWNlIGJldHdlZW4gbmFtZSBvZiBj
bG9zaW5nIHRhZyBhbmQgdGFnIGNsb3NlKQogICAgICAgICAgPCEgLS1Db21tZW50LS0+IChFeHRy
YW5lb3VzIHdoaXRlc3BhY2UgaW4gZGVjbGFyYXRpb24pCkBAIC0xMjE5LDggKzExMzQsNyBAQCBj
bGFzcyBCZWF1dGlmdWxTdG9uZVNvdXAoVGFnKToKICAgICAgICAgICAgIHNlbGYuZXNjYXBlVW5y
ZWNvZ25pemVkRW50aXRpZXMgPSBGYWxzZQogCiAgICAgICAgIHNlbGYuaW5zdGFuY2VTZWxmQ2xv
c2luZ1RhZ3MgPSBidWlsZFRhZ01hcChOb25lLCBzZWxmQ2xvc2luZ1RhZ3MpCi0gICAgICAgIHNl
bGYuYnVpbGRlciA9IGJ1aWxkZXIoc2VsZikKLSAgICAgICAgc2VsZi5yZXNldCgpCisgICAgICAg
IFNHTUxQYXJzZXIuX19pbml0X18oc2VsZikKIAogICAgICAgICBpZiBoYXNhdHRyKG1hcmt1cCwg
J3JlYWQnKTogICAgICAgICMgSXQncyBhIGZpbGUtdHlwZSBvYmplY3QuCiAgICAgICAgICAgICBt
YXJrdXAgPSBtYXJrdXAucmVhZCgpCkBAIC0xMjMwLDggKzExNDQsMTcgQEAgY2xhc3MgQmVhdXRp
ZnVsU3RvbmVTb3VwKFRhZyk6CiAgICAgICAgICAgICBzZWxmLl9mZWVkKGlzSFRNTD1pc0hUTUwp
CiAgICAgICAgIGV4Y2VwdCBTdG9wUGFyc2luZzoKICAgICAgICAgICAgIHBhc3MKLSAgICAgICAg
c2VsZi5tYXJrdXAgPSBOb25lICAgICAgICAgICAgICAgICAjIFRoZSBtYXJrdXAgY2FuIG5vdyBi
ZSBHQ2VkLgotICAgICAgICBzZWxmLmJ1aWxkZXIgPSBOb25lICAgICAgICAgICAgICAgICMgU28g
Y2FuIHRoZSBidWlsZGVyLgorICAgICAgICBzZWxmLm1hcmt1cCA9IE5vbmUgICAgICAgICAgICAg
ICAgICMgVGhlIG1hcmt1cCBjYW4gbm93IGJlIEdDZWQKKworICAgIGRlZiBjb252ZXJ0X2NoYXJy
ZWYoc2VsZiwgbmFtZSk6CisgICAgICAgICIiIlRoaXMgbWV0aG9kIGZpeGVzIGEgYnVnIGluIFB5
dGhvbidzIFNHTUxQYXJzZXIuIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG4gPSBpbnQo
bmFtZSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgaWYgbm90IDAgPD0gbiA8PSAxMjcgOiAjIEFTQ0lJIGVuZHMgYXQgMTI3LCBub3QgMjU1
CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcmV0dXJuIHNlbGYuY29udmVydF9jb2RlcG9p
bnQobikKIAogICAgIGRlZiBfZmVlZChzZWxmLCBpbkRvY3VtZW50RW5jb2Rpbmc9Tm9uZSwgaXNI
VE1MPUZhbHNlKToKICAgICAgICAgIyBDb252ZXJ0IHRoZSBkb2N1bWVudCB0byBVbmljb2RlLgpA
QCAtMTI0OCw3ICsxMTcxLDcgQEAgY2xhc3MgQmVhdXRpZnVsU3RvbmVTb3VwKFRhZyk6CiAgICAg
ICAgICAgICBzZWxmLmRlY2xhcmVkSFRNTEVuY29kaW5nID0gZGFtbWl0LmRlY2xhcmVkSFRNTEVu
Y29kaW5nCiAgICAgICAgIGlmIG1hcmt1cDoKICAgICAgICAgICAgIGlmIHNlbGYubWFya3VwTWFz
c2FnZToKLSAgICAgICAgICAgICAgICBpZiBub3QgaXNMaXN0KHNlbGYubWFya3VwTWFzc2FnZSk6
CisgICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZi5tYXJrdXBNYXNzYWdlLCAiX19p
dGVyX18iKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXJrdXBNYXNzYWdlID0gc2VsZi5N
QVJLVVBfTUFTU0FHRQogICAgICAgICAgICAgICAgIGZvciBmaXgsIG0gaW4gc2VsZi5tYXJrdXBN
YXNzYWdlOgogICAgICAgICAgICAgICAgICAgICBtYXJrdXAgPSBmaXguc3ViKG0sIG1hcmt1cCkK
QEAgLTEyNTgsMTQgKzExODEsMjcgQEAgY2xhc3MgQmVhdXRpZnVsU3RvbmVTb3VwKFRhZyk6CiAg
ICAgICAgICAgICAgICAgIyB3YXMgcmVseWluZyBvbiB0aGUgZXhpc3RlbmNlIG9mIG1hcmt1cE1h
c3NhZ2UsIHRoaXMKICAgICAgICAgICAgICAgICAjIG1pZ2h0IGNhdXNlIHByb2JsZW1zLgogICAg
ICAgICAgICAgICAgIGRlbChzZWxmLm1hcmt1cE1hc3NhZ2UpCi0gICAgICAgIHNlbGYuYnVpbGRl
ci5yZXNldCgpCisgICAgICAgIHNlbGYucmVzZXQoKQogCi0gICAgICAgIHNlbGYuYnVpbGRlci5m
ZWVkKG1hcmt1cCkKKyAgICAgICAgU0dNTFBhcnNlci5mZWVkKHNlbGYsIG1hcmt1cCkKICAgICAg
ICAgIyBDbG9zZSBvdXQgYW55IHVuZmluaXNoZWQgc3RyaW5ncyBhbmQgY2xvc2UgYWxsIHRoZSBv
cGVuIHRhZ3MuCiAgICAgICAgIHNlbGYuZW5kRGF0YSgpCiAgICAgICAgIHdoaWxlIHNlbGYuY3Vy
cmVudFRhZy5uYW1lICE9IHNlbGYuUk9PVF9UQUdfTkFNRToKICAgICAgICAgICAgIHNlbGYucG9w
VGFnKCkKIAorICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBtZXRob2ROYW1lKToKKyAgICAgICAg
IiIiVGhpcyBtZXRob2Qgcm91dGVzIG1ldGhvZCBjYWxsIHJlcXVlc3RzIHRvIGVpdGhlciB0aGUg
U0dNTFBhcnNlcgorICAgICAgICBzdXBlcmNsYXNzIG9yIHRoZSBUYWcgc3VwZXJjbGFzcywgZGVw
ZW5kaW5nIG9uIHRoZSBtZXRob2QgbmFtZS4iIiIKKyAgICAgICAgI3ByaW50ICJfX2dldGF0dHJf
XyBjYWxsZWQgb24gJXMuJXMiICUgKHNlbGYuX19jbGFzc19fLCBtZXRob2ROYW1lKQorCisgICAg
ICAgIGlmIG1ldGhvZE5hbWUuc3RhcnRzd2l0aCgnc3RhcnRfJykgb3IgbWV0aG9kTmFtZS5zdGFy
dHN3aXRoKCdlbmRfJykgXAorICAgICAgICAgICAgICAgb3IgbWV0aG9kTmFtZS5zdGFydHN3aXRo
KCdkb18nKToKKyAgICAgICAgICAgIHJldHVybiBTR01MUGFyc2VyLl9fZ2V0YXR0cl9fKHNlbGYs
IG1ldGhvZE5hbWUpCisgICAgICAgIGVsaWYgbm90IG1ldGhvZE5hbWUuc3RhcnRzd2l0aCgnX18n
KToKKyAgICAgICAgICAgIHJldHVybiBUYWcuX19nZXRhdHRyX18oc2VsZiwgbWV0aG9kTmFtZSkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yCisKICAgICBk
ZWYgaXNTZWxmQ2xvc2luZ1RhZyhzZWxmLCBuYW1lKToKICAgICAgICAgIiIiUmV0dXJucyB0cnVl
IGlmZiB0aGUgZ2l2ZW4gc3RyaW5nIGlzIHRoZSBuYW1lIG9mIGEKICAgICAgICAgc2VsZi1jbG9z
aW5nIHRhZyBhY2NvcmRpbmcgdG8gdGhpcyBwYXJzZXIuIiIiCkBAIC0xMjc1LDcgKzEyMTEsNyBA
QCBjbGFzcyBCZWF1dGlmdWxTdG9uZVNvdXAoVGFnKToKICAgICBkZWYgcmVzZXQoc2VsZik6CiAg
ICAgICAgIFRhZy5fX2luaXRfXyhzZWxmLCBzZWxmLCBzZWxmLlJPT1RfVEFHX05BTUUpCiAgICAg
ICAgIHNlbGYuaGlkZGVuID0gMQotICAgICAgICBzZWxmLmJ1aWxkZXIucmVzZXQoKQorICAgICAg
ICBTR01MUGFyc2VyLnJlc2V0KHNlbGYpCiAgICAgICAgIHNlbGYuY3VycmVudERhdGEgPSBbXQog
ICAgICAgICBzZWxmLmN1cnJlbnRUYWcgPSBOb25lCiAgICAgICAgIHNlbGYudGFnU3RhY2sgPSBb
XQpAQCAtMTI4NCwxMiArMTIyMCw2IEBAIGNsYXNzIEJlYXV0aWZ1bFN0b25lU291cChUYWcpOgog
CiAgICAgZGVmIHBvcFRhZyhzZWxmKToKICAgICAgICAgdGFnID0gc2VsZi50YWdTdGFjay5wb3Ao
KQotICAgICAgICAjIFRhZ3Mgd2l0aCBqdXN0IG9uZSBzdHJpbmctb3duaW5nIGNoaWxkIGdldCB0
aGUgY2hpbGQgYXMgYQotICAgICAgICAjICdzdHJpbmcnIHByb3BlcnR5LCBzbyB0aGF0IHNvdXAu
dGFnLnN0cmluZyBpcyBzaG9ydGhhbmQgZm9yCi0gICAgICAgICMgc291cC50YWcuY29udGVudHNb
MF0KLSAgICAgICAgaWYgbGVuKHNlbGYuY3VycmVudFRhZy5jb250ZW50cykgPT0gMSBhbmQgXAot
ICAgICAgICAgICBpc2luc3RhbmNlKHNlbGYuY3VycmVudFRhZy5jb250ZW50c1swXSwgTmF2aWdh
YmxlU3RyaW5nKToKLSAgICAgICAgICAgIHNlbGYuY3VycmVudFRhZy5zdHJpbmcgPSBzZWxmLmN1
cnJlbnRUYWcuY29udGVudHNbMF0KIAogICAgICAgICAjcHJpbnQgIlBvcCIsIHRhZy5uYW1lCiAg
ICAgICAgIGlmIHNlbGYudGFnU3RhY2s6CkBAIC0xMzc4LDkgKzEzMDgsOSBAQCBjbGFzcyBCZWF1
dGlmdWxTdG9uZVNvdXAoVGFnKToKICAgICAgICAgICAgICAgICAjbGFzdCBvY2N1cmFuY2UuCiAg
ICAgICAgICAgICAgICAgcG9wVG8gPSBuYW1lCiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAg
ICAgICAgIGlmIChuZXN0aW5nUmVzZXRUcmlnZ2VycyAhPSBOb25lCisgICAgICAgICAgICBpZiAo
bmVzdGluZ1Jlc2V0VHJpZ2dlcnMgaXMgbm90IE5vbmUKICAgICAgICAgICAgICAgICBhbmQgcC5u
YW1lIGluIG5lc3RpbmdSZXNldFRyaWdnZXJzKSBcCi0gICAgICAgICAgICAgICAgb3IgKG5lc3Rp
bmdSZXNldFRyaWdnZXJzID09IE5vbmUgYW5kIGlzUmVzZXROZXN0aW5nCisgICAgICAgICAgICAg
ICAgb3IgKG5lc3RpbmdSZXNldFRyaWdnZXJzIGlzIE5vbmUgYW5kIGlzUmVzZXROZXN0aW5nCiAg
ICAgICAgICAgICAgICAgICAgIGFuZCBzZWxmLlJFU0VUX05FU1RJTkdfVEFHUy5oYXNfa2V5KHAu
bmFtZSkpOgogCiAgICAgICAgICAgICAgICAgI0lmIHdlIGVuY291bnRlciBvbmUgb2YgdGhlIG5l
c3RpbmcgcmVzZXQgdHJpZ2dlcnMKQEAgLTEzOTksNyArMTMyOSw3IEBAIGNsYXNzIEJlYXV0aWZ1
bFN0b25lU291cChUYWcpOgogICAgICAgICBpZiBzZWxmLnF1b3RlU3RhY2s6CiAgICAgICAgICAg
ICAjVGhpcyBpcyBub3QgYSByZWFsIHRhZy4KICAgICAgICAgICAgICNwcmludCAiPCVzPiBpcyBu
b3QgcmVhbCEiICUgbmFtZQotICAgICAgICAgICAgYXR0cnMgPSAnJy5qb2luKG1hcChsYW1iZGEo
eCwgeSk6ICcgJXM9IiVzIicgJSAoeCwgeSksIGF0dHJzKSkKKyAgICAgICAgICAgIGF0dHJzID0g
Jycuam9pbihbJyAlcz0iJXMiJyAlICh4LCB5KSBmb3IgeCwgeSBpbiBhdHRyc10pCiAgICAgICAg
ICAgICBzZWxmLmhhbmRsZV9kYXRhKCc8JXMlcz4nICUgKG5hbWUsIGF0dHJzKSkKICAgICAgICAg
ICAgIHJldHVybgogICAgICAgICBzZWxmLmVuZERhdGEoKQpAQCAtMTQ0MCw5ICsxMzcwLDk5IEBA
IGNsYXNzIEJlYXV0aWZ1bFN0b25lU291cChUYWcpOgogICAgIGRlZiBoYW5kbGVfZGF0YShzZWxm
LCBkYXRhKToKICAgICAgICAgc2VsZi5jdXJyZW50RGF0YS5hcHBlbmQoZGF0YSkKIAotICAgIGRl
ZiBleHRyYWN0Q2hhcnNldEZyb21NZXRhKHNlbGYsIGF0dHJzKToKLSAgICAgICAgc2VsZi51bmtu
b3duX3N0YXJ0dGFnKCdtZXRhJywgYXR0cnMpCisgICAgZGVmIF90b1N0cmluZ1N1YmNsYXNzKHNl
bGYsIHRleHQsIHN1YmNsYXNzKToKKyAgICAgICAgIiIiQWRkcyBhIGNlcnRhaW4gcGllY2Ugb2Yg
dGV4dCB0byB0aGUgdHJlZSBhcyBhIE5hdmlnYWJsZVN0cmluZworICAgICAgICBzdWJjbGFzcy4i
IiIKKyAgICAgICAgc2VsZi5lbmREYXRhKCkKKyAgICAgICAgc2VsZi5oYW5kbGVfZGF0YSh0ZXh0
KQorICAgICAgICBzZWxmLmVuZERhdGEoc3ViY2xhc3MpCisKKyAgICBkZWYgaGFuZGxlX3BpKHNl
bGYsIHRleHQpOgorICAgICAgICAiIiJIYW5kbGUgYSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIGFz
IGEgUHJvY2Vzc2luZ0luc3RydWN0aW9uCisgICAgICAgIG9iamVjdCwgcG9zc2libHkgb25lIHdp
dGggYSAlU09VUC1FTkNPRElORyUgc2xvdCBpbnRvIHdoaWNoIGFuCisgICAgICAgIGVuY29kaW5n
IHdpbGwgYmUgcGx1Z2dlZCBsYXRlci4iIiIKKyAgICAgICAgaWYgdGV4dFs6M10gPT0gInhtbCI6
CisgICAgICAgICAgICB0ZXh0ID0gdSJ4bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nJVNPVVAt
RU5DT0RJTkclJyIKKyAgICAgICAgc2VsZi5fdG9TdHJpbmdTdWJjbGFzcyh0ZXh0LCBQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24pCisKKyAgICBkZWYgaGFuZGxlX2NvbW1lbnQoc2VsZiwgdGV4dCk6Cisg
ICAgICAgICJIYW5kbGUgY29tbWVudHMgYXMgQ29tbWVudCBvYmplY3RzLiIKKyAgICAgICAgc2Vs
Zi5fdG9TdHJpbmdTdWJjbGFzcyh0ZXh0LCBDb21tZW50KQogCisgICAgZGVmIGhhbmRsZV9jaGFy
cmVmKHNlbGYsIHJlZik6CisgICAgICAgICJIYW5kbGUgY2hhcmFjdGVyIHJlZmVyZW5jZXMgYXMg
ZGF0YS4iCisgICAgICAgIGlmIHNlbGYuY29udmVydEVudGl0aWVzOgorICAgICAgICAgICAgZGF0
YSA9IHVuaWNocihpbnQocmVmKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEgPSAn
JiMlczsnICUgcmVmCisgICAgICAgIHNlbGYuaGFuZGxlX2RhdGEoZGF0YSkKKworICAgIGRlZiBo
YW5kbGVfZW50aXR5cmVmKHNlbGYsIHJlZik6CisgICAgICAgICIiIkhhbmRsZSBlbnRpdHkgcmVm
ZXJlbmNlcyBhcyBkYXRhLCBwb3NzaWJseSBjb252ZXJ0aW5nIGtub3duCisgICAgICAgIEhUTUwg
YW5kL29yIFhNTCBlbnRpdHkgcmVmZXJlbmNlcyB0byB0aGUgY29ycmVzcG9uZGluZyBVbmljb2Rl
CisgICAgICAgIGNoYXJhY3RlcnMuIiIiCisgICAgICAgIGRhdGEgPSBOb25lCisgICAgICAgIGlm
IHNlbGYuY29udmVydEhUTUxFbnRpdGllczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg
ICAgICBkYXRhID0gdW5pY2hyKG5hbWUyY29kZXBvaW50W3JlZl0pCisgICAgICAgICAgICBleGNl
cHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGlmIG5vdCBkYXRh
IGFuZCBzZWxmLmNvbnZlcnRYTUxFbnRpdGllczoKKyAgICAgICAgICAgICAgICBkYXRhID0gc2Vs
Zi5YTUxfRU5USVRJRVNfVE9fU1BFQ0lBTF9DSEFSUy5nZXQocmVmKQorCisgICAgICAgIGlmIG5v
dCBkYXRhIGFuZCBzZWxmLmNvbnZlcnRIVE1MRW50aXRpZXMgYW5kIFwKKyAgICAgICAgICAgIG5v
dCBzZWxmLlhNTF9FTlRJVElFU19UT19TUEVDSUFMX0NIQVJTLmdldChyZWYpOgorICAgICAgICAg
ICAgICAgICMgVE9ETzogV2UndmUgZ290IGEgcHJvYmxlbSBoZXJlLiBXZSdyZSB0b2xkIHRoaXMg
aXMKKyAgICAgICAgICAgICAgICAjIGFuIGVudGl0eSByZWZlcmVuY2UsIGJ1dCBpdCdzIG5vdCBh
biBYTUwgZW50aXR5CisgICAgICAgICAgICAgICAgIyByZWZlcmVuY2Ugb3IgYW4gSFRNTCBlbnRp
dHkgcmVmZXJlbmNlLiBOb25ldGhlbGVzcywKKyAgICAgICAgICAgICAgICAjIHRoZSBsb2dpY2Fs
IHRoaW5nIHRvIGRvIGlzIHRvIHBhc3MgaXQgdGhyb3VnaCBhcyBhbgorICAgICAgICAgICAgICAg
ICMgdW5yZWNvZ25pemVkIGVudGl0eSByZWZlcmVuY2UuCisgICAgICAgICAgICAgICAgIworICAg
ICAgICAgICAgICAgICMgRXhjZXB0OiB3aGVuIHRoZSBpbnB1dCBpcyAiJmNhcm9sOyIgdGhpcyBm
dW5jdGlvbgorICAgICAgICAgICAgICAgICMgd2lsbCBiZSBjYWxsZWQgd2l0aCBpbnB1dCAiY2Fy
b2wiLiBXaGVuIHRoZSBpbnB1dCBpcworICAgICAgICAgICAgICAgICMgIkFUJlQiLCB0aGlzIGZ1
bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGggaW5wdXQKKyAgICAgICAgICAgICAgICAjICJUIi4g
V2UgaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGEgc2VtaWNvbG9uCisgICAgICAgICAg
ICAgICAgIyB3YXMgcHJlc2VudCBvcmlnaW5hbGx5LCBzbyB3ZSBkb24ndCBrbm93IHdoZXRoZXIK
KyAgICAgICAgICAgICAgICAjIHRoaXMgaXMgYW4gdW5rbm93biBlbnRpdHkgb3IganVzdCBhIG1p
c3BsYWNlZAorICAgICAgICAgICAgICAgICMgYW1wZXJzYW5kLgorICAgICAgICAgICAgICAgICMK
KyAgICAgICAgICAgICAgICAjIFRoZSBtb3JlIGNvbW1vbiBjYXNlIGlzIGEgbWlzcGxhY2VkIGFt
cGVyc2FuZCwgc28gSQorICAgICAgICAgICAgICAgICMgZXNjYXBlIHRoZSBhbXBlcnNhbmQgYW5k
IG9taXQgdGhlIHRyYWlsaW5nIHNlbWljb2xvbi4KKyAgICAgICAgICAgICAgICBkYXRhID0gIiZh
bXA7JXMiICUgcmVmCisgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgIyBUaGlzIGNh
c2UgaXMgZGlmZmVyZW50IGZyb20gdGhlIG9uZSBhYm92ZSwgYmVjYXVzZSB3ZQorICAgICAgICAg
ICAgIyBoYXZlbid0IGFscmVhZHkgZ29uZSB0aHJvdWdoIGEgc3VwcG9zZWRseSBjb21wcmVoZW5z
aXZlCisgICAgICAgICAgICAjIG1hcHBpbmcgb2YgZW50aXRpZXMgdG8gVW5pY29kZSBjaGFyYWN0
ZXJzLiBXZSBtaWdodCBub3QKKyAgICAgICAgICAgICMgaGF2ZSBnb25lIHRocm91Z2ggYW55IG1h
cHBpbmcgYXQgYWxsLiBTbyB0aGUgY2hhbmNlcyBhcmUKKyAgICAgICAgICAgICMgdmVyeSBoaWdo
IHRoYXQgdGhpcyBpcyBhIHJlYWwgZW50aXR5LCBhbmQgbm90IGEKKyAgICAgICAgICAgICMgbWlz
cGxhY2VkIGFtcGVyc2FuZC4KKyAgICAgICAgICAgIGRhdGEgPSAiJiVzOyIgJSByZWYKKyAgICAg
ICAgc2VsZi5oYW5kbGVfZGF0YShkYXRhKQorCisgICAgZGVmIGhhbmRsZV9kZWNsKHNlbGYsIGRh
dGEpOgorICAgICAgICAiSGFuZGxlIERPQ1RZUEVzIGFuZCB0aGUgbGlrZSBhcyBEZWNsYXJhdGlv
biBvYmplY3RzLiIKKyAgICAgICAgc2VsZi5fdG9TdHJpbmdTdWJjbGFzcyhkYXRhLCBEZWNsYXJh
dGlvbikKKworICAgIGRlZiBwYXJzZV9kZWNsYXJhdGlvbihzZWxmLCBpKToKKyAgICAgICAgIiIi
VHJlYXQgYSBib2d1cyBTR01MIGRlY2xhcmF0aW9uIGFzIHJhdyBkYXRhLiBUcmVhdCBhIENEQVRB
CisgICAgICAgIGRlY2xhcmF0aW9uIGFzIGEgQ0RhdGEgb2JqZWN0LiIiIgorICAgICAgICBqID0g
Tm9uZQorICAgICAgICBpZiBzZWxmLnJhd2RhdGFbaTppKzldID09ICc8IVtDREFUQVsnOgorICAg
ICAgICAgICAgIGsgPSBzZWxmLnJhd2RhdGEuZmluZCgnXV0+JywgaSkKKyAgICAgICAgICAgICBp
ZiBrID09IC0xOgorICAgICAgICAgICAgICAgICBrID0gbGVuKHNlbGYucmF3ZGF0YSkKKyAgICAg
ICAgICAgICBkYXRhID0gc2VsZi5yYXdkYXRhW2krOTprXQorICAgICAgICAgICAgIGogPSBrKzMK
KyAgICAgICAgICAgICBzZWxmLl90b1N0cmluZ1N1YmNsYXNzKGRhdGEsIENEYXRhKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGogPSBTR01MUGFyc2Vy
LnBhcnNlX2RlY2xhcmF0aW9uKHNlbGYsIGkpCisgICAgICAgICAgICBleGNlcHQgU0dNTFBhcnNl
RXJyb3I6CisgICAgICAgICAgICAgICAgdG9IYW5kbGUgPSBzZWxmLnJhd2RhdGFbaTpdCisgICAg
ICAgICAgICAgICAgc2VsZi5oYW5kbGVfZGF0YSh0b0hhbmRsZSkKKyAgICAgICAgICAgICAgICBq
ID0gaSArIGxlbih0b0hhbmRsZSkKKyAgICAgICAgcmV0dXJuIGoKIAogY2xhc3MgQmVhdXRpZnVs
U291cChCZWF1dGlmdWxTdG9uZVNvdXApOgogCkBAIC0xNDk5LDggKzE1MTksOCBAQCBjbGFzcyBC
ZWF1dGlmdWxTb3VwKEJlYXV0aWZ1bFN0b25lU291cCk6CiAgICAgICAgIEJlYXV0aWZ1bFN0b25l
U291cC5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCiAKICAgICBTRUxGX0NMT1NJTkdf
VEFHUyA9IGJ1aWxkVGFnTWFwKE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbJ2JyJyAsICdocicsICdpbnB1dCcsICdpbWcnLCAnbWV0YScsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnc3BhY2VyJywgJ2xpbmsnLCAnZnJhbWUnLCAnYmFzZSdd
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdicicgLCAnaHInLCAnaW5w
dXQnLCAnaW1nJywgJ21ldGEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3NwYWNlcicsICdsaW5rJywgJ2ZyYW1lJywgJ2Jhc2UnLCAnY29sJykpCiAKICAgICBQUkVTRVJW
RV9XSElURVNQQUNFX1RBR1MgPSBzZXQoWydwcmUnLCAndGV4dGFyZWEnXSkKIApAQCAtMTUwOSwx
MyArMTUyOSwxMyBAQCBjbGFzcyBCZWF1dGlmdWxTb3VwKEJlYXV0aWZ1bFN0b25lU291cCk6CiAg
ICAgI0FjY29yZGluZyB0byB0aGUgSFRNTCBzdGFuZGFyZCwgZWFjaCBvZiB0aGVzZSBpbmxpbmUg
dGFncyBjYW4KICAgICAjY29udGFpbiBhbm90aGVyIHRhZyBvZiB0aGUgc2FtZSB0eXBlLiBGdXJ0
aGVybW9yZSwgaXQncyBjb21tb24KICAgICAjdG8gYWN0dWFsbHkgdXNlIHRoZXNlIHRhZ3MgdGhp
cyB3YXkuCi0gICAgTkVTVEFCTEVfSU5MSU5FX1RBR1MgPSBbJ3NwYW4nLCAnZm9udCcsICdxJywg
J29iamVjdCcsICdiZG8nLCAnc3ViJywgJ3N1cCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2NlbnRlciddCisgICAgTkVTVEFCTEVfSU5MSU5FX1RBR1MgPSAoJ3NwYW4nLCAnZm9udCcs
ICdxJywgJ29iamVjdCcsICdiZG8nLCAnc3ViJywgJ3N1cCcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2NlbnRlcicpCiAKICAgICAjQWNjb3JkaW5nIHRvIHRoZSBIVE1MIHN0YW5kYXJk
LCB0aGVzZSBibG9jayB0YWdzIGNhbiBjb250YWluCiAgICAgI2Fub3RoZXIgdGFnIG9mIHRoZSBz
YW1lIHR5cGUuIEZ1cnRoZXJtb3JlLCBpdCdzIGNvbW1vbgogICAgICN0byBhY3R1YWxseSB1c2Ug
dGhlc2UgdGFncyB0aGlzIHdheS4KLSAgICBORVNUQUJMRV9CTE9DS19UQUdTID0gWydibG9ja3F1
b3RlJywgJ2RpdicsICdmaWVsZHNldCcsICdpbnMnLCAnZGVsJ10KKyAgICBORVNUQUJMRV9CTE9D
S19UQUdTID0gKCdibG9ja3F1b3RlJywgJ2RpdicsICdmaWVsZHNldCcsICdpbnMnLCAnZGVsJykK
IAogICAgICNMaXN0cyBjYW4gY29udGFpbiBvdGhlciBsaXN0cywgYnV0IHRoZXJlIGFyZSByZXN0
cmljdGlvbnMuCiAgICAgTkVTVEFCTEVfTElTVF9UQUdTID0geyAnb2wnIDogW10sCkBAIC0xNTM1
LDcgKzE1NTUsNyBAQCBjbGFzcyBCZWF1dGlmdWxTb3VwKEJlYXV0aWZ1bFN0b25lU291cCk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAndGZvb3QnIDogWyd0YWJsZSddLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogCi0gICAgTk9OX05FU1RBQkxFX0JMT0NLX1RBR1MgPSBbJ2Fk
ZHJlc3MnLCAnZm9ybScsICdwJywgJ3ByZSddCisgICAgTk9OX05FU1RBQkxFX0JMT0NLX1RBR1Mg
PSAoJ2FkZHJlc3MnLCAnZm9ybScsICdwJywgJ3ByZScpCiAKICAgICAjSWYgb25lIG9mIHRoZXNl
IHRhZ3MgaXMgZW5jb3VudGVyZWQsIGFsbCB0YWdzIHVwIHRvIHRoZSBuZXh0IHRhZyBvZgogICAg
ICN0aGlzIHR5cGUgYXJlIHBvcHBlZC4KQEAgLTE1NTAsNyArMTU3MCw3IEBAIGNsYXNzIEJlYXV0
aWZ1bFNvdXAoQmVhdXRpZnVsU3RvbmVTb3VwKToKICAgICAjIFVzZWQgdG8gZGV0ZWN0IHRoZSBj
aGFyc2V0IGluIGEgTUVUQSB0YWc7IHNlZSBzdGFydF9tZXRhCiAgICAgQ0hBUlNFVF9SRSA9IHJl
LmNvbXBpbGUoIigoXnw7KVxzKmNoYXJzZXQ9KShbXjtdKikiLCByZS5NKQogCi0gICAgZGVmIGV4
dHJhY3RDaGFyc2V0RnJvbU1ldGEoc2VsZiwgYXR0cnMpOgorICAgIGRlZiBzdGFydF9tZXRhKHNl
bGYsIGF0dHJzKToKICAgICAgICAgIiIiQmVhdXRpZnVsIFNvdXAgY2FuIGRldGVjdCBhIGNoYXJz
ZXQgaW5jbHVkZWQgaW4gYSBNRVRBIHRhZywKICAgICAgICAgdHJ5IHRvIGNvbnZlcnQgdGhlIGRv
Y3VtZW50IHRvIHRoYXQgY2hhcnNldCwgYW5kIHJlLXBhcnNlIHRoZQogICAgICAgICBkb2N1bWVu
dCBmcm9tIHRoZSBiZWdpbm5pbmcuIiIiCkBAIC0xNTk3LDcgKzE2MTcsNiBAQCBjbGFzcyBCZWF1
dGlmdWxTb3VwKEJlYXV0aWZ1bFN0b25lU291cCk6CiAgICAgICAgIGlmIHRhZyBhbmQgdGFnTmVl
ZHNFbmNvZGluZ1N1YnN0aXR1dGlvbjoKICAgICAgICAgICAgIHRhZy5jb250YWluc1N1YnN0aXR1
dGlvbnMgPSBUcnVlCiAKLQogY2xhc3MgU3RvcFBhcnNpbmcoRXhjZXB0aW9uKToKICAgICBwYXNz
CiAKQEAgLTE2MjcsMTEgKzE2NDYsMTEgQEAgY2xhc3MgSUNhbnRCZWxpZXZlSXRzQmVhdXRpZnVs
U291cChCZWF1dGlmdWxTb3VwKToKICAgICB3b3VsZG4ndCBiZS4iIiIKIAogICAgIElfQ0FOVF9C
RUxJRVZFX1RIRVlSRV9ORVNUQUJMRV9JTkxJTkVfVEFHUyA9IFwKLSAgICAgWydlbScsICdiaWcn
LCAnaScsICdzbWFsbCcsICd0dCcsICdhYmJyJywgJ2Fjcm9ueW0nLCAnc3Ryb25nJywKKyAgICAg
KCdlbScsICdiaWcnLCAnaScsICdzbWFsbCcsICd0dCcsICdhYmJyJywgJ2Fjcm9ueW0nLCAnc3Ry
b25nJywKICAgICAgICdjaXRlJywgJ2NvZGUnLCAnZGZuJywgJ2tiZCcsICdzYW1wJywgJ3N0cm9u
ZycsICd2YXInLCAnYicsCi0gICAgICAnYmlnJ10KKyAgICAgICdiaWcnKQogCi0gICAgSV9DQU5U
X0JFTElFVkVfVEhFWVJFX05FU1RBQkxFX0JMT0NLX1RBR1MgPSBbJ25vc2NyaXB0J10KKyAgICBJ
X0NBTlRfQkVMSUVWRV9USEVZUkVfTkVTVEFCTEVfQkxPQ0tfVEFHUyA9ICgnbm9zY3JpcHQnLCkK
IAogICAgIE5FU1RBQkxFX1RBR1MgPSBidWlsZFRhZ01hcChbXSwgQmVhdXRpZnVsU291cC5ORVNU
QUJMRV9UQUdTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJX0NBTlRfQkVMSUVW
RV9USEVZUkVfTkVTVEFCTEVfQkxPQ0tfVEFHUywKQEAgLTE3NzgsMTggKzE3OTcsMTUgQEAgY2xh
c3MgVW5pY29kZURhbW1pdDoKICAgICAgICAgc2VsZi51bmljb2RlID0gdQogICAgICAgICBpZiBu
b3QgdTogc2VsZi5vcmlnaW5hbEVuY29kaW5nID0gTm9uZQogCi0gICAgZGVmIF9zdWJNU0NoYXIo
c2VsZiwgbWF0Y2gpOgorICAgIGRlZiBfc3ViTVNDaGFyKHNlbGYsIG9yaWcpOgogICAgICAgICAi
IiJDaGFuZ2VzIGEgTVMgc21hcnQgcXVvdGUgY2hhcmFjdGVyIHRvIGFuIFhNTCBvciBIVE1MCiAg
ICAgICAgIGVudGl0eS4iIiIKLSAgICAgICAgb3JpZyA9IG1hdGNoLmdyb3VwKDEpCiAgICAgICAg
IHN1YiA9IHNlbGYuTVNfQ0hBUlMuZ2V0KG9yaWcpCi0gICAgICAgIGlmIHR5cGUoc3ViKSA9PSB0
eXBlcy5UdXBsZVR5cGU6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3ViLCB0dXBsZSk6CiAgICAg
ICAgICAgICBpZiBzZWxmLnNtYXJ0UXVvdGVzVG8gPT0gJ3htbCc6Ci0gICAgICAgICAgICAgICAg
c3ViID0gJyYjeCcuZW5jb2RlKCkgKyBzdWJbMV0uZW5jb2RlKCkgKyAnOycuZW5jb2RlKCkKKyAg
ICAgICAgICAgICAgICBzdWIgPSAnJiN4JXM7JyAlIHN1YlsxXQogICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICBzdWIgPSAnJicuZW5jb2RlKCkgKyBzdWJbMF0uZW5jb2RlKCkgKyAn
OycuZW5jb2RlKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1YiA9IHN1Yi5lbmNvZGUo
KQorICAgICAgICAgICAgICAgIHN1YiA9ICcmJXM7JyAlIHN1YlswXQogICAgICAgICByZXR1cm4g
c3ViCiAKICAgICBkZWYgX2NvbnZlcnRGcm9tKHNlbGYsIHByb3Bvc2VkKToKQEAgLTE4MDQsOSAr
MTgyMCw5IEBAIGNsYXNzIFVuaWNvZGVEYW1taXQ6CiAgICAgICAgIGlmIHNlbGYuc21hcnRRdW90
ZXNUbyBhbmQgcHJvcG9zZWQubG93ZXIoKSBpbigid2luZG93cy0xMjUyIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpc28tODg1OS0xIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJp
c28tODg1OS0yIik6Ci0gICAgICAgICAgICBzbWFydF9xdW90ZXNfcmUgPSAiKFtceDgwLVx4OWZd
KSIKLSAgICAgICAgICAgIHNtYXJ0X3F1b3Rlc19jb21waWxlZCA9IHJlLmNvbXBpbGUoc21hcnRf
cXVvdGVzX3JlKQotICAgICAgICAgICAgbWFya3VwID0gc21hcnRfcXVvdGVzX2NvbXBpbGVkLnN1
YihzZWxmLl9zdWJNU0NoYXIsIG1hcmt1cCkKKyAgICAgICAgICAgIG1hcmt1cCA9IHJlLmNvbXBp
bGUoIihbXHg4MC1ceDlmXSkiKS5zdWIgXAorICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSh4
KTogc2VsZi5fc3ViTVNDaGFyKHguZ3JvdXAoMSkpLAorICAgICAgICAgICAgICAgICAgICAgIG1h
cmt1cCkKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIHByaW50ICJUcnlpbmcgdG8gY29u
dmVydCBkb2N1bWVudCB0byAlcyIgJSBwcm9wb3NlZApAQCAtMTg5NSwxNSArMTkxMSwxMyBAQCBj
bGFzcyBVbmljb2RlRGFtbWl0OgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZXhjZXB0
OgogICAgICAgICAgICAgeG1sX2VuY29kaW5nX21hdGNoID0gTm9uZQotICAgICAgICB4bWxfZW5j
b2RpbmdfcmUgPSAnXjxcPy4qZW5jb2Rpbmc9W1wnIl0oLio/KVtcJyJdLipcPz4nLmVuY29kZSgp
Ci0gICAgICAgIHhtbF9lbmNvZGluZ19tYXRjaCA9IHJlLmNvbXBpbGUoeG1sX2VuY29kaW5nX3Jl
KS5tYXRjaCh4bWxfZGF0YSkKKyAgICAgICAgeG1sX2VuY29kaW5nX21hdGNoID0gcmUuY29tcGls
ZSgKKyAgICAgICAgICAgICdePFw/LiplbmNvZGluZz1bXCciXSguKj8pW1wnIl0uKlw/PicpLm1h
dGNoKHhtbF9kYXRhKQogICAgICAgICBpZiBub3QgeG1sX2VuY29kaW5nX21hdGNoIGFuZCBpc0hU
TUw6Ci0gICAgICAgICAgICBtZXRhX3JlID0gJzxccyptZXRhW14+XStjaGFyc2V0PShbXj5dKj8p
WztcJyI+XScuZW5jb2RlKCkKLSAgICAgICAgICAgIHJlZ2V4cCA9IHJlLmNvbXBpbGUobWV0YV9y
ZSwgcmUuSSkKKyAgICAgICAgICAgIHJlZ2V4cCA9IHJlLmNvbXBpbGUoJzxccyptZXRhW14+XStj
aGFyc2V0PShbXj5dKj8pWztcJyI+XScsIHJlLkkpCiAgICAgICAgICAgICB4bWxfZW5jb2Rpbmdf
bWF0Y2ggPSByZWdleHAuc2VhcmNoKHhtbF9kYXRhKQogICAgICAgICBpZiB4bWxfZW5jb2Rpbmdf
bWF0Y2ggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB4bWxfZW5jb2RpbmcgPSB4bWxfZW5jb2Rp
bmdfbWF0Y2guZ3JvdXBzKClbMF0uZGVjb2RlKAotICAgICAgICAgICAgICAgICdhc2NpaScpLmxv
d2VyKCkKKyAgICAgICAgICAgIHhtbF9lbmNvZGluZyA9IHhtbF9lbmNvZGluZ19tYXRjaC5ncm91
cHMoKVswXS5sb3dlcigpCiAgICAgICAgICAgICBpZiBpc0hUTUw6CiAgICAgICAgICAgICAgICAg
c2VsZi5kZWNsYXJlZEhUTUxFbmNvZGluZyA9IHhtbF9lbmNvZGluZwogICAgICAgICAgICAgaWYg
c25pZmZlZF94bWxfZW5jb2RpbmcgYW5kIFwK
</data>
<flag name="review"
          id="85251"
          type_id="1"
          status="+"
          setter="ojan"
    />
    <flag name="commit-queue"
          id="85252"
          type_id="3"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>