<?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>96030</bug_id>
          
          <creation_ts>2012-09-06 15:00:10 -0700</creation_ts>
          <short_desc>Add StringBuilder::appendNumber() and use it</short_desc>
          <delta_ts>2012-09-09 21:19: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>Web Template Framework</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>
          <dependson>95940</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>713745</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-06 15:00:10 -0700</bug_when>
    <thetext>Add StringBuilder::appendNumber() and use it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713749</commentid>
    <comment_count>1</comment_count>
      <attachid>162597</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-06 15:07:19 -0700</bug_when>
    <thetext>Created attachment 162597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713754</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-06 15:13:46 -0700</bug_when>
    <thetext>Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715604</commentid>
    <comment_count>3</comment_count>
      <attachid>162597</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-09 14:32:17 -0700</bug_when>
    <thetext>Comment on attachment 162597
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=162597&amp;action=review

Faster, or just cleaner?

&gt; Source/JavaScriptCore/API/JSContextRef.cpp:210
&gt; +        builder.append(&apos;:&apos;);

We really need to rename this appendChar or overload appendLiteral(char) instead so it&apos;s easier to tell that it&apos;s the &quot;fast&quot; version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715605</commentid>
    <comment_count>4</comment_count>
      <attachid>162597</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-09 14:32:49 -0700</bug_when>
    <thetext>Comment on attachment 162597
Patch

Attachment 162597 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13796642</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715607</commentid>
    <comment_count>5</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-09 14:40:54 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 162597 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162597&amp;action=review
&gt; 
&gt; Faster, or just cleaner?

Since it does not create a StringImpl for every number and appends the content of a character buffer directly it is faster too.

&gt; &gt; Source/JavaScriptCore/API/JSContextRef.cpp:210
&gt; &gt; +        builder.append(&apos;:&apos;);
&gt; 
&gt; We really need to rename this appendChar or overload appendLiteral(char) instead so it&apos;s easier to tell that it&apos;s the &quot;fast&quot; version.

I can do this in a follow up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715616</commentid>
    <comment_count>6</comment_count>
      <attachid>163017</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-09 15:06:57 -0700</bug_when>
    <thetext>Created attachment 163017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715617</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-09 15:11:30 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; &gt; Source/JavaScriptCore/API/JSContextRef.cpp:210
&gt; &gt; &gt; +        builder.append(&apos;:&apos;);
&gt; &gt; 
&gt; &gt; We really need to rename this appendChar or overload appendLiteral(char) instead so it&apos;s easier to tell that it&apos;s the &quot;fast&quot; version.
&gt; 
&gt; I can do this in a follow up patch.

yes. :)  I certainly wan&apos;t expecting such in this patch.   THanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715618</commentid>
    <comment_count>8</comment_count>
      <attachid>163017</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-09 15:11:47 -0700</bug_when>
    <thetext>Comment on attachment 163017
Patch

LGTM if the EWSes think so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715695</commentid>
    <comment_count>9</comment_count>
      <attachid>163017</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-09 21:19:12 -0700</bug_when>
    <thetext>Comment on attachment 163017
Patch

Clearing flags on attachment: 163017

Committed r128014: &lt;http://trac.webkit.org/changeset/128014&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715696</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-09 21:19:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162597</attachid>
            <date>2012-09-06 15:07:19 -0700</date>
            <delta_ts>2012-09-09 15:06:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96030.patch</filename>
            <type>text/plain</type>
            <size>21461</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAzNjBlMzM3
