<?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>80970</bug_id>
          
          <creation_ts>2012-03-12 22:35:33 -0700</creation_ts>
          <short_desc>File upload control should use File.name() rather than File.path() to show chosen filenames</short_desc>
          <delta_ts>2012-03-13 07:39:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Kinuko Yasuda">kinuko</assigned_to>
          <cc>gustavo</cc>
    
    <cc>satorux</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>577043</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-12 22:35:33 -0700</bug_when>
    <thetext>File upload control should use File.name() rather than File.path() to show chosen filenames.

In some rare cases (e.g. files from FileSystem API or files created using the newly added WebKit API) File.name has different displayName from the basename of file.path, and in the file uploader controller we should use File.name rather than File.path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577063</commentid>
    <comment_count>1</comment_count>
      <attachid>131550</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-12 22:52:27 -0700</bug_when>
    <thetext>Created attachment 131550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577088</commentid>
    <comment_count>2</comment_count>
      <attachid>131550</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-12 23:31:30 -0700</bug_when>
    <thetext>Comment on attachment 131550
Patch

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

&gt; Source/WebCore/rendering/RenderFileUploadControl.cpp:239
&gt; -    return theme()-&gt;fileListNameForWidth(input-&gt;files()-&gt;paths(), style()-&gt;font(), maxFilenameWidth(), input-&gt;multiple());
&gt; +    return theme()-&gt;fileListNameForWidth(input-&gt;files()-&gt;names(), style()-&gt;font(), maxFilenameWidth(), input-&gt;multiple());

I think this is not a compatible change.
RenderThemeMac.mm uses NSFileMaanger::displayNameAtPath to make a user-visible string. It requires a full path name.

How about passing a FileList to fileListNameForWidth() instead of a Vector of paths?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577116</commentid>
    <comment_count>3</comment_count>
      <attachid>131561</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-13 00:03:33 -0700</bug_when>
    <thetext>Created attachment 131561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577119</commentid>
    <comment_count>4</comment_count>
      <attachid>131550</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-13 00:10:58 -0700</bug_when>
    <thetext>Comment on attachment 131550
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderFileUploadControl.cpp:239
&gt;&gt; +    return theme()-&gt;fileListNameForWidth(input-&gt;files()-&gt;names(), style()-&gt;font(), maxFilenameWidth(), input-&gt;multiple());
&gt; 
&gt; I think this is not a compatible change.
&gt; RenderThemeMac.mm uses NSFileMaanger::displayNameAtPath to make a user-visible string. It requires a full path name.
&gt; 
&gt; How about passing a FileList to fileListNameForWidth() instead of a Vector of paths?

(google&apos;d how NSFileManager::displayNameAtPath works...) I see, passing a FileList sounds like a better idea (then each platform can do what they want).  Updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577121</commentid>
    <comment_count>5</comment_count>
      <attachid>131561</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-13 00:22:45 -0700</bug_when>
    <thetext>Comment on attachment 131561
Patch

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

&gt; Source/WebCore/rendering/RenderTheme.h:219
&gt; -    virtual String fileListNameForWidth(const Vector&lt;String&gt;&amp; filenames, const Font&amp;, int width, bool multipleFilesAllowed) const;
&gt; +    virtual String fileListNameForWidth(PassRefPtr&lt;FileList&gt;, const Font&amp;, int width, bool multipleFilesAllowed) const;

Using PassRefPtr&lt;&gt; is not appropriate because we don&apos;t need to move reference count ownership from the caller to fileListNameForWidth.
FileList* is enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577125</commentid>
    <comment_count>6</comment_count>
      <attachid>131564</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-13 00:29:30 -0700</bug_when>
    <thetext>Created attachment 131564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577126</commentid>
    <comment_count>7</comment_count>
      <attachid>131561</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-13 00:32:07 -0700</bug_when>
    <thetext>Comment on attachment 131561
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderTheme.h:219
&gt;&gt; +    virtual String fileListNameForWidth(PassRefPtr&lt;FileList&gt;, const Font&amp;, int width, bool multipleFilesAllowed) const;
&gt; 
&gt; Using PassRefPtr&lt;&gt; is not appropriate because we don&apos;t need to move reference count ownership from the caller to fileListNameForWidth.
&gt; FileList* is enough.

Good point, I should have thought about that.  Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577130</commentid>
    <comment_count>8</comment_count>
      <attachid>131564</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-13 00:37:27 -0700</bug_when>
    <thetext>Comment on attachment 131564
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [chromium] File upload control should use File.name() rather than File.path() to show chosen filenames

Please do not prepend [Chrmoum] for a patch updating non-Chromium part.

&gt; Source/WebCore/rendering/RenderTheme.h:219
&gt; -    virtual String fileListNameForWidth(const Vector&lt;String&gt;&amp; filenames, const Font&amp;, int width, bool multipleFilesAllowed) const;
&gt; +    virtual String fileListNameForWidth(FileList*, const Font&amp;, int width, bool multipleFilesAllowed) const;

nit: FileList* can be const?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577133</commentid>
    <comment_count>9</comment_count>
      <attachid>131564</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-13 00:38:22 -0700</bug_when>
    <thetext>Comment on attachment 131564
Patch

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

&gt; Source/WebCore/platform/gtk/RenderThemeGtk.h:184
&gt; -    virtual String fileListNameForWidth(const Vector&lt;String&gt;&amp; filenames, const Font&amp;, int width, bool multipleFilesAllowed) const;
&gt; +    virtual String fileListNameForWidth(FileList*, const Font&amp;, int width, bool multipleFilesAllowed) const;

nit: We had better append OVERRIDE.

&gt; Source/WebCore/platform/qt/RenderThemeQt.h:158
&gt; -    virtual String fileListNameForWidth(const Vector&lt;String&gt;&amp; filenames, const Font&amp;, int width) const;
&gt; +    virtual String fileListNameForWidth(FileList*, const Font&amp;, int width) const;

ditto.

&gt; Source/WebCore/rendering/RenderThemeMac.h:180
&gt; -    virtual String fileListNameForWidth(const Vector&lt;String&gt;&amp; filenames, const Font&amp;, int width, bool multipleFilesAllowed) const;
&gt; +    virtual String fileListNameForWidth(FileList*, const Font&amp;, int width, bool multipleFilesAllowed) const;

nit: We had better append OVERRIDE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577144</commentid>
    <comment_count>10</comment_count>
      <attachid>131569</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-13 00:58:02 -0700</bug_when>
    <thetext>Created attachment 131569
Addressed comments; for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577186</commentid>
    <comment_count>11</comment_count>
      <attachid>131569</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-13 02:31:51 -0700</bug_when>
    <thetext>Comment on attachment 131569
Addressed comments; for EWS

Attachment 131569 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/11942424</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577188</commentid>
    <comment_count>12</comment_count>
      <attachid>131564</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-13 02:39:29 -0700</bug_when>
    <thetext>Comment on attachment 131564
Patch

Attachment 131564 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/11941454</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577193</commentid>
    <comment_count>13</comment_count>
      <attachid>131564</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-13 02:43:36 -0700</bug_when>
    <thetext>Comment on attachment 131564
Patch

Attachment 131564 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11949344</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577196</commentid>
    <comment_count>14</comment_count>
      <attachid>131569</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-13 02:48:59 -0700</bug_when>
    <thetext>Comment on attachment 131569
Addressed comments; for EWS

Attachment 131569 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11949351</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577216</commentid>
    <comment_count>15</comment_count>
      <attachid>131586</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-13 03:50:38 -0700</bug_when>
    <thetext>Created attachment 131586
