<?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>57840</bug_id>
          
          <creation_ts>2011-04-05 06:28:31 -0700</creation_ts>
          <short_desc>Switch from Vector&lt;UChar&gt; to StringBuilder in css/</short_desc>
          <delta_ts>2026-03-26 06:00:16 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          <dependson>58420</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>kling</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>379505</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-04-05 06:28:31 -0700</bug_when>
    <thetext>As discussed in bug 56099, we should deploy StringBuilder usage in WebCore where possible.
This bug addresses Source/WebCore/css.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379508</commentid>
    <comment_count>1</comment_count>
      <attachid>88218</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-04-05 06:30:56 -0700</bug_when>
    <thetext>Created attachment 88218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379510</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-05 06:33:00 -0700</bug_when>
    <thetext>Attachment 88218 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1

Source/WebCore/css/CSSOMUtils.h:42:  The parameter name &quot;string&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379524</commentid>
    <comment_count>3</comment_count>
      <attachid>88222</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-04-05 07:03:26 -0700</bug_when>
    <thetext>Created attachment 88222
Patch v2

Fix style isssue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382733</commentid>
    <comment_count>4</comment_count>
      <attachid>88222</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-04-08 23:31:28 -0700</bug_when>
    <thetext>Comment on attachment 88222
Patch v2

Removing r?. As discussed with Maciej, he prefers to optimize operator+ instead of having to change all callsites that append just 2 strings. I&apos;ll look into that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402842</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-05-12 07:58:48 -0700</bug_when>
    <thetext>I&apos;ll rework the patch to avoid using makeString, it&apos;s not needed anymore, as operator+ is fast now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88218</attachid>
            <date>2011-04-05 06:30:56 -0700</date>
            <delta_ts>2011-04-05 07:03:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Cleanup4.diff</filename>
            <type>text/plain</type>
            <size>21900</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyOTMzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDQtMDUgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dpdGNoIGZyb20gVmVjdG9yPFVDaGFyPiB0byBT
