<?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>73989</bug_id>
          
          <creation_ts>2011-12-07 01:14:16 -0800</creation_ts>
          <short_desc>Refactor CSSParser::parseFontFaceSrc()</short_desc>
          <delta_ts>2011-12-07 21:38:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenichi Ishibashi">bashi</reporter>
          <assigned_to name="Kenichi Ishibashi">bashi</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>macpherson</cc>
    
    <cc>morrita</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>516532</commentid>
    <comment_count>0</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-12-07 01:14:16 -0800</bug_when>
    <thetext>Some reviewers suggested me to refactor CSSParser::parseFontFaceSrc() when I fixed bug 64783 because the function is somewhat hard to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516555</commentid>
    <comment_count>1</comment_count>
      <attachid>118192</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-12-07 02:21:56 -0800</bug_when>
    <thetext>Created attachment 118192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516564</commentid>
    <comment_count>2</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-12-07 02:46:59 -0800</bug_when>
    <thetext>Cc&apos;ed reviewers I can see from git blame. Also Cc&apos;ed rniwa and morritta who suggested me to refactor the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516672</commentid>
    <comment_count>3</comment_count>
      <attachid>118192</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-07 09:19:23 -0800</bug_when>
    <thetext>Comment on attachment 118192
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. Refactoring only.

What existing test covers this parsing? Even if you are just refactoring, we need to make sure we have sufficient coverage for the code being refactored. I’m particularly interested in the test cases that cover trailing commas, for example.

&gt; Source/WebCore/css/CSSParser.cpp:4367
&gt; -static bool isValidFormatFunction(CSSParserValue* val)
&gt; +bool CSSParser::parseFontFaceSrcUri(CSSValueList* valueList)

The acronym is URI, not Uri. Please use the normal capitalization for acronyms rather than turning them into words.

&gt; Source/WebCore/css/CSSParser.cpp:4369
&gt; +    RefPtr&lt;CSSFontFaceSrcValue&gt; uriValue(CSSFontFaceSrcValue::create(m_styleSheet-&gt;completeURL(m_valueList-&gt;current()-&gt;string)));

You removed the FIXME that used to accompany the completeURL call. Why? Was it wrong? Or did you fix it? Or was that just a mistake?

&gt; Source/WebCore/css/CSSParser.cpp:4385
&gt; +    // FIXME: http://www.w3.org/TR/2011/WD-css3-fonts-20111004/ says that format() contains a comma-separated list of string,

This should be &quot;list of strings&quot;, not &quot;list of string&quot;.

&gt; Source/WebCore/css/CSSParser.cpp:4386
&gt; +    // but CSSFontFaceSrcValue can have only one format. Allowing only one format for now.

I don’t understand what “can have only one format” means.