Build fix (for EWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577255</commentid>
    <comment_count>16</comment_count>
      <attachid>131564</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-13 06:00:52 -0700</bug_when>
    <thetext>Comment on attachment 131564
Patch

Attachment 131564 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/11944536</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577264</commentid>
    <comment_count>17</comment_count>
      <attachid>131564</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-13 06:39:09 -0700</bug_when>
    <thetext>Comment on attachment 131564
Patch

Attachment 131564 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11948486</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577265</commentid>
    <comment_count>18</comment_count>
      <attachid>131586</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-13 06:43:54 -0700</bug_when>
    <thetext>Comment on attachment 131586
Build fix (for EWS)

Attachment 131586 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/11941552</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577290</commentid>
    <comment_count>19</comment_count>
      <attachid>131586</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-13 07:30:01 -0700</bug_when>
    <thetext>Comment on attachment 131586
Build fix (for EWS)

Attachment 131586 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11947536</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577297</commentid>
    <comment_count>20</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-03-13 07:39:11 -0700</bug_when>
    <thetext>Committed r110560: &lt;http://trac.webkit.org/changeset/110560&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131550</attachid>
            <date>2012-03-12 22:52:27 -0700</date>
            <delta_ts>2012-03-13 00:10:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80970-20120313145225.patch</filename>
            <type>text/plain</type>
            <size>5402</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBlOTczYTRhZGE1MDZh
NmQ0Y2Y5Yzk3M2E5NGZlYTdlYjNkMDgyNC4uOTAyMWRkMGQyZWYwZTNjNTFkNmI4Zjk3OTI0Mjk0
YWU0YTg4Nzc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAzLTEyICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBGaWxlIHVwbG9hZCBj
b250cm9sIHNob3VsZCB1c2UgRmlsZS5uYW1lKCkgcmF0aGVyIHRoYW4gRmlsZS5wYXRoKCkgdG8g
c2hvdyBjaG9zZW4gZmlsZW5hbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MDk3MAorCisgICAgICAgIEluIHNvbWUgcmFyZSBjYXNlcyAoZS5nLiBm
aWxlcyBmcm9tIEZpbGVTeXN0ZW0gQVBJIG9yIGZpbGVzIGNyZWF0ZWQKKyAgICAgICAgdXNpbmcg
dGhlIG5ld2x5IGFkZGVkIFdlYktpdCBBUEkpIEZpbGUubmFtZSBoYXMgZGlmZmVyZW50IGRpc3Bs
YXlOYW1lCisgICAgICAgIGZyb20gdGhlIGJhc2VuYW1lIG9mIGZpbGUucGF0aCwgYW5kIGluIHRo
ZSBmaWxlIHVwbG9hZGVyIGNvbnRyb2xsZXIgd2UKKyAgICAgICAgc2hvdWxkIHVzZSBGaWxlLm5h
bWUgcmF0aGVyIHRoYW4gRmlsZS5wYXRoLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czogZXhpc3RpbmcgdGVzdHMgc2hvdWxkIHBh
c3MgYXMgdGhpcyBzaG91bGQgbm90IGNoYW5nZQorICAgICAgICBiZWhhdmlvciBpbiByZWd1bGFy
IHVzZSBjYXNlcy4gIChOZXcgYmVoYXZpb3Igd2hlcmUgRmlsZS5uYW1lIGRpZmZlcnMKKyAgICAg
ICAgZnJvbSBGaWxlLnBhdGggY2FuIGJlIG9ubHkgdGVzdGVkIGluIGNocm9tZW9zIGVudmlyb25t
ZW50LCB0aGVyZWZvcmUKKyAgICAgICAgbm90IGFkZGluZyBuZXcgdGVzdHMgZm9yIHRoYXQpCisK
KyAgICAgICAgKiBmaWxlYXBpL0ZpbGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVM
aXN0OjpuYW1lcyk6IEFkZGVkLgorICAgICAgICAqIGZpbGVhcGkvRmlsZUxpc3QuaDoKKyAgICAg
ICAgKEZpbGVMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmZpbGVMaXN0TmFtZUZvcldpZHRo
KTogQ2hhbmdlZCB0byB1c2UgRmlsZUxpc3QubmFtZXMoKSByYXRoZXIgdGhhbiBGaWxlTGlzdC5w
YXRocygpCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpmaWxlVGV4dFZhbHVl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OmZpbGVMaXN0TmFtZUZvcldpZHRoKToKKwogMjAxMi0wMy0xMCAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBTaGFkb3dUcmVlIHVz
ZXMgd2VhayBpdGVyYXRpb24gcGF0dGVybnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlTGlzdC5jcHAK
aW5kZXggODA5ZTI1MzU5ZWRiZmIzODc5ZmIwNDM1NmQzNWI5YWY2YzA2ZDg4Ni4uYTk2MDc2YjBl
ZDg1NDY1ZGM5OWI1NmQ3OTdkMTIwOGZmNzg3OWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
TGlzdC5jcHAKQEAgLTQxLDYgKzQxLDE1IEBAIEZpbGUqIEZpbGVMaXN0OjppdGVtKHVuc2lnbmVk
IGluZGV4KSBjb25zdAogICAgIHJldHVybiBtX2ZpbGVzW2luZGV4XS5nZXQoKTsKIH0KIAorVmVj
dG9yPFN0cmluZz4gRmlsZUxpc3Q6Om5hbWVzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5n
PiBuYW1lczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9maWxlcy5zaXplKCk7ICsr
aSkKKyAgICAgICAgbmFtZXMuYXBwZW5kKG1fZmlsZXNbaV0tPm5hbWUoKSk7CisKKyAgICByZXR1
cm4gbmFtZXM7Cit9CisKIFZlY3RvcjxTdHJpbmc+IEZpbGVMaXN0OjpwYXRocygpIGNvbnN0CiB7
CiAgICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVMaXN0LmgKaW5k
ZXggOTI4OTgxZjg1YmI4YjZmZThiMmRlMjY4ZTRjZWM5Y2IyZmE1ZjMwNC4uMDY0YjVkZmVhMmIx
NGJiMGYxZDlmZjgyNDA2MzM0ZDIyYTA3ZWE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUxpc3Qu
aApAQCAtNDcsNiArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZXMuaXNFbXB0eSgpOyB9CiAgICAgICAgIHZvaWQg
Y2xlYXIoKSB7IG1fZmlsZXMuY2xlYXIoKTsgfQogICAgICAgICB2b2lkIGFwcGVuZChQYXNzUmVm
UHRyPEZpbGU+IGZpbGUpIHsgbV9maWxlcy5hcHBlbmQoZmlsZSk7IH0KKyAgICAgICAgVmVjdG9y
PFN0cmluZz4gbmFtZXMoKSBjb25zdDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF0aHMoKSBj
b25zdDsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lR3RrLmNwcAppbmRleCBiYjY3ZWFmMzcwZDllZDBhZjI0YWYxNjBjZjEwOGIyY2I3
NjU4YmIxLi4wZmNlYjUyMzM2ZjVhYWIyNWMyODE0MDBmNzliOWJhYTQzNTBjZGU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTcxMSw4
ICs3MTEsNyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVHdGs6OmZpbGVMaXN0TmFtZUZvcldpZHRoKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbgogICAgICAgICBzdHJpbmcgPSBmaWxl
QnV0dG9uTm9GaWxlc1NlbGVjdGVkTGFiZWwoKTsKIAogICAgIGlmIChmaWxlbmFtZXMuc2l6ZSgp
ID09IDEpIHsKLSAgICAgICAgQ1N0cmluZyBzeXN0ZW1GaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihmaWxlbmFtZXNbMF0pOwotICAgICAgICBnY2hhciogc3lzdGVtQmFzZW5hbWUg
PSBnX3BhdGhfZ2V0X2Jhc2VuYW1lKHN5c3RlbUZpbGVuYW1lLmRhdGEoKSk7CisgICAgICAgIGdj
aGFyKiBzeXN0ZW1CYXNlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlbmFtZXNb
MF0pLmRhdGEoKTsKICAgICAgICAgc3RyaW5nQnlBZG9wdGluZ0ZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihzeXN0ZW1CYXNlbmFtZSwgc3RyaW5nKTsKICAgICB9IGVsc2UgaWYgKGZpbGVuYW1lcy5z
aXplKCkgPiAxKQogICAgICAgICByZXR1cm4gU3RyaW5nVHJ1bmNhdG9yOjpyaWdodFRydW5jYXRl
KG11bHRpcGxlRmlsZVVwbG9hZFRleHQoZmlsZW5hbWVzLnNpemUoKSksIHdpZHRoLCBmb250LCBT
dHJpbmdUcnVuY2F0b3I6OkVuYWJsZVJvdW5kaW5nSGFja3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKaW5kZXggNzRlNmY3
ZGU3ZWQ1ZDgyYTYzMGQ3NDE0NzRmMjc4MWMwYzZlNWRhYS4uMTY5OThkZGUwZjdmYjNiZDU3YTMx
NDgyMmFhMTcyMzFmOWNhYjE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgU3RyaW5n
IFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpmaWxlVGV4dFZhbHVlKCkgY29uc3QKIHsKICAgICBI
VE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihu
b2RlKCkpOwogICAgIEFTU0VSVChpbnB1dC0+ZmlsZXMoKSk7Ci0gICAgcmV0dXJuIHRoZW1lKCkt
PmZpbGVMaXN0TmFtZUZvcldpZHRoKGlucHV0LT5maWxlcygpLT5wYXRocygpLCBzdHlsZSgpLT5m
b250KCksIG1heEZpbGVuYW1lV2lkdGgoKSwgaW5wdXQtPm11bHRpcGxlKCkpOworICAgIHJldHVy
biB0aGVtZSgpLT5maWxlTGlzdE5hbWVGb3JXaWR0aChpbnB1dC0+ZmlsZXMoKS0+bmFtZXMoKSwg
c3R5bGUoKS0+Zm9udCgpLCBtYXhGaWxlbmFtZVdpZHRoKCksIGlucHV0LT5tdWx0aXBsZSgpKTsK
IH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwCmluZGV4IDhmZDJkNmM4YjFiNDg4MGY0N2FlMzljMDUyMWY2ZDEwMmE2
MGY1MzIuLjc5ODU1ZDg2MDVlZDg0NDU2OGYyNWVmZGNiYmJhMjUxODEyMWQxOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtMTE0Niw3ICsxMTQ2LDcgQEAg
U3RyaW5nIFJlbmRlclRoZW1lOjpmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZW5hbWVzLCBjb25zdAogICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0eSgpKQogICAg
ICAgICBzdHJpbmcgPSBmaWxlTGlzdERlZmF1bHRMYWJlbChtdWx0aXBsZUZpbGVzQWxsb3dlZCk7
CiAgICAgZWxzZSBpZiAoZmlsZW5hbWVzLnNpemUoKSA9PSAxKQotICAgICAgICBzdHJpbmcgPSBw
YXRoR2V0RmlsZU5hbWUoZmlsZW5hbWVzWzBdKTsKKyAgICAgICAgc3RyaW5nID0gZmlsZW5hbWVz
WzBdOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIFN0cmluZ1RydW5jYXRvcjo6cmlnaHRUcnVu
Y2F0ZShtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KGZpbGVuYW1lcy5zaXplKCkpLCB3aWR0aCwgZm9u
dCwgU3RyaW5nVHJ1bmNhdG9yOjpFbmFibGVSb3VuZGluZ0hhY2tzKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131561</attachid>
            <date>2012-03-13 00:03:33 -0700</date>
            <delta_ts>2012-03-13 00:32:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80970-20120313160332.patch</filename>
            <type>text/plain</type>
            <size>12341</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBlOTczYTRhZGE1MDZh
NmQ0Y2Y5Yzk3M2E5NGZlYTdlYjNkMDgyNC4uOTNmNDAzMzkyZmU3ZmRlOWU3ODUwYmM2NzNhNWI1
OGEwN2ZkNzUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTEyICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEZp
bGUgdXBsb2FkIGNvbnRyb2wgc2hvdWxkIHVzZSBGaWxlLm5hbWUoKSByYXRoZXIgdGhhbiBGaWxl
LnBhdGgoKSB0byBzaG93IGNob3NlbiBmaWxlbmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwOTcwCisKKyAgICAgICAgSW4gc29tZSByYXJlIGNh
c2VzIChlLmcuIGZpbGVzIGZyb20gRmlsZVN5c3RlbSBBUEkgb3IgZmlsZXMgY3JlYXRlZAorICAg
ICAgICB1c2luZyB0aGUgbmV3bHkgYWRkZWQgV2ViS2l0IEFQSSkgRmlsZS5uYW1lIGhhcyBkaWZm
ZXJlbnQgZGlzcGxheU5hbWUKKyAgICAgICAgZnJvbSB0aGUgYmFzZW5hbWUgb2YgZmlsZS5wYXRo
LCBhbmQgaW4gdGhlIGZpbGUgdXBsb2FkZXIgY29udHJvbGxlciB3ZQorICAgICAgICBzaG91bGQg
dXNlIEZpbGUubmFtZSByYXRoZXIgdGhhbiBGaWxlLnBhdGguCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiBleGlzdGluZyB0ZXN0
cyBzaG91bGQgcGFzcyBhcyB0aGlzIHNob3VsZCBub3QgY2hhbmdlCisgICAgICAgIGJlaGF2aW9y
IGluIHJlZ3VsYXIgdXNlIGNhc2VzLiAgKE5ldyBiZWhhdmlvciB3aGVyZSBGaWxlLm5hbWUgZGlm
ZmVycworICAgICAgICBmcm9tIEZpbGUucGF0aCBjYW4gYmUgb25seSB0ZXN0ZWQgaW4gY2hyb21l
b3MgZW52aXJvbm1lbnQsIHRoZXJlZm9yZQorICAgICAgICBub3QgYWRkaW5nIG5ldyB0ZXN0cyBm
b3IgdGhhdCkKKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgpOiBV
cGRhdGVkIHRvIGhhbmRsZSBGaWxlTGlzdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OmZpbGVMaXN0TmFtZUZvcldpZHRoKTogVXBk
YXRlZCB0byBoYW5kbGUgRmlsZUxpc3QuCisgICAgICAgICogcGxhdGZvcm0vcXQvUmVuZGVyVGhl
bWVRdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6ZmlsZVRleHRWYWx1
ZSk6IENoYW5nZWQgdG8gcGFzcyBGaWxlTGlzdCByYXRoZXIgdGhhbiBGaWxlTGlzdC0+cGF0aHMo
KS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OmZpbGVMaXN0TmFtZUZvcldpZHRoKTogVXBkYXRlZCB0byBoYW5kbGUg
RmlsZUxpc3QgYW5kIHVzZSBGaWxlLm5hbWUgZm9yIGRpc3BsYXlpbmcgdGhlIGZpbGUgbmFtZS4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgp
OiBVcGRhdGVkIHRvIGhhbmRsZSBGaWxlTGlzdC4KKwogMjAxMi0wMy0xMCAgTU9SSVRBIEhhamlt
ZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBTaGFkb3dUcmVlIHVzZXMgd2VhayBp
dGVyYXRpb24gcGF0dGVybnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuY3BwCmluZGV4IGJiNjdlYWYzNzBkOWVkMGFmMjRhZjE2MGNmMTA4YjJjYjc2NThi
YjEuLmUwOTI5YzM1MzhkMzQ3ZmM4NzZlYTlhYzk1NDViYTA2YjBkYjk1ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1lR3RrLmgiCiAKICNpbmNsdWRlICJDU1NWYWx1ZUtl
eXdvcmRzLmgiCisjaW5jbHVkZSAiRmlsZUxpc3QuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiR093blB0ci5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCkBAIC03MDEsNyAr
NzAyLDcgQEAgc3RhdGljIGJvb2wgc3RyaW5nQnlBZG9wdGluZ0ZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihnY2hhciogc3lzdGVtRmlsZW5hbWUsIFN0cmkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
U3RyaW5nIFJlbmRlclRoZW1lR3RrOjpmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBGb250JiBmb250LCBpbnQgd2lkdGgsIGJvb2wgbXVs
dGlwbGVGaWxlc0FsbG93ZWQpIGNvbnN0CitTdHJpbmcgUmVuZGVyVGhlbWVHdGs6OmZpbGVMaXN0
TmFtZUZvcldpZHRoKFBhc3NSZWZQdHI8RmlsZUxpc3Q+IGZpbGVMaXN0LCBjb25zdCBGb250JiBm
b250LCBpbnQgd2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93ZWQpIGNvbnN0CiB7CiAgICAg
aWYgKHdpZHRoIDw9IDApCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTcxMCwxMiArNzEx
LDExIEBAIFN0cmluZyBSZW5kZXJUaGVtZUd0azo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uCiAgICAgaWYgKG11bHRpcGxlRmlsZXNBbGxv
d2VkKQogICAgICAgICBzdHJpbmcgPSBmaWxlQnV0dG9uTm9GaWxlc1NlbGVjdGVkTGFiZWwoKTsK
IAotICAgIGlmIChmaWxlbmFtZXMuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgQ1N0cmluZyBzeXN0
ZW1GaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlbmFtZXNbMF0pOwotICAg
ICAgICBnY2hhciogc3lzdGVtQmFzZW5hbWUgPSBnX3BhdGhfZ2V0X2Jhc2VuYW1lKHN5c3RlbUZp
bGVuYW1lLmRhdGEoKSk7CisgICAgaWYgKGZpbGVMaXN0LT5sZW5ndGgoKSA9PSAxKSB7CisgICAg
ICAgIGdjaGFyKiBzeXN0ZW1CYXNlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxl
TGlzdC0+aXRlbSgwKS0+bmFtZSgpKS5kYXRhKCk7CiAgICAgICAgIHN0cmluZ0J5QWRvcHRpbmdG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3lzdGVtQmFzZW5hbWUsIHN0cmluZyk7Ci0gICAgfSBl
bHNlIGlmIChmaWxlbmFtZXMuc2l6ZSgpID4gMSkKLSAgICAgICAgcmV0dXJuIFN0cmluZ1RydW5j
YXRvcjo6cmlnaHRUcnVuY2F0ZShtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KGZpbGVuYW1lcy5zaXpl
KCkpLCB3aWR0aCwgZm9udCwgU3RyaW5nVHJ1bmNhdG9yOjpFbmFibGVSb3VuZGluZ0hhY2tzKTsK
KyAgICB9IGVsc2UgaWYgKGZpbGVMaXN0LT5sZW5ndGgoKSA+IDEpCisgICAgICAgIHJldHVybiBT
dHJpbmdUcnVuY2F0b3I6OnJpZ2h0VHJ1bmNhdGUobXVsdGlwbGVGaWxlVXBsb2FkVGV4dChmaWxl
TGlzdC0+bGVuZ3RoKCkpLCB3aWR0aCwgZm9udCwgU3RyaW5nVHJ1bmNhdG9yOjpFbmFibGVSb3Vu
ZGluZ0hhY2tzKTsKIAogICAgIHJldHVybiBTdHJpbmdUcnVuY2F0b3I6OmNlbnRlclRydW5jYXRl
KHN0cmluZywgd2lkdGgsIGZvbnQsIFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNr
cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhl
bWVHdGsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCmlu
ZGV4IGMyNmY5Yzk2NzgzYzhkZTg5MzVkNDg5Y2VmMDk3NTViMzM1NmU0MGEuLmE2NzQyYzA2OTQ3
ODgzY2JhNmIzMTRiMzgzYTdmZWI0OGYzYmVlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCkBAIC0xODEsNyArMTgxLDcgQEAgcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgYm9vbCBwYWludElubmVyU3BpbkJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBT
dHJpbmcgZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1l
cywgY29uc3QgRm9udCYsIGludCB3aWR0aCwgYm9vbCBtdWx0aXBsZUZpbGVzQWxsb3dlZCkgY29u
c3Q7CisgICAgdmlydHVhbCBTdHJpbmcgZmlsZUxpc3ROYW1lRm9yV2lkdGgoUGFzc1JlZlB0cjxG
aWxlTGlzdD4sIGNvbnN0IEZvbnQmLCBpbnQgd2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93
ZWQpIGNvbnN0OwogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXQoKTsKICAgICBzdGF0aWMgdm9pZCBz
ZXRUZXh0SW5wdXRCb3JkZXJzKFJlbmRlclN0eWxlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCmluZGV4IGQ2OWY4MDRjNmE0N2NiMDk3ZDBkNzRkYzhl
MjhlN2ZjOTQyZTVjOGQuLmQxOWE2MWJiZDUxM2YwM2U3NTZkNDJkMjU2MzVjYTdjM2I4MWE5NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCkBAIC04
NjgsMTYgKzg2OCwxNiBAQCBkb3VibGUgUmVuZGVyVGhlbWVRdDo6Y2FyZXRCbGlua0ludGVydmFs
KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UUd1aUFwcGxpY2F0aW9uKj4ocUFwcCkt
PnN0eWxlSGludHMoKS0+Y3Vyc29yRmxhc2hUaW1lKCkgLyAxMDAwLjAgLyAyLjA7CiB9CiAKLVN0
cmluZyBSZW5kZXJUaGVtZVF0OjpmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZW5hbWVzLCBjb25zdCBGb250JiBmb250LCBpbnQgd2lkdGgpIGNvbnN0CitTdHJp
bmcgUmVuZGVyVGhlbWVRdDo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgoUGFzc1JlZlB0cjxGaWxlTGlz
dD4gZmlsZUxpc3QsIGNvbnN0IEZvbnQmIGZvbnQsIGludCB3aWR0aCkgY29uc3QKIHsKICAgICBp
ZiAod2lkdGggPD0gMCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nIHN0
cmluZzsKLSAgICBpZiAoZmlsZW5hbWVzLmlzRW1wdHkoKSkKKyAgICBpZiAoZmlsZUxpc3QtPmlz
RW1wdHkoKSkKICAgICAgICAgc3RyaW5nID0gZmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFiZWwo
KTsKLSAgICBlbHNlIGlmIChmaWxlbmFtZXMuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgU3RyaW5n
IGZuYW1lID0gZmlsZW5hbWVzWzBdOworICAgIGVsc2UgaWYgKGZpbGVMaXN0LT5sZW5ndGgoKSA9
PSAxKSB7CisgICAgICAgIFN0cmluZyBmbmFtZSA9IGZpbGVMaXN0LT5pdGVtKDApLT5wYXRoKCk7
CiAgICAgICAgIFFGb250TWV0cmljcyBmbShmb250LmZvbnQoKSk7CiAgICAgICAgIHN0cmluZyA9
IGZtLmVsaWRlZFRleHQoZm5hbWUsIFF0OjpFbGlkZUxlZnQsIHdpZHRoKTsKICAgICB9IGVsc2Ug
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oCmluZGV4IDgzZTcy
OWQ4OGVkMTAxYjNhZTc0YzgwMzY2N2UzNjYyYTEwMzQ0OTcuLjMxZjViYTFmMGE1ZjhiNzExMDA4
ZmE4YzNiZTM0Y2NhYjc4MTBlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1JlbmRlclRoZW1lUXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5k
ZXJUaGVtZVF0LmgKQEAgLTE1NSw3ICsxNTUsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICB2
aXJ0dWFsIHZvaWQgY29tcHV0ZVNpemVCYXNlZE9uU3R5bGUoUmVuZGVyU3R5bGUqKSBjb25zdCA9
IDA7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBGb250JiwgaW50IHdpZHRoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBmaWxlTGlzdE5hbWVGb3JXaWR0aChQYXNzUmVmUHRyPEZpbGVMaXN0
PiwgY29uc3QgRm9udCYsIGludCB3aWR0aCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFFSZWN0IGlu
ZmxhdGVCdXR0b25SZWN0KGNvbnN0IFFSZWN0JiBvcmlnaW5hbFJlY3QpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNw
cAppbmRleCA3NGU2ZjdkZTdlZDVkODJhNjMwZDc0MTQ3NGYyNzgxYzBjNmU1ZGFhLi5hZjAyM2Ez
ZDBjZDg4OTkzZGZhODEzMDJmNDMzMWVhYWJhMDc4ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTIzNiw3ICsy
MzYsNyBAQCBTdHJpbmcgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmZpbGVUZXh0VmFsdWUoKSBj
b25zdAogewogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElu
cHV0RWxlbWVudCo+KG5vZGUoKSk7CiAgICAgQVNTRVJUKGlucHV0LT5maWxlcygpKTsKLSAgICBy
ZXR1cm4gdGhlbWUoKS0+ZmlsZUxpc3ROYW1lRm9yV2lkdGgoaW5wdXQtPmZpbGVzKCktPnBhdGhz
KCksIHN0eWxlKCktPmZvbnQoKSwgbWF4RmlsZW5hbWVXaWR0aCgpLCBpbnB1dC0+bXVsdGlwbGUo
KSk7CisgICAgcmV0dXJuIHRoZW1lKCktPmZpbGVMaXN0TmFtZUZvcldpZHRoKGlucHV0LT5maWxl
cygpLCBzdHlsZSgpLT5mb250KCksIG1heEZpbGVuYW1lV2lkdGgoKSwgaW5wdXQtPm11bHRpcGxl
KCkpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggOGZkMmQ2YzhiMWI0ODgwZjQ3YWUzOWMwNTIxZjZk
MTAyYTYwZjUzMi4uZTBjNjRjOThjZGI2Njk4Yzg1NjBjOTE5YTBkMzViOTE5YWU1ZDg3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0yNCw2ICsyNCw3IEBA
CiAKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRl
ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKQEAgLTEx
MzcsMTggKzExMzgsMTggQEAgU3RyaW5nIFJlbmRlclRoZW1lOjpmaWxlTGlzdERlZmF1bHRMYWJl
bChib29sIG11bHRpcGxlRmlsZXNBbGxvd2VkKSBjb25zdAogICAgIHJldHVybiBmaWxlQnV0dG9u
Tm9GaWxlU2VsZWN0ZWRMYWJlbCgpOwogfQogCi1TdHJpbmcgUmVuZGVyVGhlbWU6OmZpbGVMaXN0
TmFtZUZvcldpZHRoKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IEZvbnQm
IGZvbnQsIGludCB3aWR0aCwgYm9vbCBtdWx0aXBsZUZpbGVzQWxsb3dlZCkgY29uc3QKK1N0cmlu
ZyBSZW5kZXJUaGVtZTo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgoUGFzc1JlZlB0cjxGaWxlTGlzdD4g
ZmlsZUxpc3QsIGNvbnN0IEZvbnQmIGZvbnQsIGludCB3aWR0aCwgYm9vbCBtdWx0aXBsZUZpbGVz
QWxsb3dlZCkgY29uc3QKIHsKICAgICBpZiAod2lkdGggPD0gMCkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCiAgICAgU3RyaW5nIHN0cmluZzsKLSAgICBpZiAoZmlsZW5hbWVzLmlzRW1wdHko
KSkKKyAgICBpZiAoZmlsZUxpc3QtPmlzRW1wdHkoKSkKICAgICAgICAgc3RyaW5nID0gZmlsZUxp
c3REZWZhdWx0TGFiZWwobXVsdGlwbGVGaWxlc0FsbG93ZWQpOwotICAgIGVsc2UgaWYgKGZpbGVu
YW1lcy5zaXplKCkgPT0gMSkKLSAgICAgICAgc3RyaW5nID0gcGF0aEdldEZpbGVOYW1lKGZpbGVu
YW1lc1swXSk7CisgICAgZWxzZSBpZiAoZmlsZUxpc3QtPmxlbmd0aCgpID09IDEpCisgICAgICAg
IHN0cmluZyA9IGZpbGVMaXN0LT5pdGVtKDApLT5uYW1lKCk7CiAgICAgZWxzZQotICAgICAgICBy
ZXR1cm4gU3RyaW5nVHJ1bmNhdG9yOjpyaWdodFRydW5jYXRlKG11bHRpcGxlRmlsZVVwbG9hZFRl
eHQoZmlsZW5hbWVzLnNpemUoKSksIHdpZHRoLCBmb250LCBTdHJpbmdUcnVuY2F0b3I6OkVuYWJs
ZVJvdW5kaW5nSGFja3MpOworICAgICAgICByZXR1cm4gU3RyaW5nVHJ1bmNhdG9yOjpyaWdodFRy
dW5jYXRlKG11bHRpcGxlRmlsZVVwbG9hZFRleHQoZmlsZUxpc3QtPmxlbmd0aCgpKSwgd2lkdGgs
IGZvbnQsIFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7CiAKICAgICByZXR1
cm4gU3RyaW5nVHJ1bmNhdG9yOjpjZW50ZXJUcnVuY2F0ZShzdHJpbmcsIHdpZHRoLCBmb250LCBT
dHJpbmdUcnVuY2F0b3I6OkVuYWJsZVJvdW5kaW5nSGFja3MpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRleCA0NGVmMTI0MWVhNzNiNDkwYmY4ODkwZDcxODlhZTky
ZGI0OTcyYTBlLi5kN2QwZDlhZDNjMWM1MTI1ZTMwMjhiYmFlMGJlNTJhNjU0YjJmYjY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAtMzYsNiArMzYsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFbGVtZW50OworY2xhc3MgRmlsZUxpc3Q7CiBjbGFz
cyBIVE1MSW5wdXRFbGVtZW50OwogY2xhc3MgUG9wdXBNZW51OwogY2xhc3MgUmVuZGVyTWVudUxp
c3Q7CkBAIC0yMTUsNyArMjE2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBwb3BzTWVu
dUJ5U3BhY2VPclJldHVybigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFs
IFN0cmluZyBmaWxlTGlzdERlZmF1bHRMYWJlbChib29sIG11bHRpcGxlRmlsZXNBbGxvd2VkKSBj
b25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBGb250JiwgaW50IHdpZHRoLCBib29sIG11bHRp
cGxlRmlsZXNBbGxvd2VkKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBmaWxlTGlzdE5hbWVG
b3JXaWR0aChQYXNzUmVmUHRyPEZpbGVMaXN0PiwgY29uc3QgRm9udCYsIGludCB3aWR0aCwgYm9v
bCBtdWx0aXBsZUZpbGVzQWxsb3dlZCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICAvLyBUaGUg
cGxhdGZvcm0gc2VsZWN0aW9uIGNvbG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMuaAppbmRleCBmOGE1NjU3YWVjODQ2MjhlYTRkMDE0NGZjNWY3NzJhZDZiZmY1ODM2
Li4zODNmZTdkZGRlYjM0YWZjMGRlMDJkYTExMmRkMWQ4ZWNkODMxNDg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaApAQCAtMTc3LDcgKzE3Nyw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd1BsYWNlaG9sZGVyV2hlbkZvY3VzZWQo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIFN0cmluZyBmaWxlTGlzdE5hbWVGb3JX
aWR0aChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBGb250JiwgaW50IHdp
ZHRoLCBib29sIG11bHRpcGxlRmlsZXNBbGxvd2VkKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBmaWxlTGlzdE5hbWVGb3JXaWR0aChQYXNzUmVmUHRyPEZpbGVMaXN0PiwgY29uc3QgRm9udCYs
IGludCB3aWR0aCwgYm9vbCBtdWx0aXBsZUZpbGVzQWxsb3dlZCkgY29uc3Q7CiAKICAgICBMYXlv
dXRSZWN0IGluZmxhdGVSZWN0KGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBJbnRTaXplJiwgY29u
c3QgaW50KiBtYXJnaW5zLCBmbG9hdCB6b29tTGV2ZWwgPSAxLjBmKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDBhZTAxOTZiYzBlOTI1
ZThjOGM0Y2IyNjZiNDc4ZGMxNzdhNzU0MWQuLjRkZGNlMmQ0MTBlZWEwOTg3NDUwY2M2MTNhNjY0
ZjM3MjdiNDk5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0KQEAgLTIxNDcsMTggKzIxNDcsMTggQEAgTlNUZXh0RmllbGRDZWxsKiBSZW5kZXJUaGVtZU1h
Yzo6dGV4dEZpZWxkKCkgY29uc3QKICAgICByZXR1cm4gbV90ZXh0RmllbGQuZ2V0KCk7CiB9CiAK
LVN0cmluZyBSZW5kZXJUaGVtZU1hYzo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgRm9udCYgZm9udCwgaW50IHdpZHRoLCBib29sIG11
bHRpcGxlRmlsZXNBbGxvd2VkKSBjb25zdAorU3RyaW5nIFJlbmRlclRoZW1lTWFjOjpmaWxlTGlz
dE5hbWVGb3JXaWR0aChQYXNzUmVmUHRyPEZpbGVMaXN0PiBmaWxlTGlzdCwgY29uc3QgRm9udCYg
Zm9udCwgaW50IHdpZHRoLCBib29sIG11bHRpcGxlRmlsZXNBbGxvd2VkKSBjb25zdAogewogICAg
IGlmICh3aWR0aCA8PSAwKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmcg
c3RyVG9UcnVuY2F0ZTsKLSAgICBpZiAoZmlsZW5hbWVzLmlzRW1wdHkoKSkKKyAgICBpZiAoZmls
ZUxpc3QtPmlzRW1wdHkoKSkKICAgICAgICAgc3RyVG9UcnVuY2F0ZSA9IGZpbGVMaXN0RGVmYXVs
dExhYmVsKG11bHRpcGxlRmlsZXNBbGxvd2VkKTsKLSAgICBlbHNlIGlmIChmaWxlbmFtZXMuc2l6
ZSgpID09IDEpCi0gICAgICAgIHN0clRvVHJ1bmNhdGUgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGRpc3BsYXlOYW1lQXRQYXRoOihmaWxlbmFtZXNbMF0pXTsKKyAgICBlbHNlIGlm
IChmaWxlTGlzdC0+bGVuZ3RoKCkgPT0gMSkKKyAgICAgICAgc3RyVG9UcnVuY2F0ZSA9IFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZGlzcGxheU5hbWVBdFBhdGg6KGZpbGVMaXN0LT5p
dGVtKDApLT5wYXRoKCkpXTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBTdHJpbmdUcnVuY2F0
b3I6OnJpZ2h0VHJ1bmNhdGUobXVsdGlwbGVGaWxlVXBsb2FkVGV4dChmaWxlbmFtZXMuc2l6ZSgp
KSwgd2lkdGgsIGZvbnQsIFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7Cisg
ICAgICAgIHJldHVybiBTdHJpbmdUcnVuY2F0b3I6OnJpZ2h0VHJ1bmNhdGUobXVsdGlwbGVGaWxl
VXBsb2FkVGV4dChmaWxlTGlzdC0+bGVuZ3RoKCkpLCB3aWR0aCwgZm9udCwgU3RyaW5nVHJ1bmNh
dG9yOjpFbmFibGVSb3VuZGluZ0hhY2tzKTsKIAogICAgIHJldHVybiBTdHJpbmdUcnVuY2F0b3I6
OmNlbnRlclRydW5jYXRlKHN0clRvVHJ1bmNhdGUsIHdpZHRoLCBmb250LCBTdHJpbmdUcnVuY2F0
b3I6OkVuYWJsZVJvdW5kaW5nSGFja3MpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131564</attachid>
            <date>2012-03-13 00:29:30 -0700</date>
            <delta_ts>2012-03-13 06:39:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80970-20120313162925.patch</filename>
            <type>text/plain</type>
            <size>12253</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBlOTczYTRhZGE1MDZh
NmQ0Y2Y5Yzk3M2E5NGZlYTdlYjNkMDgyNC4uOTNmNDAzMzkyZmU3ZmRlOWU3ODUwYmM2NzNhNWI1
OGEwN2ZkNzUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTEyICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEZp
bGUgdXBsb2FkIGNvbnRyb2wgc2hvdWxkIHVzZSBGaWxlLm5hbWUoKSByYXRoZXIgdGhhbiBGaWxl
LnBhdGgoKSB0byBzaG93IGNob3NlbiBmaWxlbmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwOTcwCisKKyAgICAgICAgSW4gc29tZSByYXJlIGNh
c2VzIChlLmcuIGZpbGVzIGZyb20gRmlsZVN5c3RlbSBBUEkgb3IgZmlsZXMgY3JlYXRlZAorICAg
ICAgICB1c2luZyB0aGUgbmV3bHkgYWRkZWQgV2ViS2l0IEFQSSkgRmlsZS5uYW1lIGhhcyBkaWZm
ZXJlbnQgZGlzcGxheU5hbWUKKyAgICAgICAgZnJvbSB0aGUgYmFzZW5hbWUgb2YgZmlsZS5wYXRo
LCBhbmQgaW4gdGhlIGZpbGUgdXBsb2FkZXIgY29udHJvbGxlciB3ZQorICAgICAgICBzaG91bGQg
dXNlIEZpbGUubmFtZSByYXRoZXIgdGhhbiBGaWxlLnBhdGguCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiBleGlzdGluZyB0ZXN0
cyBzaG91bGQgcGFzcyBhcyB0aGlzIHNob3VsZCBub3QgY2hhbmdlCisgICAgICAgIGJlaGF2aW9y
IGluIHJlZ3VsYXIgdXNlIGNhc2VzLiAgKE5ldyBiZWhhdmlvciB3aGVyZSBGaWxlLm5hbWUgZGlm
ZmVycworICAgICAgICBmcm9tIEZpbGUucGF0aCBjYW4gYmUgb25seSB0ZXN0ZWQgaW4gY2hyb21l
b3MgZW52aXJvbm1lbnQsIHRoZXJlZm9yZQorICAgICAgICBub3QgYWRkaW5nIG5ldyB0ZXN0cyBm
b3IgdGhhdCkKKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgpOiBV
cGRhdGVkIHRvIGhhbmRsZSBGaWxlTGlzdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OmZpbGVMaXN0TmFtZUZvcldpZHRoKTogVXBk
YXRlZCB0byBoYW5kbGUgRmlsZUxpc3QuCisgICAgICAgICogcGxhdGZvcm0vcXQvUmVuZGVyVGhl
bWVRdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6ZmlsZVRleHRWYWx1
ZSk6IENoYW5nZWQgdG8gcGFzcyBGaWxlTGlzdCByYXRoZXIgdGhhbiBGaWxlTGlzdC0+cGF0aHMo
KS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OmZpbGVMaXN0TmFtZUZvcldpZHRoKTogVXBkYXRlZCB0byBoYW5kbGUg
RmlsZUxpc3QgYW5kIHVzZSBGaWxlLm5hbWUgZm9yIGRpc3BsYXlpbmcgdGhlIGZpbGUgbmFtZS4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgp
OiBVcGRhdGVkIHRvIGhhbmRsZSBGaWxlTGlzdC4KKwogMjAxMi0wMy0xMCAgTU9SSVRBIEhhamlt
ZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBTaGFkb3dUcmVlIHVzZXMgd2VhayBp
dGVyYXRpb24gcGF0dGVybnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuY3BwCmluZGV4IGJiNjdlYWYzNzBkOWVkMGFmMjRhZjE2MGNmMTA4YjJjYjc2NThi
YjEuLmUzOTUwMTRmYWM5NmQ0ZjUyMDhkNjk1YzliM2EyYTIxNjY4MGY4ZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1lR3RrLmgiCiAKICNpbmNsdWRlICJDU1NWYWx1ZUtl
eXdvcmRzLmgiCisjaW5jbHVkZSAiRmlsZUxpc3QuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiR093blB0ci5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCkBAIC03MDEsNyAr
NzAyLDcgQEAgc3RhdGljIGJvb2wgc3RyaW5nQnlBZG9wdGluZ0ZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihnY2hhciogc3lzdGVtRmlsZW5hbWUsIFN0cmkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
U3RyaW5nIFJlbmRlclRoZW1lR3RrOjpmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBGb250JiBmb250LCBpbnQgd2lkdGgsIGJvb2wgbXVs
dGlwbGVGaWxlc0FsbG93ZWQpIGNvbnN0CitTdHJpbmcgUmVuZGVyVGhlbWVHdGs6OmZpbGVMaXN0
TmFtZUZvcldpZHRoKEZpbGVMaXN0KiBmaWxlTGlzdCwgY29uc3QgRm9udCYgZm9udCwgaW50IHdp
ZHRoLCBib29sIG11bHRpcGxlRmlsZXNBbGxvd2VkKSBjb25zdAogewogICAgIGlmICh3aWR0aCA8
PSAwKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC03MTAsMTIgKzcxMSwxMSBAQCBTdHJp
bmcgUmVuZGVyVGhlbWVHdGs6OmZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBmaWxlbmFtZXMsIGNvbgogICAgIGlmIChtdWx0aXBsZUZpbGVzQWxsb3dlZCkKICAgICAg
ICAgc3RyaW5nID0gZmlsZUJ1dHRvbk5vRmlsZXNTZWxlY3RlZExhYmVsKCk7CiAKLSAgICBpZiAo
ZmlsZW5hbWVzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgIENTdHJpbmcgc3lzdGVtRmlsZW5hbWUg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWVzWzBdKTsKLSAgICAgICAgZ2NoYXIq
IHN5c3RlbUJhc2VuYW1lID0gZ19wYXRoX2dldF9iYXNlbmFtZShzeXN0ZW1GaWxlbmFtZS5kYXRh
KCkpOworICAgIGlmIChmaWxlTGlzdC0+bGVuZ3RoKCkgPT0gMSkgeworICAgICAgICBnY2hhciog
c3lzdGVtQmFzZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZUxpc3QtPml0ZW0o
MCktPm5hbWUoKSkuZGF0YSgpOwogICAgICAgICBzdHJpbmdCeUFkb3B0aW5nRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHN5c3RlbUJhc2VuYW1lLCBzdHJpbmcpOwotICAgIH0gZWxzZSBpZiAoZmls
ZW5hbWVzLnNpemUoKSA+IDEpCi0gICAgICAgIHJldHVybiBTdHJpbmdUcnVuY2F0b3I6OnJpZ2h0
VHJ1bmNhdGUobXVsdGlwbGVGaWxlVXBsb2FkVGV4dChmaWxlbmFtZXMuc2l6ZSgpKSwgd2lkdGgs
IGZvbnQsIFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7CisgICAgfSBlbHNl
IGlmIChmaWxlTGlzdC0+bGVuZ3RoKCkgPiAxKQorICAgICAgICByZXR1cm4gU3RyaW5nVHJ1bmNh
dG9yOjpyaWdodFRydW5jYXRlKG11bHRpcGxlRmlsZVVwbG9hZFRleHQoZmlsZUxpc3QtPmxlbmd0
aCgpKSwgd2lkdGgsIGZvbnQsIFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7
CiAKICAgICByZXR1cm4gU3RyaW5nVHJ1bmNhdG9yOjpjZW50ZXJUcnVuY2F0ZShzdHJpbmcsIHdp
ZHRoLCBmb250LCBTdHJpbmdUcnVuY2F0b3I6OkVuYWJsZVJvdW5kaW5nSGFja3MpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaAppbmRleCBjMjZmOWM5
Njc4M2M4ZGU4OTM1ZDQ4OWNlZjA5NzU1YjMzNTZlNDBhLi4xNDVmZmRjYjNmZTVmNDgzOWRiYzlj
Nzc3N2FiNzM5MDBkNDM1OGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHdGsuaApAQCAtMTgxLDcgKzE4MSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRJbm5lclNwaW5CdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVM
aXN0TmFtZUZvcldpZHRoKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IEZv
bnQmLCBpbnQgd2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93ZWQpIGNvbnN0OworICAgIHZp
cnR1YWwgU3RyaW5nIGZpbGVMaXN0TmFtZUZvcldpZHRoKEZpbGVMaXN0KiwgY29uc3QgRm9udCYs
IGludCB3aWR0aCwgYm9vbCBtdWx0aXBsZUZpbGVzQWxsb3dlZCkgY29uc3Q7CiAKICAgICB2b2lk
IHBsYXRmb3JtSW5pdCgpOwogICAgIHN0YXRpYyB2b2lkIHNldFRleHRJbnB1dEJvcmRlcnMoUmVu
ZGVyU3R5bGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRl
clRoZW1lUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5j
cHAKaW5kZXggZDY5ZjgwNGM2YTQ3Y2IwOTdkMGQ3NGRjOGUyOGU3ZmM5NDJlNWM4ZC4uN2M5MDNl
ZDkxMjZlOWMxZmZlZGNhZTExMjlmODYxYWViMWRjYWExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKQEAgLTg2OCwxNiArODY4LDE2IEBAIGRvdWJs
ZSBSZW5kZXJUaGVtZVF0OjpjYXJldEJsaW5rSW50ZXJ2YWwoKSBjb25zdAogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxRR3VpQXBwbGljYXRpb24qPihxQXBwKS0+c3R5bGVIaW50cygpLT5jdXJzb3JG
bGFzaFRpbWUoKSAvIDEwMDAuMCAvIDIuMDsKIH0KIAotU3RyaW5nIFJlbmRlclRoZW1lUXQ6OmZp
bGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0
IEZvbnQmIGZvbnQsIGludCB3aWR0aCkgY29uc3QKK1N0cmluZyBSZW5kZXJUaGVtZVF0OjpmaWxl
TGlzdE5hbWVGb3JXaWR0aChGaWxlTGlzdCogZmlsZUxpc3QsIGNvbnN0IEZvbnQmIGZvbnQsIGlu
dCB3aWR0aCkgY29uc3QKIHsKICAgICBpZiAod2lkdGggPD0gMCkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCiAgICAgU3RyaW5nIHN0cmluZzsKLSAgICBpZiAoZmlsZW5hbWVzLmlzRW1wdHko
KSkKKyAgICBpZiAoZmlsZUxpc3QtPmlzRW1wdHkoKSkKICAgICAgICAgc3RyaW5nID0gZmlsZUJ1
dHRvbk5vRmlsZVNlbGVjdGVkTGFiZWwoKTsKLSAgICBlbHNlIGlmIChmaWxlbmFtZXMuc2l6ZSgp
ID09IDEpIHsKLSAgICAgICAgU3RyaW5nIGZuYW1lID0gZmlsZW5hbWVzWzBdOworICAgIGVsc2Ug
aWYgKGZpbGVMaXN0LT5sZW5ndGgoKSA9PSAxKSB7CisgICAgICAgIFN0cmluZyBmbmFtZSA9IGZp
bGVMaXN0LT5pdGVtKDApLT5wYXRoKCk7CiAgICAgICAgIFFGb250TWV0cmljcyBmbShmb250LmZv
bnQoKSk7CiAgICAgICAgIHN0cmluZyA9IGZtLmVsaWRlZFRleHQoZm5hbWUsIFF0OjpFbGlkZUxl
ZnQsIHdpZHRoKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVu
ZGVyVGhlbWVRdC5oCmluZGV4IDgzZTcyOWQ4OGVkMTAxYjNhZTc0YzgwMzY2N2UzNjYyYTEwMzQ0
OTcuLjQwZTlhYjc0ZWYyNDkxYTQyMTQ0NTI3ZWY1NjkyYjQ3N2FhODU0NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmgKQEAgLTE1NSw3ICsxNTUsNyBAQCBw
cm90ZWN0ZWQ6CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVNpemVCYXNlZE9uU3R5
bGUoUmVuZGVyU3R5bGUqKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBmaWxlTGlz
dE5hbWVGb3JXaWR0aChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBGb250
JiwgaW50IHdpZHRoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBmaWxlTGlzdE5hbWVGb3JX
aWR0aChGaWxlTGlzdCosIGNvbnN0IEZvbnQmLCBpbnQgd2lkdGgpIGNvbnN0OwogCiAgICAgdmly
dHVhbCBRUmVjdCBpbmZsYXRlQnV0dG9uUmVjdChjb25zdCBRUmVjdCYgb3JpZ2luYWxSZWN0KSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVV
cGxvYWRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBs
b2FkQ29udHJvbC5jcHAKaW5kZXggNzRlNmY3ZGU3ZWQ1ZDgyYTYzMGQ3NDE0NzRmMjc4MWMwYzZl
NWRhYS4uYWYwMjNhM2QwY2Q4ODk5M2RmYTgxMzAyZjQzMzFlYWFiYTA3ODg3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3Bw
CkBAIC0yMzYsNyArMjM2LDcgQEAgU3RyaW5nIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpmaWxl
VGV4dFZhbHVlKCkgY29uc3QKIHsKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRp
Y19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKCkpOwogICAgIEFTU0VSVChpbnB1dC0+Zmls
ZXMoKSk7Ci0gICAgcmV0dXJuIHRoZW1lKCktPmZpbGVMaXN0TmFtZUZvcldpZHRoKGlucHV0LT5m
aWxlcygpLT5wYXRocygpLCBzdHlsZSgpLT5mb250KCksIG1heEZpbGVuYW1lV2lkdGgoKSwgaW5w
dXQtPm11bHRpcGxlKCkpOworICAgIHJldHVybiB0aGVtZSgpLT5maWxlTGlzdE5hbWVGb3JXaWR0
aChpbnB1dC0+ZmlsZXMoKSwgc3R5bGUoKS0+Zm9udCgpLCBtYXhGaWxlbmFtZVdpZHRoKCksIGlu
cHV0LT5tdWx0aXBsZSgpKTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDhmZDJkNmM4YjFiNDg4MGY0
N2FlMzljMDUyMWY2ZDEwMmE2MGY1MzIuLmQ3NTQ2NTI5OGQxN2I3YjZkYzg3MjNiZDFmMGE1MWM1
ZDRiZmI3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAt
MjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRmlsZUxpc3QuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9s
bGVyLmgiCkBAIC0xMTM3LDE4ICsxMTM4LDE4IEBAIFN0cmluZyBSZW5kZXJUaGVtZTo6ZmlsZUxp
c3REZWZhdWx0TGFiZWwoYm9vbCBtdWx0aXBsZUZpbGVzQWxsb3dlZCkgY29uc3QKICAgICByZXR1
cm4gZmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFiZWwoKTsKIH0KIAotU3RyaW5nIFJlbmRlclRo
ZW1lOjpmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVz
LCBjb25zdCBGb250JiBmb250LCBpbnQgd2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93ZWQp
IGNvbnN0CitTdHJpbmcgUmVuZGVyVGhlbWU6OmZpbGVMaXN0TmFtZUZvcldpZHRoKEZpbGVMaXN0
KiBmaWxlTGlzdCwgY29uc3QgRm9udCYgZm9udCwgaW50IHdpZHRoLCBib29sIG11bHRpcGxlRmls
ZXNBbGxvd2VkKSBjb25zdAogewogICAgIGlmICh3aWR0aCA8PSAwKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKICAgICBTdHJpbmcgc3RyaW5nOwotICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0
eSgpKQorICAgIGlmIChmaWxlTGlzdC0+aXNFbXB0eSgpKQogICAgICAgICBzdHJpbmcgPSBmaWxl
TGlzdERlZmF1bHRMYWJlbChtdWx0aXBsZUZpbGVzQWxsb3dlZCk7Ci0gICAgZWxzZSBpZiAoZmls
ZW5hbWVzLnNpemUoKSA9PSAxKQotICAgICAgICBzdHJpbmcgPSBwYXRoR2V0RmlsZU5hbWUoZmls
ZW5hbWVzWzBdKTsKKyAgICBlbHNlIGlmIChmaWxlTGlzdC0+bGVuZ3RoKCkgPT0gMSkKKyAgICAg
ICAgc3RyaW5nID0gZmlsZUxpc3QtPml0ZW0oMCktPm5hbWUoKTsKICAgICBlbHNlCi0gICAgICAg
IHJldHVybiBTdHJpbmdUcnVuY2F0b3I6OnJpZ2h0VHJ1bmNhdGUobXVsdGlwbGVGaWxlVXBsb2Fk
VGV4dChmaWxlbmFtZXMuc2l6ZSgpKSwgd2lkdGgsIGZvbnQsIFN0cmluZ1RydW5jYXRvcjo6RW5h
YmxlUm91bmRpbmdIYWNrcyk7CisgICAgICAgIHJldHVybiBTdHJpbmdUcnVuY2F0b3I6OnJpZ2h0
VHJ1bmNhdGUobXVsdGlwbGVGaWxlVXBsb2FkVGV4dChmaWxlTGlzdC0+bGVuZ3RoKCkpLCB3aWR0
aCwgZm9udCwgU3RyaW5nVHJ1bmNhdG9yOjpFbmFibGVSb3VuZGluZ0hhY2tzKTsKIAogICAgIHJl
dHVybiBTdHJpbmdUcnVuY2F0b3I6OmNlbnRlclRydW5jYXRlKHN0cmluZywgd2lkdGgsIGZvbnQs
IFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IDQ0ZWYxMjQxZWE3M2I0OTBiZjg4OTBkNzE4OWFl
OTJkYjQ5NzJhMGUuLjFkNGJiODIyMjZjZWM0MDVhODk3Y2VlZTkzOGVhNWU5MWM2MjlhZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBAIC0zNiw2ICszNiw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnQ7CitjbGFzcyBGaWxlTGlzdDsKIGNs
YXNzIEhUTUxJbnB1dEVsZW1lbnQ7CiBjbGFzcyBQb3B1cE1lbnU7CiBjbGFzcyBSZW5kZXJNZW51
TGlzdDsKQEAgLTIxNSw3ICsyMTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHBvcHNN
ZW51QnlTcGFjZU9yUmV0dXJuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1
YWwgU3RyaW5nIGZpbGVMaXN0RGVmYXVsdExhYmVsKGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93ZWQp
IGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IEZvbnQmLCBpbnQgd2lkdGgsIGJvb2wgbXVs
dGlwbGVGaWxlc0FsbG93ZWQpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVMaXN0TmFt
ZUZvcldpZHRoKEZpbGVMaXN0KiwgY29uc3QgRm9udCYsIGludCB3aWR0aCwgYm9vbCBtdWx0aXBs
ZUZpbGVzQWxsb3dlZCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICAvLyBUaGUgcGxhdGZvcm0g
c2VsZWN0aW9uIGNvbG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
aAppbmRleCBmOGE1NjU3YWVjODQ2MjhlYTRkMDE0NGZjNWY3NzJhZDZiZmY1ODM2Li5hNDQxZjcx
NmZmNDRlZTRmZGZlYTY4YWUzZGUyNjc3YjlhZTgxYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMuaApAQCAtMTc3LDcgKzE3Nyw3IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd1BsYWNlaG9sZGVyV2hlbkZvY3VzZWQoKSBjb25zdDsK
IAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIFN0cmluZyBmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBGb250JiwgaW50IHdpZHRoLCBib29s
IG11bHRpcGxlRmlsZXNBbGxvd2VkKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBmaWxlTGlz
dE5hbWVGb3JXaWR0aChGaWxlTGlzdCosIGNvbnN0IEZvbnQmLCBpbnQgd2lkdGgsIGJvb2wgbXVs
dGlwbGVGaWxlc0FsbG93ZWQpIGNvbnN0OwogCiAgICAgTGF5b3V0UmVjdCBpbmZsYXRlUmVjdChj
b25zdCBMYXlvdXRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IGludCogbWFyZ2lucywgZmxv
YXQgem9vbUxldmVsID0gMS4wZikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbQppbmRleCAwYWUwMTk2YmMwZTkyNWU4YzhjNGNiMjY2YjQ3OGRjMTc3
YTc1NDFkLi40MjAwY2U0Yjk3ZTU0OWNmMDU0ZDVhMmU1OTVkOGI0YWJmYWYyNmE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0yMTQ3LDE4ICsyMTQ3
LDE4IEBAIE5TVGV4dEZpZWxkQ2VsbCogUmVuZGVyVGhlbWVNYWM6OnRleHRGaWVsZCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fdGV4dEZpZWxkLmdldCgpOwogfQogCi1TdHJpbmcgUmVuZGVyVGhlbWVN
YWM6OmZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMs
IGNvbnN0IEZvbnQmIGZvbnQsIGludCB3aWR0aCwgYm9vbCBtdWx0aXBsZUZpbGVzQWxsb3dlZCkg
Y29uc3QKK1N0cmluZyBSZW5kZXJUaGVtZU1hYzo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgoRmlsZUxp
c3QqIGZpbGVMaXN0LCBjb25zdCBGb250JiBmb250LCBpbnQgd2lkdGgsIGJvb2wgbXVsdGlwbGVG
aWxlc0FsbG93ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHdpZHRoIDw9IDApCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAogICAgIFN0cmluZyBzdHJUb1RydW5jYXRlOwotICAgIGlmIChmaWxlbmFt
ZXMuaXNFbXB0eSgpKQorICAgIGlmIChmaWxlTGlzdC0+aXNFbXB0eSgpKQogICAgICAgICBzdHJU
b1RydW5jYXRlID0gZmlsZUxpc3REZWZhdWx0TGFiZWwobXVsdGlwbGVGaWxlc0FsbG93ZWQpOwot
ICAgIGVsc2UgaWYgKGZpbGVuYW1lcy5zaXplKCkgPT0gMSkKLSAgICAgICAgc3RyVG9UcnVuY2F0
ZSA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZGlzcGxheU5hbWVBdFBhdGg6KGZp
bGVuYW1lc1swXSldOworICAgIGVsc2UgaWYgKGZpbGVMaXN0LT5sZW5ndGgoKSA9PSAxKQorICAg
ICAgICBzdHJUb1RydW5jYXRlID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBkaXNw
bGF5TmFtZUF0UGF0aDooZmlsZUxpc3QtPml0ZW0oMCktPnBhdGgoKSldOwogICAgIGVsc2UKLSAg
ICAgICAgcmV0dXJuIFN0cmluZ1RydW5jYXRvcjo6cmlnaHRUcnVuY2F0ZShtdWx0aXBsZUZpbGVV
cGxvYWRUZXh0KGZpbGVuYW1lcy5zaXplKCkpLCB3aWR0aCwgZm9udCwgU3RyaW5nVHJ1bmNhdG9y
OjpFbmFibGVSb3VuZGluZ0hhY2tzKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZ1RydW5jYXRvcjo6
cmlnaHRUcnVuY2F0ZShtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KGZpbGVMaXN0LT5sZW5ndGgoKSks
IHdpZHRoLCBmb250LCBTdHJpbmdUcnVuY2F0b3I6OkVuYWJsZVJvdW5kaW5nSGFja3MpOwogCiAg
ICAgcmV0dXJuIFN0cmluZ1RydW5jYXRvcjo6Y2VudGVyVHJ1bmNhdGUoc3RyVG9UcnVuY2F0ZSwg
d2lkdGgsIGZvbnQsIFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7CiB9Cg==
</data>
<flag name="review"
          id="134920"
          type_id="1"
          status="+"
          setter="tkent"
    />
    <flag name="commit-queue"
          id="134939"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131569</attachid>
            <date>2012-03-13 00:58:02 -0700</date>
            <delta_ts>2012-03-13 03:50:38 -0700</delta_ts>
            <desc>Addressed comments; for EWS</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>11779</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">Y29tbWl0IDk3YmIwMzYyNWNiYmM4OWNjNWMyNDA0ZjIyYzFkNjEwN2IxODg5NjUKQXV0aG9yOiBL
aW51a28gWWFzdWRhIDxraW51a29AY2hyb21pdW0ub3JnPgpEYXRlOiAgIFR1ZSBNYXIgMTMgMTI6
NTM6MDUgMjAxMiArMDkwMAoKICAgIHNob3dpbmcgbmFtZQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMGU5NzNh
Li41MzEwMTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMDMtMTIgIEtpbnVr
byBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZpbGUgdXBsb2FkIGNv
bnRyb2wgc2hvdWxkIHVzZSBGaWxlLm5hbWUoKSByYXRoZXIgdGhhbiBGaWxlLnBhdGgoKSB0byBz
aG93IGNob3NlbiBmaWxlbmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgwOTcwCisKKyAgICAgICAgSW4gc29tZSByYXJlIGNhc2VzIChlLmcuIGZp
bGVzIGZyb20gRmlsZVN5c3RlbSBBUEkgb3IgZmlsZXMgY3JlYXRlZAorICAgICAgICB1c2luZyB0
aGUgbmV3bHkgYWRkZWQgV2ViS2l0IEFQSSkgRmlsZS5uYW1lIGhhcyBkaWZmZXJlbnQgZGlzcGxh
eU5hbWUKKyAgICAgICAgZnJvbSB0aGUgYmFzZW5hbWUgb2YgZmlsZS5wYXRoLCBhbmQgaW4gdGhl
IGZpbGUgdXBsb2FkZXIgY29udHJvbGxlciB3ZQorICAgICAgICBzaG91bGQgdXNlIEZpbGUubmFt
ZSByYXRoZXIgdGhhbiBGaWxlLnBhdGguCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiBleGlzdGluZyB0ZXN0cyBzaG91bGQgcGFz
cyBhcyB0aGlzIHNob3VsZCBub3QgY2hhbmdlCisgICAgICAgIGJlaGF2aW9yIGluIHJlZ3VsYXIg
dXNlIGNhc2VzLiAgKE5ldyBiZWhhdmlvciB3aGVyZSBGaWxlLm5hbWUgZGlmZmVycworICAgICAg
ICBmcm9tIEZpbGUucGF0aCBjYW4gYmUgb25seSB0ZXN0ZWQgaW4gY2hyb21lb3MgZW52aXJvbm1l
bnQsIHRoZXJlZm9yZQorICAgICAgICBub3QgYWRkaW5nIG5ldyB0ZXN0cyBmb3IgdGhhdCkKKwor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUd0azo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgpOiBVcGRhdGVkIHRvIGhh
bmRsZSBGaWxlTGlzdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lUXQ6OmZpbGVMaXN0TmFtZUZvcldpZHRoKTogVXBkYXRlZCB0byBoYW5k
bGUgRmlsZUxpc3QuCisgICAgICAgICogcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6ZmlsZVRleHRWYWx1ZSk6IENoYW5nZWQg
dG8gcGFzcyBGaWxlTGlzdCByYXRoZXIgdGhhbiBGaWxlTGlzdC0+cGF0aHMoKS4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWU6OmZpbGVMaXN0TmFtZUZvcldpZHRoKTogVXBkYXRlZCB0byBoYW5kbGUgRmlsZUxpc3QgYW5k
IHVzZSBGaWxlLm5hbWUgZm9yIGRpc3BsYXlpbmcgdGhlIGZpbGUgbmFtZS4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgpOiBVcGRhdGVkIHRv
IGhhbmRsZSBGaWxlTGlzdC4KKwogMjAxMi0wMy0xMCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBTaGFkb3dUcmVlIHVzZXMgd2VhayBpdGVyYXRpb24gcGF0
dGVybnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
CmluZGV4IGJiNjdlYWYuLmIxNDZhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIlJlbmRl
clRoZW1lR3RrLmgiCiAKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAi
RmlsZUxpc3QuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiR093blB0ci5o
IgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCkBAIC03MDEsNyArNzAyLDcgQEAgc3RhdGljIGJvb2wg
c3RyaW5nQnlBZG9wdGluZ0ZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnY2hhciogc3lzdGVtRmls
ZW5hbWUsIFN0cmkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFJlbmRlclRoZW1lR3Rr
OjpmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBj
b25zdCBGb250JiBmb250LCBpbnQgd2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93ZWQpIGNv
bnN0CitTdHJpbmcgUmVuZGVyVGhlbWVHdGs6OmZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IEZp
bGVMaXN0KiBmaWxlTGlzdCwgY29uc3QgRm9udCYgZm9udCwgaW50IHdpZHRoLCBib29sIG11bHRp
cGxlRmlsZXNBbGxvd2VkKSBjb25zdAogewogICAgIGlmICh3aWR0aCA8PSAwKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CkBAIC03MTAsMTIgKzcxMSwxMSBAQCBTdHJpbmcgUmVuZGVyVGhlbWVH
dGs6OmZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMs
IGNvbgogICAgIGlmIChtdWx0aXBsZUZpbGVzQWxsb3dlZCkKICAgICAgICAgc3RyaW5nID0gZmls
ZUJ1dHRvbk5vRmlsZXNTZWxlY3RlZExhYmVsKCk7CiAKLSAgICBpZiAoZmlsZW5hbWVzLnNpemUo
KSA9PSAxKSB7Ci0gICAgICAgIENTdHJpbmcgc3lzdGVtRmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZmlsZW5hbWVzWzBdKTsKLSAgICAgICAgZ2NoYXIqIHN5c3RlbUJhc2VuYW1l
ID0gZ19wYXRoX2dldF9iYXNlbmFtZShzeXN0ZW1GaWxlbmFtZS5kYXRhKCkpOworICAgIGlmIChm
aWxlTGlzdC0+bGVuZ3RoKCkgPT0gMSkgeworICAgICAgICBnY2hhciogc3lzdGVtQmFzZW5hbWUg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZUxpc3QtPml0ZW0oMCktPm5hbWUoKSkuZGF0
YSgpOwogICAgICAgICBzdHJpbmdCeUFkb3B0aW5nRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN5
c3RlbUJhc2VuYW1lLCBzdHJpbmcpOwotICAgIH0gZWxzZSBpZiAoZmlsZW5hbWVzLnNpemUoKSA+
IDEpCi0gICAgICAgIHJldHVybiBTdHJpbmdUcnVuY2F0b3I6OnJpZ2h0VHJ1bmNhdGUobXVsdGlw
bGVGaWxlVXBsb2FkVGV4dChmaWxlbmFtZXMuc2l6ZSgpKSwgd2lkdGgsIGZvbnQsIFN0cmluZ1Ry
dW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7CisgICAgfSBlbHNlIGlmIChmaWxlTGlzdC0+
bGVuZ3RoKCkgPiAxKQorICAgICAgICByZXR1cm4gU3RyaW5nVHJ1bmNhdG9yOjpyaWdodFRydW5j
YXRlKG11bHRpcGxlRmlsZVVwbG9hZFRleHQoZmlsZUxpc3QtPmxlbmd0aCgpKSwgd2lkdGgsIGZv
bnQsIFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7CiAKICAgICByZXR1cm4g
U3RyaW5nVHJ1bmNhdG9yOjpjZW50ZXJUcnVuY2F0ZShzdHJpbmcsIHdpZHRoLCBmb250LCBTdHJp
bmdUcnVuY2F0b3I6OkVuYWJsZVJvdW5kaW5nSGFja3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaAppbmRleCBjMjZmOWM5Li42OGI3MWE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaApAQCAtMTgxLDcg
KzE4MSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRJbm5lclNwaW5CdXR0
b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IEZvbnQmLCBpbnQgd2lkdGgsIGJvb2wgbXVs
dGlwbGVGaWxlc0FsbG93ZWQpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVMaXN0TmFt
ZUZvcldpZHRoKGNvbnN0IEZpbGVMaXN0KiwgY29uc3QgRm9udCYsIGludCB3aWR0aCwgYm9vbCBt
dWx0aXBsZUZpbGVzQWxsb3dlZCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdCgpOwogICAgIHN0YXRpYyB2b2lkIHNldFRleHRJbnB1dEJvcmRlcnMoUmVuZGVyU3R5bGUq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKaW5kZXgg
ZDY5ZjgwNC4uZTEyMDMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQv
UmVuZGVyVGhlbWVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVy
VGhlbWVRdC5jcHAKQEAgLTg2OCwxNiArODY4LDE2IEBAIGRvdWJsZSBSZW5kZXJUaGVtZVF0Ojpj
YXJldEJsaW5rSW50ZXJ2YWwoKSBjb25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxRR3VpQXBw
bGljYXRpb24qPihxQXBwKS0+c3R5bGVIaW50cygpLT5jdXJzb3JGbGFzaFRpbWUoKSAvIDEwMDAu
MCAvIDIuMDsKIH0KIAotU3RyaW5nIFJlbmRlclRoZW1lUXQ6OmZpbGVMaXN0TmFtZUZvcldpZHRo
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IEZvbnQmIGZvbnQsIGludCB3
aWR0aCkgY29uc3QKK1N0cmluZyBSZW5kZXJUaGVtZVF0OjpmaWxlTGlzdE5hbWVGb3JXaWR0aChj
b25zdCBGaWxlTGlzdCogZmlsZUxpc3QsIGNvbnN0IEZvbnQmIGZvbnQsIGludCB3aWR0aCkgY29u
c3QKIHsKICAgICBpZiAod2lkdGggPD0gMCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAg
ICAgU3RyaW5nIHN0cmluZzsKLSAgICBpZiAoZmlsZW5hbWVzLmlzRW1wdHkoKSkKKyAgICBpZiAo
ZmlsZUxpc3QtPmlzRW1wdHkoKSkKICAgICAgICAgc3RyaW5nID0gZmlsZUJ1dHRvbk5vRmlsZVNl
bGVjdGVkTGFiZWwoKTsKLSAgICBlbHNlIGlmIChmaWxlbmFtZXMuc2l6ZSgpID09IDEpIHsKLSAg
ICAgICAgU3RyaW5nIGZuYW1lID0gZmlsZW5hbWVzWzBdOworICAgIGVsc2UgaWYgKGZpbGVMaXN0
LT5sZW5ndGgoKSA9PSAxKSB7CisgICAgICAgIFN0cmluZyBmbmFtZSA9IGZpbGVMaXN0LT5pdGVt
KDApLT5wYXRoKCk7CiAgICAgICAgIFFGb250TWV0cmljcyBmbShmb250LmZvbnQoKSk7CiAgICAg
ICAgIHN0cmluZyA9IGZtLmVsaWRlZFRleHQoZm5hbWUsIFF0OjpFbGlkZUxlZnQsIHdpZHRoKTsK
ICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVu
ZGVyVGhlbWVRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5o
CmluZGV4IDgzZTcyOWQuLmZmMmRiNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1JlbmRlclRoZW1lUXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9S
ZW5kZXJUaGVtZVF0LmgKQEAgLTE1NSw3ICsxNTUsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAg
ICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVNpemVCYXNlZE9uU3R5bGUoUmVuZGVyU3R5bGUqKSBjb25z
dCA9IDA7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBGb250JiwgaW50IHdpZHRoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFN0cmluZyBmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBGaWxlTGlzdCos
IGNvbnN0IEZvbnQmLCBpbnQgd2lkdGgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBR
UmVjdCBpbmZsYXRlQnV0dG9uUmVjdChjb25zdCBRUmVjdCYgb3JpZ2luYWxSZWN0KSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbC5jcHAKaW5kZXggNzRlNmY3ZC4uYWYwMjNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0yMzYsNyArMjM2
LDcgQEAgU3RyaW5nIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpmaWxlVGV4dFZhbHVlKCkgY29u
c3QKIHsKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1
dEVsZW1lbnQqPihub2RlKCkpOwogICAgIEFTU0VSVChpbnB1dC0+ZmlsZXMoKSk7Ci0gICAgcmV0
dXJuIHRoZW1lKCktPmZpbGVMaXN0TmFtZUZvcldpZHRoKGlucHV0LT5maWxlcygpLT5wYXRocygp
LCBzdHlsZSgpLT5mb250KCksIG1heEZpbGVuYW1lV2lkdGgoKSwgaW5wdXQtPm11bHRpcGxlKCkp
OworICAgIHJldHVybiB0aGVtZSgpLT5maWxlTGlzdE5hbWVGb3JXaWR0aChpbnB1dC0+ZmlsZXMo
KSwgc3R5bGUoKS0+Zm9udCgpLCBtYXhGaWxlbmFtZVdpZHRoKCksIGlucHV0LT5tdWx0aXBsZSgp
KTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDhmZDJkNmMuLjJlNGIxZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVk
ZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RmlsZUxpc3QuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252
ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC0xMTM3LDE4ICsxMTM4
LDE4IEBAIFN0cmluZyBSZW5kZXJUaGVtZTo6ZmlsZUxpc3REZWZhdWx0TGFiZWwoYm9vbCBtdWx0
aXBsZUZpbGVzQWxsb3dlZCkgY29uc3QKICAgICByZXR1cm4gZmlsZUJ1dHRvbk5vRmlsZVNlbGVj
dGVkTGFiZWwoKTsKIH0KIAotU3RyaW5nIFJlbmRlclRoZW1lOjpmaWxlTGlzdE5hbWVGb3JXaWR0
aChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBGb250JiBmb250LCBpbnQg
d2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93ZWQpIGNvbnN0CitTdHJpbmcgUmVuZGVyVGhl
bWU6OmZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IEZpbGVMaXN0KiBmaWxlTGlzdCwgY29uc3Qg
Rm9udCYgZm9udCwgaW50IHdpZHRoLCBib29sIG11bHRpcGxlRmlsZXNBbGxvd2VkKSBjb25zdAog
ewogICAgIGlmICh3aWR0aCA8PSAwKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBT
dHJpbmcgc3RyaW5nOwotICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0eSgpKQorICAgIGlmIChmaWxl
TGlzdC0+aXNFbXB0eSgpKQogICAgICAgICBzdHJpbmcgPSBmaWxlTGlzdERlZmF1bHRMYWJlbCht
dWx0aXBsZUZpbGVzQWxsb3dlZCk7Ci0gICAgZWxzZSBpZiAoZmlsZW5hbWVzLnNpemUoKSA9PSAx
KQotICAgICAgICBzdHJpbmcgPSBwYXRoR2V0RmlsZU5hbWUoZmlsZW5hbWVzWzBdKTsKKyAgICBl
bHNlIGlmIChmaWxlTGlzdC0+bGVuZ3RoKCkgPT0gMSkKKyAgICAgICAgc3RyaW5nID0gZmlsZUxp
c3QtPml0ZW0oMCktPm5hbWUoKTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBTdHJpbmdUcnVu
Y2F0b3I6OnJpZ2h0VHJ1bmNhdGUobXVsdGlwbGVGaWxlVXBsb2FkVGV4dChmaWxlbmFtZXMuc2l6
ZSgpKSwgd2lkdGgsIGZvbnQsIFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7
CisgICAgICAgIHJldHVybiBTdHJpbmdUcnVuY2F0b3I6OnJpZ2h0VHJ1bmNhdGUobXVsdGlwbGVG
aWxlVXBsb2FkVGV4dChmaWxlTGlzdC0+bGVuZ3RoKCkpLCB3aWR0aCwgZm9udCwgU3RyaW5nVHJ1
bmNhdG9yOjpFbmFibGVSb3VuZGluZ0hhY2tzKTsKIAogICAgIHJldHVybiBTdHJpbmdUcnVuY2F0
b3I6OmNlbnRlclRydW5jYXRlKHN0cmluZywgd2lkdGgsIGZvbnQsIFN0cmluZ1RydW5jYXRvcjo6
RW5hYmxlUm91bmRpbmdIYWNrcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5oCmluZGV4IDQ0ZWYxMjQuLjZhZTljZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5oCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEVsZW1lbnQ7CitjbGFzcyBGaWxlTGlzdDsKIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CiBjbGFz
cyBQb3B1cE1lbnU7CiBjbGFzcyBSZW5kZXJNZW51TGlzdDsKQEAgLTIxNSw3ICsyMTYsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHBvcHNNZW51QnlTcGFjZU9yUmV0dXJuKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVMaXN0RGVmYXVsdExh
YmVsKGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93ZWQpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5n
IGZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNv
bnN0IEZvbnQmLCBpbnQgd2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93ZWQpIGNvbnN0Owor
ICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IEZpbGVMaXN0Kiwg
Y29uc3QgRm9udCYsIGludCB3aWR0aCwgYm9vbCBtdWx0aXBsZUZpbGVzQWxsb3dlZCkgY29uc3Q7
CiAKIHByb3RlY3RlZDoKICAgICAvLyBUaGUgcGxhdGZvcm0gc2VsZWN0aW9uIGNvbG9yLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAppbmRleCBmOGE1NjU3Li5kOTgx
NmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaApAQCAtMTc3
LDcgKzE3Nyw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd1BsYWNl
aG9sZGVyV2hlbkZvY3VzZWQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBj
b25zdCBGb250JiwgaW50IHdpZHRoLCBib29sIG11bHRpcGxlRmlsZXNBbGxvd2VkKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFN0cmluZyBmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBGaWxlTGlzdCos
IGNvbnN0IEZvbnQmLCBpbnQgd2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93ZWQpIGNvbnN0
IE9WRVJSSURFOwogCiAgICAgTGF5b3V0UmVjdCBpbmZsYXRlUmVjdChjb25zdCBMYXlvdXRSZWN0
JiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IGludCogbWFyZ2lucywgZmxvYXQgem9vbUxldmVsID0g
MS4wZikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQppbmRleCAwYWUwMTk2Li42N2E3YmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tCkBAIC0yMTQ3LDE4ICsyMTQ3LDE4IEBAIE5TVGV4dEZpZWxkQ2VsbCog
UmVuZGVyVGhlbWVNYWM6OnRleHRGaWVsZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGV4dEZpZWxk
LmdldCgpOwogfQogCi1TdHJpbmcgUmVuZGVyVGhlbWVNYWM6OmZpbGVMaXN0TmFtZUZvcldpZHRo
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IEZvbnQmIGZvbnQsIGludCB3
aWR0aCwgYm9vbCBtdWx0aXBsZUZpbGVzQWxsb3dlZCkgY29uc3QKK1N0cmluZyBSZW5kZXJUaGVt
ZU1hYzo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3QgRmlsZUxpc3QqIGZpbGVMaXN0LCBjb25z
dCBGb250JiBmb250LCBpbnQgd2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93ZWQpIGNvbnN0
CiB7CiAgICAgaWYgKHdpZHRoIDw9IDApCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAg
IFN0cmluZyBzdHJUb1RydW5jYXRlOwotICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0eSgpKQorICAg
IGlmIChmaWxlTGlzdC0+aXNFbXB0eSgpKQogICAgICAgICBzdHJUb1RydW5jYXRlID0gZmlsZUxp
c3REZWZhdWx0TGFiZWwobXVsdGlwbGVGaWxlc0FsbG93ZWQpOwotICAgIGVsc2UgaWYgKGZpbGVu
YW1lcy5zaXplKCkgPT0gMSkKLSAgICAgICAgc3RyVG9UcnVuY2F0ZSA9IFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gZGlzcGxheU5hbWVBdFBhdGg6KGZpbGVuYW1lc1swXSldOworICAg
IGVsc2UgaWYgKGZpbGVMaXN0LT5sZW5ndGgoKSA9PSAxKQorICAgICAgICBzdHJUb1RydW5jYXRl
ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBkaXNwbGF5TmFtZUF0UGF0aDooZmls
ZUxpc3QtPml0ZW0oMCktPnBhdGgoKSldOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFN0cmlu
Z1RydW5jYXRvcjo6cmlnaHRUcnVuY2F0ZShtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KGZpbGVuYW1l
cy5zaXplKCkpLCB3aWR0aCwgZm9udCwgU3RyaW5nVHJ1bmNhdG9yOjpFbmFibGVSb3VuZGluZ0hh
Y2tzKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZ1RydW5jYXRvcjo6cmlnaHRUcnVuY2F0ZShtdWx0
aXBsZUZpbGVVcGxvYWRUZXh0KGZpbGVMaXN0LT5sZW5ndGgoKSksIHdpZHRoLCBmb250LCBTdHJp
bmdUcnVuY2F0b3I6OkVuYWJsZVJvdW5kaW5nSGFja3MpOwogCiAgICAgcmV0dXJuIFN0cmluZ1Ry
dW5jYXRvcjo6Y2VudGVyVHJ1bmNhdGUoc3RyVG9UcnVuY2F0ZSwgd2lkdGgsIGZvbnQsIFN0cmlu
Z1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7CiB9Cg==
</data>
<flag name="commit-queue"
          id="134937"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131586</attachid>
            <date>2012-03-13 03:50:38 -0700</date>
            <delta_ts>2012-03-13 07:30:01 -0700</delta_ts>
            <desc>Build fix (for EWS)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>12155</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">Y29tbWl0IDc5NWYyZmY3ODhjNmM4MDdjYTE3YmYyZGNmMDNiNmY0NDU2ZWY5ZDkKQXV0aG9yOiBL
aW51a28gWWFzdWRhIDxraW51a29AY2hyb21pdW0ub3JnPgpEYXRlOiAgIFR1ZSBNYXIgMTMgMTI6
NTM6MDUgMjAxMiArMDkwMAoKICAgIHNob3dpbmcgbmFtZQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMGU5NzNh
Li41MzEwMTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMDMtMTIgIEtpbnVr
byBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZpbGUgdXBsb2FkIGNv
bnRyb2wgc2hvdWxkIHVzZSBGaWxlLm5hbWUoKSByYXRoZXIgdGhhbiBGaWxlLnBhdGgoKSB0byBz
aG93IGNob3NlbiBmaWxlbmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgwOTcwCisKKyAgICAgICAgSW4gc29tZSByYXJlIGNhc2VzIChlLmcuIGZp
bGVzIGZyb20gRmlsZVN5c3RlbSBBUEkgb3IgZmlsZXMgY3JlYXRlZAorICAgICAgICB1c2luZyB0
aGUgbmV3bHkgYWRkZWQgV2ViS2l0IEFQSSkgRmlsZS5uYW1lIGhhcyBkaWZmZXJlbnQgZGlzcGxh
eU5hbWUKKyAgICAgICAgZnJvbSB0aGUgYmFzZW5hbWUgb2YgZmlsZS5wYXRoLCBhbmQgaW4gdGhl
IGZpbGUgdXBsb2FkZXIgY29udHJvbGxlciB3ZQorICAgICAgICBzaG91bGQgdXNlIEZpbGUubmFt
ZSByYXRoZXIgdGhhbiBGaWxlLnBhdGguCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiBleGlzdGluZyB0ZXN0cyBzaG91bGQgcGFz
cyBhcyB0aGlzIHNob3VsZCBub3QgY2hhbmdlCisgICAgICAgIGJlaGF2aW9yIGluIHJlZ3VsYXIg
dXNlIGNhc2VzLiAgKE5ldyBiZWhhdmlvciB3aGVyZSBGaWxlLm5hbWUgZGlmZmVycworICAgICAg
ICBmcm9tIEZpbGUucGF0aCBjYW4gYmUgb25seSB0ZXN0ZWQgaW4gY2hyb21lb3MgZW52aXJvbm1l
bnQsIHRoZXJlZm9yZQorICAgICAgICBub3QgYWRkaW5nIG5ldyB0ZXN0cyBmb3IgdGhhdCkKKwor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUd0azo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgpOiBVcGRhdGVkIHRvIGhh
bmRsZSBGaWxlTGlzdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lUXQ6OmZpbGVMaXN0TmFtZUZvcldpZHRoKTogVXBkYXRlZCB0byBoYW5k
bGUgRmlsZUxpc3QuCisgICAgICAgICogcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6ZmlsZVRleHRWYWx1ZSk6IENoYW5nZWQg
dG8gcGFzcyBGaWxlTGlzdCByYXRoZXIgdGhhbiBGaWxlTGlzdC0+cGF0aHMoKS4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWU6OmZpbGVMaXN0TmFtZUZvcldpZHRoKTogVXBkYXRlZCB0byBoYW5kbGUgRmlsZUxpc3QgYW5k
IHVzZSBGaWxlLm5hbWUgZm9yIGRpc3BsYXlpbmcgdGhlIGZpbGUgbmFtZS4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgpOiBVcGRhdGVkIHRv
IGhhbmRsZSBGaWxlTGlzdC4KKwogMjAxMi0wMy0xMCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBTaGFkb3dUcmVlIHVzZXMgd2VhayBpdGVyYXRpb24gcGF0
dGVybnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
CmluZGV4IGJiNjdlYWYuLmNhZWFkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIlJlbmRl
clRoZW1lR3RrLmgiCiAKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAi
RmlsZUxpc3QuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiR093blB0ci5o
IgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCkBAIC03MDEsNyArNzAyLDcgQEAgc3RhdGljIGJvb2wg
c3RyaW5nQnlBZG9wdGluZ0ZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnY2hhciogc3lzdGVtRmls
ZW5hbWUsIFN0cmkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFJlbmRlclRoZW1lR3Rr
OjpmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBj
b25zdCBGb250JiBmb250LCBpbnQgd2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93ZWQpIGNv
bnN0CitTdHJpbmcgUmVuZGVyVGhlbWVHdGs6OmZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IEZp
bGVMaXN0KiBmaWxlTGlzdCwgY29uc3QgRm9udCYgZm9udCwgaW50IHdpZHRoLCBib29sIG11bHRp
cGxlRmlsZXNBbGxvd2VkKSBjb25zdAogewogICAgIGlmICh3aWR0aCA8PSAwKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CkBAIC03MTAsMTIgKzcxMSwxMSBAQCBTdHJpbmcgUmVuZGVyVGhlbWVH
dGs6OmZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMs
IGNvbgogICAgIGlmIChtdWx0aXBsZUZpbGVzQWxsb3dlZCkKICAgICAgICAgc3RyaW5nID0gZmls
ZUJ1dHRvbk5vRmlsZXNTZWxlY3RlZExhYmVsKCk7CiAKLSAgICBpZiAoZmlsZW5hbWVzLnNpemUo
KSA9PSAxKSB7Ci0gICAgICAgIENTdHJpbmcgc3lzdGVtRmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZmlsZW5hbWVzWzBdKTsKKyAgICBpZiAoZmlsZUxpc3QtPmxlbmd0aCgpID09
IDEpIHsKKyAgICAgICAgQ1N0cmluZyBzeXN0ZW1GaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihmaWxlTGlzdC0+aXRlbSgwKS0+cGF0aCgpKTsKICAgICAgICAgZ2NoYXIqIHN5c3Rl
bUJhc2VuYW1lID0gZ19wYXRoX2dldF9iYXNlbmFtZShzeXN0ZW1GaWxlbmFtZS5kYXRhKCkpOwot
ICAgICAgICBzdHJpbmdCeUFkb3B0aW5nRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN5c3RlbUJh
c2VuYW1lLCBzdHJpbmcpOwotICAgIH0gZWxzZSBpZiAoZmlsZW5hbWVzLnNpemUoKSA+IDEpCi0g
ICAgICAgIHJldHVybiBTdHJpbmdUcnVuY2F0b3I6OnJpZ2h0VHJ1bmNhdGUobXVsdGlwbGVGaWxl
VXBsb2FkVGV4dChmaWxlbmFtZXMuc2l6ZSgpKSwgd2lkdGgsIGZvbnQsIFN0cmluZ1RydW5jYXRv
cjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7CisgICAgfSBlbHNlIGlmIChmaWxlTGlzdC0+bGVuZ3Ro
KCkgPiAxKQorICAgICAgICByZXR1cm4gU3RyaW5nVHJ1bmNhdG9yOjpyaWdodFRydW5jYXRlKG11
bHRpcGxlRmlsZVVwbG9hZFRleHQoZmlsZUxpc3QtPmxlbmd0aCgpKSwgd2lkdGgsIGZvbnQsIFN0
cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7CiAKICAgICByZXR1cm4gU3RyaW5n
VHJ1bmNhdG9yOjpjZW50ZXJUcnVuY2F0ZShzdHJpbmcsIHdpZHRoLCBmb250LCBTdHJpbmdUcnVu
Y2F0b3I6OkVuYWJsZVJvdW5kaW5nSGFja3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUmVuZGVyVGhlbWVHdGsuaAppbmRleCBjMjZmOWM5Li42OGI3MWE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaApAQCAtMTgxLDcgKzE4MSw3
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRJbm5lclNwaW5CdXR0b24oUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiBwcml2YXRl
OgotICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IEZvbnQmLCBpbnQgd2lkdGgsIGJvb2wgbXVsdGlwbGVG
aWxlc0FsbG93ZWQpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVMaXN0TmFtZUZvcldp
ZHRoKGNvbnN0IEZpbGVMaXN0KiwgY29uc3QgRm9udCYsIGludCB3aWR0aCwgYm9vbCBtdWx0aXBs
ZUZpbGVzQWxsb3dlZCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdCgp
OwogICAgIHN0YXRpYyB2b2lkIHNldFRleHRJbnB1dEJvcmRlcnMoUmVuZGVyU3R5bGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKaW5kZXggZDY5Zjgw
NC4uYTRkZTc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVy
VGhlbWVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVR
dC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJD
aHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZpbGVMaXN0Lmgi
CiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtODY4LDE2ICs4NjksMTYgQEAgZG91YmxlIFJlbmRlclRo
ZW1lUXQ6OmNhcmV0QmxpbmtJbnRlcnZhbCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFFHdWlBcHBsaWNhdGlvbio+KHFBcHApLT5zdHlsZUhpbnRzKCktPmN1cnNvckZsYXNoVGltZSgp
IC8gMTAwMC4wIC8gMi4wOwogfQogCi1TdHJpbmcgUmVuZGVyVGhlbWVRdDo6ZmlsZUxpc3ROYW1l
Rm9yV2lkdGgoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgRm9udCYgZm9u
dCwgaW50IHdpZHRoKSBjb25zdAorU3RyaW5nIFJlbmRlclRoZW1lUXQ6OmZpbGVMaXN0TmFtZUZv
cldpZHRoKGNvbnN0IEZpbGVMaXN0KiBmaWxlTGlzdCwgY29uc3QgRm9udCYgZm9udCwgaW50IHdp
ZHRoKSBjb25zdAogewogICAgIGlmICh3aWR0aCA8PSAwKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKICAgICBTdHJpbmcgc3RyaW5nOwotICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0eSgpKQor
ICAgIGlmIChmaWxlTGlzdC0+aXNFbXB0eSgpKQogICAgICAgICBzdHJpbmcgPSBmaWxlQnV0dG9u
Tm9GaWxlU2VsZWN0ZWRMYWJlbCgpOwotICAgIGVsc2UgaWYgKGZpbGVuYW1lcy5zaXplKCkgPT0g
MSkgewotICAgICAgICBTdHJpbmcgZm5hbWUgPSBmaWxlbmFtZXNbMF07CisgICAgZWxzZSBpZiAo
ZmlsZUxpc3QtPmxlbmd0aCgpID09IDEpIHsKKyAgICAgICAgU3RyaW5nIGZuYW1lID0gZmlsZUxp
c3QtPml0ZW0oMCktPnBhdGgoKTsKICAgICAgICAgUUZvbnRNZXRyaWNzIGZtKGZvbnQuZm9udCgp
KTsKICAgICAgICAgc3RyaW5nID0gZm0uZWxpZGVkVGV4dChmbmFtZSwgUXQ6OkVsaWRlTGVmdCwg
d2lkdGgpOwogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9SZW5kZXJUaGVtZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJU
aGVtZVF0LmgKaW5kZXggODNlNzI5ZC4uZmYyZGI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1JlbmRlclRoZW1lUXQuaApAQCAtMTU1LDcgKzE1NSw3IEBAIHByb3RlY3RlZDoKICNl
bmRpZgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlU2l6ZUJhc2VkT25TdHlsZShSZW5kZXJTdHls
ZSopIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVMaXN0TmFtZUZvcldpZHRo
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IEZvbnQmLCBpbnQgd2lkdGgp
IGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IEZp
bGVMaXN0KiwgY29uc3QgRm9udCYsIGludCB3aWR0aCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIFFSZWN0IGluZmxhdGVCdXR0b25SZWN0KGNvbnN0IFFSZWN0JiBvcmlnaW5hbFJlY3Qp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmls
ZVVwbG9hZENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVV
cGxvYWRDb250cm9sLmNwcAppbmRleCA3NGU2ZjdkLi5hZjAyM2EzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTIz
Niw3ICsyMzYsNyBAQCBTdHJpbmcgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmZpbGVUZXh0VmFs
dWUoKSBjb25zdAogewogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8
SFRNTElucHV0RWxlbWVudCo+KG5vZGUoKSk7CiAgICAgQVNTRVJUKGlucHV0LT5maWxlcygpKTsK
LSAgICByZXR1cm4gdGhlbWUoKS0+ZmlsZUxpc3ROYW1lRm9yV2lkdGgoaW5wdXQtPmZpbGVzKCkt
PnBhdGhzKCksIHN0eWxlKCktPmZvbnQoKSwgbWF4RmlsZW5hbWVXaWR0aCgpLCBpbnB1dC0+bXVs
dGlwbGUoKSk7CisgICAgcmV0dXJuIHRoZW1lKCktPmZpbGVMaXN0TmFtZUZvcldpZHRoKGlucHV0
LT5maWxlcygpLCBzdHlsZSgpLT5mb250KCksIG1heEZpbGVuYW1lV2lkdGgoKSwgaW5wdXQtPm11
bHRpcGxlKCkpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggOGZkMmQ2Yy4uMmU0YjFmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAK
ICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJG
bG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKQEAgLTExMzcs
MTggKzExMzgsMTggQEAgU3RyaW5nIFJlbmRlclRoZW1lOjpmaWxlTGlzdERlZmF1bHRMYWJlbChi
b29sIG11bHRpcGxlRmlsZXNBbGxvd2VkKSBjb25zdAogICAgIHJldHVybiBmaWxlQnV0dG9uTm9G
aWxlU2VsZWN0ZWRMYWJlbCgpOwogfQogCi1TdHJpbmcgUmVuZGVyVGhlbWU6OmZpbGVMaXN0TmFt
ZUZvcldpZHRoKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IEZvbnQmIGZv
bnQsIGludCB3aWR0aCwgYm9vbCBtdWx0aXBsZUZpbGVzQWxsb3dlZCkgY29uc3QKK1N0cmluZyBS
ZW5kZXJUaGVtZTo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3QgRmlsZUxpc3QqIGZpbGVMaXN0
LCBjb25zdCBGb250JiBmb250LCBpbnQgd2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93ZWQp
IGNvbnN0CiB7CiAgICAgaWYgKHdpZHRoIDw9IDApCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAogICAgIFN0cmluZyBzdHJpbmc7Ci0gICAgaWYgKGZpbGVuYW1lcy5pc0VtcHR5KCkpCisgICAg
aWYgKGZpbGVMaXN0LT5pc0VtcHR5KCkpCiAgICAgICAgIHN0cmluZyA9IGZpbGVMaXN0RGVmYXVs
dExhYmVsKG11bHRpcGxlRmlsZXNBbGxvd2VkKTsKLSAgICBlbHNlIGlmIChmaWxlbmFtZXMuc2l6
ZSgpID09IDEpCi0gICAgICAgIHN0cmluZyA9IHBhdGhHZXRGaWxlTmFtZShmaWxlbmFtZXNbMF0p
OworICAgIGVsc2UgaWYgKGZpbGVMaXN0LT5sZW5ndGgoKSA9PSAxKQorICAgICAgICBzdHJpbmcg
PSBmaWxlTGlzdC0+aXRlbSgwKS0+bmFtZSgpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFN0
cmluZ1RydW5jYXRvcjo6cmlnaHRUcnVuY2F0ZShtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KGZpbGVu
YW1lcy5zaXplKCkpLCB3aWR0aCwgZm9udCwgU3RyaW5nVHJ1bmNhdG9yOjpFbmFibGVSb3VuZGlu
Z0hhY2tzKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZ1RydW5jYXRvcjo6cmlnaHRUcnVuY2F0ZSht
dWx0aXBsZUZpbGVVcGxvYWRUZXh0KGZpbGVMaXN0LT5sZW5ndGgoKSksIHdpZHRoLCBmb250LCBT
dHJpbmdUcnVuY2F0b3I6OkVuYWJsZVJvdW5kaW5nSGFja3MpOwogCiAgICAgcmV0dXJuIFN0cmlu
Z1RydW5jYXRvcjo6Y2VudGVyVHJ1bmNhdGUoc3RyaW5nLCB3aWR0aCwgZm9udCwgU3RyaW5nVHJ1
bmNhdG9yOjpFbmFibGVSb3VuZGluZ0hhY2tzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmgKaW5kZXggNDRlZjEyNC4uNmFlOWNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRWxlbWVudDsKK2NsYXNzIEZpbGVMaXN0OwogY2xhc3MgSFRNTElucHV0RWxlbWVu
dDsKIGNsYXNzIFBvcHVwTWVudTsKIGNsYXNzIFJlbmRlck1lbnVMaXN0OwpAQCAtMjE1LDcgKzIx
Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcG9wc01lbnVCeVNwYWNlT3JSZXR1cm4o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgZmlsZUxpc3RE
ZWZhdWx0TGFiZWwoYm9vbCBtdWx0aXBsZUZpbGVzQWxsb3dlZCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBTdHJpbmcgZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVu
YW1lcywgY29uc3QgRm9udCYsIGludCB3aWR0aCwgYm9vbCBtdWx0aXBsZUZpbGVzQWxsb3dlZCkg
Y29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3QgRmls
ZUxpc3QqLCBjb25zdCBGb250JiwgaW50IHdpZHRoLCBib29sIG11bHRpcGxlRmlsZXNBbGxvd2Vk
KSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIC8vIFRoZSBwbGF0Zm9ybSBzZWxlY3Rpb24gY29s
b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCmluZGV4IGY4YTU2
NTcuLmQ5ODE2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5o
CkBAIC0xNzcsNyArMTc3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRT
aG93UGxhY2Vob2xkZXJXaGVuRm9jdXNlZCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHZpcnR1
YWwgU3RyaW5nIGZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxl
bmFtZXMsIGNvbnN0IEZvbnQmLCBpbnQgd2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxlc0FsbG93ZWQp
IGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IEZp
bGVMaXN0KiwgY29uc3QgRm9udCYsIGludCB3aWR0aCwgYm9vbCBtdWx0aXBsZUZpbGVzQWxsb3dl
ZCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBMYXlvdXRSZWN0IGluZmxhdGVSZWN0KGNvbnN0IExh
eW91dFJlY3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgaW50KiBtYXJnaW5zLCBmbG9hdCB6b29t
TGV2ZWwgPSAxLjBmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCmluZGV4IDBhZTAxOTYuLmU0NTcwNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgIkNTU1Zh
bHVlS2V5d29yZHMuaCIKICNpbXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJFbGVtZW50Lmgi
CisjaW1wb3J0ICJGaWxlTGlzdC5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJH
cmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAiSFRNTElucHV0RWxlbWVudC5oIgpAQCAtMjE0
NywxOCArMjE0OCwxOCBAQCBOU1RleHRGaWVsZENlbGwqIFJlbmRlclRoZW1lTWFjOjp0ZXh0Rmll
bGQoKSBjb25zdAogICAgIHJldHVybiBtX3RleHRGaWVsZC5nZXQoKTsKIH0KIAotU3RyaW5nIFJl
bmRlclRoZW1lTWFjOjpmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZW5hbWVzLCBjb25zdCBGb250JiBmb250LCBpbnQgd2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxl
c0FsbG93ZWQpIGNvbnN0CitTdHJpbmcgUmVuZGVyVGhlbWVNYWM6OmZpbGVMaXN0TmFtZUZvcldp
ZHRoKGNvbnN0IEZpbGVMaXN0KiBmaWxlTGlzdCwgY29uc3QgRm9udCYgZm9udCwgaW50IHdpZHRo
LCBib29sIG11bHRpcGxlRmlsZXNBbGxvd2VkKSBjb25zdAogewogICAgIGlmICh3aWR0aCA8PSAw
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmcgc3RyVG9UcnVuY2F0ZTsK
LSAgICBpZiAoZmlsZW5hbWVzLmlzRW1wdHkoKSkKKyAgICBpZiAoZmlsZUxpc3QtPmlzRW1wdHko
KSkKICAgICAgICAgc3RyVG9UcnVuY2F0ZSA9IGZpbGVMaXN0RGVmYXVsdExhYmVsKG11bHRpcGxl
RmlsZXNBbGxvd2VkKTsKLSAgICBlbHNlIGlmIChmaWxlbmFtZXMuc2l6ZSgpID09IDEpCi0gICAg
ICAgIHN0clRvVHJ1bmNhdGUgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGRpc3Bs
YXlOYW1lQXRQYXRoOihmaWxlbmFtZXNbMF0pXTsKKyAgICBlbHNlIGlmIChmaWxlTGlzdC0+bGVu
Z3RoKCkgPT0gMSkKKyAgICAgICAgc3RyVG9UcnVuY2F0ZSA9IFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZGlzcGxheU5hbWVBdFBhdGg6KGZpbGVMaXN0LT5pdGVtKDApLT5wYXRoKCkp
XTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBTdHJpbmdUcnVuY2F0b3I6OnJpZ2h0VHJ1bmNh
dGUobXVsdGlwbGVGaWxlVXBsb2FkVGV4dChmaWxlbmFtZXMuc2l6ZSgpKSwgd2lkdGgsIGZvbnQs
IFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7CisgICAgICAgIHJldHVybiBT
dHJpbmdUcnVuY2F0b3I6OnJpZ2h0VHJ1bmNhdGUobXVsdGlwbGVGaWxlVXBsb2FkVGV4dChmaWxl
TGlzdC0+bGVuZ3RoKCkpLCB3aWR0aCwgZm9udCwgU3RyaW5nVHJ1bmNhdG9yOjpFbmFibGVSb3Vu
ZGluZ0hhY2tzKTsKIAogICAgIHJldHVybiBTdHJpbmdUcnVuY2F0b3I6OmNlbnRlclRydW5jYXRl
KHN0clRvVHJ1bmNhdGUsIHdpZHRoLCBmb250LCBTdHJpbmdUcnVuY2F0b3I6OkVuYWJsZVJvdW5k
aW5nSGFja3MpOwogfQo=
</data>
<flag name="commit-queue"
          id="134971"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>