dHJpbmdCdWlsZGVyIGluIGNzcy8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU3ODQwCisKKyAgICAgICAgKiBjc3MvQ1NTT01VdGlscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcHBlbmRDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFs
aXplQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUNoYXJhY3RlckFzQ29k
ZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlkZW50aWZpZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6c2VyaWFsaXplU3RyaW5nKToKKyAgICAgICAgKiBjc3MvQ1NTT01VdGlscy5o
OgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQpOgorCiAy
MDExLTA0LTA1ICBBbmRyZXkgQWRhaWtpbiAgPGFhbmRyZXlAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U09NVXRpbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxz
LmNwcAkocmV2aXNpb24gODE5NjApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDExICszMSwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNTU09NVXRpbHMuaCIKIAorI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNv
ZGUuaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIHZvaWQgYXBwZW5kQ2hhcmFjdGVyKFVDaGFyMzIgYywgVmVjdG9yPFVDaGFyPiYg
YXBwZW5kVG8pCitzdGF0aWMgdm9pZCBhcHBlbmRDaGFyYWN0ZXIoVUNoYXIzMiBjLCBTdHJpbmdC
dWlsZGVyJiBhcHBlbmRUbykKIHsKICAgICBpZiAoVTE2X0xFTkdUSChjKSA9PSAxKQogICAgICAg
ICBhcHBlbmRUby5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGMpKTsKQEAgLTQ1LDI3ICs0Niwy
MCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRDaGFyYWN0ZXIoVUNoYXIzMiBjLCBWCiAgICAgfQogfQog
Ci12b2lkIHNlcmlhbGl6ZUNoYXJhY3RlcihVQ2hhcjMyIGMsIFZlY3RvcjxVQ2hhcj4mIGFwcGVu
ZFRvKQorc3RhdGljIHZvaWQgc2VyaWFsaXplQ2hhcmFjdGVyKFVDaGFyMzIgYywgU3RyaW5nQnVp
bGRlciYgYXBwZW5kVG8pCiB7CiAgICAgYXBwZW5kVG8uYXBwZW5kKCdcXCcpOwogICAgIGFwcGVu
ZENoYXJhY3RlcihjLCBhcHBlbmRUbyk7CiB9CiAKLXZvaWQgc2VyaWFsaXplQ2hhcmFjdGVyQXND
b2RlUG9pbnQoVUNoYXIzMiBjLCBWZWN0b3I8VUNoYXI+JiBhcHBlbmRUbykKK3N0YXRpYyB2b2lk
IHNlcmlhbGl6ZUNoYXJhY3RlckFzQ29kZVBvaW50KFVDaGFyMzIgYywgU3RyaW5nQnVpbGRlciYg
YXBwZW5kVG8pCiB7CiAgICAgYXBwZW5kVG8uYXBwZW5kKCdcXCcpOwogICAgIGFwcGVuZFVuc2ln
bmVkQXNIZXgoYywgYXBwZW5kVG8sIExvd2VyY2FzZSk7CiAgICAgYXBwZW5kVG8uYXBwZW5kKCcg
Jyk7CiB9CiAKLXZvaWQgc2VyaWFsaXplSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIFN0cmluZyYgYXBwZW5kVG8pCi17Ci0gICAgVmVjdG9yPFVDaGFyPiBhZGRlbmQ7Ci0gICAg
c2VyaWFsaXplSWRlbnRpZmllcihpZGVudGlmaWVyLCBhZGRlbmQpOwotICAgIGFwcGVuZFRvLmFw
cGVuZChTdHJpbmc6OmFkb3B0KGFkZGVuZCkpOwotfQotCi12b2lkIHNlcmlhbGl6ZUlkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBWZWN0b3I8VUNoYXI+JiBhcHBlbmRUbykKK3Zv
aWQgc2VyaWFsaXplSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFN0cmluZ0J1
aWxkZXImIGFwcGVuZFRvKQogewogICAgIGJvb2wgaXNGaXJzdCA9IHRydWU7CiAgICAgYm9vbCBp
c1NlY29uZCA9IGZhbHNlOwpAQCAtOTQsMTQgKzg4LDcgQEAgdm9pZCBzZXJpYWxpemVJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYgaQogICAgIH0KIH0KIAotdm9pZCBzZXJpYWxpemVTdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIFN0cmluZyYgYXBwZW5kVG8pCi17Ci0gICAgVmVjdG9yPFVDaGFy
PiBhZGRlbmQ7Ci0gICAgc2VyaWFsaXplU3RyaW5nKHN0cmluZywgYWRkZW5kKTsKLSAgICBhcHBl
bmRUby5hcHBlbmQoU3RyaW5nOjphZG9wdChhZGRlbmQpKTsKLX0KLQotdm9pZCBzZXJpYWxpemVT
dHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFZlY3RvcjxVQ2hhcj4mIGFwcGVuZFRvKQordm9p
ZCBzZXJpYWxpemVTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFN0cmluZ0J1aWxkZXImIGFw
cGVuZFRvKQogewogICAgIGFwcGVuZFRvLmFwcGVuZCgnXCInKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU09NVXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTT01VdGlscy5oCShyZXZpc2lvbiA4MTk2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NP
TVV0aWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDIxICszMSwxNSBAQAogI2lmbmRlZiBDU1NP
TVV0aWxzX2gKICNkZWZpbmUgQ1NTT01VdGlsc19oCiAKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2Rl
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAvLyBVdGlsaXRpZXMg
Zm9yIENTU09NIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIC8vIENvbW1vbiBzZXJpYWxpemluZyBtZXRob2RzLiBTZWU6IGh0dHA6Ly9kZXYu
dzMub3JnL2Nzc3dnL2Nzc29tLyNjb21tb24tc2VyaWFsaXppbmctaWRpb21zCi12b2lkIHNlcmlh
bGl6ZUNoYXJhY3RlcihVQ2hhcjMyLCBWZWN0b3I8VUNoYXI+JiBhcHBlbmRUbyk7Ci12b2lkIHNl
cmlhbGl6ZUNoYXJhY3RlckFzQ29kZVBvaW50KFVDaGFyMzIsIFZlY3RvcjxVQ2hhcj4mIGFwcGVu
ZFRvKTsKLXZvaWQgc2VyaWFsaXplSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IFN0cmluZyYgYXBwZW5kVG8pOwotdm9pZCBzZXJpYWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgVmVjdG9yPFVDaGFyPiYgYXBwZW5kVG8pOwotdm9pZCBzZXJpYWxpemVT
dHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFN0cmluZyYgYXBwZW5kVG8pOwotdm9pZCBzZXJp
YWxpemVTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFZlY3RvcjxVQ2hhcj4mIGFwcGVuZFRv
KTsKK3ZvaWQgc2VyaWFsaXplSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFN0
cmluZ0J1aWxkZXImIGFwcGVuZFRvKTsKK3ZvaWQgc2VyaWFsaXplU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRUbyk7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCShy
ZXZpc2lvbiA4MTk2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkKICNpbmNsdWRlICJEYXNoYm9hcmRSZWdpb24uaCIKQEAgLTYzMyw1OCAr
NjM1LDU4IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnMKICAgICAg
ICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ1NTX1BFUkNFTlRBR0U6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9y
bWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICIlIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3Ry
aW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICIlIik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDU1NfRU1TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlciht
X3ZhbHVlLm51bSkgKyAiZW0iOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0
TnVtYmVyKG1fdmFsdWUubnVtKSwgImVtIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NfRVhTOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51
bSkgKyAiZXgiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1f
dmFsdWUubnVtKSwgImV4Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1Nf
UkVNUzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInJl
bSI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5u
dW0pLCAicmVtIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUFg6Ci0g
ICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJweCI7CisgICAg
ICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAicHgi
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19DTToKLSAgICAgICAgICAg
IHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImNtIjsKKyAgICAgICAgICAgIHRl
eHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJjbSIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX01NOgotICAgICAgICAgICAgdGV4dCA9IGZv
cm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAibW0iOworICAgICAgICAgICAgdGV4dCA9IG1ha2VT
dHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgIm1tIik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NfSU46Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVy
KG1fdmFsdWUubnVtKSArICJpbiI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3Jt
YXROdW1iZXIobV92YWx1ZS5udW0pLCAiaW4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENTU19QVDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5u
dW0pICsgInB0IjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlciht
X3ZhbHVlLm51bSksICJwdCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NT
X1BDOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicGMi
OworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVt
KSwgInBjIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfREVHOgotICAg
ICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiZGVnIjsKKyAgICAg
ICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJkZWci
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19SQUQ6Ci0gICAgICAgICAg
ICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJyYWQiOworICAgICAgICAgICAg
dGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgInJhZCIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0dSQUQ6Ci0gICAgICAgICAgICB0ZXh0
ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJncmFkIjsKKyAgICAgICAgICAgIHRleHQg
PSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJncmFkIik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfTVM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9y
bWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJtcyI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0
cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAibXMiKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU19TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlciht
X3ZhbHVlLm51bSkgKyAicyI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXRO
dW1iZXIobV92YWx1ZS5udW0pLCAicyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ1NTX0haOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkg
KyAiaHoiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFs
dWUubnVtKSwgImh6Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfS0ha
OgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAia2h6IjsK
KyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSks
ICJraHoiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19UVVJOOgotICAg
ICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAidHVybiI7CisgICAg
ICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAidHVy
biIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0RJTUVOU0lPTjoKICAg
ICAgICAgICAgIC8vIEZJWE1FCkBAIC02OTMsMjIgKzY5NSwxMyBAQCBTdHJpbmcgQ1NTUHJpbWl0
aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zCiAgICAgICAgICAgICB0ZXh0ID0gcXVvdGVDU1NTdHJp
bmdJZk5lZWRlZChtX3ZhbHVlLnN0cmluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NfVVJJOgotICAgICAgICAgICAgdGV4dCA9ICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZO
ZWVkZWQobV92YWx1ZS5zdHJpbmcpICsgIikiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJp
bmcoInVybCgiLCBxdW90ZUNTU1VSTElmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSwgJyknKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19JREVOVDoKICAgICAgICAgICAgIHRl
eHQgPSB2YWx1ZU9yUHJvcGVydHlOYW1lKG1fdmFsdWUuaWRlbnQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ1NTX0FUVFI6IHsKLSAgICAgICAgICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgU3RyaW5nLCBhdHRyUGFyZW4sICgiYXR0cigiKSk7Ci0KLSAgICAgICAgICAg
IFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoNiArIG1fdmFsdWUuc3RyaW5nLT5sZW5ndGgoKSk7Ci0KLSAgICAgICAgICAgIGFw
cGVuZChyZXN1bHQsIGF0dHJQYXJlbik7Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBtX3Zh
bHVlLnN0cmluZyk7Ci0gICAgICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKCcpJyk7Ci0K
LSAgICAgICAgICAgIHRleHQgPSBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CisgICAgICAgICAgICB0
ZXh0ID0gbWFrZVN0cmluZygiYXR0cigiLCBTdHJpbmcobV92YWx1ZS5zdHJpbmcpLCAnKScpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfQ09VTlRFUl9O
QU1FOgpAQCAtNzE3LDg2ICs3MTAsNTggQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NU
ZXh0KCkgY29ucwogICAgICAgICAgICAgdGV4dCArPSAiKSI7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDU1NfQ09VTlRFUjoKLSAgICAgICAgICAgIHRleHQgPSAiY291bnRlcigi
OwotICAgICAgICAgICAgdGV4dCArPSBTdHJpbmc6Om51bWJlcihtX3ZhbHVlLm51bSk7Ci0gICAg
ICAgICAgICB0ZXh0ICs9ICIpIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKCJjb3Vu
dGVyKCIsIFN0cmluZzo6bnVtYmVyKG1fdmFsdWUubnVtKSwgJyknKTsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBBZGQgbGlzdC1zdHlsZSBhbmQgc2VwYXJhdG9yCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDU1NfUkVDVDogewotICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIHJlY3RQYXJlbiwgKCJyZWN0KCIpKTsKLQogICAgICAgICAgICAgUmVj
dCogcmVjdFZhbCA9IGdldFJlY3RWYWx1ZSgpOwotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiBy
ZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7Ci0g
ICAgICAgICAgICBhcHBlbmQocmVzdWx0LCByZWN0UGFyZW4pOwotCi0gICAgICAgICAgICBhcHBl
bmQocmVzdWx0LCByZWN0VmFsLT50b3AoKS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAnKTsKLQotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmVjdFZhbC0+cmln
aHQoKS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLQotICAg
ICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmVjdFZhbC0+Ym90dG9tKCktPmNzc1RleHQoKSk7Ci0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0KLSAgICAgICAgICAgIGFwcGVuZChyZXN1
bHQsIHJlY3RWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyknKTsKLQotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAg
ICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKCJyZWN0KCIsIHJlY3RWYWwtPnRvcCgpLT5jc3NU
ZXh0KCksICcgJywgcmVjdFZhbC0+cmlnaHQoKS0+Y3NzVGV4dCgpLCAnICcsIHJlY3RWYWwtPmJv
dHRvbSgpLT5jc3NUZXh0KCksICcgJywgcmVjdFZhbC0+bGVmdCgpLT5jc3NUZXh0KCksICcpJyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19SR0JDT0xP
UjoKICAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0hFWENPTE9SOiB7Ci0gICAgICAgICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgY29tbWFTcGFjZSwgKCIsICIpKTsKLSAgICAg
ICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCByZ2JQYXJlbiwgKCJyZ2Io
IikpOwotICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHJnYmFQ
YXJlbiwgKCJyZ2JhKCIpKTsKLQogICAgICAgICAgICAgUkdCQTMyIHJnYkNvbG9yID0gbV92YWx1
ZS5yZ2Jjb2xvcjsKICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gQ1NTX1BBUlNFUl9IRVhDT0xP
UikKICAgICAgICAgICAgICAgICBDb2xvcjo6cGFyc2VIZXhDb2xvcihtX3ZhbHVlLnN0cmluZywg
cmdiQ29sb3IpOworCiAgICAgICAgICAgICBDb2xvciBjb2xvcihyZ2JDb2xvcik7CiAKLSAgICAg
ICAgICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoMzIpOworICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwor
ICAgICAgICAgICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkoMzIpOwogICAgICAgICAgICAgaWYg
KGNvbG9yLmhhc0FscGhhKCkpCi0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmdiYVBh
cmVuKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgicmdiYSgiKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCByZ2JQYXJlbik7CisgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoInJnYigiKTsKIAotICAgICAgICAgICAgYXBwZW5k
TnVtYmVyKHJlc3VsdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY29sb3IucmVkKCkpKTsK
LSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIGNvbW1hU3BhY2UpOworICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZyhTdHJpbmc6Om51bWJlcihjb2xvci5yZWQoKSksICIsICIp
KTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoU3RyaW5nOjpudW1iZXIo
Y29sb3IuZ3JlZW4oKSksICIsICIpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmlu
Zzo6bnVtYmVyKGNvbG9yLmJsdWUoKSkpOwogCi0gICAgICAgICAgICBhcHBlbmROdW1iZXIocmVz
dWx0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjb2xvci5ncmVlbigpKSk7Ci0gICAgICAg
ICAgICBhcHBlbmQocmVzdWx0LCBjb21tYVNwYWNlKTsKLQotICAgICAgICAgICAgYXBwZW5kTnVt
YmVyKHJlc3VsdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY29sb3IuYmx1ZSgpKSk7Ci0g
ICAgICAgICAgICBpZiAoY29sb3IuaGFzQWxwaGEoKSkgewotICAgICAgICAgICAgICAgIGFwcGVu
ZChyZXN1bHQsIGNvbW1hU3BhY2UpOwotICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIFN0
cmluZzo6bnVtYmVyKGNvbG9yLmFscGhhKCkgLyAyNTYuMGYpKTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChjb2xvci5oYXNBbHBoYSgpKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKG1ha2VTdHJpbmcoIiwgIiwgU3RyaW5nOjpudW1iZXIoY29sb3IuYWxwaGEoKSAvIDI1
Ni4wZikpKTsKIAotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgICAgICAgICAg
dGV4dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcpJyk7CisgICAgICAgICAgICB0ZXh0ID0gYnVpbGRlci50b1N0cmluZygpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUEFJUjoKLSAgICAgICAgICAg
IHRleHQgPSBtX3ZhbHVlLnBhaXItPmZpcnN0KCktPmNzc1RleHQoKTsKLSAgICAgICAgICAgIHRl
eHQgKz0gIiAiOwotICAgICAgICAgICAgdGV4dCArPSBtX3ZhbHVlLnBhaXItPnNlY29uZCgpLT5j
c3NUZXh0KCk7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhtX3ZhbHVlLnBhaXItPmZp
cnN0KCktPmNzc1RleHQoKSwgJyAnLCBtX3ZhbHVlLnBhaXItPnNlY29uZCgpLT5jc3NUZXh0KCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAg
ICAgICBjYXNlIENTU19EQVNIQk9BUkRfUkVHSU9OOgorICAgICAgICBjYXNlIENTU19EQVNIQk9B
UkRfUkVHSU9OOiB7CisgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAg
ICAgICBmb3IgKERhc2hib2FyZFJlZ2lvbiogcmVnaW9uID0gZ2V0RGFzaGJvYXJkUmVnaW9uVmFs
dWUoKTsgcmVnaW9uOyByZWdpb24gPSByZWdpb24tPm1fbmV4dC5nZXQoKSkgewotICAgICAgICAg
ICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHRleHQuYXBw
ZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgdGV4dCArPSAiZGFzaGJvYXJkLXJlZ2lvbigiOwot
ICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5tX2xhYmVsOworICAgICAgICAgICAgICAg
IGlmICghYnVpbGRlci5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcgJyk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiZGFz
aGJvYXJkLXJlZ2lvbigiLCByZWdpb24tPm1fbGFiZWwpKTsKICAgICAgICAgICAgICAgICBpZiAo
cmVnaW9uLT5tX2lzQ2lyY2xlKQotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9ICIgY2lyY2xl
IjsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBjaXJjbGUiKTsKICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChyZWdpb24tPm1faXNSZWN0YW5nbGUpCi0gICAgICAgICAgICAg
ICAgICAgIHRleHQgKz0gIiByZWN0YW5nbGUiOwotICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiByZWN0YW5nbGUiKTsKKyAgICAgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dCA9IGJ1aWxkZXIudG9TdHJpbmco
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGlmIChyZWdpb24tPnRvcCgpLT5tX3R5cGUgPT0gQ1NTX0lERU5UICYmIHJlZ2lv
bi0+dG9wKCktPmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnZhbGlkKSB7CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChyZWdpb24tPnJpZ2h0KCktPm1fdHlwZSA9PSBDU1NfSURFTlQpOwogICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQocmVnaW9uLT5ib3R0b20oKS0+bV90eXBlID09IENTU19J
REVOVCk7CkBAIC04MDUsMTUgKzc3MCwxNyBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNz
c1RleHQoKSBjb25zCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZWdpb24tPmJvdHRvbSgp
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChyZWdpb24tPmxlZnQoKS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUludmFsaWQpOwogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcg
Jyk7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT50b3AoKS0+Y3NzVGV4dCgp
ICsgIiAiOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+cmlnaHQoKS0+Y3Nz
VGV4dCgpICsgIiAiOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+Ym90dG9t
KCktPmNzc1RleHQoKSArICIgIjsKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSByZWdpb24t
PmxlZnQoKS0+Y3NzVGV4dCgpOworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
ICcpOworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKHJlZ2lv
bi0+dG9wKCktPmNzc1RleHQoKSwgJyAnKSk7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKG1ha2VTdHJpbmcocmVnaW9uLT5yaWdodCgpLT5jc3NUZXh0KCksICcgJykpOworICAg
ICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKHJlZ2lvbi0+Ym90dG9t
KCktPmNzc1RleHQoKSwgJyAnKSk7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KHJlZ2lvbi0+bGVmdCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB0ZXh0ICs9ICIpIjsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScp
OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgdGV4dCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgY2FzZSBDU1Nf
UEFSU0VSX09QRVJBVE9SOiB7CiAgICAgICAgICAgICBjaGFyIGMgPSBzdGF0aWNfY2FzdDxjaGFy
PihtX3ZhbHVlLmlkZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkocmV2
aXNpb24gODE5NjApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiQ1NTT01VdGlscy5oIgogI2lu
Y2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC02MjEsOTkgKzYy
Myw5MSBAQCBib29sIENTU1NlbGVjdG9yOjpvcGVyYXRvcj09KGNvbnN0IENTU1NlCiAKIFN0cmlu
ZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KCkgY29uc3QKIHsKLSAgICBTdHJpbmcgc3RyID0g
IiI7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBwcmVmaXggPSBtX3RhZy5wcmVmaXgoKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
TmFtZSA9IG1fdGFnLmxvY2FsTmFtZSgpOwogICAgIGlmIChtX21hdGNoID09IENTU1NlbGVjdG9y
OjpOb25lIHx8ICFwcmVmaXguaXNOdWxsKCkgfHwgbG9jYWxOYW1lICE9IHN0YXJBdG9tKSB7CiAg
ICAgICAgIGlmIChwcmVmaXguaXNOdWxsKCkpCi0gICAgICAgICAgICBzdHIgPSBsb2NhbE5hbWU7
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc3RyID0gcHJlZml4LnN0cmluZygpOwotICAg
ICAgICAgICAgc3RyLmFwcGVuZCgifCIpOwotICAgICAgICAgICAgc3RyLmFwcGVuZChsb2NhbE5h
bWUpOwotICAgICAgICB9CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb2NhbE5hbWUpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKHByZWZp
eC5zdHJpbmcoKSwgJ3wnLCBsb2NhbE5hbWUuc3RyaW5nKCkpKTsKICAgICB9CiAKICAgICBjb25z
dCBDU1NTZWxlY3RvciogY3MgPSB0aGlzOwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGlm
IChjcy0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6SWQpIHsKLSAgICAgICAgICAgIHN0ciArPSAi
IyI7Ci0gICAgICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKGNzLT52YWx1ZSgpLCBzdHIpOwor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgICAgIHNlcmlhbGl6ZUlk
ZW50aWZpZXIoY3MtPnZhbHVlKCksIGJ1aWxkZXIpOwogICAgICAgICB9IGVsc2UgaWYgKGNzLT5t
X21hdGNoID09IENTU1NlbGVjdG9yOjpDbGFzcykgewotICAgICAgICAgICAgc3RyICs9ICIuIjsK
LSAgICAgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIoY3MtPnZhbHVlKCksIHN0cik7CisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnLicpOworICAgICAgICAgICAgc2VyaWFsaXplSWRlbnRp
Zmllcihjcy0+dmFsdWUoKSwgYnVpbGRlcik7CiAgICAgICAgIH0gZWxzZSBpZiAoY3MtPm1fbWF0
Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzIHx8IGNzLT5tX21hdGNoID09IENTU1NlbGVj
dG9yOjpQYWdlUHNldWRvQ2xhc3MpIHsKLSAgICAgICAgICAgIHN0ciArPSAiOiI7Ci0gICAgICAg
ICAgICBzdHIgKz0gY3MtPnZhbHVlKCk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKCc6JywgY3MtPnZhbHVlKCkuc3RyaW5nKCkpKTsKIAogICAgICAgICAgICAgc3dpdGNo
IChjcy0+cHNldWRvVHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIFBzZXVkb05vdDoKICAgICAg
ICAgICAgICAgICBBU1NFUlQoY3MtPnNlbGVjdG9yTGlzdCgpKTsKLSAgICAgICAgICAgICAgICBz
dHIgKz0gY3MtPnNlbGVjdG9yTGlzdCgpLT5maXJzdCgpLT5zZWxlY3RvclRleHQoKTsKLSAgICAg
ICAgICAgICAgICBzdHIgKz0gIikiOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1h
a2VTdHJpbmcoY3MtPnNlbGVjdG9yTGlzdCgpLT5maXJzdCgpLT5zZWxlY3RvclRleHQoKSwgJykn
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBzZXVkb0xhbmc6
CiAgICAgICAgICAgICBjYXNlIFBzZXVkb050aENoaWxkOgogICAgICAgICAgICAgY2FzZSBQc2V1
ZG9OdGhMYXN0Q2hpbGQ6CiAgICAgICAgICAgICBjYXNlIFBzZXVkb050aE9mVHlwZToKICAgICAg
ICAgICAgIGNhc2UgUHNldWRvTnRoTGFzdE9mVHlwZToKLSAgICAgICAgICAgICAgICBzdHIgKz0g
Y3MtPmFyZ3VtZW50KCk7Ci0gICAgICAgICAgICAgICAgc3RyICs9ICIpIjsKKyAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKGNzLT5hcmd1bWVudCgpLnN0cmluZygpLCAn
KScpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUHNldWRvQW55
OiB7CiAgICAgICAgICAgICAgICAgQ1NTU2VsZWN0b3IqIGZpcnN0U3ViU2VsZWN0b3IgPSBjcy0+
c2VsZWN0b3JMaXN0KCktPmZpcnN0KCk7CiAgICAgICAgICAgICAgICAgZm9yIChDU1NTZWxlY3Rv
ciogc3ViU2VsZWN0b3IgPSBmaXJzdFN1YlNlbGVjdG9yOyBzdWJTZWxlY3Rvcjsgc3ViU2VsZWN0
b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc3ViU2VsZWN0b3IpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChzdWJTZWxlY3RvciAhPSBmaXJzdFN1YlNlbGVjdG9yKQotICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyICs9ICIsIjsKLSAgICAgICAgICAgICAgICAgICAgc3RyICs9IHN1YlNl
bGVjdG9yLT5zZWxlY3RvclRleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcsJyk7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN1YlNlbGVj
dG9yLT5zZWxlY3RvclRleHQoKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHN0ciArPSAiKSI7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAo
Y3MtPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpIHsKLSAgICAgICAgICAg
IHN0ciArPSAiOjoiOwotICAgICAgICAgICAgc3RyICs9IGNzLT52YWx1ZSgpOworICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiOjoiLCBjcy0+dmFsdWUoKS5zdHJpbmcoKSkp
OwogICAgICAgICB9IGVsc2UgaWYgKGNzLT5oYXNBdHRyaWJ1dGUoKSkgewotICAgICAgICAgICAg
c3RyICs9ICJbIjsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdbJyk7CiAgICAgICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCA9IGNzLT5hdHRyaWJ1dGUoKS5wcmVmaXgoKTsK
LSAgICAgICAgICAgIGlmICghcHJlZml4LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgc3Ry
LmFwcGVuZChwcmVmaXgpOwotICAgICAgICAgICAgICAgIHN0ci5hcHBlbmQoInwiKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHN0ciArPSBjcy0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCk7
CisgICAgICAgICAgICBpZiAoIXByZWZpeC5pc051bGwoKSkKKyAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKHByZWZpeC5zdHJpbmcoKSwgJ3wnKSk7CisgICAgICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9IGNzLT5hdHRyaWJ1dGUoKS5sb2NhbE5h
bWUoKTsKICAgICAgICAgICAgIHN3aXRjaCAoY3MtPm1fbWF0Y2gpIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpFeGFjdDoKLSAgICAgICAgICAgICAgICAgICAgc3RyICs9ICI9
IjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6U2V0OgotICAgICAgICAgICAgICAgICAgICAvLyBzZXQgaGFzIG5vIG9wZXJhdG9y
IG9yIHZhbHVlLCBqdXN0IHRoZSBhdHRyTmFtZQotICAgICAgICAgICAgICAgICAgICBzdHIgKz0g
Il0iOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpMaXN0OgotICAgICAgICAgICAgICAgICAgICBzdHIgKz0gIn49IjsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
SHlwaGVuOgotICAgICAgICAgICAgICAgICAgICBzdHIgKz0gInw9IjsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6QmVnaW46Ci0g
ICAgICAgICAgICAgICAgICAgIHN0ciArPSAiXj0iOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpFbmQ6Ci0gICAgICAgICAgICAg
ICAgICAgIHN0ciArPSAiJD0iOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpDb250YWluOgotICAgICAgICAgICAgICAgICAgICBz
dHIgKz0gIio9IjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpFeGFjdDoKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3Ry
aW5nKGxvY2FsTmFtZS5zdHJpbmcoKSwgJz0nKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTZXQ6CisgICAgICAgICAgICAgICAgLy8gc2V0
IGhhcyBubyBvcGVyYXRvciBvciB2YWx1ZSwganVzdCB0aGUgYXR0ck5hbWUKKyAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKGxvY2FsTmFtZS5zdHJpbmcoKSwgJ10nKSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpM
aXN0OgorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobG9jYWxOYW1l
LnN0cmluZygpLCAifj0iKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpIeXBoZW46CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
bWFrZVN0cmluZyhsb2NhbE5hbWUuc3RyaW5nKCksICJ8PSIpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkJlZ2luOgorICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobG9jYWxOYW1lLnN0cmluZygpLCAiXj0iKSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpF
bmQ6CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhsb2NhbE5hbWUu
c3RyaW5nKCksICIkPSIpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OkNvbnRhaW46CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
bWFrZVN0cmluZyhsb2NhbE5hbWUuc3RyaW5nKCksICIqPSIpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQobG9jYWxOYW1lLnN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChjcy0+bV9tYXRjaCAhPSBDU1NTZWxlY3Rvcjo6U2V0KSB7
Ci0gICAgICAgICAgICAgICAgc2VyaWFsaXplU3RyaW5nKGNzLT52YWx1ZSgpLCBzdHIpOwotICAg
ICAgICAgICAgICAgIHN0ciArPSAiXSI7CisgICAgICAgICAgICAgICAgc2VyaWFsaXplU3RyaW5n
KGNzLT52YWx1ZSgpLCBidWlsZGVyKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
XScpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChjcy0+cmVsYXRpb24o
KSAhPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IgfHwgIWNzLT50YWdIaXN0b3J5KCkpCkBAIC03
MjQsMTcgKzcxOCwxNyBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCgpIGNvbnN0
CiAgICAgaWYgKENTU1NlbGVjdG9yKiB0YWdIaXN0b3J5ID0gY3MtPnRhZ0hpc3RvcnkoKSkgewog
ICAgICAgICBTdHJpbmcgdGFnSGlzdG9yeVRleHQgPSB0YWdIaXN0b3J5LT5zZWxlY3RvclRleHQo
KTsKICAgICAgICAgaWYgKGNzLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpEaXJlY3RBZGph
Y2VudCkKLSAgICAgICAgICAgIHN0ciA9IHRhZ0hpc3RvcnlUZXh0ICsgIiArICIgKyBzdHI7Ci0g
ICAgICAgIGVsc2UgaWYgKGNzLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpJbmRpcmVjdEFk
amFjZW50KQotICAgICAgICAgICAgc3RyID0gdGFnSGlzdG9yeVRleHQgKyAiIH4gIiArIHN0cjsK
LSAgICAgICAgZWxzZSBpZiAoY3MtPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkNoaWxkKQot
ICAgICAgICAgICAgc3RyID0gdGFnSGlzdG9yeVRleHQgKyAiID4gIiArIHN0cjsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgLy8gRGVzY2VuZGFudAotICAgICAgICAgICAgc3RyID0gdGFnSGlz
dG9yeVRleHQgKyAiICIgKyBzdHI7CisgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZyh0YWdI
aXN0b3J5VGV4dCwgIiArICIsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgIGlmIChjcy0+
cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudCkKKyAgICAgICAgICAg
IHJldHVybiBtYWtlU3RyaW5nKHRhZ0hpc3RvcnlUZXh0LCAiIH4gIiwgYnVpbGRlci50b1N0cmlu
ZygpKTsKKyAgICAgICAgaWYgKGNzLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpDaGlsZCkK
KyAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHRhZ0hpc3RvcnlUZXh0LCAiID4gIiwgYnVp
bGRlci50b1N0cmluZygpKTsKKyAgICAgICAgICAgIAorICAgICAgICAvLyBEZXNjZW5kYW50Cisg
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHRhZ0hpc3RvcnlUZXh0LCAnICcsIGJ1aWxkZXIudG9T
dHJpbmcoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0cjsKKyAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOwogfQogCiBjb25zdCBRdWFsaWZpZWROYW1lJiBDU1NTZWxlY3Rvcjo6YXR0cmli
dXRlKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88222</attachid>
            <date>2011-04-05 07:03:26 -0700</date>
            <delta_ts>2011-04-08 23:31:28 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>Cleanup4a.diff</filename>
            <type>text/plain</type>
            <size>21887</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyOTM2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDQtMDUgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dpdGNoIGZyb20gVmVjdG9yPFVDaGFyPiB0byBT