Li43YzgxNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3Bw
CkBAIC0yMDAsMTUgKzIwMCwxNSBAQCBKU1N0cmluZ1JlZiBKU0NvbnRleHRDcmVhdGVCYWNrdHJh
Y2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tTaXplKQogICAgICAgICB9CiAg
ICAgICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBzaWduZWRMaW5lTnVtYmVyID49IDAgPyBzaWdu
ZWRMaW5lTnVtYmVyIDogMDsKICAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbiIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiIyIp
OworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxldmVsU3RyKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQoIiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIigp
IGF0ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIigpIGF0ICIpOwogICAgICAg
ICBidWlsZGVyLmFwcGVuZCh1cmxTdHJpbmcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiOiIp
OwotICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihsaW5lTnVtYmVyKSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KGxpbmVOdW1iZXIpOwogICAgICAgICBpZiAoIWZ1bmN0aW9uIHx8ICsrY291bnQgPT0gbWF4U3Rh
Y2tTaXplKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFt
ZS0+Y2FsbGVyRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ2ZTc5OGUuLjQx
MDhhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5IEBACiAyMDEyLTA5
LTA2ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCisgICAgICAgIEFk
ZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIoKSBhbmQgdXNlIGl0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjAzMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsc28gZml4IGEgYnVuY2ggb2YgYXBw
ZW5kKCkgdnMuIGFwcGVuZExpdGVyYWwoKSBpc3N1ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUu
CisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTQ29udGV4dENy
ZWF0ZUJhY2t0cmFjZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAg
ICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6dG9TdHJpbmcpOgorCisyMDEyLTA5LTA2ICBQYXRyaWNr
IEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCiAgICAgICAgIE1ha2UgdGhlIFN0cmlu
ZyBpbml0aWFsaXphdGlvbiBvbiB0aGUgZnVuY3Rpb24gc2lkZSBvZiBTdHJpbmc6Om51bWJlcigp
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk0MAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmlu
ZGV4IDE5Y2I0YjIuLjQ2NDA1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCkBAIC05Miw3ICs5Miw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kKHNvdXJjZVVSTCk7CiAgICAgICAgICAg
ICAgICAgaWYgKGxpbmUgPiAtMSkgewogICAgICAgICAgICAgICAgICAgICB0cmFjZUJ1aWxkLmFw
cGVuZCgnOicpOwotICAgICAgICAgICAgICAgICAgICB0cmFjZUJ1aWxkLmFwcGVuZChTdHJpbmc6
Om51bWJlcihsaW5lKSk7CisgICAgICAgICAgICAgICAgICAgIHRyYWNlQnVpbGQuYXBwZW5kTnVt
YmVyKGxpbmUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHJldHVybiB0cmFjZUJ1aWxkLnRvU3RyaW5nKCkuaW1wbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3NTc5N2MxLi44Mzky
ZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBACiAyMDEyLTA5LTA2ICBQYXRyaWNrIEdhbnN0ZXJlciAg
PHBhcm9nYUB3ZWJraXQub3JnPgogCisgICAgICAgIEFkZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRO
dW1iZXIoKSBhbmQgdXNlIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFsc28gZml4IGEgYnVuY2ggb2YgYXBwZW5kKCkgdnMuIGFwcGVuZExpdGVyYWwo
KSBpc3N1ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUuCisKKyAgICAgICAgKiB3dGYvRGF0ZU1h
dGguY3BwOgorICAgICAgICAoV1RGOjptYWtlUkZDMjgyMkRhdGVTdHJpbmcpOgorICAgICAgICAq
IHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVy
OjphcHBlbmROdW1iZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaDoKKyAg
ICAgICAgKFN0cmluZ0J1aWxkZXIpOgorCisyMDEyLTA5LTA2ICBQYXRyaWNrIEdhbnN0ZXJlciAg
PHBhcm9nYUB3ZWJraXQub3JnPgorCiAgICAgICAgIE1ha2UgdGhlIFN0cmluZyBpbml0aWFsaXph
dGlvbiBvbiB0aGUgZnVuY3Rpb24gc2lkZSBvZiBTdHJpbmc6Om51bWJlcigpCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk0MAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5j
cHAKaW5kZXggZTE4ZWVjYy4uNmQwZTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0
ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcApAQCAtMTA3MiwxMyAr
MTA3MiwxMyBAQCBTdHJpbmcgbWFrZVJGQzI4MjJEYXRlU3RyaW5nKHVuc2lnbmVkIGRheU9mV2Vl
aywgdW5zaWduZWQgZGF5LCB1bnNpZ25lZCBtb250aCwgdQogewogICAgIFN0cmluZ0J1aWxkZXIg
c3RyaW5nQnVpbGRlcjsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh3ZWVrZGF5TmFtZVtkYXlP
ZldlZWtdKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihkYXkpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiICIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZE51bWJlcihkYXkpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcg
Jyk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobW9udGhOYW1lW21vbnRoXSk7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6
Om51bWJlcih5ZWFyKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAiKTsKKyAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgnICcpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKHll
YXIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcgJyk7CiAKICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCh0d29EaWdpdFN0cmluZ0Zyb21OdW1iZXIoaG91cnMpKTsKICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgnOicpOwpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAgU3RyaW5nIG1ha2VSRkMyODIy
RGF0ZVN0cmluZyh1bnNpZ25lZCBkYXlPZldlZWssIHVuc2lnbmVkIGRheSwgdW5zaWduZWQgbW9u
dGgsIHUKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0d29EaWdpdFN0cmluZ0Zyb21OdW1iZXIo
c2Vjb25kcykpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcgJyk7CiAKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCh1dGNPZmZzZXQgPiAwID8gIisiIDogIi0iKTsKKyAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCh1dGNPZmZzZXQgPiAwID8gJysnIDogJy0nKTsKICAgICBpbnQgYWJzb2x1dGVV
VENPZmZzZXQgPSBhYnModXRjT2Zmc2V0KTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0d29E
aWdpdFN0cmluZ0Zyb21OdW1iZXIoYWJzb2x1dGVVVENPZmZzZXQgLyA2MCkpOwogICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKHR3b0RpZ2l0U3RyaW5nRnJvbU51bWJlcihhYnNvbHV0ZVVUQ09mZnNl
dCAlIDYwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
Y3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAppbmRleCA0ZWFjNzU2
Li4xOGM5MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgi
CiAKKyNpbmNsdWRlICJJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiV1RG
U3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMjg2LDYgKzI4NywzNiBAQCB2b2lkIFN0
cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKQogICAgIH0KIH0KIAordm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIoaW50IG51
bWJlcikKK3sKKyAgICBudW1iZXJUb1N0cmluZ1NpZ25lZDxTdHJpbmdCdWlsZGVyPihudW1iZXIs
IHRoaXMpOworfQorCit2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcih1bnNpZ25lZCBp
bnQgbnVtYmVyKQoreworICAgIG51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5nQnVpbGRlcj4o
bnVtYmVyLCB0aGlzKTsKK30KKwordm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIobG9u
ZyBudW1iZXIpCit7CisgICAgbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVt
YmVyLCB0aGlzKTsKK30KKwordm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIodW5zaWdu
ZWQgbG9uZyBudW1iZXIpCit7CisgICAgbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxTdHJpbmdCdWls
ZGVyPihudW1iZXIsIHRoaXMpOworfQorCit2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJl
cihsb25nIGxvbmcgbnVtYmVyKQoreworICAgIG51bWJlclRvU3RyaW5nU2lnbmVkPFN0cmluZ0J1
aWxkZXI+KG51bWJlciwgdGhpcyk7Cit9CisKK3ZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVt
YmVyKHVuc2lnbmVkIGxvbmcgbG9uZyBudW1iZXIpCit7CisgICAgbnVtYmVyVG9TdHJpbmdVbnNp
Z25lZDxTdHJpbmdCdWlsZGVyPihudW1iZXIsIHRoaXMpOworfQorCiBib29sIFN0cmluZ0J1aWxk
ZXI6OmNhblNocmluaygpIGNvbnN0CiB7CiAgICAgLy8gT25seSBzaHJpbmsgdGhlIGJ1ZmZlciBp
ZiBpdCdzIGxlc3MgdGhhbiA4MCUgZnVsbC4gTmVlZCB0byB0dW5lIHRoaXMgaGV1cmlzdGljIQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmggYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAppbmRleCAzN2VmNTg3Li4xNzlhOTUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaApAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBhcHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICAK
KwogICAgIHZvaWQgYXBwZW5kKGNoYXIgYykKICAgICB7CiAgICAgICAgIGFwcGVuZChzdGF0aWNf
Y2FzdDxMQ2hhcj4oYykpOwpAQCAtMTMzLDYgKzEzMywxMyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhcHBl
bmRMaXRlcmFsKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKSB7IGFw
cGVuZChjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzQ291bnQgLSAxKTsgfQogCisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgYXBwZW5kTnVtYmVyKGludCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgYXBwZW5kTnVtYmVyKHVuc2lnbmVkIGludCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgYXBwZW5kTnVtYmVyKGxvbmcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFw
cGVuZE51bWJlcih1bnNpZ25lZCBsb25nKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBh
cHBlbmROdW1iZXIobG9uZyBsb25nKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBl
bmROdW1iZXIodW5zaWduZWQgbG9uZyBsb25nKTsKKwogICAgIFN0cmluZyB0b1N0cmluZygpCiAg
ICAgewogICAgICAgICBzaHJpbmtUb0ZpdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGIyNTI3MTEuLjNkNjVl
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMi0wOS0wNiAgUGF0cmljayBHYW5z
dGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU3RyaW5nQnVpbGRlcjo6
YXBwZW5kTnVtYmVyKCkgYW5kIHVzZSBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTYwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBbHNvIGZpeCBhIGJ1bmNoIG9mIGFwcGVuZCgpIHZzLiBhcHBlbmRM
aXRlcmFsKCkgaXNzdWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlLgorCisgICAgICAgICogTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpob3N0TmFtZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpyZXNvdXJjZVN0cmluZyk6CisgICAgICAgICogY3NzL0ZvbnRG
ZWF0dXJlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZlYXR1cmVWYWx1ZTo6Y3Vz
dG9tQ3NzVGV4dCk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvc2l0aW9uOjpmb3JtYXRGb3JEZWJ1Z2dlcik6CisgICAgICAgICogZG9tL1JhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpmb3JtYXRGb3JEZWJ1Z2dlcik6CisgICAgICAg
ICogaHRtbC9Gb3JtQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtS2V5R2Vu
ZXJhdG9yOjpmb3JtS2V5KToKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFNlcnZlck1hcE1vdXNlUG9zaXRpb24pOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWRlbnRpZmll
cnNGYWN0b3J5OjphZGRQcm9jZXNzSWRQcmVmaXhUbyk6CisgICAgICAgICogcGFnZS9GcmFtZVRy
ZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjp1bmlxdWVDaGlsZE5hbWUpOgor
ICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OnRvUmF3U3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EZWNpbWFsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OnRvU3RyaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFBy
b3h5U2VydmVyU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFN0cmVhbTo6b3BlcmF0b3I8PCk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZVBvc2l0aW9uKToKKyAgICAgICAg
KiB4bWwvWE1MRXJyb3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEVycm9yczo6YXBwZW5k
RXJyb3JNZXNzYWdlKToKKwogMjAxMi0wOS0wNiAgQW5kcmVpIFBvZW5hcnUgIDxwb2VuYXJ1QGFk
b2JlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBQcm90b2NvbCBFeHRlbnNpb246IEFk
ZCAicmVnaW9uTGF5b3V0VXBkYXRlIiBldmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCAxYmExNWZi
Li4wMGM4MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgU3Ry
aW5nIGhvc3ROYW1lKGNvbnN0IEtVUkwmIHVybCwgYm9vbCBzZWN1cmUpCiAgICAgYnVpbGRlci5h
cHBlbmQodXJsLmhvc3QoKS5sb3dlcigpKTsKICAgICBpZiAodXJsLnBvcnQoKSAmJiAoKCFzZWN1
cmUgJiYgdXJsLnBvcnQoKSAhPSA4MCkgfHwgKHNlY3VyZSAmJiB1cmwucG9ydCgpICE9IDQ0Mykp
KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KFN0cmluZzo6bnVtYmVyKHVybC5wb3J0KCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIodXJsLnBvcnQoKSk7CiAgICAgfQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDI2YjEyMzcuLjdmMWJkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIGlubGluZSBT
dHJpbmcgcmVzb3VyY2VTdHJpbmcoY29uc3Qgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0
aW9uKQogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLmFwcGVuZChyZXNv
dXJjZU5hbWUpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAgYnVpbGRlci5hcHBlbmQo
U3RyaW5nOjpudW1iZXIobGluZU51bWJlcikpOworICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGxp
bmVOdW1iZXIpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmNwcAppbmRleCAxMjA2ZDk0Li4yMmQ0Nzk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwCkBAIC00MywxMCArNDMsMTAgQEAg
Rm9udEZlYXR1cmVWYWx1ZTo6Rm9udEZlYXR1cmVWYWx1ZShjb25zdCBTdHJpbmcmIHRhZywgaW50
IHZhbHVlKQogU3RyaW5nIEZvbnRGZWF0dXJlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAog
ewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZCgiJyIpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKCdcJycpOwogICAgIGJ1aWxkZXIuYXBwZW5kKG1fdGFnKTsKLSAg
ICBidWlsZGVyLmFwcGVuZCgiJyAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJl
cihtX3ZhbHVlKSk7CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCInICIpOworICAgIGJ1aWxk
ZXIuYXBwZW5kTnVtYmVyKG1fdmFsdWUpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IDRkNWMxMWIuLjRmY2Y0NDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMTMyMSw3ICsxMzIxLDcgQEAgdm9pZCBQb3NpdGlvbjo6
Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiAg
ICAgZWxzZSB7CiAgICAgICAgIGNoYXIgc1sxMDI0XTsKICAgICAgICAgcmVzdWx0LmFwcGVuZExp
dGVyYWwoIm9mZnNldCAiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmc6Om51bWJlciht
X29mZnNldCkpOworICAgICAgICByZXN1bHQuYXBwZW5kTnVtYmVyKG1fb2Zmc2V0KTsKICAgICAg
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBvZiAiKTsKICAgICAgICAgZGVwcmVjYXRlZE5vZGUo
KS0+Zm9ybWF0Rm9yRGVidWdnZXIocywgc2l6ZW9mKHMpKTsKICAgICAgICAgcmVzdWx0LmFwcGVu
ZChzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IGVlY2QwYWYuLmM3MWZhMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmNwcApAQCAtMTY2MywxMiArMTY2MywxMiBAQCB2b2lkIFJhbmdlOjpmb3JtYXRGb3JEZWJ1
Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKICAgICAgICAgY29uc3Qg
aW50IEZvcm1hdEJ1ZmZlclNpemUgPSAxMDI0OwogICAgICAgICBjaGFyIHNbRm9ybWF0QnVmZmVy
U2l6ZV07CiAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJmcm9tIG9mZnNldCAiKTsKLSAg
ICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmc6Om51bWJlcihtX3N0YXJ0Lm9mZnNldCgpKSk7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmROdW1iZXIobV9zdGFydC5vZmZzZXQoKSk7CiAgICAgICAgIHJl
c3VsdC5hcHBlbmRMaXRlcmFsKCIgb2YgIik7CiAgICAgICAgIG1fc3RhcnQuY29udGFpbmVyKCkt
PmZvcm1hdEZvckRlYnVnZ2VyKHMsIEZvcm1hdEJ1ZmZlclNpemUpOwogICAgICAgICByZXN1bHQu
YXBwZW5kKHMpOwogICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIHRvIG9mZnNldCAiKTsK
LSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmc6Om51bWJlcihtX2VuZC5vZmZzZXQoKSkpOwor
ICAgICAgICByZXN1bHQuYXBwZW5kTnVtYmVyKG1fZW5kLm9mZnNldCgpKTsKICAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoIiBvZiAiKTsKICAgICAgICAgbV9lbmQuY29udGFpbmVyKCktPmZv
cm1hdEZvckRlYnVnZ2VyKHMsIEZvcm1hdEJ1ZmZlclNpemUpOwogICAgICAgICByZXN1bHQuYXBw
ZW5kKHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCA0OTQxMmJl
Li5lNTc2N2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAtMzU4
LDggKzM1OCw4IEBAIEF0b21pY1N0cmluZyBGb3JtS2V5R2VuZXJhdG9yOjpmb3JtS2V5KGNvbnN0
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUmIGNvCiAKICAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CiAgICAgYnVpbGRlci5hcHBlbmQoc2lnbmF0dXJlKTsKLSAgICBidWlsZGVyLmFw
cGVuZCgiICMiKTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihuZXh0SW5kZXgp
KTsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAjIik7CisgICAgYnVpbGRlci5hcHBlbmRO
dW1iZXIobmV4dEluZGV4KTsKICAgICBBdG9taWNTdHJpbmcgZm9ybUtleSA9IGJ1aWxkZXIudG9B
dG9taWNTdHJpbmcoKTsKICAgICBtX2Zvcm1Ub0tleU1hcC5hZGQoZm9ybSwgZm9ybUtleSk7CiAg
ICAgcmV0dXJuIGZvcm1LZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
bmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQu
Y3BwCmluZGV4IGMzMjk5ZmMuLmY5ZTNlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFu
Y2hvckVsZW1lbnQuY3BwCkBAIC0xNDUsOSArMTQ1LDkgQEAgc3RhdGljIHZvaWQgYXBwZW5kU2Vy
dmVyTWFwTW91c2VQb3NpdGlvbihTdHJpbmdCdWlsZGVyJiB1cmwsIEV2ZW50KiBldmVudCkKICAg
ICBpbnQgeCA9IGFic29sdXRlUG9zaXRpb24ueCgpOwogICAgIGludCB5ID0gYWJzb2x1dGVQb3Np
dGlvbi55KCk7CiAgICAgdXJsLmFwcGVuZCgnPycpOwotICAgIHVybC5hcHBlbmQoU3RyaW5nOjpu
dW1iZXIoeCkpOworICAgIHVybC5hcHBlbmROdW1iZXIoeCk7CiAgICAgdXJsLmFwcGVuZCgnLCcp
OwotICAgIHVybC5hcHBlbmQoU3RyaW5nOjpudW1iZXIoeSkpOworICAgIHVybC5hcHBlbmROdW1i
ZXIoeSk7CiB9CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggYTk2MDQ4OS4uNTQxNGJhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCkBAIC0yMDAxLDcgKzIwMDEsNyBAQCBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmb250KCkgY29uc3QKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLnNtYWxsQ2Fwcygp
ID09IEZvbnRTbWFsbENhcHNPbikKICAgICAgICAgc2VyaWFsaXplZEZvbnQuYXBwZW5kTGl0ZXJh
bCgic21hbGwtY2FwcyAiKTsKIAotICAgIHNlcmlhbGl6ZWRGb250LmFwcGVuZChTdHJpbmc6Om51
bWJlcihmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSkpOworICAgIHNlcmlhbGl6
ZWRGb250LmFwcGVuZE51bWJlcihmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSk7
CiAgICAgc2VyaWFsaXplZEZvbnQuYXBwZW5kTGl0ZXJhbCgicHgiKTsKIAogICAgIGNvbnN0IEZv
bnRGYW1pbHkmIGZpcnN0Rm9udEZhbWlseSA9IGZvbnREZXNjcmlwdGlvbi5mYW1pbHkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5jcHAKaW5kZXgg
YjhjNmQ3Zi4uYzJhZjJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lk
ZW50aWZpZXJzRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lkZW50
aWZpZXJzRmFjdG9yeS5jcHAKQEAgLTU2LDggKzU2LDggQEAgU3RyaW5nIElkZW50aWZpZXJzRmFj
dG9yeTo6cmVxdWVzdElkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIFN0cmluZyBJZGVudGlm
aWVyc0ZhY3Rvcnk6OmFkZFByb2Nlc3NJZFByZWZpeFRvKGNvbnN0IFN0cmluZyYgaWQpCiB7CiAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVt
YmVyKHNfcHJvY2Vzc0lkKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoIi4iKTsKKyAgICBidWlsZGVy
LmFwcGVuZE51bWJlcihzX3Byb2Nlc3NJZCk7CisgICAgYnVpbGRlci5hcHBlbmQoJy4nKTsKICAg
ICBidWlsZGVyLmFwcGVuZChpZCk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAppbmRleCBkNjI0NTc5Li42ZjgxNzE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVRyZWUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgQXRvbWljU3RyaW5nIEZy
YW1lVHJlZTo6dW5pcXVlQ2hpbGROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgcmVxdWVzdGVkTmFt
ZSkgY29uc3QKICAgICB9CiAKICAgICBuYW1lLmFwcGVuZExpdGVyYWwoIi88IS0tZnJhbWUiKTsK
LSAgICBuYW1lLmFwcGVuZChTdHJpbmc6Om51bWJlcihjaGlsZENvdW50KCkpKTsKKyAgICBuYW1l
LmFwcGVuZE51bWJlcihjaGlsZENvdW50KCkpOwogICAgIG5hbWUuYXBwZW5kTGl0ZXJhbCgiLS0+
LS0+Iik7CiAKICAgICByZXR1cm4gbmFtZS50b0F0b21pY1N0cmluZygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA2OTM0NzE3Li5kZjg5NzY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDY5LDggKzQ2OSw4IEBAIFN0cmluZyBT
ZWN1cml0eU9yaWdpbjo6dG9SYXdTdHJpbmcoKSBjb25zdAogICAgIHJlc3VsdC5hcHBlbmQobV9o
b3N0KTsKIAogICAgIGlmIChtX3BvcnQpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiOiIpOwot
ICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1fcG9ydCkpOworICAgICAgICBy
ZXN1bHQuYXBwZW5kKCc6Jyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmROdW1iZXIobV9wb3J0KTsK
ICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RlY2ltYWwuY3BwCmluZGV4IDhhNWUyNzUuLjlkMDJmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RlY2ltYWwuY3BwCkBAIC0xMDA1LDcgKzEwMDUsNyBAQCBTdHJpbmcgRGVjaW1hbDo6dG9TdHJp
bmcoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIwLiIpOworICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIjAuIik7CiAgICAgICAgIGZvciAoaW50IGkgPSBhZGp1c3RlZEV4cG9uZW50
ICsgMTsgaSA8IDA7ICsraSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcwJyk7CiAKQEAg
LTEwMjMsNyArMTAyMyw3IEBAIFN0cmluZyBEZWNpbWFsOjp0b1N0cmluZygpIGNvbnN0CiAKICAg
ICAgICAgaWYgKGFkanVzdGVkRXhwb25lbnQpIHsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGFkanVzdGVkRXhwb25lbnQgPCAwID8gImUiIDogImUrIik7Ci0gICAgICAgICAgICBidWlsZGVy
LmFwcGVuZChTdHJpbmc6Om51bWJlcihhZGp1c3RlZEV4cG9uZW50KSk7CisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihhZGp1c3RlZEV4cG9uZW50KTsKICAgICAgICAgfQogICAgIH0K
ICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcAppbmRleCA3ZWYyODNiLi4wN2M5MGNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcApAQCAt
NTIsNyArNTIsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRQcm94eVNlcnZlclN0cmluZyhTdHJpbmdC
dWlsZGVyJiBidWlsZGVyLCBjb25zdCBQcm94eVNlcnZlciYgcAogCiAgICAgYnVpbGRlci5hcHBl
bmQoJzonKTsKICAgICBBU1NFUlQocHJveHlTZXJ2ZXIucG9ydCgpICE9IC0xKTsKLSAgICBidWls
ZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihwcm94eVNlcnZlci5wb3J0KCkpKTsKKyAgICBidWls
ZGVyLmFwcGVuZE51bWJlcihwcm94eVNlcnZlci5wb3J0KCkpOwogfQogCiBTdHJpbmcgdG9TdHJp
bmcoY29uc3QgVmVjdG9yPFByb3h5U2VydmVyPiYgcHJveHlTZXJ2ZXJzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5jcHAKaW5kZXggY2U5YTU2MS4uZTBhYTlhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwCkBAIC00Miwy
NSArNDIsMzcgQEAgVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChib29sIGIpCiAK
IFRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwoaW50IGkpCiB7Ci0gICAgbV90ZXh0
LmFwcGVuZChTdHJpbmc6Om51bWJlcihpKSk7CisgICAgbV90ZXh0LmFwcGVuZE51bWJlcihpKTsK
ICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIFRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9y
PDwodW5zaWduZWQgaSkKIHsKLSAgICBtX3RleHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKGkpKTsK
KyAgICBtX3RleHQuYXBwZW5kTnVtYmVyKGkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAogVGV4
dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChsb25nIGkpCiB7Ci0gICAgbV90ZXh0LmFw
cGVuZChTdHJpbmc6Om51bWJlcihpKSk7CisgICAgbV90ZXh0LmFwcGVuZE51bWJlcihpKTsKICAg
ICByZXR1cm4gKnRoaXM7CiB9CiAKIFRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwo
dW5zaWduZWQgbG9uZyBpKQogewotICAgIG1fdGV4dC5hcHBlbmQoU3RyaW5nOjpudW1iZXIoaSkp
OworICAgIG1fdGV4dC5hcHBlbmROdW1iZXIoaSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitU
ZXh0U3RyZWFtJiBUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGxvbmcgbG9uZyBpKQoreworICAgIG1f
dGV4dC5hcHBlbmROdW1iZXIoaSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitUZXh0U3RyZWFt
JiBUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcgbG9uZyBpKQoreworICAgIG1f
dGV4dC5hcHBlbmROdW1iZXIoaSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC0xMDIsMTkg
KzExNCw0IEBAIFN0cmluZyBUZXh0U3RyZWFtOjpyZWxlYXNlKCkKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi0jaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKLVRleHRTdHJlYW0mIFRleHRT
dHJlYW06Om9wZXJhdG9yPDwoX19pbnQ2NCBpKQotewotICAgIGNoYXIgYnVmZmVyW3ByaW50QnVm
ZmVyU2l6ZV07Ci0gICAgc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSAtIDEsICIlSTY0
aSIsIGkpOwotICAgIHJldHVybiAqdGhpcyA8PCBidWZmZXI7Ci19Ci1UZXh0U3RyZWFtJiBUZXh0
U3RyZWFtOjpvcGVyYXRvcjw8KHVuc2lnbmVkIF9faW50NjQgaSkKLXsKLSAgICBjaGFyIGJ1ZmZl
cltwcmludEJ1ZmZlclNpemVdOwotICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikg
LSAxLCAiJUk2NHUiLCBpKTsKLSAgICByZXR1cm4gKnRoaXMgPDwgYnVmZmVyOwotfQotI2VuZGlm
Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0cmVh
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmgKaW5kZXggNjJi
MWE5Mi4uMjFkMzgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFt
LmgKQEAgLTM5LDE1ICszOSwxMyBAQCBwdWJsaWM6CiAgICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PCh1bnNpZ25lZCk7CiAgICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChsb25nKTsKICAgICBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcpOworICAgIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwobG9uZyBsb25nKTsKKyAgICBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGxv
bmcgbG9uZyk7CiAgICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChmbG9hdCk7CiAgICAgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChkb3VibGUpOwogICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29u
c3QgY2hhciopOwogICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3Qgdm9pZCopOwogICAg
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgU3RyaW5nJik7Ci0jaWYgT1MoV0lORE9XUykg
JiYgQ1BVKFg4Nl82NCkKLSAgICBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIF9faW50
NjQpOwotICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoX19pbnQ2NCk7Ci0jZW5kaWYKIAogICAg
IFN0cmluZyByZWxlYXNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcAppbmRleCAyYWViMmZmLi4yNzYzNjZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC04MDksNyArODA5LDcgQEAgc3Rh
dGljIFN0cmluZyBub2RlUG9zaXRpb24oTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCd9Jyk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmRMaXRlcmFsKCJjaGlsZCAiKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKFN0cmluZzo6bnVtYmVyKG4tPm5vZGVJbmRleCgpKSk7CisgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZE51bWJlcihuLT5ub2RlSW5kZXgoKSk7CiAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZExpdGVyYWwoIiB7Iik7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRU
YWdOYW1lKG4pKTsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9Jyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxFcnJvcnMuY3BwCmluZGV4IGVmMDhhZTAuLjgwN2ZjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxF
cnJvcnMuY3BwCkBAIC03OSwxMSArNzksMTEgQEAgdm9pZCBYTUxFcnJvcnM6OmFwcGVuZEVycm9y
TWVzc2FnZShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIFRleHRQb3NpdGlvbiBwb3NpdGkKIHsK
ICAgICAvLyA8dHlwZVN0cmluZz4gb24gbGluZSA8bGluZU51bWJlcj4gYXQgY29sdW1uIDxjb2x1
bW5OdW1iZXI+OiA8bWVzc2FnZT4KICAgICBtX2Vycm9yTWVzc2FnZXMuYXBwZW5kKHR5cGVTdHJp
bmcpOwotICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmQoIiBvbiBsaW5lICIpOwotICAgIG1fZXJy
b3JNZXNzYWdlcy5hcHBlbmQoU3RyaW5nOjpudW1iZXIocG9zaXRpb24ubV9saW5lLm9uZUJhc2Vk
SW50KCkpKTsKLSAgICBtX2Vycm9yTWVzc2FnZXMuYXBwZW5kKCIgYXQgY29sdW1uICIpOwotICAg
IG1fZXJyb3JNZXNzYWdlcy5hcHBlbmQoU3RyaW5nOjpudW1iZXIocG9zaXRpb24ubV9jb2x1bW4u
b25lQmFzZWRJbnQoKSkpOwotICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmQoIjogIik7CisgICAg
bV9lcnJvck1lc3NhZ2VzLmFwcGVuZExpdGVyYWwoIiBvbiBsaW5lICIpOworICAgIG1fZXJyb3JN
ZXNzYWdlcy5hcHBlbmROdW1iZXIocG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCkpOworICAg
IG1fZXJyb3JNZXNzYWdlcy5hcHBlbmRMaXRlcmFsKCIgYXQgY29sdW1uICIpOworICAgIG1fZXJy
b3JNZXNzYWdlcy5hcHBlbmROdW1iZXIocG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSk7
CisgICAgbV9lcnJvck1lc3NhZ2VzLmFwcGVuZExpdGVyYWwoIjogIik7CiAgICAgbV9lcnJvck1l
c3NhZ2VzLmFwcGVuZChtZXNzYWdlKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163017</attachid>
            <date>2012-09-09 15:06:57 -0700</date>
            <delta_ts>2012-09-09 21:19:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96030-20120910000633.patch</filename>
            <type>text/plain</type>
            <size>24269</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NDBjNjI0ZWI1ODkyMzRmODA5NDFmODVkZmY5MjYxYjY0NDRjNWJhLi40Yjg4NGUwMWRjM2NjYzdm