&gt; Source/WebCore/css/CSSParser.cpp:4445
&gt; -    if (values-&gt;length() &amp;&amp; !failed) {
&gt; +    if (values-&gt;length()) {
&gt;          addProperty(CSSPropertySrc, values.release(), m_important);
&gt;          m_valueList-&gt;next();
&gt;          return true;
&gt;      }
&gt; -
&gt;      return false;

I think this would read better as an early exit for the failure case rathe than putting the success case inside the if.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517089</commentid>
    <comment_count>4</comment_count>
      <attachid>118304</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-12-07 18:34:30 -0800</bug_when>
    <thetext>Created attachment 118304
Patch V1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517091</commentid>
    <comment_count>5</comment_count>
      <attachid>118192</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-12-07 18:36:17 -0800</bug_when>
    <thetext>Comment on attachment 118192
Patch

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

Thank you for the review! Addressed your comments.

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        No new tests. Refactoring only.
&gt; 
&gt; What existing test covers this parsing? Even if you are just refactoring, we need to make sure we have sufficient coverage for the code being refactored. I’m particularly interested in the test cases that cover trailing commas, for example.

According to git log, css/url-format-non-string.html and css/uri-token-parsing.html were added (or modified) when some changes were landed, but I couldn&apos;t find test cases that cover traling commas. I added a test case.

&gt;&gt; Source/WebCore/css/CSSParser.cpp:4367
&gt;&gt; +bool CSSParser::parseFontFaceSrcUri(CSSValueList* valueList)
&gt; 
&gt; The acronym is URI, not Uri. Please use the normal capitalization for acronyms rather than turning them into words.

Done.

&gt;&gt; Source/WebCore/css/CSSParser.cpp:4369
&gt;&gt; +    RefPtr&lt;CSSFontFaceSrcValue&gt; uriValue(CSSFontFaceSrcValue::create(m_styleSheet-&gt;completeURL(m_valueList-&gt;current()-&gt;string)));
&gt; 
&gt; You removed the FIXME that used to accompany the completeURL call. Why? Was it wrong? Or did you fix it? Or was that just a mistake?

That&apos;s just a mistake. re-added the FIXME. Thank you for pointing out.

&gt;&gt; Source/WebCore/css/CSSParser.cpp:4385
&gt;&gt; +    // FIXME: http://www.w3.org/TR/2011/WD-css3-fonts-20111004/ says that format() contains a comma-separated list of string,
&gt; 
&gt; This should be &quot;list of strings&quot;, not &quot;list of string&quot;.

Done.

&gt;&gt; Source/WebCore/css/CSSParser.cpp:4386
&gt;&gt; +    // but CSSFontFaceSrcValue can have only one format. Allowing only one format for now.
&gt; 
&gt; I don’t understand what “can have only one format” means.

Changed the comment to &quot;stores only one format&quot;.

&gt;&gt; Source/WebCore/css/CSSParser.cpp:4445
&gt;&gt;      return false;
&gt; 
&gt; I think this would read better as an early exit for the failure case rathe than putting the success case inside the if.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517172</commentid>
    <comment_count>6</comment_count>
      <attachid>118304</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-07 21:38:45 -0800</bug_when>
    <thetext>Comment on attachment 118304
Patch V1

Clearing flags on attachment: 118304

Committed r102313: &lt;http://trac.webkit.org/changeset/102313&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517173</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-07 21:38:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118192</attachid>
            <date>2011-12-07 02:21:56 -0800</date>
            <delta_ts>2011-12-07 18:36:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73989-20111207192154.patch</filename>
            <type>text/plain</type>
            <size>8440</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ1M2M3NDU1MTRmNjFk
MzczZjVjYWRmMjFlZTQ5ZDE0NDVjYmQ0My4uZDQ4ZGIyY2RkNTIxYmI1YWYxMGNmOTg3Y2FiN2E2
YTliOTVjNDU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTEyLTA3ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWZhY3RvciBD
U1NQYXJzZXI6OnBhcnNlRm9udEZhY2VTcmMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM5ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFJlZmFjdG9yaW5nIG9ubHkuCisKKyAg
ICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VGb250RmFjZVNyY1VyaSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZUZvbnRGYWNlU3JjTG9jYWwpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VGb250RmFjZVNyYyk6IFJld3JvdGUuCisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5oOgorCiAyMDExLTEyLTA2ICBMZW8gWWFuZyAgPGxlby55YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gUmVtb3ZlIHJlZHVuZGFudCBmaWxlcyBpbiBQbGF0
Zm9ybUJsYWNrQmVycnkuY21ha2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggMWVlZGU3
MWUyZmQzNmVlNWRmOWYxMjMzODhhN2VmNGYzMjRjYjlmOS4uZjVmOTZiOWRjNmE1MDY2MmMyZDVl
Mzg3YWY0ZmI4MjE1YjNmZjJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTQzNjQs
NDEgKzQzNjQsNjEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFdlaWdodChib29sIGltcG9y
dGFudCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFsaWRGb3JtYXRG
dW5jdGlvbihDU1NQYXJzZXJWYWx1ZSogdmFsKQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udEZh
Y2VTcmNVcmkoQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QpCiB7Ci0gICAgQ1NTUGFyc2VyVmFsdWVM
aXN0KiBhcmdzID0gdmFsLT5mdW5jdGlvbi0+YXJncy5nZXQoKTsKLSAgICByZXR1cm4gZXF1YWxJ
Z25vcmluZ0Nhc2UodmFsLT5mdW5jdGlvbi0+bmFtZSwgImZvcm1hdCgiKSAmJiAoYXJncy0+Y3Vy
cmVudCgpLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HIHx8IGFyZ3MtPmN1
cnJlbnQoKS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKTsKKyAgICBSZWZQ
dHI8Q1NTRm9udEZhY2VTcmNWYWx1ZT4gdXJpVmFsdWUoQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y3Jl
YXRlKG1fc3R5bGVTaGVldC0+Y29tcGxldGVVUkwobV92YWx1ZUxpc3QtPmN1cnJlbnQoKS0+c3Ry
aW5nKSkpOworCisgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPm5leHQo
KTsKKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgIHZhbHVlTGlzdC0+YXBwZW5kKHVyaVZhbHVl
LnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAodmFsdWUt
PnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIHZhbHVlLT5pVmFsdWUgPT0gJywn
KSB7CisgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgIHZhbHVlTGlzdC0+YXBw
ZW5kKHVyaVZhbHVlLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIGlmICh2YWx1ZS0+dW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24gfHwgIWVxdWFs
SWdub3JpbmdDYXNlKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgImZvcm1hdCgiKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEv
V0QtY3NzMy1mb250cy0yMDExMTAwNC8gc2F5cyB0aGF0IGZvcm1hdCgpIGNvbnRhaW5zIGEgY29t
bWEtc2VwYXJhdGVkIGxpc3Qgb2Ygc3RyaW5nLAorICAgIC8vIGJ1dCBDU1NGb250RmFjZVNyY1Zh
bHVlIGNhbiBoYXZlIG9ubHkgb25lIGZvcm1hdC4gQWxsb3dpbmcgb25seSBvbmUgZm9ybWF0IGZv
ciBub3cuCisgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gdmFsdWUtPmZ1bmN0aW9uLT5h
cmdzLmdldCgpOworICAgIGlmICghYXJncyB8fCBhcmdzLT5zaXplKCkgIT0gMSB8fCAoYXJncy0+
Y3VycmVudCgpLT51bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HICYmIGFyZ3Mt
PmN1cnJlbnQoKS0+dW5pdCAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHVyaVZhbHVlLT5zZXRGb3JtYXQoYXJncy0+Y3VycmVudCgp
LT5zdHJpbmcpOworICAgIHZhbHVlTGlzdC0+YXBwZW5kKHVyaVZhbHVlLnJlbGVhc2UoKSk7Cisg
ICAgdmFsdWUgPSBtX3ZhbHVlTGlzdC0+bmV4dCgpOworICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS0+
dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYgdmFsdWUtPmlWYWx1ZSA9PSAnLCcp
CisgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0
YXRpYyBib29sIHBhcnNlRm9udEZhY2VTcmNGdW5jdGlvbihDU1NQYXJzZXJWYWx1ZSogdmFsdWUs
IGJvb2wmIGV4cGVjdENvbW1hLCBib29sJiBhbGxvd0Zvcm1hdCwgUmVmUHRyPENTU0ZvbnRGYWNl
U3JjVmFsdWU+JiB1cmlWYWx1ZSwgUmVmUHRyPENTU0ZvbnRGYWNlU3JjVmFsdWU+JiBwYXJzZWRW
YWx1ZSkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnRGYWNlU3JjTG9jYWwoQ1NTVmFsdWVMaXN0
KiB2YWx1ZUxpc3QpCiB7Ci0gICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gdmFsdWUtPmZ1
bmN0aW9uLT5hcmdzLmdldCgpOworICAgIENTU1BhcnNlclZhbHVlTGlzdCogYXJncyA9IG1fdmFs
dWVMaXN0LT5jdXJyZW50KCktPmZ1bmN0aW9uLT5hcmdzLmdldCgpOwogICAgIGlmICghYXJncyB8
fCAhYXJncy0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAibG9jYWwoIikgJiYgIWV4cGVjdENv
bW1hKSB7Ci0gICAgICAgIGV4cGVjdENvbW1hID0gdHJ1ZTsKLSAgICAgICAgYWxsb3dGb3JtYXQg
PSBmYWxzZTsKLSAgICAgICAgdXJpVmFsdWUuY2xlYXIoKTsKLSAgICAgICAgaWYgKGFyZ3MtPmN1
cnJlbnQoKS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKLSAgICAgICAg
ICAgIHBhcnNlZFZhbHVlID0gQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y3JlYXRlTG9jYWwoYXJncy0+
Y3VycmVudCgpLT5zdHJpbmcpOwotICAgICAgICBlbHNlIGlmIChhcmdzLT5jdXJyZW50KCktPnVu
aXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkgewotICAgICAgICAgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwotICAgICAgICAgICAgZm9yIChDU1NQYXJzZXJWYWx1ZSogbG9jYWxW
YWx1ZSA9IGFyZ3MtPmN1cnJlbnQoKTsgbG9jYWxWYWx1ZTsgbG9jYWxWYWx1ZSA9IGFyZ3MtPm5l
eHQoKSkgewotICAgICAgICAgICAgICAgIGlmIChsb2NhbFZhbHVlLT51bml0ICE9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfSURFTlQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGxvY2FsVmFsdWUtPnN0cmluZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwYXJzZWRW
YWx1ZSA9IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZUxvY2FsKGJ1aWxkZXIudG9TdHJpbmco
KSk7CisgICAgaWYgKGFyZ3MtPnNpemUoKSA9PSAxICYmIGFyZ3MtPmN1cnJlbnQoKS0+dW5pdCA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKKyAgICAgICAgdmFsdWVMaXN0LT5hcHBl
bmQoQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y3JlYXRlTG9jYWwoYXJncy0+Y3VycmVudCgpLT5zdHJp
bmcpKTsKKyAgICBlbHNlIGlmIChhcmdzLT5jdXJyZW50KCktPnVuaXQgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19JREVOVCkgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAg
ICAgIGZvciAoQ1NTUGFyc2VyVmFsdWUqIGxvY2FsVmFsdWUgPSBhcmdzLT5jdXJyZW50KCk7IGxv
Y2FsVmFsdWU7IGxvY2FsVmFsdWUgPSBhcmdzLT5uZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChs
b2NhbFZhbHVlLT51bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQobG9jYWxWYWx1ZS0+c3RyaW5nKTsKICAgICAgICAgfQotICAgIH0gZWxzZSBp
ZiAoYXJncy0+c2l6ZSgpID09IDEgJiYgYWxsb3dGb3JtYXQgJiYgdXJpVmFsdWUgJiYgaXNWYWxp
ZEZvcm1hdEZ1bmN0aW9uKHZhbHVlKSkgewotICAgICAgICBleHBlY3RDb21tYSA9IHRydWU7Ci0g
ICAgICAgIGFsbG93Rm9ybWF0ID0gZmFsc2U7Ci0gICAgICAgIHVyaVZhbHVlLT5zZXRGb3JtYXQo
YXJncy0+Y3VycmVudCgpLT5zdHJpbmcpOwotICAgICAgICB1cmlWYWx1ZS5jbGVhcigpOwotICAg
ICAgICBwYXJzZWRWYWx1ZS5jbGVhcigpOworICAgICAgICB2YWx1ZUxpc3QtPmFwcGVuZChDU1NG
b250RmFjZVNyY1ZhbHVlOjpjcmVhdGVMb2NhbChidWlsZGVyLnRvU3RyaW5nKCkpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKENTU1BhcnNlclZhbHVlKiB2
YWx1ZSA9IG1fdmFsdWVMaXN0LT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKHZhbHVlLT51bml0ID09
IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciAmJiB2YWx1ZS0+aVZhbHVlID09ICcsJykKKyAgICAg
ICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtNDQwNiw1MiArNDQyNiwyMiBAQCBzdGF0aWMgYm9vbCBwYXJzZUZvbnRGYWNlU3JjRnVuY3Rp
b24oQ1NTUGFyc2VyVmFsdWUqIHZhbHVlLCBib29sJiBleHBlY3RDb21tYSwgYgogYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlRm9udEZhY2VTcmMoKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZh
bHVlcyhDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCkpOwotICAgIENTU1BhcnNl
clZhbHVlKiB2YWw7Ci0gICAgYm9vbCBleHBlY3RDb21tYSA9IGZhbHNlOwotICAgIGJvb2wgYWxs
b3dGb3JtYXQgPSBmYWxzZTsKLSAgICBib29sIGZhaWxlZCA9IGZhbHNlOwotICAgIFJlZlB0cjxD
U1NGb250RmFjZVNyY1ZhbHVlPiB1cmlWYWx1ZTsKLSAgICB3aGlsZSAoKHZhbCA9IG1fdmFsdWVM
aXN0LT5jdXJyZW50KCkpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NGb250RmFjZVNyY1ZhbHVlPiBw
YXJzZWRWYWx1ZTsKLSAgICAgICAgaWYgKHZhbC0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1VSSSAmJiAhZXhwZWN0Q29tbWEgJiYgbV9zdHlsZVNoZWV0KSB7Ci0gICAgICAgICAgICAv
LyBGSVhNRTogVGhlIGNvbXBsZXRlVVJMIGNhbGwgc2hvdWxkIGJlIGRvbmUgd2hlbiB1c2luZyB0
aGUgQ1NTRm9udEZhY2VTcmNWYWx1ZSwKLSAgICAgICAgICAgIC8vIG5vdCB3aGVuIGNyZWF0aW5n
IGl0LgotICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBDU1NGb250RmFjZVNyY1ZhbHVlOjpjcmVh
dGUobV9zdHlsZVNoZWV0LT5jb21wbGV0ZVVSTCh2YWwtPnN0cmluZykpOwotICAgICAgICAgICAg
dXJpVmFsdWUgPSBwYXJzZWRWYWx1ZTsKLSAgICAgICAgICAgIGFsbG93Rm9ybWF0ID0gdHJ1ZTsK
LSAgICAgICAgICAgIGV4cGVjdENvbW1hID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmICh2YWwt
PnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBpZiAoIXBh
cnNlRm9udEZhY2VTcmNGdW5jdGlvbih2YWwsIGV4cGVjdENvbW1hLCBhbGxvd0Zvcm1hdCwgdXJp
VmFsdWUsIHBhcnNlZFZhbHVlKSkgewotICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocGFy
c2VkVmFsdWUpCi0gICAgICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQocGFyc2VkVmFsdWUucmVs
ZWFzZSgpKTsKLSAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7Ci0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgfSBlbHNlIGlmICh2YWwtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6
Ok9wZXJhdG9yICYmIHZhbC0+aVZhbHVlID09ICcsJyAmJiBleHBlY3RDb21tYSkgewotICAgICAg
ICAgICAgZXhwZWN0Q29tbWEgPSBmYWxzZTsKLSAgICAgICAgICAgIGFsbG93Rm9ybWF0ID0gZmFs
c2U7Ci0gICAgICAgICAgICB1cmlWYWx1ZS5jbGVhcigpOwotICAgICAgICAgICAgbV92YWx1ZUxp
c3QtPm5leHQoKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CiAKLSAgICAgICAg
aWYgKHBhcnNlZFZhbHVlKQotICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQocGFyc2VkVmFsdWUu
cmVsZWFzZSgpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQo
KTsKKyAgICB3aGlsZSAoQ1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJl
bnQoKSkgeworICAgICAgICBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19VUkkgJiYgbV9zdHlsZVNoZWV0KSB7CisgICAgICAgICAgICBpZiAoIXBhcnNlRm9udEZhY2VT
cmNVcmkodmFsdWVzLmdldCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0gZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uICYm
IGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgImxvY2FsKCIpKSB7Cisg
ICAgICAgICAgICBpZiAoIXBhcnNlRm9udEZhY2VTcmNMb2NhbCh2YWx1ZXMuZ2V0KCkpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQotCi0gICAgaWYgKHZhbHVlcy0+bGVuZ3RoKCkgJiYgIWZhaWxl
ZCkgeworICAgIGlmICh2YWx1ZXMtPmxlbmd0aCgpKSB7CiAgICAgICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5U3JjLCB2YWx1ZXMucmVsZWFzZSgpLCBtX2ltcG9ydGFudCk7CiAgICAgICAgIG1f
dmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDcyNWQyNTRhNmI4YzVj
N2I2ZjE4MjBhNjQ5MWIxMWY5MmYyZjU0MDkuLjgwYTAwMDYyODJmZTkwYjM2MTcwN2IyMjMyM2Vi
MjRjMTkzZWJhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTM0NSw2ICszNDUsOSBAQCBw
cml2YXRlOgogICAgIGJvb2wgcGFyc2VTaXplKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsK
ICAgICBTaXplUGFyYW1ldGVyVHlwZSBwYXJzZVNpemVQYXJhbWV0ZXIoQ1NTVmFsdWVMaXN0KiBw
YXJzZWRWYWx1ZXMsIENTU1BhcnNlclZhbHVlKiB2YWx1ZSwgU2l6ZVBhcmFtZXRlclR5cGUgcHJl
dlBhcmFtVHlwZSk7CiAKKyAgICBib29sIHBhcnNlRm9udEZhY2VTcmNVcmkoQ1NTVmFsdWVMaXN0
Kik7CisgICAgYm9vbCBwYXJzZUZvbnRGYWNlU3JjTG9jYWwoQ1NTVmFsdWVMaXN0Kik7CisKICAg
ICBVQ2hhciogbV9kYXRhOwogICAgIFVDaGFyKiB5eXRleHQ7CiAgICAgVUNoYXIqIHl5X2NfYnVm
X3A7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118304</attachid>
            <date>2011-12-07 18:34:30 -0800</date>
            <delta_ts>2011-12-07 21:38:44 -0800</delta_ts>
            <desc>Patch V1</desc>
            <filename>bug-73989-20111208113429.patch</filename>
            <type>text/plain</type>
            <size>14612</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKb2xkIG1vZGUgMTAwNzU1Cm5ldyBt
b2RlIDEwMDY0NAppbmRleCA1ZmZmM2E3MGM2NjJiZDUwMTY3Njc0MGQ3MDAzMjQxNTQ5YTFjN2Rm
Li43MjZlYzNkYjIyMGNjN2E0NmU1ZTg4MGUwZjlhYjNmMDdiMTgyOWYwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOCBAQAorMjAxMS0xMi0wNyAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmVmYWN0b3IgQ1NTUGFyc2VyOjpwYXJzZUZvbnRGYWNlU3JjKCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczOTg5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9j
c3MvZm9udC1mYWNlLXNyYy1wYXJzaW5nLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRGYWNlU3JjVVJJKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VTcmNMb2Nh
bCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRGYWNlU3Jj
KTogUmV3cm90ZS4KKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisKIDIwMTEtMTItMDcgIFJ5
dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEludHJv
ZHVjZSBBc3NlcnRNYXRjaGluZ0VudW1zLmNwcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5k
ZXggMWVlZGU3MWUyZmQzNmVlNWRmOWYxMjMzODhhN2VmNGYzMjRjYjlmOS4uYmYwYjk5YjhjZGVi
ZTcxZTM3ZjI0NzQ3MmE3YzAwYzkxMjBjNTE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
QEAgLTQzNjQsNDEgKzQzNjQsNjMgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFdlaWdodChi
b29sIGltcG9ydGFudCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFs
aWRGb3JtYXRGdW5jdGlvbihDU1NQYXJzZXJWYWx1ZSogdmFsKQorYm9vbCBDU1NQYXJzZXI6OnBh
cnNlRm9udEZhY2VTcmNVUkkoQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QpCiB7Ci0gICAgQ1NTUGFy
c2VyVmFsdWVMaXN0KiBhcmdzID0gdmFsLT5mdW5jdGlvbi0+YXJncy5nZXQoKTsKLSAgICByZXR1
cm4gZXF1YWxJZ25vcmluZ0Nhc2UodmFsLT5mdW5jdGlvbi0+bmFtZSwgImZvcm1hdCgiKSAmJiAo
YXJncy0+Y3VycmVudCgpLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HIHx8
IGFyZ3MtPmN1cnJlbnQoKS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKTsK
KyAgICAvLyBGSVhNRTogVGhlIGNvbXBsZXRlVVJMIGNhbGwgc2hvdWxkIGJlIGRvbmUgd2hlbiB1
c2luZyB0aGUgQ1NTRm9udEZhY2VTcmNWYWx1ZSwKKyAgICAvLyBub3Qgd2hlbiBjcmVhdGluZyBp
dC4KKyAgICBSZWZQdHI8Q1NTRm9udEZhY2VTcmNWYWx1ZT4gdXJpVmFsdWUoQ1NTRm9udEZhY2VT
cmNWYWx1ZTo6Y3JlYXRlKG1fc3R5bGVTaGVldC0+Y29tcGxldGVVUkwobV92YWx1ZUxpc3QtPmN1
cnJlbnQoKS0+c3RyaW5nKSkpOworCisgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1
ZUxpc3QtPm5leHQoKTsKKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgIHZhbHVlTGlzdC0+YXBw
ZW5kKHVyaVZhbHVlLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIHZhbHVlLT5p
VmFsdWUgPT0gJywnKSB7CisgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgIHZh
bHVlTGlzdC0+YXBwZW5kKHVyaVZhbHVlLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGlmICh2YWx1ZS0+dW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rp
b24gfHwgIWVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgImZvcm1hdCgi
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IGh0dHA6Ly93d3cudzMu
b3JnL1RSLzIwMTEvV0QtY3NzMy1mb250cy0yMDExMTAwNC8gc2F5cyB0aGF0IGZvcm1hdCgpIGNv
bnRhaW5zIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygc3RyaW5ncywKKyAgICAvLyBidXQgQ1NT
Rm9udEZhY2VTcmNWYWx1ZSBzdG9yZXMgb25seSBvbmUgZm9ybWF0LiBBbGxvd2luZyBvbmUgZm9y
bWF0IGZvciBub3cuCisgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gdmFsdWUtPmZ1bmN0
aW9uLT5hcmdzLmdldCgpOworICAgIGlmICghYXJncyB8fCBhcmdzLT5zaXplKCkgIT0gMSB8fCAo
YXJncy0+Y3VycmVudCgpLT51bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HICYm
IGFyZ3MtPmN1cnJlbnQoKS0+dW5pdCAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVyaVZhbHVlLT5zZXRGb3JtYXQoYXJncy0+Y3Vy
cmVudCgpLT5zdHJpbmcpOworICAgIHZhbHVlTGlzdC0+YXBwZW5kKHVyaVZhbHVlLnJlbGVhc2Uo
KSk7CisgICAgdmFsdWUgPSBtX3ZhbHVlTGlzdC0+bmV4dCgpOworICAgIGlmICh2YWx1ZSAmJiB2
YWx1ZS0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYgdmFsdWUtPmlWYWx1ZSA9
PSAnLCcpCisgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyBib29sIHBhcnNlRm9udEZhY2VTcmNGdW5jdGlvbihDU1NQYXJzZXJWYWx1ZSog
dmFsdWUsIGJvb2wmIGV4cGVjdENvbW1hLCBib29sJiBhbGxvd0Zvcm1hdCwgUmVmUHRyPENTU0Zv
bnRGYWNlU3JjVmFsdWU+JiB1cmlWYWx1ZSwgUmVmUHRyPENTU0ZvbnRGYWNlU3JjVmFsdWU+JiBw
YXJzZWRWYWx1ZSkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnRGYWNlU3JjTG9jYWwoQ1NTVmFs
dWVMaXN0KiB2YWx1ZUxpc3QpCiB7Ci0gICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gdmFs
dWUtPmZ1bmN0aW9uLT5hcmdzLmdldCgpOworICAgIENTU1BhcnNlclZhbHVlTGlzdCogYXJncyA9
IG1fdmFsdWVMaXN0LT5jdXJyZW50KCktPmZ1bmN0aW9uLT5hcmdzLmdldCgpOwogICAgIGlmICgh
YXJncyB8fCAhYXJncy0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAibG9jYWwoIikgJiYgIWV4
cGVjdENvbW1hKSB7Ci0gICAgICAgIGV4cGVjdENvbW1hID0gdHJ1ZTsKLSAgICAgICAgYWxsb3dG
b3JtYXQgPSBmYWxzZTsKLSAgICAgICAgdXJpVmFsdWUuY2xlYXIoKTsKLSAgICAgICAgaWYgKGFy
Z3MtPmN1cnJlbnQoKS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKLSAg
ICAgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y3JlYXRlTG9jYWwo
YXJncy0+Y3VycmVudCgpLT5zdHJpbmcpOwotICAgICAgICBlbHNlIGlmIChhcmdzLT5jdXJyZW50
KCktPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkgewotICAgICAgICAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICAgICAgZm9yIChDU1NQYXJzZXJWYWx1ZSog
bG9jYWxWYWx1ZSA9IGFyZ3MtPmN1cnJlbnQoKTsgbG9jYWxWYWx1ZTsgbG9jYWxWYWx1ZSA9IGFy
Z3MtPm5leHQoKSkgewotICAgICAgICAgICAgICAgIGlmIChsb2NhbFZhbHVlLT51bml0ICE9IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGxvY2FsVmFsdWUtPnN0cmluZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBw
YXJzZWRWYWx1ZSA9IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZUxvY2FsKGJ1aWxkZXIudG9T
dHJpbmcoKSk7CisgICAgaWYgKGFyZ3MtPnNpemUoKSA9PSAxICYmIGFyZ3MtPmN1cnJlbnQoKS0+
dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKKyAgICAgICAgdmFsdWVMaXN0
LT5hcHBlbmQoQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y3JlYXRlTG9jYWwoYXJncy0+Y3VycmVudCgp
LT5zdHJpbmcpKTsKKyAgICBlbHNlIGlmIChhcmdzLT5jdXJyZW50KCktPnVuaXQgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19JREVOVCkgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CisgICAgICAgIGZvciAoQ1NTUGFyc2VyVmFsdWUqIGxvY2FsVmFsdWUgPSBhcmdzLT5jdXJyZW50
KCk7IGxvY2FsVmFsdWU7IGxvY2FsVmFsdWUgPSBhcmdzLT5uZXh0KCkpIHsKKyAgICAgICAgICAg
IGlmIChsb2NhbFZhbHVlLT51bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFidWlsZGVyLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQobG9jYWxWYWx1ZS0+c3RyaW5nKTsKICAgICAgICAgfQotICAgIH0g
ZWxzZSBpZiAoYXJncy0+c2l6ZSgpID09IDEgJiYgYWxsb3dGb3JtYXQgJiYgdXJpVmFsdWUgJiYg
aXNWYWxpZEZvcm1hdEZ1bmN0aW9uKHZhbHVlKSkgewotICAgICAgICBleHBlY3RDb21tYSA9IHRy
dWU7Ci0gICAgICAgIGFsbG93Rm9ybWF0ID0gZmFsc2U7Ci0gICAgICAgIHVyaVZhbHVlLT5zZXRG
b3JtYXQoYXJncy0+Y3VycmVudCgpLT5zdHJpbmcpOwotICAgICAgICB1cmlWYWx1ZS5jbGVhcigp
OwotICAgICAgICBwYXJzZWRWYWx1ZS5jbGVhcigpOworICAgICAgICB2YWx1ZUxpc3QtPmFwcGVu
ZChDU1NGb250RmFjZVNyY1ZhbHVlOjpjcmVhdGVMb2NhbChidWlsZGVyLnRvU3RyaW5nKCkpKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKENTU1BhcnNlclZh
bHVlKiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKHZhbHVlLT51
bml0ID09IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciAmJiB2YWx1ZS0+aVZhbHVlID09ICcsJykK
KyAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgfQogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtNDQwNiw1MyArNDQyOCwyMyBAQCBzdGF0aWMgYm9vbCBwYXJzZUZvbnRGYWNlU3Jj
RnVuY3Rpb24oQ1NTUGFyc2VyVmFsdWUqIHZhbHVlLCBib29sJiBleHBlY3RDb21tYSwgYgogYm9v
bCBDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VTcmMoKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IHZhbHVlcyhDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCkpOwotICAgIENT
U1BhcnNlclZhbHVlKiB2YWw7Ci0gICAgYm9vbCBleHBlY3RDb21tYSA9IGZhbHNlOwotICAgIGJv
b2wgYWxsb3dGb3JtYXQgPSBmYWxzZTsKLSAgICBib29sIGZhaWxlZCA9IGZhbHNlOwotICAgIFJl
ZlB0cjxDU1NGb250RmFjZVNyY1ZhbHVlPiB1cmlWYWx1ZTsKLSAgICB3aGlsZSAoKHZhbCA9IG1f
dmFsdWVMaXN0LT5jdXJyZW50KCkpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NGb250RmFjZVNyY1Zh
bHVlPiBwYXJzZWRWYWx1ZTsKLSAgICAgICAgaWYgKHZhbC0+dW5pdCA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1VSSSAmJiAhZXhwZWN0Q29tbWEgJiYgbV9zdHlsZVNoZWV0KSB7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogVGhlIGNvbXBsZXRlVVJMIGNhbGwgc2hvdWxkIGJlIGRvbmUgd2hlbiB1
c2luZyB0aGUgQ1NTRm9udEZhY2VTcmNWYWx1ZSwKLSAgICAgICAgICAgIC8vIG5vdCB3aGVuIGNy
ZWF0aW5nIGl0LgotICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBDU1NGb250RmFjZVNyY1ZhbHVl
OjpjcmVhdGUobV9zdHlsZVNoZWV0LT5jb21wbGV0ZVVSTCh2YWwtPnN0cmluZykpOwotICAgICAg
ICAgICAgdXJpVmFsdWUgPSBwYXJzZWRWYWx1ZTsKLSAgICAgICAgICAgIGFsbG93Rm9ybWF0ID0g
dHJ1ZTsKLSAgICAgICAgICAgIGV4cGVjdENvbW1hID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlm
ICh2YWwtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBp
ZiAoIXBhcnNlRm9udEZhY2VTcmNGdW5jdGlvbih2YWwsIGV4cGVjdENvbW1hLCBhbGxvd0Zvcm1h
dCwgdXJpVmFsdWUsIHBhcnNlZFZhbHVlKSkgewotICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAocGFyc2VkVmFsdWUpCi0gICAgICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQocGFyc2VkVmFs
dWUucmVsZWFzZSgpKTsKLSAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7Ci0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfSBlbHNlIGlmICh2YWwtPnVuaXQgPT0gQ1NTUGFyc2Vy
VmFsdWU6Ok9wZXJhdG9yICYmIHZhbC0+aVZhbHVlID09ICcsJyAmJiBleHBlY3RDb21tYSkgewot
ICAgICAgICAgICAgZXhwZWN0Q29tbWEgPSBmYWxzZTsKLSAgICAgICAgICAgIGFsbG93Rm9ybWF0
ID0gZmFsc2U7Ci0gICAgICAgICAgICB1cmlWYWx1ZS5jbGVhcigpOwotICAgICAgICAgICAgbV92
YWx1ZUxpc3QtPm5leHQoKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKHBhcnNlZFZhbHVlKQotICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQocGFyc2Vk
VmFsdWUucmVsZWFzZSgpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmYWlsZWQgPSB0
cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgbV92YWx1ZUxpc3Qt
Pm5leHQoKTsKLSAgICB9CiAKLSAgICBpZiAodmFsdWVzLT5sZW5ndGgoKSAmJiAhZmFpbGVkKSB7
Ci0gICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5U3JjLCB2YWx1ZXMucmVsZWFzZSgpLCBt
X2ltcG9ydGFudCk7Ci0gICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7Ci0gICAgICAgIHJldHVy
biB0cnVlOworICAgIHdoaWxlIChDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBtX3ZhbHVlTGlzdC0+
Y3VycmVudCgpKSB7CisgICAgICAgIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1VSSSAmJiBtX3N0eWxlU2hlZXQpIHsKKyAgICAgICAgICAgIGlmICghcGFyc2VGb250
RmFjZVNyY1VSSSh2YWx1ZXMuZ2V0KCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rp
b24gJiYgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAibG9jYWwoIikp
IHsKKyAgICAgICAgICAgIGlmICghcGFyc2VGb250RmFjZVNyY0xvY2FsKHZhbHVlcy5nZXQoKSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgaWYgKCF2YWx1ZXMtPmxlbmd0aCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlTcmMsIHZhbHVlcy5yZWxlYXNlKCksIG1faW1wb3J0YW50KTsKKyAgICBtX3Zh
bHVlTGlzdC0+bmV4dCgpOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIENTU1BhcnNlcjo6
cGFyc2VGb250RmFjZVVuaWNvZGVSYW5nZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggNzI1
ZDI1NGE2YjhjNWM3YjZmMTgyMGE2NDkxYjExZjkyZjJmNTQwOS4uMTZjODQxMzU3NmYxNTk5ODA5
NTMxNGNhNzdjN2RiOWZmOTRjOTRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtMzQ1LDYg
KzM0NSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBwYXJzZVNpemUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpOwogICAgIFNpemVQYXJhbWV0ZXJUeXBlIHBhcnNlU2l6ZVBhcmFtZXRlcihDU1NW
YWx1ZUxpc3QqIHBhcnNlZFZhbHVlcywgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlLCBTaXplUGFyYW1l
dGVyVHlwZSBwcmV2UGFyYW1UeXBlKTsKIAorICAgIGJvb2wgcGFyc2VGb250RmFjZVNyY1VSSShD
U1NWYWx1ZUxpc3QqKTsKKyAgICBib29sIHBhcnNlRm9udEZhY2VTcmNMb2NhbChDU1NWYWx1ZUxp
c3QqKTsKKwogICAgIFVDaGFyKiBtX2RhdGE7CiAgICAgVUNoYXIqIHl5dGV4dDsKICAgICBVQ2hh
ciogeXlfY19idWZfcDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkNzkyNzdjM2RlZTE5MTAyZjgyNjcxNjBjOTJiNzMzNDZk
NjY3NDdmLi4xM2U3NDUwMTU5MjY0NTgxM2E5ZjUwNWExMzYwZGVhZDYxNjc1NjNmIDEwMDc1NQot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTEtMTItMDcgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJlZmFjdG9yIENTU1BhcnNlcjo6cGFyc2VGb250RmFjZVNy
YygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzk4
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IGEgdGVzdCB0aGF0IGNoZWNrcyBwYXJzaW5nIHJlc3VsdCBvZiB0aGUgc3JjIGRlc2NyaXB0b3Ig
b2YgQGZvbnQtZmFjZS4KKworICAgICAgICAqIGZhc3QvY3NzL2ZvbnQtZmFjZS1zcmMtcGFyc2lu
Zy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2ZvbnQtZmFjZS1zcmMt
cGFyc2luZy5odG1sOiBBZGRlZC4KKwogMjAxMS0xMi0wNyAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1F0XSBGb2xsb3cgdXAgb2YgcjEwMjIyNi4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFjZS1zcmMtcGFyc2luZy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZhY2Utc3JjLXBhcnNpbmctZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY5NzE4ZGYxZmM3MDQ5MWRjNDU5NzFkMDk5NDYwNDgyOTEzNDAy
OGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZhY2Utc3Jj
LXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTEgQEAKK1Rlc3QgcGFyc2luZyB0aGUg
c3JjIGRlc2NyaXB0b3Igb2YgQGZvbnQtZmFjZS4KKworVmFsaWQgcnVsZXMgZm9ybSB0aGUgc3R5
bGVzaGVldDoKKworQGZvbnQtZmFjZSB7IHNyYzogdXJsKGZvbnQudHRmKTsgfQorQGZvbnQtZmFj
ZSB7IHNyYzogdXJsKGh0dHA6Ly9mb28vYmFyL2ZvbnQudHRmKTsgfQorQGZvbnQtZmFjZSB7IHNy
YzogdXJsKGZvbnQuc3ZnI2lkKTsgfQorQGZvbnQtZmFjZSB7IHNyYzogdXJsKGZvbnQudHRmKSBm
b3JtYXQodHJ1ZXR5cGUpOyB9CitAZm9udC1mYWNlIHsgc3JjOiB1cmwoZm9udC53b2ZmKSBmb3Jt
YXQod29mZiksIGxvY2FsKGZvbnQyKTsgfQorQGZvbnQtZmFjZSB7IHNyYzogdXJsKGZvbnQyLnR0
Zik7IH0KK0Bmb250LWZhY2UgeyBzcmM6IHVybChmb250Mi50dGYpIGZvcm1hdCh0cnVldHlwZSk7
IH0KK0Bmb250LWZhY2UgeyBzcmM6IHVybChmb250My5vdGYpIGZvcm1hdChvcGVudHlwZSksIGxv
Y2FsKGZvbyBiYXIpOyB9CitAZm9udC1mYWNlIHsgc3JjOiBsb2NhbChmb28pOyB9CitAZm9udC1m
YWNlIHsgc3JjOiBsb2NhbChmb250KSwgbG9jYWwoZm9vIGJhcik7IH0KK0Bmb250LWZhY2UgeyBz
cmM6IGxvY2FsKGZvbyk7IH0KK0Bmb250LWZhY2UgeyBzcmM6IGxvY2FsKGZvbyBiYXIpOyB9CitF
eHBlY3RlZCByZXN1bHQgZm9yIHZhbGlkIHJ1bGVzOgorCitAZm9udC1mYWNlIHsgc3JjOiB1cmwo
Zm9udC50dGYpOyB9CitAZm9udC1mYWNlIHsgc3JjOiB1cmwoaHR0cDovL2Zvby9iYXIvZm9udC50
dGYpOyB9CitAZm9udC1mYWNlIHsgc3JjOiB1cmwoZm9udC5zdmcjaWQpOyB9CitAZm9udC1mYWNl
IHsgc3JjOiB1cmwoZm9udC50dGYpIGZvcm1hdCh0cnVldHlwZSk7IH0KK0Bmb250LWZhY2UgeyBz
cmM6IHVybChmb250LndvZmYpIGZvcm1hdCh3b2ZmKSwgbG9jYWwoZm9udDIpOyB9CitAZm9udC1m
YWNlIHsgc3JjOiB1cmwoZm9udDIudHRmKTsgfQorQGZvbnQtZmFjZSB7IHNyYzogdXJsKGZvbnQy
LnR0ZikgZm9ybWF0KHRydWV0eXBlKTsgfQorQGZvbnQtZmFjZSB7IHNyYzogdXJsKGZvbnQzLm90
ZikgZm9ybWF0KG9wZW50eXBlKSwgbG9jYWwoZm9vIGJhcik7IH0KK0Bmb250LWZhY2UgeyBzcmM6
IGxvY2FsKGZvbyk7IH0KK0Bmb250LWZhY2UgeyBzcmM6IGxvY2FsKGZvbnQpLCBsb2NhbChmb28g
YmFyKTsgfQorQGZvbnQtZmFjZSB7IHNyYzogbG9jYWwoZm9vKTsgfQorQGZvbnQtZmFjZSB7IHNy
YzogbG9jYWwoZm9vIGJhcik7IH0KK0ludmFsaWQgcnVsZXMgZm9ybSB0aGUgc3R5bGVzaGVldDoK
KworQGZvbnQtZmFjZSB7IH0KK0Bmb250LWZhY2UgeyB9CitAZm9udC1mYWNlIHsgfQorQGZvbnQt
ZmFjZSB7IH0KK0Bmb250LWZhY2UgeyB9CitAZm9udC1mYWNlIHsgfQorQGZvbnQtZmFjZSB7IH0K
K0Bmb250LWZhY2UgeyB9CitFeHBlY3RlZCByZXN1bHQgZm9yIGludmFsaWQgcnVsZXM6CisKK0Bm
b250LWZhY2UgeyB9CitAZm9udC1mYWNlIHsgfQorQGZvbnQtZmFjZSB7IH0KK0Bmb250LWZhY2Ug
eyB9CitAZm9udC1mYWNlIHsgfQorQGZvbnQtZmFjZSB7IH0KK0Bmb250LWZhY2UgeyB9CitAZm9u
dC1mYWNlIHsgfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZhY2Ut
c3JjLXBhcnNpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnQtZmFjZS1zcmMtcGFy
c2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiNzNhZDdhNTEyYjQzNDEwY2M5MTMxNGQ0OGM4YzAwYTZl
OGM2YjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZhY2Ut
c3JjLXBhcnNpbmcuaHRtbApAQCAtMCwwICsxLDEyMiBAQAorPCEtLSBWYWxpZCBzcmMgZGVzY3Jp
cHRvciBydWxlcy4gLS0+Cis8c3R5bGU+CitAZm9udC1mYWNlIHsKKyAgICBzcmM6IHVybChmb250
LnR0Zik7Cit9CitAZm9udC1mYWNlIHsKKyAgICBzcmM6IHVybChodHRwOi8vZm9vL2Jhci9mb250
LnR0Zik7Cit9CitAZm9udC1mYWNlIHsKKyAgICBzcmM6IHVybChmb250LnN2ZyNpZCk7Cit9CitA
Zm9udC1mYWNlIHsKKyAgICBzcmM6IHVybChmb250LnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpOwor
fQorQGZvbnQtZmFjZSB7CisgICAgc3JjOiB1cmwoZm9udC53b2ZmKSBmb3JtYXQoIndvZmYiKSwg
bG9jYWwoZm9udDIpOworfQorQGZvbnQtZmFjZSB7CisgICAgc3JjOiB1cmwoZm9udC50dGYpIGZv
cm1hdCgidHJ1ZXR5cGUiKSwgdXJsKGZvbnQyLnR0Zik7Cit9CitAZm9udC1mYWNlIHsKKyAgICBz
cmM6IHVybChmb250LnR0ZiksIHVybChmb250Mi50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKTsKK30K
K0Bmb250LWZhY2UgeworICAgIHNyYzogdXJsKGZvbnQudHRmKSwgbG9jYWwoZm9udDIpLCB1cmwo
Zm9udDMub3RmKSBmb3JtYXQoIm9wZW50eXBlIiksIGxvY2FsKGZvbyBiYXIpOworfQorQGZvbnQt
ZmFjZSB7CisgICAgc3JjOiBsb2NhbChmb28pOworfQorQGZvbnQtZmFjZSB7CisgICAgc3JjOiBs
b2NhbChmb250KSwgbG9jYWwoZm9vIGJhcik7Cit9CitAZm9udC1mYWNlIHsKKyAgICBzcmM6IGxv
Y2FsKCJmb28iKTsKK30KK0Bmb250LWZhY2UgeworICAgIHNyYzogbG9jYWwoImZvbyBiYXIiKTsK
K30KKzwvc3R5bGU+CisKKzwhLS0gSW52YWxpZCBzcmMgZGVzY3JpcHRvciBydWxlcy4gLS0+Cis8
c3R5bGU+CitAZm9udC1mYWNlIHsKKyAgICBzcmM6IHVybChmb250LnR0ZiBpbnZhbGlkKTsKK30K
K0Bmb250LWZhY2UgeworICAgIHNyYzogdXJsKGZvbnQudHRmKSw7Cit9CitAZm9udC1mYWNlIHsK
KyAgICBzcmM6IHVybChmb250LnR0ZiksIGxvY2FsKGZvbnQyKSw7Cit9CitAZm9udC1mYWNlIHsK
KyAgICBzcmM6ICxsb2NhbChmb250KTsKK30KK0Bmb250LWZhY2UgeworICAgIHNyYzogdXJsKGZv
bnQudHRmKSwgaW52YWxpZCgpOworfQorQGZvbnQtZmFjZSB7CisgICAgc3JjOiB1cmwoZm9vLnR0
ZikgaW52YWxpZDsKK30KKworQGZvbnQtZmFjZSB7CisgICAgc3JjOiB1cmwoZm9vLnR0ZiksIGlu
dmFsaWQ7Cit9CitAZm9udC1mYWNlIHsKKyAgICBzcmM6IHVybChmb28udHRmKSAiaW52YWxpZCI7
Cit9Cis8L3N0eWxlPgorPHA+VGVzdCBwYXJzaW5nIHRoZSBzcmMgZGVzY3JpcHRvciBvZiBAZm9u
dC1mYWNlLjwvcD4KKworPHA+VmFsaWQgcnVsZXMgZm9ybSB0aGUgc3R5bGVzaGVldDo8L3A+Cis8
ZGl2IGlkPSJ2YWxpZFJlc3VsdCI+PC9kaXY+CisKKzxwPkV4cGVjdGVkIHJlc3VsdCBmb3IgdmFs
aWQgcnVsZXM6PC9wPgorPHByZSBpZD0idmFsaWRFeHBlY3RlZCI+QGZvbnQtZmFjZSB7IHNyYzog
dXJsKGZvbnQudHRmKTsgfQorQGZvbnQtZmFjZSB7IHNyYzogdXJsKGh0dHA6Ly9mb28vYmFyL2Zv
bnQudHRmKTsgfQorQGZvbnQtZmFjZSB7IHNyYzogdXJsKGZvbnQuc3ZnI2lkKTsgfQorQGZvbnQt
ZmFjZSB7IHNyYzogdXJsKGZvbnQudHRmKSBmb3JtYXQodHJ1ZXR5cGUpOyB9CitAZm9udC1mYWNl
IHsgc3JjOiB1cmwoZm9udC53b2ZmKSBmb3JtYXQod29mZiksIGxvY2FsKGZvbnQyKTsgfQorQGZv
bnQtZmFjZSB7IHNyYzogdXJsKGZvbnQyLnR0Zik7IH0KK0Bmb250LWZhY2UgeyBzcmM6IHVybChm
b250Mi50dGYpIGZvcm1hdCh0cnVldHlwZSk7IH0KK0Bmb250LWZhY2UgeyBzcmM6IHVybChmb250
My5vdGYpIGZvcm1hdChvcGVudHlwZSksIGxvY2FsKGZvbyBiYXIpOyB9CitAZm9udC1mYWNlIHsg
c3JjOiBsb2NhbChmb28pOyB9CitAZm9udC1mYWNlIHsgc3JjOiBsb2NhbChmb250KSwgbG9jYWwo
Zm9vIGJhcik7IH0KK0Bmb250LWZhY2UgeyBzcmM6IGxvY2FsKGZvbyk7IH0KK0Bmb250LWZhY2Ug
eyBzcmM6IGxvY2FsKGZvbyBiYXIpOyB9Cis8L3ByZT4KKworPHA+SW52YWxpZCBydWxlcyBmb3Jt
IHRoZSBzdHlsZXNoZWV0OjwvcD4KKzxwcmUgaWQ9ImludmFsaWRSZXN1bHQiPjwvcHJlPgorCis8
cD5FeHBlY3RlZCByZXN1bHQgZm9yIGludmFsaWQgcnVsZXM6PC9wPgorPHByZSBpZD0iaW52YWxp
ZEV4cGVjdGVkIj5AZm9udC1mYWNlIHsgfQorQGZvbnQtZmFjZSB7IH0KK0Bmb250LWZhY2UgeyB9
CitAZm9udC1mYWNlIHsgfQorQGZvbnQtZmFjZSB7IH0KK0Bmb250LWZhY2UgeyB9CitAZm9udC1m
YWNlIHsgfQorQGZvbnQtZmFjZSB7IH0KKzwvcHJlPgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisKK3ZhciB2YWxpZFJ1bGVzID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXM7
Cit2YXIgcmVzdWx0ID0gJyc7Citmb3IgKHZhciBpID0gMDsgaSA8IHZhbGlkUnVsZXMubGVuZ3Ro
OyArK2kpIHsKKyAgICB2YXIgaXRlbVRleHQgPSB2YWxpZFJ1bGVzLml0ZW0oaSkuY3NzVGV4dC5y
ZXBsYWNlKC9maWxlOi4qTGF5b3V0VGVzdHNcL2Zhc3RcL2Nzc1wvLywgJycpOworICAgIHJlc3Vs
dCArPSBpdGVtVGV4dCArICdcbic7Cit9Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmFsaWRS
ZXN1bHQnKS5pbm5lclRleHQgPSByZXN1bHQ7CisKK3ZhciBpbnZhbGlkUnVsZXMgPSBkb2N1bWVu
dC5zdHlsZVNoZWV0c1sxXS5jc3NSdWxlczsKK3Jlc3VsdCA9ICcnOworZm9yICh2YXIgaSA9IDA7
IGkgPCBpbnZhbGlkUnVsZXMubGVuZ3RoOyArK2kpIHsKKyAgICB2YXIgaXRlbVRleHQgPSBpbnZh
bGlkUnVsZXMuaXRlbShpKS5jc3NUZXh0OworICAgIHJlc3VsdCArPSBpdGVtVGV4dCArICdcbic7
Cit9Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52YWxpZFJlc3VsdCcpLmlubmVyVGV4dCA9
IHJlc3VsdDsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>