dHJpbmdCdWlsZGVyIGluIGNzcy8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU3ODQwCisKKyAgICAgICAgKiBjc3MvQ1NTT01VdGlscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcHBlbmRDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFs
aXplQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUNoYXJhY3RlckFzQ29k
ZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlkZW50aWZpZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6c2VyaWFsaXplU3RyaW5nKToKKyAgICAgICAgKiBjc3MvQ1NTT01VdGlscy5o
OgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQpOgorCiAy
MDExLTA0LTA1ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTT01VdGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU09N
VXRpbHMuY3BwCShyZXZpc2lvbiA4MTk2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0
aWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDEyIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ1NTT01VdGlscy5oIgogCisjaW5jbHVkZSA8d3RmL3VuaWNvZGUv
VW5pY29kZS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgdm9pZCBhcHBlbmRDaGFyYWN0ZXIoVUNoYXIzMiBjLCBWZWN0b3I8VUNo
YXI+JiBhcHBlbmRUbykKK3N0YXRpYyB2b2lkIGFwcGVuZENoYXJhY3RlcihVQ2hhcjMyIGMsIFN0
cmluZ0J1aWxkZXImIGFwcGVuZFRvKQogewogICAgIGlmIChVMTZfTEVOR1RIKGMpID09IDEpCiAg
ICAgICAgIGFwcGVuZFRvLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oYykpOwpAQCAtNDUsMjcg
KzQ2LDIwIEBAIHN0YXRpYyB2b2lkIGFwcGVuZENoYXJhY3RlcihVQ2hhcjMyIGMsIFYKICAgICB9
CiB9CiAKLXZvaWQgc2VyaWFsaXplQ2hhcmFjdGVyKFVDaGFyMzIgYywgVmVjdG9yPFVDaGFyPiYg
YXBwZW5kVG8pCitzdGF0aWMgdm9pZCBzZXJpYWxpemVDaGFyYWN0ZXIoVUNoYXIzMiBjLCBTdHJp
bmdCdWlsZGVyJiBhcHBlbmRUbykKIHsKICAgICBhcHBlbmRUby5hcHBlbmQoJ1xcJyk7CiAgICAg
YXBwZW5kQ2hhcmFjdGVyKGMsIGFwcGVuZFRvKTsKIH0KIAotdm9pZCBzZXJpYWxpemVDaGFyYWN0
ZXJBc0NvZGVQb2ludChVQ2hhcjMyIGMsIFZlY3RvcjxVQ2hhcj4mIGFwcGVuZFRvKQorc3RhdGlj
IHZvaWQgc2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQoVUNoYXIzMiBjLCBTdHJpbmdCdWls
ZGVyJiBhcHBlbmRUbykKIHsKICAgICBhcHBlbmRUby5hcHBlbmQoJ1xcJyk7CiAgICAgYXBwZW5k
VW5zaWduZWRBc0hleChjLCBhcHBlbmRUbywgTG93ZXJjYXNlKTsKICAgICBhcHBlbmRUby5hcHBl
bmQoJyAnKTsKIH0KIAotdm9pZCBzZXJpYWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgU3RyaW5nJiBhcHBlbmRUbykKLXsKLSAgICBWZWN0b3I8VUNoYXI+IGFkZGVuZDsK
LSAgICBzZXJpYWxpemVJZGVudGlmaWVyKGlkZW50aWZpZXIsIGFkZGVuZCk7Ci0gICAgYXBwZW5k
VG8uYXBwZW5kKFN0cmluZzo6YWRvcHQoYWRkZW5kKSk7Ci19Ci0KLXZvaWQgc2VyaWFsaXplSWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFZlY3RvcjxVQ2hhcj4mIGFwcGVuZFRv
KQordm9pZCBzZXJpYWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgU3Ry
aW5nQnVpbGRlciYgYXBwZW5kVG8pCiB7CiAgICAgYm9vbCBpc0ZpcnN0ID0gdHJ1ZTsKICAgICBi
b29sIGlzU2Vjb25kID0gZmFsc2U7CkBAIC05NCwxNCArODgsNyBAQCB2b2lkIHNlcmlhbGl6ZUlk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpCiAgICAgfQogfQogCi12b2lkIHNlcmlhbGl6ZVN0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZywgU3RyaW5nJiBhcHBlbmRUbykKLXsKLSAgICBWZWN0b3I8
VUNoYXI+IGFkZGVuZDsKLSAgICBzZXJpYWxpemVTdHJpbmcoc3RyaW5nLCBhZGRlbmQpOwotICAg
IGFwcGVuZFRvLmFwcGVuZChTdHJpbmc6OmFkb3B0KGFkZGVuZCkpOwotfQotCi12b2lkIHNlcmlh
bGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgVmVjdG9yPFVDaGFyPiYgYXBwZW5kVG8p
Cit2b2lkIHNlcmlhbGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgU3RyaW5nQnVpbGRl
ciYgYXBwZW5kVG8pCiB7CiAgICAgYXBwZW5kVG8uYXBwZW5kKCdcIicpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NPTVV0aWxzLmgJKHJldmlzaW9uIDgxOTYwKQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0NTU09NVXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjEgKzMxLDE1IEBACiAjaWZuZGVm
IENTU09NVXRpbHNfaAogI2RlZmluZSBDU1NPTVV0aWxzX2gKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi91bmljb2RlL1Vu
aWNvZGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIC8vIFV0aWxp
dGllcyBmb3IgQ1NTT00gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nzb20vCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gQ29tbW9uIHNlcmlhbGl6aW5nIG1ldGhvZHMuIFNlZTogaHR0cDov
L2Rldi53My5vcmcvY3Nzd2cvY3Nzb20vI2NvbW1vbi1zZXJpYWxpemluZy1pZGlvbXMKLXZvaWQg
c2VyaWFsaXplQ2hhcmFjdGVyKFVDaGFyMzIsIFZlY3RvcjxVQ2hhcj4mIGFwcGVuZFRvKTsKLXZv
aWQgc2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQoVUNoYXIzMiwgVmVjdG9yPFVDaGFyPiYg
YXBwZW5kVG8pOwotdm9pZCBzZXJpYWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgU3RyaW5nJiBhcHBlbmRUbyk7Ci12b2lkIHNlcmlhbGl6ZUlkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBWZWN0b3I8VUNoYXI+JiBhcHBlbmRUbyk7Ci12b2lkIHNlcmlh
bGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgU3RyaW5nJiBhcHBlbmRUbyk7Ci12b2lk
IHNlcmlhbGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgVmVjdG9yPFVDaGFyPiYgYXBw
ZW5kVG8pOwordm9pZCBzZXJpYWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIFN0cmluZ0J1
aWxkZXImIGFwcGVuZFRvKTsKK3ZvaWQgc2VyaWFsaXplU3RyaW5nKGNvbnN0IFN0cmluZyYsIFN0
cmluZ0J1aWxkZXImIGFwcGVuZFRvKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHJldmlzaW9uIDgxOTYw
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzksNiArMzksOCBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZl
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KQogI2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lvbi5oIgpAQCAtNjMzLDU4ICs2MzUsNTggQEAgU3Ry
aW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29ucwogICAgICAgICAgICAgdGV4dCA9
IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NfUEVSQ0VOVEFHRToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92
YWx1ZS5udW0pICsgIiUiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKSwgIiUiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU19FTVM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSAr
ICJlbSI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1
ZS5udW0pLCAiZW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19FWFM6
Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJleCI7Cisg
ICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAi
ZXgiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19SRU1TOgotICAgICAg
ICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicmVtIjsKKyAgICAgICAg
ICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJyZW0iKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19QWDoKLSAgICAgICAgICAgIHRl
eHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInB4IjsKKyAgICAgICAgICAgIHRleHQg
PSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJweCIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0NNOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1h
dE51bWJlcihtX3ZhbHVlLm51bSkgKyAiY20iOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJp
bmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgImNtIik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDU1NfTU06Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1f
dmFsdWUubnVtKSArICJtbSI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXRO
dW1iZXIobV92YWx1ZS5udW0pLCAibW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIENTU19JTjoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0p
ICsgImluIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3Zh
bHVlLm51bSksICJpbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BU
OgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicHQiOwor
ICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwg
InB0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUEM6Ci0gICAgICAg
ICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJwYyI7CisgICAgICAgICAg
ICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAicGMiKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19ERUc6Ci0gICAgICAgICAgICB0ZXh0
ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJkZWciOworICAgICAgICAgICAgdGV4dCA9
IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgImRlZyIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JBRDoKLSAgICAgICAgICAgIHRleHQgPSBmb3Jt
YXROdW1iZXIobV92YWx1ZS5udW0pICsgInJhZCI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0
cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAicmFkIik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NfR1JBRDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1i
ZXIobV92YWx1ZS5udW0pICsgImdyYWQiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmco
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgImdyYWQiKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENTU19NUzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92
YWx1ZS5udW0pICsgIm1zIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51
bWJlcihtX3ZhbHVlLm51bSksICJtcyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ1NTX1M6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSAr
ICJzIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVl
Lm51bSksICJzIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfSFo6Ci0g
ICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJoeiI7CisgICAg
ICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAiaHoi
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19LSFo6Ci0gICAgICAgICAg
ICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJraHoiOworICAgICAgICAgICAg
dGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgImtoeiIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1RVUk46Ci0gICAgICAgICAgICB0ZXh0
ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJ0dXJuIjsKKyAgICAgICAgICAgIHRleHQg
PSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJ0dXJuIik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfRElNRU5TSU9OOgogICAgICAgICAgICAgLy8g
RklYTUUKQEAgLTY5MywyMiArNjk1LDEzIEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Nz
VGV4dCgpIGNvbnMKICAgICAgICAgICAgIHRleHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1f
dmFsdWUuc3RyaW5nKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19VUkk6
Ci0gICAgICAgICAgICB0ZXh0ID0gInVybCgiICsgcXVvdGVDU1NVUkxJZk5lZWRlZChtX3ZhbHVl
LnN0cmluZykgKyAiKSI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZygidXJsKCIsIHF1
b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpLCAnKScpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ1NTX0lERU5UOgogICAgICAgICAgICAgdGV4dCA9IHZhbHVlT3JQ
cm9wZXJ0eU5hbWUobV92YWx1ZS5pZGVudCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NfQVRUUjogewotICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dHJpbmcsIGF0dHJQYXJlbiwgKCJhdHRyKCIpKTsKLQotICAgICAgICAgICAgVmVjdG9yPFVDaGFy
PiByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSg2ICsg
bV92YWx1ZS5zdHJpbmctPmxlbmd0aCgpKTsKLQotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwg
YXR0clBhcmVuKTsKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIG1fdmFsdWUuc3RyaW5nKTsK
LSAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoJyknKTsKLQotICAgICAgICAgICAg
dGV4dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3Ry
aW5nKCJhdHRyKCIsIFN0cmluZyhtX3ZhbHVlLnN0cmluZyksICcpJyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19DT1VOVEVSX05BTUU6CkBAIC03MTcs
ODYgKzcxMCw1OCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zCiAg
ICAgICAgICAgICB0ZXh0ICs9ICIpIjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU19DT1VOVEVSOgotICAgICAgICAgICAgdGV4dCA9ICJjb3VudGVyKCI7Ci0gICAgICAgICAg
ICB0ZXh0ICs9IFN0cmluZzo6bnVtYmVyKG1fdmFsdWUubnVtKTsKLSAgICAgICAgICAgIHRleHQg
Kz0gIikiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoImNvdW50ZXIoIiwgU3RyaW5n
OjpudW1iZXIobV92YWx1ZS5udW0pLCAnKScpOwogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBs
aXN0LXN0eWxlIGFuZCBzZXBhcmF0b3IKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU19SRUNUOiB7Ci0gICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmlu
ZywgcmVjdFBhcmVuLCAoInJlY3QoIikpOwotCiAgICAgICAgICAgICBSZWN0KiByZWN0VmFsID0g
Z2V0UmVjdFZhbHVlKCk7Ci0gICAgICAgICAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKLSAgICAg
ICAgICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDMyKTsKLSAgICAgICAgICAgIGFw
cGVuZChyZXN1bHQsIHJlY3RQYXJlbik7Ci0KLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJl
Y3RWYWwtPnRvcCgpLT5jc3NUZXh0KCkpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcp
OwotCi0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCByZWN0VmFsLT5yaWdodCgpLT5jc3NUZXh0
KCkpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotCi0gICAgICAgICAgICBhcHBl
bmQocmVzdWx0LCByZWN0VmFsLT5ib3R0b20oKS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAnKTsKLQotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmVjdFZhbC0+
bGVmdCgpLT5jc3NUZXh0KCkpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwotCi0g
ICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAgdGV4
dCA9IG1ha2VTdHJpbmcoInJlY3QoIiwgcmVjdFZhbC0+dG9wKCktPmNzc1RleHQoKSwgJyAnLCBy
ZWN0VmFsLT5yaWdodCgpLT5jc3NUZXh0KCksICcgJywgcmVjdFZhbC0+Ym90dG9tKCktPmNzc1Rl
eHQoKSwgJyAnLCByZWN0VmFsLT5sZWZ0KCktPmNzc1RleHQoKSwgJyknKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1JHQkNPTE9SOgogICAgICAgICBj
YXNlIENTU19QQVJTRVJfSEVYQ09MT1I6IHsKLSAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgU3RyaW5nLCBjb21tYVNwYWNlLCAoIiwgIikpOwotICAgICAgICAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHJnYlBhcmVuLCAoInJnYigiKSk7Ci0gICAgICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcmdiYVBhcmVuLCAoInJnYmEo
IikpOwotCiAgICAgICAgICAgICBSR0JBMzIgcmdiQ29sb3IgPSBtX3ZhbHVlLnJnYmNvbG9yOwog
ICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBDU1NfUEFSU0VSX0hFWENPTE9SKQogICAgICAgICAg
ICAgICAgIENvbG9yOjpwYXJzZUhleENvbG9yKG1fdmFsdWUuc3RyaW5nLCByZ2JDb2xvcik7CisK
ICAgICAgICAgICAgIENvbG9yIGNvbG9yKHJnYkNvbG9yKTsKIAotICAgICAgICAgICAgVmVjdG9y
PFVDaGFyPiByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eSgzMik7CisgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgICAgICBi
dWlsZGVyLnJlc2VydmVDYXBhY2l0eSgzMik7CiAgICAgICAgICAgICBpZiAoY29sb3IuaGFzQWxw
aGEoKSkKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCByZ2JhUGFyZW4pOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJyZ2JhKCIpOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJnYlBhcmVuKTsKKyAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgicmdiKCIpOwogCi0gICAgICAgICAgICBhcHBlbmROdW1iZXIocmVzdWx0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjb2xvci5yZWQoKSkpOwotICAgICAgICAgICAg
YXBwZW5kKHJlc3VsdCwgY29tbWFTcGFjZSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKFN0cmluZzo6bnVtYmVyKGNvbG9yLnJlZCgpKSwgIiwgIikpOworICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhTdHJpbmc6Om51bWJlcihjb2xvci5ncmVlbigp
KSwgIiwgIikpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIoY29s
b3IuYmx1ZSgpKSk7CiAKLSAgICAgICAgICAgIGFwcGVuZE51bWJlcihyZXN1bHQsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KGNvbG9yLmdyZWVuKCkpKTsKLSAgICAgICAgICAgIGFwcGVuZChy
ZXN1bHQsIGNvbW1hU3BhY2UpOwotCi0gICAgICAgICAgICBhcHBlbmROdW1iZXIocmVzdWx0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjb2xvci5ibHVlKCkpKTsKLSAgICAgICAgICAgIGlm
IChjb2xvci5oYXNBbHBoYSgpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgY29t
bWFTcGFjZSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgU3RyaW5nOjpudW1iZXIo
Y29sb3IuYWxwaGEoKSAvIDI1Ni4wZikpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGNvbG9yLmhhc0FscGhhKCkpCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0
cmluZygiLCAiLCBTdHJpbmc6Om51bWJlcihjb2xvci5hbHBoYSgpIC8gMjU2LjBmKSkpOwogCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgICAgICAgICB0ZXh0ID0gU3RyaW5n
OjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKKyAgICAg
ICAgICAgIHRleHQgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENTU19QQUlSOgotICAgICAgICAgICAgdGV4dCA9IG1fdmFs
dWUucGFpci0+Zmlyc3QoKS0+Y3NzVGV4dCgpOwotICAgICAgICAgICAgdGV4dCArPSAiICI7Ci0g
ICAgICAgICAgICB0ZXh0ICs9IG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKTsKKyAg
ICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKG1fdmFsdWUucGFpci0+Zmlyc3QoKS0+Y3NzVGV4
dCgpLCAnICcsIG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKSk7CiAgICAgICAgICAg
ICBicmVhazsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgICAgIGNhc2UgQ1NT
X0RBU0hCT0FSRF9SRUdJT046CisgICAgICAgIGNhc2UgQ1NTX0RBU0hCT0FSRF9SRUdJT046IHsK
KyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgICAgIGZvciAoRGFz
aGJvYXJkUmVnaW9uKiByZWdpb24gPSBnZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpOyByZWdpb247
IHJlZ2lvbiA9IHJlZ2lvbi0+bV9uZXh0LmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF0
ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAg
ICAgICAgICAgICAgICB0ZXh0ICs9ICJkYXNoYm9hcmQtcmVnaW9uKCI7Ci0gICAgICAgICAgICAg
ICAgdGV4dCArPSByZWdpb24tPm1fbGFiZWw7CisgICAgICAgICAgICAgICAgaWYgKCFidWlsZGVy
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJkYXNoYm9hcmQtcmVnaW9u
KCIsIHJlZ2lvbi0+bV9sYWJlbCkpOwogICAgICAgICAgICAgICAgIGlmIChyZWdpb24tPm1faXND
aXJjbGUpCi0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gIiBjaXJjbGUiOworICAgICAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiIGNpcmNsZSIpOwogICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKLSAgICAgICAgICAgICAgICAgICAgdGV4dCAr
PSAiIHJlY3RhbmdsZSI7Ci0gICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiIHJlY3RhbmdsZSIpOworICAgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gYnVpbGRlci50b1N0cmluZygpOwogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYg
KHJlZ2lvbi0+dG9wKCktPm1fdHlwZSA9PSBDU1NfSURFTlQgJiYgcmVnaW9uLT50b3AoKS0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZUludmFsaWQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KHJlZ2lvbi0+cmlnaHQoKS0+bV90eXBlID09IENTU19JREVOVCk7CiAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChyZWdpb24tPmJvdHRvbSgpLT5tX3R5cGUgPT0gQ1NTX0lERU5UKTsKQEAgLTgw
NSwxNSArNzcwLDE3IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnMK
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+Ym90dG9tKCktPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVJbnZhbGlkKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+
bGVmdCgpLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAg
ICAgICAgICAgICAgdGV4dCArPSByZWdpb24tPnRvcCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAg
ICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5yaWdodCgpLT5jc3NUZXh0KCkgKyAiICI7
Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgp
ICsgIiAiOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bGVmdCgpLT5jc3NU
ZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcocmVnaW9uLT50b3AoKS0+Y3Nz
VGV4dCgpLCAnICcpKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0
cmluZyhyZWdpb24tPnJpZ2h0KCktPmNzc1RleHQoKSwgJyAnKSk7CisgICAgICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcocmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgp
LCAnICcpKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQocmVnaW9uLT5sZWZ0
KCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRleHQg
Kz0gIikiOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB0ZXh0ID0gYnVpbGRlci50b1N0cmluZygpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICBjYXNlIENTU19QQVJTRVJfT1BFUkFU
T1I6IHsKICAgICAgICAgICAgIGNoYXIgYyA9IHN0YXRpY19jYXN0PGNoYXI+KG1fdmFsdWUuaWRl
bnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA4MjkzNikK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJDU1NPTVV0aWxzLmgiCiAjaW5jbHVkZSAiQ1NTU2Vs
ZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTU2Miw5OSArNTY0LDkxIEBAIGJvb2wg
Q1NTU2VsZWN0b3I6Om9wZXJhdG9yPT0oY29uc3QgQ1NTU2UKIAogU3RyaW5nIENTU1NlbGVjdG9y
OjpzZWxlY3RvclRleHQoKSBjb25zdAogewotICAgIFN0cmluZyBzdHIgPSAiIjsKKyAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCA9IG1f
dGFnLnByZWZpeCgpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gbV90YWcu
bG9jYWxOYW1lKCk7CiAgICAgaWYgKG1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6Ok5vbmUgfHwgIXBy
ZWZpeC5pc051bGwoKSB8fCBsb2NhbE5hbWUgIT0gc3RhckF0b20pIHsKICAgICAgICAgaWYgKHBy
ZWZpeC5pc051bGwoKSkKLSAgICAgICAgICAgIHN0ciA9IGxvY2FsTmFtZTsKLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBzdHIgPSBwcmVmaXguc3RyaW5nKCk7Ci0gICAgICAgICAgICBzdHIu
YXBwZW5kKCJ8Iik7Ci0gICAgICAgICAgICBzdHIuYXBwZW5kKGxvY2FsTmFtZSk7Ci0gICAgICAg
IH0KKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxvY2FsTmFtZSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcocHJlZml4LnN0cmluZygpLCAn
fCcsIGxvY2FsTmFtZS5zdHJpbmcoKSkpOwogICAgIH0KIAogICAgIGNvbnN0IENTU1NlbGVjdG9y
KiBjcyA9IHRoaXM7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaWYgKGNzLT5tX21hdGNo
ID09IENTU1NlbGVjdG9yOjpJZCkgewotICAgICAgICAgICAgc3RyICs9ICIjIjsKLSAgICAgICAg
ICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIoY3MtPnZhbHVlKCksIHN0cik7CisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnIycpOworICAgICAgICAgICAgc2VyaWFsaXplSWRlbnRpZmllcihjcy0+
dmFsdWUoKSwgYnVpbGRlcik7CiAgICAgICAgIH0gZWxzZSBpZiAoY3MtPm1fbWF0Y2ggPT0gQ1NT
U2VsZWN0b3I6OkNsYXNzKSB7Ci0gICAgICAgICAgICBzdHIgKz0gIi4iOwotICAgICAgICAgICAg
c2VyaWFsaXplSWRlbnRpZmllcihjcy0+dmFsdWUoKSwgc3RyKTsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcuJyk7CisgICAgICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKGNzLT52YWx1
ZSgpLCBidWlsZGVyKTsKICAgICAgICAgfSBlbHNlIGlmIChjcy0+bV9tYXRjaCA9PSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3MgfHwgY3MtPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1
ZG9DbGFzcykgewotICAgICAgICAgICAgc3RyICs9ICI6IjsKLSAgICAgICAgICAgIHN0ciArPSBj
cy0+dmFsdWUoKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoJzonLCBj
cy0+dmFsdWUoKS5zdHJpbmcoKSkpOwogCiAgICAgICAgICAgICBzd2l0Y2ggKGNzLT5wc2V1ZG9U
eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgUHNldWRvTm90OgogICAgICAgICAgICAgICAgIEFT
U0VSVChjcy0+c2VsZWN0b3JMaXN0KCkpOwotICAgICAgICAgICAgICAgIHN0ciArPSBjcy0+c2Vs
ZWN0b3JMaXN0KCktPmZpcnN0KCktPnNlbGVjdG9yVGV4dCgpOwotICAgICAgICAgICAgICAgIHN0
ciArPSAiKSI7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhjcy0+
c2VsZWN0b3JMaXN0KCktPmZpcnN0KCktPnNlbGVjdG9yVGV4dCgpLCAnKScpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUHNldWRvTGFuZzoKICAgICAgICAgICAg
IGNhc2UgUHNldWRvTnRoQ2hpbGQ6CiAgICAgICAgICAgICBjYXNlIFBzZXVkb050aExhc3RDaGls
ZDoKICAgICAgICAgICAgIGNhc2UgUHNldWRvTnRoT2ZUeXBlOgogICAgICAgICAgICAgY2FzZSBQ
c2V1ZG9OdGhMYXN0T2ZUeXBlOgotICAgICAgICAgICAgICAgIHN0ciArPSBjcy0+YXJndW1lbnQo
KTsKLSAgICAgICAgICAgICAgICBzdHIgKz0gIikiOworICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKG1ha2VTdHJpbmcoY3MtPmFyZ3VtZW50KCkuc3RyaW5nKCksICcpJykpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQc2V1ZG9Bbnk6IHsKICAgICAgICAg
ICAgICAgICBDU1NTZWxlY3RvciogZmlyc3RTdWJTZWxlY3RvciA9IGNzLT5zZWxlY3Rvckxpc3Qo
KS0+Zmlyc3QoKTsKICAgICAgICAgICAgICAgICBmb3IgKENTU1NlbGVjdG9yKiBzdWJTZWxlY3Rv
ciA9IGZpcnN0U3ViU2VsZWN0b3I7IHN1YlNlbGVjdG9yOyBzdWJTZWxlY3RvciA9IENTU1NlbGVj
dG9yTGlzdDo6bmV4dChzdWJTZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHN1
YlNlbGVjdG9yICE9IGZpcnN0U3ViU2VsZWN0b3IpCi0gICAgICAgICAgICAgICAgICAgICAgICBz
dHIgKz0gIiwiOwotICAgICAgICAgICAgICAgICAgICBzdHIgKz0gc3ViU2VsZWN0b3ItPnNlbGVj
dG9yVGV4dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsK
KyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3ViU2VsZWN0b3ItPnNlbGVjdG9y
VGV4dCgpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RyICs9ICIpIjsK
KyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChjcy0+bV9tYXRjaCA9
PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCkgewotICAgICAgICAgICAgc3RyICs9ICI6OiI7
Ci0gICAgICAgICAgICBzdHIgKz0gY3MtPnZhbHVlKCk7CisgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChtYWtlU3RyaW5nKCI6OiIsIGNzLT52YWx1ZSgpLnN0cmluZygpKSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoY3MtPmhhc0F0dHJpYnV0ZSgpKSB7Ci0gICAgICAgICAgICBzdHIgKz0gIlsiOwor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1snKTsKICAgICAgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJlZml4ID0gY3MtPmF0dHJpYnV0ZSgpLnByZWZpeCgpOwotICAgICAgICAgICAg
aWYgKCFwcmVmaXguaXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICBzdHIuYXBwZW5kKHByZWZp
eCk7Ci0gICAgICAgICAgICAgICAgc3RyLmFwcGVuZCgifCIpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgc3RyICs9IGNzLT5hdHRyaWJ1dGUoKS5sb2NhbE5hbWUoKTsKKyAgICAgICAgICAg
IGlmICghcHJlZml4LmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1h
a2VTdHJpbmcocHJlZml4LnN0cmluZygpLCAnfCcpKTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbG9jYWxOYW1lID0gY3MtPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpOwogICAgICAg
ICAgICAgc3dpdGNoIChjcy0+bV9tYXRjaCkgewotICAgICAgICAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OkV4YWN0OgotICAgICAgICAgICAgICAgICAgICBzdHIgKz0gIj0iOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTZXQ6
Ci0gICAgICAgICAgICAgICAgICAgIC8vIHNldCBoYXMgbm8gb3BlcmF0b3Igb3IgdmFsdWUsIGp1
c3QgdGhlIGF0dHJOYW1lCi0gICAgICAgICAgICAgICAgICAgIHN0ciArPSAiXSI7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6Okxp
c3Q6Ci0gICAgICAgICAgICAgICAgICAgIHN0ciArPSAifj0iOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpIeXBoZW46Ci0gICAg
ICAgICAgICAgICAgICAgIHN0ciArPSAifD0iOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpCZWdpbjoKLSAgICAgICAgICAgICAg
ICAgICAgc3RyICs9ICJePSI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkVuZDoKLSAgICAgICAgICAgICAgICAgICAgc3RyICs9
ICIkPSI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OkNvbnRhaW46Ci0gICAgICAgICAgICAgICAgICAgIHN0ciArPSAiKj0iOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkV4
YWN0OgorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobG9jYWxOYW1l
LnN0cmluZygpLCAnPScpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlNldDoKKyAgICAgICAgICAgICAgICAvLyBzZXQgaGFzIG5vIG9wZXJh
dG9yIG9yIHZhbHVlLCBqdXN0IHRoZSBhdHRyTmFtZQorICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKG1ha2VTdHJpbmcobG9jYWxOYW1lLnN0cmluZygpLCAnXScpKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6Okxpc3Q6CisgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhsb2NhbE5hbWUuc3RyaW5nKCksICJ+
PSIpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0
b3I6Okh5cGhlbjoKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKGxv
Y2FsTmFtZS5zdHJpbmcoKSwgInw9IikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6QmVnaW46CisgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZyhsb2NhbE5hbWUuc3RyaW5nKCksICJePSIpKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkVuZDoKKyAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKGxvY2FsTmFtZS5zdHJpbmcoKSwgIiQ9
IikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6Q29udGFpbjoKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKGxv
Y2FsTmFtZS5zdHJpbmcoKSwgIio9IikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb2NhbE5hbWUu
c3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKGNzLT5tX21hdGNoICE9IENTU1NlbGVjdG9yOjpTZXQpIHsKLSAgICAgICAgICAg
ICAgICBzZXJpYWxpemVTdHJpbmcoY3MtPnZhbHVlKCksIHN0cik7Ci0gICAgICAgICAgICAgICAg
c3RyICs9ICJdIjsKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVTdHJpbmcoY3MtPnZhbHVlKCks
IGJ1aWxkZXIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCddJyk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKGNzLT5yZWxhdGlvbigpICE9IENTU1NlbGVj
dG9yOjpTdWJTZWxlY3RvciB8fCAhY3MtPnRhZ0hpc3RvcnkoKSkKQEAgLTY2NSwxNyArNjU5LDE3
IEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KCkgY29uc3QKICAgICBpZiAoQ1NT
U2VsZWN0b3IqIHRhZ0hpc3RvcnkgPSBjcy0+dGFnSGlzdG9yeSgpKSB7CiAgICAgICAgIFN0cmlu
ZyB0YWdIaXN0b3J5VGV4dCA9IHRhZ0hpc3RvcnktPnNlbGVjdG9yVGV4dCgpOwogICAgICAgICBp
ZiAoY3MtPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50KQotICAgICAg
ICAgICAgc3RyID0gdGFnSGlzdG9yeVRleHQgKyAiICsgIiArIHN0cjsKLSAgICAgICAgZWxzZSBp
ZiAoY3MtPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQpCi0gICAg
ICAgICAgICBzdHIgPSB0YWdIaXN0b3J5VGV4dCArICIgfiAiICsgc3RyOwotICAgICAgICBlbHNl
IGlmIChjcy0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rvcjo6Q2hpbGQpCi0gICAgICAgICAgICBz
dHIgPSB0YWdIaXN0b3J5VGV4dCArICIgPiAiICsgc3RyOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAvLyBEZXNjZW5kYW50Ci0gICAgICAgICAgICBzdHIgPSB0YWdIaXN0b3J5VGV4dCArICIg
IiArIHN0cjsKKyAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHRhZ0hpc3RvcnlUZXh0LCAi
ICsgIiwgYnVpbGRlci50b1N0cmluZygpKTsKKyAgICAgICAgaWYgKGNzLT5yZWxhdGlvbigpID09
IENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50KQorICAgICAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcodGFnSGlzdG9yeVRleHQsICIgfiAiLCBidWlsZGVyLnRvU3RyaW5nKCkpOworICAgICAg
ICBpZiAoY3MtPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkNoaWxkKQorICAgICAgICAgICAg
cmV0dXJuIG1ha2VTdHJpbmcodGFnSGlzdG9yeVRleHQsICIgPiAiLCBidWlsZGVyLnRvU3RyaW5n
KCkpOworICAgICAgICAgICAgCisgICAgICAgIC8vIERlc2NlbmRhbnQKKyAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcodGFnSGlzdG9yeVRleHQsICcgJywgYnVpbGRlci50b1N0cmluZygpKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gc3RyOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9
CiAKIGNvbnN0IFF1YWxpZmllZE5hbWUmIENTU1NlbGVjdG9yOjphdHRyaWJ1dGUoKSBjb25zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>