NWEyNzRmN2RkZjM0MGUyZTJkYzk0MzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyMCBAQAogMjAxMi0wOS0wOSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KIAorICAgICAgICBBZGQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVyKCkgYW5kIHVz
ZSBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYw
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbHNv
IGZpeCBhIGJ1bmNoIG9mIGFwcGVuZCgpIHZzLiBhcHBlbmRMaXRlcmFsKCkgaXNzdWVzIGluIHRo
ZSBzdXJyb3VuZGluZyBjb2RlLgorCisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6Cisg
ICAgICAgIChKU0NvbnRleHRDcmVhdGVCYWNrdHJhY2UpOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6dG9T
dHJpbmcpOgorCisyMDEyLTA5LTA5ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQu
b3JnPgorCiAgICAgICAgIE1ha2UgdGhlIFN0cmluZyBpbml0aWFsaXphdGlvbiBvbiB0aGUgZnVu
Y3Rpb24gc2lkZSBvZiBTdHJpbmc6Om51bWJlcigpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk0MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQxYWZmYmJiNzZkYTgzNDQ4YmY3
MTdkNGRjZGVkYWI3MWQ2MDIyNWIuLmZjNmYyMTQ0OTY1NTkzODFlMjYxYzAxMzkwMmVkNTcwZjA4
N2Q5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTItMDktMDkgIFBhdHJpY2sgR2Fuc3RlcmVy
ICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgQWRkIFN0cmluZ0J1aWxkZXI6OmFwcGVu
ZE51bWJlcigpIGFuZCB1c2UgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk2MDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxzbyBmaXggYSBidW5jaCBvZiBhcHBlbmQoKSB2cy4gYXBwZW5kTGl0ZXJh
bCgpIGlzc3VlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZS4KKworICAgICAgICAqIHd0Zi9EYXRl
TWF0aC5jcHA6CisgICAgICAgIChXVEY6Om1ha2VSRkMyODIyRGF0ZVN0cmluZyk6CisgICAgICAg
ICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxk
ZXI6OmFwcGVuZE51bWJlcik6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oOgor
ICAgICAgICAoU3RyaW5nQnVpbGRlcik6CisKKzIwMTItMDktMDkgIFBhdHJpY2sgR2Fuc3RlcmVy
ICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKICAgICAgICAgTWFrZSB0aGUgU3RyaW5nIGluaXRpYWxp
emF0aW9uIG9uIHRoZSBmdW5jdGlvbiBzaWRlIG9mIFN0cmluZzo6bnVtYmVyKCkKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1OTQwCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA1ZDAzNzFlNmYyODUzZDljNTkzMDgwYTIwMjE5NDJiZDNlYWFiMzEzLi43NzYzMGYxMWI5
MWJlOGQwOGI0YTI3ODI0M2ZkNGJlZWFlMjc5NTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYg
QEAKKzIwMTItMDktMDkgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgQWRkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcigpIGFuZCB1c2UgaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MDMwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxzbyBmaXggYSBi
dW5jaCBvZiBhcHBlbmQoKSB2cy4gYXBwZW5kTGl0ZXJhbCgpIGlzc3VlcyBpbiB0aGUgc3Vycm91
bmRpbmcgY29kZS4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aG9zdE5hbWUpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzb3VyY2VT
dHJpbmcpOgorICAgICAgICAqIGNzcy9Gb250RmVhdHVyZVZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRGZWF0dXJlVmFsdWU6OmN1c3RvbUNzc1RleHQpOgorICAgICAgICAqIGRvbS9Q
b3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6Zm9ybWF0Rm9yRGVidWdn
ZXIpOgorICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6
Zm9ybWF0Rm9yRGVidWdnZXIpOgorICAgICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9ybUtleUdlbmVyYXRvcjo6Zm9ybUtleSk6CisgICAgICAgICog
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRTZXJ2
ZXJNYXBNb3VzZVBvc2l0aW9uKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpmb250KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklkZW50aWZpZXJzRmFjdG9yeTo6YWRkUHJvY2Vzc0lkUHJlZml4
VG8pOgorICAgICAgICAqIHBhZ2UvRnJhbWVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVHJlZTo6dW5pcXVlQ2hpbGROYW1lKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1Jhd1N0cmluZyk6Cisg
ICAgICAgICogcGxhdGZvcm0vRGVjaW1hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFs
Ojp0b1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRQcm94eVNlcnZlclN0cmluZyk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRTdHJl
YW06Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om5vZGVQb3NpdGlvbik6CisgICAgICAgICogeG1sL1hNTEVycm9ycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYTUxFcnJvcnM6OmFwcGVuZEVycm9yTWVzc2FnZSk6CisKIDIwMTItMDktMDkg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjc5NzkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dFJlZi5jcHAKaW5kZXggMzYwZTMzN2VlY2VlMjE5NmM3YTRiOWY1MmI2YTBhZWU4
Y2MyMzBmZC4uN2M4MTUzNTViMzFhNWFkNGExMDA4NWY2NjgwNjVjMTczNTZjNmQyNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMjAwLDE1ICsyMDAs
MTUgQEAgSlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4dFJlZiBj
dHgsIHVuc2lnbmVkIG1heFN0YWNrU2l6ZSkKICAgICAgICAgfQogICAgICAgICB1bnNpZ25lZCBs
aW5lTnVtYmVyID0gc2lnbmVkTGluZU51bWJlciA+PSAwID8gc2lnbmVkTGluZU51bWJlciA6IDA7
CiAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCi0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiXG4iKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIiMiKTsKKyAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCdcbicpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnIycpOwogICAgICAg
ICBidWlsZGVyLmFwcGVuZChsZXZlbFN0cik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZ1
bmN0aW9uTmFtZSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoKSBhdCAiKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoKSBhdCAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
dXJsU3RyaW5nKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIjoiKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoU3RyaW5nOjpudW1iZXIobGluZU51bWJlcikpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgnOicpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihsaW5lTnVtYmVyKTsKICAg
ICAgICAgaWYgKCFmdW5jdGlvbiB8fCArK2NvdW50ID09IG1heFN0YWNrU2l6ZSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVm
CmluZGV4IDU5NWNlNmVmNGMwYjU1MjQyMmU2YzY2ZjA3NDZjOWNjZWZkYzAxMGYuLmFhN2VjNzhk
ZmU5NzU1YjQ3N2UyYzhlODg2MzViOWNkM2VjZmRmNmIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZGVmCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC02Niw2ICs2NiwxMiBAQCBF
WFBPUlRTCiAgICAgP2FsbG9jYXRlU2xvd0Nhc2VATWFya2VkQWxsb2NhdG9yQEpTQ0BAQUFFUEFY
WFoKICAgICA/YXBwZW5kQFN0cmluZ0J1aWxkZXJAV1RGQEBRQUVYUEJFSUBaCiAgICAgP2FwcGVu
ZEBTdHJpbmdCdWlsZGVyQFdURkBAUUFFWFBCX1dJQFoKKyAgICA/YXBwZW5kTnVtYmVyQFN0cmlu
Z0J1aWxkZXJAV1RGQEBRQUVYSEBaCisgICAgP2FwcGVuZE51bWJlckBTdHJpbmdCdWlsZGVyQFdU
RkBAUUFFWElAWgorICAgID9hcHBlbmROdW1iZXJAU3RyaW5nQnVpbGRlckBXVEZAQFFBRVhKQFoK
KyAgICA/YXBwZW5kTnVtYmVyQFN0cmluZ0J1aWxkZXJAV1RGQEBRQUVYS0BaCisgICAgP2FwcGVu
ZE51bWJlckBTdHJpbmdCdWlsZGVyQFdURkBAUUFFWF9KQFoKKyAgICA/YXBwZW5kTnVtYmVyQFN0
cmluZ0J1aWxkZXJAV1RGQEBRQUVYX0tAWgogICAgID9hdHRhY2hARGVidWdnZXJASlNDQEBRQUVY
UEFWSlNHbG9iYWxPYmplY3RAMkBAWgogICAgID9iYXNlNjREZWNvZGVAV1RGQEBZQV9OQUJWU3Ry
aW5nQDFAQUFWPyRWZWN0b3JARCQwQUBAMUBXNEJhc2U2NERlY29kZVBvbGljeUAxQEBaCiAgICAg
P2Jhc2U2NEVuY29kZUBXVEZAQFlBP0FWU3RyaW5nQDFAUEJESVc0QmFzZTY0RW5jb2RlUG9saWN5
QDFAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgKaW5kZXggMTljYjRiMjNkYzVhYjk1ZGU3ZmMxNzFjYzQ0OTY4NzY0MmMyNTUxMS4uNDY0MDU2
YmMxODM5OGQ0ZTI5OTdhNDkyNGI0YjdmZjg0YzUxNzlhNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTkyLDcgKzkyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgdHJhY2VCdWlsZC5hcHBlbmQoc291cmNlVVJM
KTsKICAgICAgICAgICAgICAgICBpZiAobGluZSA+IC0xKSB7CiAgICAgICAgICAgICAgICAgICAg
IHRyYWNlQnVpbGQuYXBwZW5kKCc6Jyk7Ci0gICAgICAgICAgICAgICAgICAgIHRyYWNlQnVpbGQu
YXBwZW5kKFN0cmluZzo6bnVtYmVyKGxpbmUpKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2VC
dWlsZC5hcHBlbmROdW1iZXIobGluZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICAgICAgcmV0dXJuIHRyYWNlQnVpbGQudG9TdHJpbmcoKS5pbXBsKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRl
TWF0aC5jcHAKaW5kZXggZTE4ZWVjY2VlOWJiOGZkMjRkZDM3ZWYwODFkNTdhNmUzYTA3YzdiOC4u
NmQwZTVkNzNmMzhiOGRkNjY2MjE5ZWI1Njk1ZjUzNDU0NDdkZTkzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNw
cApAQCAtMTA3MiwxMyArMTA3MiwxMyBAQCBTdHJpbmcgbWFrZVJGQzI4MjJEYXRlU3RyaW5nKHVu
c2lnbmVkIGRheU9mV2VlaywgdW5zaWduZWQgZGF5LCB1bnNpZ25lZCBtb250aCwgdQogewogICAg
IFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh3
ZWVrZGF5TmFtZVtkYXlPZldlZWtdKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsK
LSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihkYXkpKTsKLSAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiICIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihkYXkpOworICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobW9udGhOYW1lW21v
bnRoXSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAiKTsKLSAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChTdHJpbmc6Om51bWJlcih5ZWFyKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
IiAiKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnICcpOworICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kTnVtYmVyKHllYXIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcgJyk7CiAKICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0d29EaWdpdFN0cmluZ0Zyb21OdW1iZXIoaG91cnMpKTsK
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnOicpOwpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAgU3Ry
aW5nIG1ha2VSRkMyODIyRGF0ZVN0cmluZyh1bnNpZ25lZCBkYXlPZldlZWssIHVuc2lnbmVkIGRh
eSwgdW5zaWduZWQgbW9udGgsIHUKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0d29EaWdpdFN0
cmluZ0Zyb21OdW1iZXIoc2Vjb25kcykpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcgJyk7
CiAKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh1dGNPZmZzZXQgPiAwID8gIisiIDogIi0iKTsK
KyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh1dGNPZmZzZXQgPiAwID8gJysnIDogJy0nKTsKICAg
ICBpbnQgYWJzb2x1dGVVVENPZmZzZXQgPSBhYnModXRjT2Zmc2V0KTsKICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCh0d29EaWdpdFN0cmluZ0Zyb21OdW1iZXIoYWJzb2x1dGVVVENPZmZzZXQgLyA2
MCkpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHR3b0RpZ2l0U3RyaW5nRnJvbU51bWJlcihh
YnNvbHV0ZVVUQ09mZnNldCAlIDYwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNw
cAppbmRleCA0ZWFjNzU2NDlmODU1ZGEwMTM1NzMzZjVhZDMyMzAxZjk1NzlmOTAzLi4xOGM5MmRi
MmU4ODYyYTY4ODhkMzcyMWU3NWY4NGZjYzVkZjNiNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCiAKKyNpbmNsdWRlICJJbnRlZ2VyVG9TdHJpbmdDb252
ZXJzaW9uLmgiCiAjaW5jbHVkZSAiV1RGU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAt
Mjg2LDYgKzI4NywzNiBAQCB2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgIH0KIH0KIAordm9pZCBTdHJpbmdCdWls
ZGVyOjphcHBlbmROdW1iZXIoaW50IG51bWJlcikKK3sKKyAgICBudW1iZXJUb1N0cmluZ1NpZ25l
ZDxTdHJpbmdCdWlsZGVyPihudW1iZXIsIHRoaXMpOworfQorCit2b2lkIFN0cmluZ0J1aWxkZXI6
OmFwcGVuZE51bWJlcih1bnNpZ25lZCBpbnQgbnVtYmVyKQoreworICAgIG51bWJlclRvU3RyaW5n
VW5zaWduZWQ8U3RyaW5nQnVpbGRlcj4obnVtYmVyLCB0aGlzKTsKK30KKwordm9pZCBTdHJpbmdC
dWlsZGVyOjphcHBlbmROdW1iZXIobG9uZyBudW1iZXIpCit7CisgICAgbnVtYmVyVG9TdHJpbmdT
aWduZWQ8U3RyaW5nQnVpbGRlcj4obnVtYmVyLCB0aGlzKTsKK30KKwordm9pZCBTdHJpbmdCdWls
ZGVyOjphcHBlbmROdW1iZXIodW5zaWduZWQgbG9uZyBudW1iZXIpCit7CisgICAgbnVtYmVyVG9T
dHJpbmdVbnNpZ25lZDxTdHJpbmdCdWlsZGVyPihudW1iZXIsIHRoaXMpOworfQorCit2b2lkIFN0
cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihsb25nIGxvbmcgbnVtYmVyKQoreworICAgIG51bWJl
clRvU3RyaW5nU2lnbmVkPFN0cmluZ0J1aWxkZXI+KG51bWJlciwgdGhpcyk7Cit9CisKK3ZvaWQg
U3RyaW5nQnVpbGRlcjo6YXBwZW5kTnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyBudW1iZXIpCit7
CisgICAgbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxTdHJpbmdCdWlsZGVyPihudW1iZXIsIHRoaXMp
OworfQorCiBib29sIFN0cmluZ0J1aWxkZXI6OmNhblNocmluaygpIGNvbnN0CiB7CiAgICAgLy8g
T25seSBzaHJpbmsgdGhlIGJ1ZmZlciBpZiBpdCdzIGxlc3MgdGhhbiA4MCUgZnVsbC4gTmVlZCB0
byB0dW5lIHRoaXMgaGV1cmlzdGljIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAppbmRl
eCBjMjhiNDQ1MzdlYjBkNGNjYWMyMGM4NzBiZmM4YjQwYmUzODU2ZjM2Li4zMjZkY2FkZTU2MTBi
NzlmN2UxZjk0NzA0ODQ1YzEzZWUxY2I4ZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaApAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBhcHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICAKKwogICAgIHZvaWQgYXBwZW5kKGNoYXIg
YykKICAgICB7CiAgICAgICAgIGFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oYykpOwpAQCAtMTMz
LDYgKzEzMywxMyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0Nv
dW50PgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmRMaXRlcmFsKGNvbnN0IGNoYXIgKCZj
aGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKSB7IGFwcGVuZChjaGFyYWN0ZXJzLCBjaGFyYWN0
ZXJzQ291bnQgLSAxKTsgfQogCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kTnVt
YmVyKGludCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kTnVtYmVyKHVuc2ln
bmVkIGludCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kTnVtYmVyKGxvbmcp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcih1bnNpZ25lZCBsb25n
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIobG9uZyBsb25nKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIodW5zaWduZWQgbG9uZyBs
b25nKTsKKwogICAgIFN0cmluZyB0b1N0cmluZygpCiAgICAgewogICAgICAgICBzaHJpbmtUb0Zp
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCAxYmExNWZiNGU2NDUxYTkxMmRlMTM3N2ZkZWRkYjNi
MjY0NTg2ZjE4Li4wMGM4MmIzMDNjMGMzMWZlM2RlMzNjZTg1MTUzNDk1NWZlYzIyYjAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcApAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgU3RyaW5nIGhvc3ROYW1lKGNv
bnN0IEtVUkwmIHVybCwgYm9vbCBzZWN1cmUpCiAgICAgYnVpbGRlci5hcHBlbmQodXJsLmhvc3Qo
KS5sb3dlcigpKTsKICAgICBpZiAodXJsLnBvcnQoKSAmJiAoKCFzZWN1cmUgJiYgdXJsLnBvcnQo
KSAhPSA4MCkgfHwgKHNlY3VyZSAmJiB1cmwucG9ydCgpICE9IDQ0MykpKSB7CiAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVy
KHVybC5wb3J0KCkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodXJsLnBvcnQoKSk7
CiAgICAgfQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDk3YjI3NDE0M2Iw
MTY5NGIyOTIwODdjNzFmYTI0MGY4MGQwMjM5YjMuLjdiZWU5N2NiZGI3MzQ5ZjhhN2JhOTMwZThj
OGM2YTg3ZjRjYzdmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENvbnRyb2xsZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcg
cmVzb3VyY2VTdHJpbmcoY29uc3Qgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uKQog
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLmFwcGVuZChyZXNvdXJjZU5h
bWUpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5n
OjpudW1iZXIobGluZU51bWJlcikpOworICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGxpbmVOdW1i
ZXIpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmVhdHVyZVZhbHVlLmNwcAppbmRleCAyZTdiNGY1OTFiOGMxMTIxNTc1YzBiODUyYTcx
OWQzNmZmODdlMjUwLi45NDhkMjJiNjRjNmI5NDVlMDBmYjFmMjJkZjg1NjQ4Yjk0NTMyMDM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwCkBAIC00MywxMCArNDMsMTAg
QEAgRm9udEZlYXR1cmVWYWx1ZTo6Rm9udEZlYXR1cmVWYWx1ZShjb25zdCBTdHJpbmcmIHRhZywg
aW50IHZhbHVlKQogU3RyaW5nIEZvbnRGZWF0dXJlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25z
dAogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZCgiJyIp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCdcJycpOwogICAgIGJ1aWxkZXIuYXBwZW5kKG1fdGFnKTsK
LSAgICBidWlsZGVyLmFwcGVuZCgiJyAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51
bWJlcihtX3ZhbHVlKSk7CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCInICIpOworICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKG1fdmFsdWUpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IDRkNWMxMWI2NTExZWY2YmVlMGU2
ZjJlZjI4M2I5ZWQ3MTVkMmVlZDcuLjRmY2Y0NDJlMjJlNDU1NzNhNzQ5ZDczZTVmZTA4NzEzMjc3
NjVlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMTMyMSw3ICsxMzIxLDcgQEAgdm9p
ZCBQb3NpdGlvbjo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5n
dGgpIGNvbnN0CiAgICAgZWxzZSB7CiAgICAgICAgIGNoYXIgc1sxMDI0XTsKICAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoIm9mZnNldCAiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJp
bmc6Om51bWJlcihtX29mZnNldCkpOworICAgICAgICByZXN1bHQuYXBwZW5kTnVtYmVyKG1fb2Zm
c2V0KTsKICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBvZiAiKTsKICAgICAgICAgZGVw
cmVjYXRlZE5vZGUoKS0+Zm9ybWF0Rm9yRGVidWdnZXIocywgc2l6ZW9mKHMpKTsKICAgICAgICAg
cmVzdWx0LmFwcGVuZChzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IGVlY2QwYWY3YmYyOWJjOTIx
NTUzNjU3N2EyMmQ3NjZmMTUzMWI1NGUuLmM3MWZhMWNkOTVlY2FjYTNkMmNhMTBmMDM1NzE3MDFh
YzM0NmYwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMTY2MywxMiArMTY2MywxMiBAQCB2b2lk
IFJhbmdlOjpmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkg
Y29uc3QKICAgICAgICAgY29uc3QgaW50IEZvcm1hdEJ1ZmZlclNpemUgPSAxMDI0OwogICAgICAg
ICBjaGFyIHNbRm9ybWF0QnVmZmVyU2l6ZV07CiAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFs
KCJmcm9tIG9mZnNldCAiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmc6Om51bWJlciht
X3N0YXJ0Lm9mZnNldCgpKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmROdW1iZXIobV9zdGFydC5v
ZmZzZXQoKSk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgb2YgIik7CiAgICAgICAg
IG1fc3RhcnQuY29udGFpbmVyKCktPmZvcm1hdEZvckRlYnVnZ2VyKHMsIEZvcm1hdEJ1ZmZlclNp
emUpOwogICAgICAgICByZXN1bHQuYXBwZW5kKHMpOwogICAgICAgICByZXN1bHQuYXBwZW5kTGl0
ZXJhbCgiIHRvIG9mZnNldCAiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmc6Om51bWJl
cihtX2VuZC5vZmZzZXQoKSkpOworICAgICAgICByZXN1bHQuYXBwZW5kTnVtYmVyKG1fZW5kLm9m
ZnNldCgpKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBvZiAiKTsKICAgICAgICAg
bV9lbmQuY29udGFpbmVyKCktPmZvcm1hdEZvckRlYnVnZ2VyKHMsIEZvcm1hdEJ1ZmZlclNpemUp
OwogICAgICAgICByZXN1bHQuYXBwZW5kKHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9s
bGVyLmNwcAppbmRleCA0OTQxMmJlNDM3YTljOGVjY2M2NDY1OGMwNmY0NWVmNDUyMDdhNTc3Li5l
NTc2N2UxYjNlN2YzOTNkNDRmNWY4YjA4ZTAzNzg5NDE3NjJmNTQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAtMzU4LDggKzM1OCw4IEBAIEF0b21pY1N0cmluZyBG
b3JtS2V5R2VuZXJhdG9yOjpmb3JtS2V5KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRo
U3RhdGUmIGNvCiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgYnVpbGRlci5hcHBl
bmQoc2lnbmF0dXJlKTsKLSAgICBidWlsZGVyLmFwcGVuZCgiICMiKTsKLSAgICBidWlsZGVyLmFw
cGVuZChTdHJpbmc6Om51bWJlcihuZXh0SW5kZXgpKTsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIiAjIik7CisgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobmV4dEluZGV4KTsKICAgICBBdG9t
aWNTdHJpbmcgZm9ybUtleSA9IGJ1aWxkZXIudG9BdG9taWNTdHJpbmcoKTsKICAgICBtX2Zvcm1U
b0tleU1hcC5hZGQoZm9ybSwgZm9ybUtleSk7CiAgICAgcmV0dXJuIGZvcm1LZXk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IGMzMjk5ZmM2ZWQ2MzBlM2Yz
MGM4MTFhYTcyMGM4OTJmZDQ0ZWQxOTIuLmY5ZTNlYmMzODY1MGU1ZjJjOGQzNDM3OGM3YmMzMzll
ZmUzOTc5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBA
IC0xNDUsOSArMTQ1LDkgQEAgc3RhdGljIHZvaWQgYXBwZW5kU2VydmVyTWFwTW91c2VQb3NpdGlv
bihTdHJpbmdCdWlsZGVyJiB1cmwsIEV2ZW50KiBldmVudCkKICAgICBpbnQgeCA9IGFic29sdXRl
UG9zaXRpb24ueCgpOwogICAgIGludCB5ID0gYWJzb2x1dGVQb3NpdGlvbi55KCk7CiAgICAgdXJs
LmFwcGVuZCgnPycpOwotICAgIHVybC5hcHBlbmQoU3RyaW5nOjpudW1iZXIoeCkpOworICAgIHVy
bC5hcHBlbmROdW1iZXIoeCk7CiAgICAgdXJsLmFwcGVuZCgnLCcpOwotICAgIHVybC5hcHBlbmQo
U3RyaW5nOjpudW1iZXIoeSkpOworICAgIHVybC5hcHBlbmROdW1iZXIoeSk7CiB9CiAKIHZvaWQg
SFRNTEFuY2hvckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKaW5kZXggYTk2MDQ4OTk0M2I2YWFiZjUyODVlYjZlMGFjODZmNjA4MjZhYzE3NC4u
NTQxNGJhZDA5ZDI3MjVmMTRmYjQ2OGI3NTBkYmI0ZWU5MzEyMjU5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CkBAIC0yMDAxLDcgKzIwMDEsNyBAQCBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpm
b250KCkgY29uc3QKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLnNtYWxsQ2FwcygpID09IEZvbnRT
bWFsbENhcHNPbikKICAgICAgICAgc2VyaWFsaXplZEZvbnQuYXBwZW5kTGl0ZXJhbCgic21hbGwt
Y2FwcyAiKTsKIAotICAgIHNlcmlhbGl6ZWRGb250LmFwcGVuZChTdHJpbmc6Om51bWJlcihmb250
RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSkpOworICAgIHNlcmlhbGl6ZWRGb250LmFw
cGVuZE51bWJlcihmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSk7CiAgICAgc2Vy
aWFsaXplZEZvbnQuYXBwZW5kTGl0ZXJhbCgicHgiKTsKIAogICAgIGNvbnN0IEZvbnRGYW1pbHkm
IGZpcnN0Rm9udEZhbWlseSA9IGZvbnREZXNjcmlwdGlvbi5mYW1pbHkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5jcHAKaW5kZXggYjhjNmQ3ZjE3
OTFlZWFiZTk0MDNlYjlhNmUxNWQxYjcwMzZiMzUxYi4uYzJhZjJhNTY2OTg4MjY3NjNmM2M3ZDkx
Y2QzMmJkNDM3ODkyN2FhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lk
ZW50aWZpZXJzRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lkZW50
aWZpZXJzRmFjdG9yeS5jcHAKQEAgLTU2LDggKzU2LDggQEAgU3RyaW5nIElkZW50aWZpZXJzRmFj
dG9yeTo6cmVxdWVzdElkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIFN0cmluZyBJZGVudGlm
aWVyc0ZhY3Rvcnk6OmFkZFByb2Nlc3NJZFByZWZpeFRvKGNvbnN0IFN0cmluZyYgaWQpCiB7CiAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVt
YmVyKHNfcHJvY2Vzc0lkKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoIi4iKTsKKyAgICBidWlsZGVy
LmFwcGVuZE51bWJlcihzX3Byb2Nlc3NJZCk7CisgICAgYnVpbGRlci5hcHBlbmQoJy4nKTsKICAg
ICBidWlsZGVyLmFwcGVuZChpZCk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAppbmRleCBkNjI0NTc5ODNhZTBkOGI4ODc4MmVjOTEy
ZTExZjZmNTUzNjM2Y2NhLi42ZjgxNzE0NTAxOTIyZmI4YWRkOGU3NjRiOTU3ODk5NGQwZDg1MDVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgQXRvbWlj
U3RyaW5nIEZyYW1lVHJlZTo6dW5pcXVlQ2hpbGROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgcmVx
dWVzdGVkTmFtZSkgY29uc3QKICAgICB9CiAKICAgICBuYW1lLmFwcGVuZExpdGVyYWwoIi88IS0t
ZnJhbWUiKTsKLSAgICBuYW1lLmFwcGVuZChTdHJpbmc6Om51bWJlcihjaGlsZENvdW50KCkpKTsK
KyAgICBuYW1lLmFwcGVuZE51bWJlcihjaGlsZENvdW50KCkpOwogICAgIG5hbWUuYXBwZW5kTGl0
ZXJhbCgiLS0+LS0+Iik7CiAKICAgICByZXR1cm4gbmFtZS50b0F0b21pY1N0cmluZygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCAyN2ExNzQwM2JiOWJjNDg3YmQy
YjNhMjc4MjRhY2FiZmViYmNiY2Y0Li5kYTE1MDIxYmQ1ZWZjODczZWU4OGI4ODc4ZTcwYTY3YWNj
YTEzOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDcyLDgg
KzQ3Miw4IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9SYXdTdHJpbmcoKSBjb25zdAogICAg
IHJlc3VsdC5hcHBlbmQobV9ob3N0KTsKIAogICAgIGlmIChtX3BvcnQpIHsKLSAgICAgICAgcmVz
dWx0LmFwcGVuZCgiOiIpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1f
cG9ydCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKCc6Jyk7CisgICAgICAgIHJlc3VsdC5hcHBl
bmROdW1iZXIobV9wb3J0KTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCmluZGV4IDhhNWUyNzViZTk3NGMzYTk0Yzc0
ZTJhOTBkNGNkODhhYTFjNzNlZDEuLjlkMDJmOTFiNDgwMWZmNTE2NTAxYTgyOThiODM3MGE5MzU4
OGFjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCkBAIC0xMDA1LDcgKzEwMDUs
NyBAQCBTdHJpbmcgRGVjaW1hbDo6dG9TdHJpbmcoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAgfQogCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCIwLiIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjAuIik7CiAgICAgICAgIGZv
ciAoaW50IGkgPSBhZGp1c3RlZEV4cG9uZW50ICsgMTsgaSA8IDA7ICsraSkKICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCcwJyk7CiAKQEAgLTEwMjMsNyArMTAyMyw3IEBAIFN0cmluZyBEZWNp
bWFsOjp0b1N0cmluZygpIGNvbnN0CiAKICAgICAgICAgaWYgKGFkanVzdGVkRXhwb25lbnQpIHsK
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFkanVzdGVkRXhwb25lbnQgPCAwID8gImUiIDog
ImUrIik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihhZGp1c3Rl
ZEV4cG9uZW50KSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihhZGp1c3RlZEV4
cG9uZW50KTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcApp
bmRleCA3ZWYyODNiYmMyODZjOGI4YWYwNGYyYTIyNGU1NDYwMWIxOTM1ZTQ2Li4wN2M5MGNiZjIx
YzVmMTUxNmI4Y2YzM2RmY2E3ZTBhYzM5ZGZmY2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMg
dm9pZCBhcHBlbmRQcm94eVNlcnZlclN0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25z
dCBQcm94eVNlcnZlciYgcAogCiAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICBBU1NFUlQo
cHJveHlTZXJ2ZXIucG9ydCgpICE9IC0xKTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51
bWJlcihwcm94eVNlcnZlci5wb3J0KCkpKTsKKyAgICBidWlsZGVyLmFwcGVuZE51bWJlcihwcm94
eVNlcnZlci5wb3J0KCkpOwogfQogCiBTdHJpbmcgdG9TdHJpbmcoY29uc3QgVmVjdG9yPFByb3h5
U2VydmVyPiYgcHJveHlTZXJ2ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dFN0cmVhbS5jcHAKaW5kZXggY2U5YTU2MTkwMjFmMmZkNTk3ZjNiZTQyODdmZTBkODA3NWExNGVm
Ny4uZTBhYTlhM2VhZjA5N2Y2NjRmNWJmNzYxNWJmYTAyMDA4MjQ5NjU3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwCkBAIC00MiwyNSArNDIsMzcgQEAg
VGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChib29sIGIpCiAKIFRleHRTdHJlYW0m
IFRleHRTdHJlYW06Om9wZXJhdG9yPDwoaW50IGkpCiB7Ci0gICAgbV90ZXh0LmFwcGVuZChTdHJp
bmc6Om51bWJlcihpKSk7CisgICAgbV90ZXh0LmFwcGVuZE51bWJlcihpKTsKICAgICByZXR1cm4g
KnRoaXM7CiB9CiAKIFRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwodW5zaWduZWQg
aSkKIHsKLSAgICBtX3RleHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKGkpKTsKKyAgICBtX3RleHQu
YXBwZW5kTnVtYmVyKGkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAogVGV4dFN0cmVhbSYgVGV4
dFN0cmVhbTo6b3BlcmF0b3I8PChsb25nIGkpCiB7Ci0gICAgbV90ZXh0LmFwcGVuZChTdHJpbmc6
Om51bWJlcihpKSk7CisgICAgbV90ZXh0LmFwcGVuZE51bWJlcihpKTsKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKIFRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwodW5zaWduZWQgbG9u
ZyBpKQogewotICAgIG1fdGV4dC5hcHBlbmQoU3RyaW5nOjpudW1iZXIoaSkpOworICAgIG1fdGV4
dC5hcHBlbmROdW1iZXIoaSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitUZXh0U3RyZWFtJiBU
ZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGxvbmcgbG9uZyBpKQoreworICAgIG1fdGV4dC5hcHBlbmRO
dW1iZXIoaSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitUZXh0U3RyZWFtJiBUZXh0U3RyZWFt
OjpvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcgbG9uZyBpKQoreworICAgIG1fdGV4dC5hcHBlbmRO
dW1iZXIoaSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC0xMDIsMTkgKzExNCw0IEBAIFN0
cmluZyBUZXh0U3RyZWFtOjpyZWxlYXNlKCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0jaWYg
T1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKLVRleHRTdHJlYW0mIFRleHRTdHJlYW06Om9wZXJh
dG9yPDwoX19pbnQ2NCBpKQotewotICAgIGNoYXIgYnVmZmVyW3ByaW50QnVmZmVyU2l6ZV07Ci0g
ICAgc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSAtIDEsICIlSTY0aSIsIGkpOwotICAg
IHJldHVybiAqdGhpcyA8PCBidWZmZXI7Ci19Ci1UZXh0U3RyZWFtJiBUZXh0U3RyZWFtOjpvcGVy
YXRvcjw8KHVuc2lnbmVkIF9faW50NjQgaSkKLXsKLSAgICBjaGFyIGJ1ZmZlcltwcmludEJ1ZmZl
clNpemVdOwotICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikgLSAxLCAiJUk2NHUi
LCBpKTsKLSAgICByZXR1cm4gKnRoaXMgPDwgYnVmZmVyOwotfQotI2VuZGlmCi0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmgKaW5kZXggNjJiMWE5MjIyYzZiOTM1
NjI5ODY1YzFhOWIxNWRjZDgzMmQ4MjU0Yy4uMjFkMzgxODlmNmNjNzNkZjNkNjhmYmQ1MDYzNDMw
MjQwYjExZWE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmgK
QEAgLTM5LDE1ICszOSwxMyBAQCBwdWJsaWM6CiAgICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PCh1
bnNpZ25lZCk7CiAgICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChsb25nKTsKICAgICBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcpOworICAgIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwobG9uZyBsb25nKTsKKyAgICBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcg
bG9uZyk7CiAgICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChmbG9hdCk7CiAgICAgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChkb3VibGUpOwogICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3Qg
Y2hhciopOwogICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3Qgdm9pZCopOwogICAgIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgU3RyaW5nJik7Ci0jaWYgT1MoV0lORE9XUykgJiYg
Q1BVKFg4Nl82NCkKLSAgICBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIF9faW50NjQp
OwotICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoX19pbnQ2NCk7Ci0jZW5kaWYKIAogICAgIFN0
cmluZyByZWxlYXNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVl
QXNUZXh0LmNwcAppbmRleCAyYWViMmZmZjI1MjA3NjMwZDc1YzIyODU2ODEzZmMyOTJmNGIzMTg4
Li4yNzYzNjZjMGIxMmY4YTk0N2M5ODRhMTZlY2U2MGJmM2JjMWVjMzVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC04MDksNyArODA5LDcg
QEAgc3RhdGljIFN0cmluZyBub2RlUG9zaXRpb24oTm9kZSogbm9kZSkKICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCd9Jyk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJjaGlsZCAiKTsKLSAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG4tPm5vZGVJbmRleCgpKSk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZE51bWJlcihuLT5ub2RlSW5kZXgoKSk7CiAgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoIiB7Iik7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChnZXRUYWdOYW1lKG4pKTsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9Jyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxFcnJvcnMuY3BwCmluZGV4IGVmMDhhZTBkNTkwZjJjY2VmYTFhMTkyMWEwNzhm
YzVkMWI0OGZiNjIuLjgwN2ZjNmNhNjljNDVlN2FlM2EyYTAyMTNjYWEyYjY0NWE2N2YzYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCkBAIC03OSwxMSArNzksMTEgQEAgdm9pZCBYTUxFcnJv
cnM6OmFwcGVuZEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIFRleHRQb3Np
dGlvbiBwb3NpdGkKIHsKICAgICAvLyA8dHlwZVN0cmluZz4gb24gbGluZSA8bGluZU51bWJlcj4g
YXQgY29sdW1uIDxjb2x1bW5OdW1iZXI+OiA8bWVzc2FnZT4KICAgICBtX2Vycm9yTWVzc2FnZXMu
YXBwZW5kKHR5cGVTdHJpbmcpOwotICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmQoIiBvbiBsaW5l
ICIpOwotICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmQoU3RyaW5nOjpudW1iZXIocG9zaXRpb24u
bV9saW5lLm9uZUJhc2VkSW50KCkpKTsKLSAgICBtX2Vycm9yTWVzc2FnZXMuYXBwZW5kKCIgYXQg
Y29sdW1uICIpOwotICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmQoU3RyaW5nOjpudW1iZXIocG9z
aXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSkpOwotICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBl
bmQoIjogIik7CisgICAgbV9lcnJvck1lc3NhZ2VzLmFwcGVuZExpdGVyYWwoIiBvbiBsaW5lICIp
OworICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmROdW1iZXIocG9zaXRpb24ubV9saW5lLm9uZUJh
c2VkSW50KCkpOworICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmRMaXRlcmFsKCIgYXQgY29sdW1u
ICIpOworICAgIG1fZXJyb3JNZXNzYWdlcy5hcHBlbmROdW1iZXIocG9zaXRpb24ubV9jb2x1bW4u
b25lQmFzZWRJbnQoKSk7CisgICAgbV9lcnJvck1lc3NhZ2VzLmFwcGVuZExpdGVyYWwoIjogIik7
CiAgICAgbV9lcnJvck1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>