<?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>87852</bug_id>
          
          <creation_ts>2012-05-30 07:39:46 -0700</creation_ts>
          <short_desc>[Chromium] Call fileUtilities methods directly</short_desc>
          <delta_ts>2012-05-30 19:31:59 -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>WebKit 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>
          
          <blocked>82948</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Mark Pilgrim (Google)">pilgrim</assigned_to>
          <cc>abarth</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>637202</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-30 07:39:46 -0700</bug_when>
    <thetext>[Chromium] Call fileUtilities methods directly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637204</commentid>
    <comment_count>1</comment_count>
      <attachid>144812</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-30 07:40:25 -0700</bug_when>
    <thetext>Created attachment 144812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637206</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-30 07:41:56 -0700</bug_when>
    <thetext>Please check the changes to DragDataChromium.cpp very carefully! I&apos;m not sure I got the casts right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637315</commentid>
    <comment_count>3</comment_count>
      <attachid>144812</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-30 09:40:05 -0700</bug_when>
    <thetext>Comment on attachment 144812
Patch

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

&gt; Source/WebCore/platform/chromium/DragDataChromium.cpp:65
&gt; +        url = static_cast&lt;KURL&gt;(WebKit::Platform::current()-&gt;fileUtilities()-&gt;filePathToURL(static_cast&lt;String&gt;(WebKit::Platform::current()-&gt;fileUtilities()-&gt;getAbsolutePath(m_platformDragData-&gt;filenames()[0]))));

This needs some temporaries at least - I can&apos;t tell if it&apos;s correct or not.

static_cast&lt;&gt; is the wrong way to convert from, say, a WebString to a String - instead you want to call String(myWebString)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637515</commentid>
    <comment_count>4</comment_count>
      <attachid>144890</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-30 12:08:36 -0700</bug_when>
    <thetext>Created attachment 144890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637516</commentid>
    <comment_count>5</comment_count>
      <attachid>144890</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-30 12:09:06 -0700</bug_when>
    <thetext>Comment on attachment 144890
Patch

Added intermediate variables, cast to String properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637599</commentid>
    <comment_count>6</comment_count>
      <attachid>144890</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-30 13:21:55 -0700</bug_when>
    <thetext>Comment on attachment 144890
Patch

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

&gt; Source/WebCore/platform/chromium/DragDataChromium.cpp:62
&gt; +    String path;

You can move this declaration inside the &quot;else if&quot; since it&apos;s only used there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637607</commentid>
    <comment_count>7</comment_count>
      <attachid>144904</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-30 13:24:38 -0700</bug_when>
    <thetext>Created attachment 144904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637608</commentid>
    <comment_count>8</comment_count>
      <attachid>144904</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-30 13:25:05 -0700</bug_when>
    <thetext>Comment on attachment 144904
Patch

Moved variable declaration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637616</commentid>
    <comment_count>9</comment_count>
      <attachid>144904</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-30 13:28:03 -0700</bug_when>
    <thetext>Comment on attachment 144904
Patch

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

&gt; Source/WebCore/platform/chromium/DragDataChromium.cpp:66
&gt; +        String path;
&gt; +        path = String(WebKit::Platform::current()-&gt;fileUtilities()-&gt;getAbsolutePath(m_platformDragData-&gt;filenames()[0]));

These can just be put on one line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637621</commentid>
    <comment_count>10</comment_count>
      <attachid>144907</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-30 13:30:41 -0700</bug_when>
    <thetext>Created attachment 144907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637940</commentid>
    <comment_count>11</comment_count>
      <attachid>144907</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-30 19:31:54 -0700</bug_when>
    <thetext>Comment on attachment 144907
Patch

Clearing flags on attachment: 144907

Committed r119024: &lt;http://trac.webkit.org/changeset/119024&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637941</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-30 19:31:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144812</attachid>
            <date>2012-05-30 07:40:25 -0700</date>
            <delta_ts>2012-05-30 12:08:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87852-20120530103947.patch</filename>
            <type>text/plain</type>
            <size>12158</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExODkyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA1LTMwICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIENhbGwg
ZmlsZVV0aWxpdGllcyBtZXRob2RzIGRpcmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzg1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2YgYSByZWZhY3RvcmluZyBzZXJpZXMuIFNlZSB0
cmFja2luZyBidWcgODI5NDguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0
YUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmRlbGV0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1l
dGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VB
bGxEaXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjbG9zZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6c2Vla0ZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6dHJ1bmNhdGVGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRGcm9tRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChQbGF0Zm9ybVN1cHBvcnQpOgor
CiAyMDEyLTA1LTMwICBBbGV4ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgdHJhY2UoKSBtZXRob2QgdG8gdGhlIFdvcmtlckNv
bnNvbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdEYXRhQ2hy
b21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0RyYWdEYXRhQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMTg5MTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0YUNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsOSArMzgsMTEgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlBsYXRmb3Jt
U3VwcG9ydC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogCisjaW5jbHVkZSA8cHVibGljL1BsYXRm
b3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaD4KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBjb250YWluc0hUTUwoY29uc3QgQ2hyb21pdW1EYXRh
T2JqZWN0KiBkcm9wRGF0YSkKQEAgLTYwLDcgKzYyLDcgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VS
TChGcmFtZSosIEZpbGVuYW1lQwogICAgIGlmIChtX3BsYXRmb3JtRHJhZ0RhdGEtPnR5cGVzKCku
Y29udGFpbnMobWltZVR5cGVUZXh0VVJJTGlzdCkpCiAgICAgICAgIG1fcGxhdGZvcm1EcmFnRGF0
YS0+dXJsQW5kVGl0bGUodXJsLCB0aXRsZSk7CiAgICAgZWxzZSBpZiAoZmlsZW5hbWVQb2xpY3kg
PT0gQ29udmVydEZpbGVuYW1lcyAmJiBjb250YWluc0ZpbGVzKCkpIHsKLSAgICAgICAgdXJsID0g
UGxhdGZvcm1TdXBwb3J0OjpmaWxlUGF0aFRvVVJMKFBsYXRmb3JtU3VwcG9ydDo6Z2V0QWJzb2x1
dGVQYXRoKG1fcGxhdGZvcm1EcmFnRGF0YS0+ZmlsZW5hbWVzKClbMF0pKTsKKyAgICAgICAgdXJs
ID0gc3RhdGljX2Nhc3Q8S1VSTD4oV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRp
bGl0aWVzKCktPmZpbGVQYXRoVG9VUkwoc3RhdGljX2Nhc3Q8U3RyaW5nPihXZWJLaXQ6OlBsYXRm
b3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+Z2V0QWJzb2x1dGVQYXRoKG1fcGxhdGZv
cm1EcmFnRGF0YS0+ZmlsZW5hbWVzKClbMF0pKSkpOwogICAgIH0KICAgICByZXR1cm4gdXJsOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9t
aXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9G
aWxlU3lzdGVtQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMTg5MTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCwyNyArMzQsMjcgQEAKICNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVk
ZSAiUGxhdGZvcm1TdXBwb3J0LmgiCiAKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViRmlsZUluZm8uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsZVV0
aWxpdGllcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgZGVsZXRlRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6ZGVsZXRlRmls
ZShwYXRoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRp
bGl0aWVzKCktPmRlbGV0ZUZpbGUocGF0aCk7CiB9CiAKIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OmRl
bGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOworICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpj
dXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7CiB9
CiAKIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3Vs
dCkKIHsKICAgICBGaWxlTWV0YWRhdGEgbWV0YWRhdGE7Ci0gICAgaWYgKCFQbGF0Zm9ybVN1cHBv
cnQ6OmdldEZpbGVNZXRhZGF0YShwYXRoLCBtZXRhZGF0YSkpCisgICAgaWYgKCFnZXRGaWxlTWV0
YWRhdGEocGF0aCwgbWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0
ID0gbWV0YWRhdGEubGVuZ3RoOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjMsNyArNjMsNyBAQCBi
b29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uCiBib29sIGdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiB7CiAgICAg
RmlsZU1ldGFkYXRhIG1ldGFkYXRhOwotICAgIGlmICghUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxl
TWV0YWRhdGEocGF0aCwgbWV0YWRhdGEpKQorICAgIGlmICghZ2V0RmlsZU1ldGFkYXRhKHBhdGgs
IG1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdCA9IG1ldGFkYXRh
Lm1vZGlmaWNhdGlvblRpbWU7CiAgICAgcmV0dXJuIHRydWU7CkBAIC03MSwyMiArNzEsMjggQEAg
Ym9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbgogCiBib29sIGdldEZpbGVN
ZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7Ci0g
ICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6Z2V0RmlsZU1ldGFkYXRhKHBhdGgsIG1ldGFkYXRh
KTsKKyAgICBXZWJLaXQ6OldlYkZpbGVJbmZvIHdlYkZpbGVJbmZvOworICAgIGlmICghV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmdldEZpbGVJbmZvKHBhdGgs
IHdlYkZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1ldGFkYXRhLm1vZGlm
aWNhdGlvblRpbWUgPSB3ZWJGaWxlSW5mby5tb2RpZmljYXRpb25UaW1lOworICAgIG1ldGFkYXRh
Lmxlbmd0aCA9IHdlYkZpbGVJbmZvLmxlbmd0aDsKKyAgICBtZXRhZGF0YS50eXBlID0gc3RhdGlj
X2Nhc3Q8RmlsZU1ldGFkYXRhOjpUeXBlPih3ZWJGaWxlSW5mby50eXBlKTsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewot
ICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OmRpcmVjdG9yeU5hbWUocGF0aCk7CisgICAgcmV0
dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT5kaXJlY3Rv
cnlOYW1lKHBhdGgpOwogfQogCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7Ci0gICAgcmV0dXJuIFBs
YXRmb3JtU3VwcG9ydDo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGNvbXBvbmVudCk7
CisgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygp
LT5wYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgY29tcG9uZW50KTsKIH0KIAogYm9vbCBt
YWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiBQbGF0
Zm9ybVN1cHBvcnQ6Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRoKTsKKyAgICByZXR1cm4gV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPm1ha2VBbGxEaXJlY3Rvcmll
cyhwYXRoKTsKIH0KIAogYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKQEAgLTk2
LDMyICsxMDIsMzIgQEAgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogUGxh
dGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2Rl
IG1vZGUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6b3BlbkZpbGUocGF0aCwgbW9k
ZSk7CisgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGll
cygpLT5vcGVuRmlsZShwYXRoLCBtb2RlKTsKIH0KIAogdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlJiBoYW5kbGUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6Y2xvc2VG
aWxlKGhhbmRsZSk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0
aWVzKCktPmNsb3NlRmlsZShoYW5kbGUpOwogfQogCiBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3Jp
Z2luKQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OnNlZWtGaWxlKGhhbmRsZSwgb2Zm
c2V0LCBvcmlnaW4pOworICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZp
bGVVdGlsaXRpZXMoKS0+c2Vla0ZpbGUoaGFuZGxlLCBvZmZzZXQsIG9yaWdpbik7CiB9CiAKIGJv
b2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZz
ZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6dHJ1bmNhdGVGaWxlKGhhbmRsZSwg
b2Zmc2V0KTsKKyAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRp
bGl0aWVzKCktPnRydW5jYXRlRmlsZShoYW5kbGUsIG9mZnNldCk7CiB9CiAKIGludCByZWFkRnJv
bUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
IHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBkYXRh
LCBsZW5ndGgpOworICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZpbGVV
dGlsaXRpZXMoKS0+cmVhZEZyb21GaWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKIH0KIAogaW50
IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6d3JpdGVUb0ZpbGUo
aGFuZGxlLCBkYXRhLCBsZW5ndGgpOworICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJy
ZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+d3JpdGVUb0ZpbGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgp
OwogfQogCiBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBmaWx0ZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAkocmV2aXNpb24gMTE4OTE2KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMiwyMyArMTIyLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUpOwogICAgIHN0YXRpYyBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50Kik7
CiAKLSAgICAvLyBGaWxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHN0YXRpYyBib29sIGRlbGV0ZUZpbGUoY29uc3Qg
U3RyaW5nJik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYsIEZp
bGVNZXRhZGF0YSYgcmVzdWx0KTsKLSAgICBzdGF0aWMgU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29u
c3QgU3RyaW5nJiBwYXRoKTsKLSAgICBzdGF0aWMgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KTsKLSAgICBz
dGF0aWMgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICBz
dGF0aWMgU3RyaW5nIGdldEFic29sdXRlUGF0aChjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMg
Ym9vbCBpc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgS1VSTCBmaWxlUGF0
aFRvVVJMKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBQbGF0Zm9ybUZpbGVIYW5kbGUgb3Bl
bkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUpOwotICAgIHN0YXRpYyB2b2lk
IGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKLSAgICBzdGF0aWMgbG9uZyBsb25nIHNl
ZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmln
aW4pOwotICAgIHN0YXRpYyBib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxv
bmcgbG9uZyBvZmZzZXQpOwotICAgIHN0YXRpYyBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7Ci0gICAgc3RhdGljIGludCB3cml0ZVRv
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwot
CiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIHN0YXRpYyBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbT4gY3JlYXRlQXN5bmNGaWxlU3lzdGVtKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTg5MjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA1LTMw
ICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21p
dW1dIENhbGwgZmlsZVV0aWxpdGllcyBtZXRob2RzIGRpcmVjdGx5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzg1MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2YgYSByZWZhY3RvcmluZyBzZXJp
ZXMuIFNlZSB0cmFja2luZyBidWcgODI5NDguCisKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBw
b3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA1LTMwICBKb2NoZW4gRWlzaW5n
ZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1hdGNoIEZpcmVmb3ggcmVzdHJp
Y3Rpb25zIHRvIHdpbmRvdy5ibHVyIGFuZCB3aW5kb3cuZm9jdXMKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkocmV2aXNpb24gMTE4OTE2
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAyLDg3ICszMDIsNiBAQCBib29sIFBsYXRmb3JtU3VwcG9ydDo6Y29v
a2llc0VuYWJsZWQoY29uCiAKIC8vIEZpbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWJvb2wgUGxhdGZv
cm1TdXBwb3J0OjpkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4g
V2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmRlbGV0ZUZpbGUo
cGF0aCk7Ci19Ci0KLWJvb2wgUGxhdGZvcm1TdXBwb3J0OjpkZWxldGVFbXB0eURpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJl
bnQoKS0+ZmlsZVV0aWxpdGllcygpLT5kZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKLX0KLQot
Ym9vbCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgs
IEZpbGVNZXRhZGF0YSYgcmVzdWx0KQotewotICAgIFdlYkZpbGVJbmZvIHdlYkZpbGVJbmZvOwot
ICAgIGlmICghd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmZpbGVVdGlsaXRpZXMoKS0+Z2V0Rmls
ZUluZm8ocGF0aCwgd2ViRmlsZUluZm8pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVz
dWx0Lm1vZGlmaWNhdGlvblRpbWUgPSB3ZWJGaWxlSW5mby5tb2RpZmljYXRpb25UaW1lOwotICAg
IHJlc3VsdC5sZW5ndGggPSB3ZWJGaWxlSW5mby5sZW5ndGg7Ci0gICAgcmVzdWx0LnR5cGUgPSBz
dGF0aWNfY2FzdDxGaWxlTWV0YWRhdGE6OlR5cGU+KHdlYkZpbGVJbmZvLnR5cGUpOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi1TdHJpbmcgUGxhdGZvcm1TdXBwb3J0OjpkaXJlY3RvcnlOYW1lKGNv
bnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVu
dCgpLT5maWxlVXRpbGl0aWVzKCktPmRpcmVjdG9yeU5hbWUocGF0aCk7Ci19Ci0KLVN0cmluZyBQ
bGF0Zm9ybVN1cHBvcnQ6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQotewotICAgIHJldHVybiBXZWJLaXQ6OlBsYXRm
b3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHBhdGgsIGNvbXBvbmVudCk7Ci19Ci0KLWJvb2wgUGxhdGZvcm1TdXBwb3J0OjptYWtlQWxsRGly
ZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBXZWJLaXQ6OlBsYXRm
b3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+bWFrZUFsbERpcmVjdG9yaWVzKHBhdGgp
OwotfQotCi1TdHJpbmcgUGxhdGZvcm1TdXBwb3J0OjpnZXRBYnNvbHV0ZVBhdGgoY29uc3QgU3Ry
aW5nJiBwYXRoKQotewotICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZp
bGVVdGlsaXRpZXMoKS0+Z2V0QWJzb2x1dGVQYXRoKHBhdGgpOwotfQotCi1ib29sIFBsYXRmb3Jt
U3VwcG9ydDo6aXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBX
ZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+aXNEaXJlY3Rvcnko
cGF0aCk7Ci19Ci0KLUtVUkwgUGxhdGZvcm1TdXBwb3J0OjpmaWxlUGF0aFRvVVJMKGNvbnN0IFN0
cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5m
aWxlVXRpbGl0aWVzKCktPmZpbGVQYXRoVG9VUkwocGF0aCk7Ci19Ci0KLVBsYXRmb3JtRmlsZUhh
bmRsZSBQbGF0Zm9ybVN1cHBvcnQ6Om9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9w
ZW5Nb2RlIG1vZGUpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+
ZmlsZVV0aWxpdGllcygpLT5vcGVuRmlsZShwYXRoLCBtb2RlKTsKLX0KLQotdm9pZCBQbGF0Zm9y
bVN1cHBvcnQ6OmNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBX
ZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+Y2xvc2VGaWxlKGhh
bmRsZSk7Ci19Ci0KLWxvbmcgbG9uZyBQbGF0Zm9ybVN1cHBvcnQ6OnNlZWtGaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdp
bikKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0
aWVzKCktPnNlZWtGaWxlKGhhbmRsZSwgb2Zmc2V0LCBvcmlnaW4pOwotfQotCi1ib29sIFBsYXRm
b3JtU3VwcG9ydDo6dHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcg
bG9uZyBvZmZzZXQpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+
ZmlsZVV0aWxpdGllcygpLT50cnVuY2F0ZUZpbGUoaGFuZGxlLCBvZmZzZXQpOwotfQotCi1pbnQg
UGxhdGZvcm1TdXBwb3J0OjpyZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6
Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPnJlYWRGcm9tRmlsZShoYW5kbGUsIGRhdGEsIGxl
bmd0aCk7Ci19Ci0KLWludCBQbGF0Zm9ybVN1cHBvcnQ6OndyaXRlVG9GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAgcmV0
dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT53cml0ZVRv
RmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCk7Ci19Ci0KICNpZiBFTkFCTEUoRklMRV9TWVNURU0p
CiBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gUGxhdGZvcm1TdXBwb3J0OjpjcmVhdGVBc3lu
Y0ZpbGVTeXN0ZW0oKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144890</attachid>
            <date>2012-05-30 12:08:36 -0700</date>
            <delta_ts>2012-05-30 13:24:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87852-20120530150758.patch</filename>
            <type>text/plain</type>
            <size>12288</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExODkyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA1LTMwICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIENhbGwg
ZmlsZVV0aWxpdGllcyBtZXRob2RzIGRpcmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzg1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2YgYSByZWZhY3RvcmluZyBzZXJpZXMuIFNlZSB0
cmFja2luZyBidWcgODI5NDguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0
YUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmRlbGV0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1l
dGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VB
bGxEaXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjbG9zZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6c2Vla0ZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6dHJ1bmNhdGVGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRGcm9tRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChQbGF0Zm9ybVN1cHBvcnQpOgor
CiAyMDEyLTA1LTMwICBBbGV4ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgdHJhY2UoKSBtZXRob2QgdG8gdGhlIFdvcmtlckNv
bnNvbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdEYXRhQ2hy
b21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0RyYWdEYXRhQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMTg5MTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0YUNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsOSArMzgsMTEgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlBsYXRmb3Jt
U3VwcG9ydC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogCisjaW5jbHVkZSA8cHVibGljL1BsYXRm
b3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaD4KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBjb250YWluc0hUTUwoY29uc3QgQ2hyb21pdW1EYXRh
T2JqZWN0KiBkcm9wRGF0YSkKQEAgLTU3LDEwICs1OSwxMiBAQCBib29sIERyYWdEYXRhOjpjb250
YWluc1VSTChGcmFtZSosIEZpbGVuCiBTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZyYW1lKiwgRmls
ZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjb25z
dAogewogICAgIFN0cmluZyB1cmw7CisgICAgU3RyaW5nIHBhdGg7CiAgICAgaWYgKG1fcGxhdGZv
cm1EcmFnRGF0YS0+dHlwZXMoKS5jb250YWlucyhtaW1lVHlwZVRleHRVUklMaXN0KSkKICAgICAg
ICAgbV9wbGF0Zm9ybURyYWdEYXRhLT51cmxBbmRUaXRsZSh1cmwsIHRpdGxlKTsKICAgICBlbHNl
IGlmIChmaWxlbmFtZVBvbGljeSA9PSBDb252ZXJ0RmlsZW5hbWVzICYmIGNvbnRhaW5zRmlsZXMo
KSkgewotICAgICAgICB1cmwgPSBQbGF0Zm9ybVN1cHBvcnQ6OmZpbGVQYXRoVG9VUkwoUGxhdGZv
cm1TdXBwb3J0OjpnZXRBYnNvbHV0ZVBhdGgobV9wbGF0Zm9ybURyYWdEYXRhLT5maWxlbmFtZXMo
KVswXSkpOworICAgICAgICBwYXRoID0gU3RyaW5nKFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQo
KS0+ZmlsZVV0aWxpdGllcygpLT5nZXRBYnNvbHV0ZVBhdGgobV9wbGF0Zm9ybURyYWdEYXRhLT5m
aWxlbmFtZXMoKVswXSkpOworICAgICAgICB1cmwgPSBLVVJMKFdlYktpdDo6UGxhdGZvcm06OmN1
cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT5maWxlUGF0aFRvVVJMKHBhdGgpKTsKICAgICB9CiAg
ICAgcmV0dXJuIHVybDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcAkocmV2aXNpb24gMTE4OTE2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsMjcgKzM0LDI3IEBACiAjaW5jbHVkZSAiRmlsZU1ldGFk
YXRhLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgogCiAjaW5jbHVkZSA8cHVibGlj
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkZpbGVJbmZvLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29s
IGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1
cHBvcnQ6OmRlbGV0ZUZpbGUocGF0aCk7CisgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1
cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT5kZWxldGVGaWxlKHBhdGgpOwogfQogCiBib29sIGRl
bGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICByZXR1cm4gUGxh
dGZvcm1TdXBwb3J0OjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKKyAgICByZXR1cm4gV2Vi
S2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KHBhdGgpOwogfQogCiBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwg
bG9uZyBsb25nJiByZXN1bHQpCiB7CiAgICAgRmlsZU1ldGFkYXRhIG1ldGFkYXRhOwotICAgIGlm
ICghUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTWV0YWRhdGEocGF0aCwgbWV0YWRhdGEpKQorICAg
IGlmICghZ2V0RmlsZU1ldGFkYXRhKHBhdGgsIG1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJlc3VsdCA9IG1ldGFkYXRhLmxlbmd0aDsKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTYzLDcgKzYzLDcgQEAgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbgog
Ym9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYg
cmVzdWx0KQogewogICAgIEZpbGVNZXRhZGF0YSBtZXRhZGF0YTsKLSAgICBpZiAoIVBsYXRmb3Jt
U3VwcG9ydDo6Z2V0RmlsZU1ldGFkYXRhKHBhdGgsIG1ldGFkYXRhKSkKKyAgICBpZiAoIWdldEZp
bGVNZXRhZGF0YShwYXRoLCBtZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBy
ZXN1bHQgPSBtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lOwogICAgIHJldHVybiB0cnVlOwpAQCAt
NzEsMjIgKzcxLDI4IEBAIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW4K
IAogYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEm
IG1ldGFkYXRhKQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZpbGVNZXRhZGF0
YShwYXRoLCBtZXRhZGF0YSk7CisgICAgV2ViS2l0OjpXZWJGaWxlSW5mbyB3ZWJGaWxlSW5mbzsK
KyAgICBpZiAoIVdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT5n
ZXRGaWxlSW5mbyhwYXRoLCB3ZWJGaWxlSW5mbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lID0gd2ViRmlsZUluZm8ubW9kaWZpY2F0aW9uVGlt
ZTsKKyAgICBtZXRhZGF0YS5sZW5ndGggPSB3ZWJGaWxlSW5mby5sZW5ndGg7CisgICAgbWV0YWRh
dGEudHlwZSA9IHN0YXRpY19jYXN0PEZpbGVNZXRhZGF0YTo6VHlwZT4od2ViRmlsZUluZm8udHlw
ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpkaXJlY3RvcnlOYW1l
KHBhdGgpOworICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZpbGVVdGls
aXRpZXMoKS0+ZGlyZWN0b3J5TmFtZShwYXRoKTsKIH0KIAogU3RyaW5nIHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQog
ewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChw
YXRoLCBjb21wb25lbnQpOworICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCkt
PmZpbGVVdGlsaXRpZXMoKS0+cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGNvbXBvbmVu
dCk7CiB9CiAKIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
LSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjptYWtlQWxsRGlyZWN0b3JpZXMocGF0aCk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT5t
YWtlQWxsRGlyZWN0b3JpZXMocGF0aCk7CiB9CiAKIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJp
bmcmIHBhdGgpCkBAIC05NiwzMiArMTAyLDMyIEBAIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJp
bmcmIHBhdGgpCiAKIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6Om9w
ZW5GaWxlKHBhdGgsIG1vZGUpOworICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50
KCktPmZpbGVVdGlsaXRpZXMoKS0+b3BlbkZpbGUocGF0aCwgbW9kZSk7CiB9CiAKIHZvaWQgY2xv
c2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQogewotICAgIHJldHVybiBQbGF0Zm9y
bVN1cHBvcnQ6OmNsb3NlRmlsZShoYW5kbGUpOworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJl
bnQoKS0+ZmlsZVV0aWxpdGllcygpLT5jbG9zZUZpbGUoaGFuZGxlKTsKIH0KIAogbG9uZyBsb25n
IHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZp
bGVTZWVrT3JpZ2luIG9yaWdpbikKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpzZWVr
RmlsZShoYW5kbGUsIG9mZnNldCwgb3JpZ2luKTsKKyAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9y
bTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPnNlZWtGaWxlKGhhbmRsZSwgb2Zmc2V0LCBv
cmlnaW4pOwogfQogCiBib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
LCBsb25nIGxvbmcgb2Zmc2V0KQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OnRydW5j
YXRlRmlsZShoYW5kbGUsIG9mZnNldCk7CisgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1
cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT50cnVuY2F0ZUZpbGUoaGFuZGxlLCBvZmZzZXQpOwog
fQogCiBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6cmVhZEZyb21G
aWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6
Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPnJlYWRGcm9tRmlsZShoYW5kbGUsIGRhdGEsIGxl
bmd0aCk7CiB9CiAKIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBv
cnQ6OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPndyaXRlVG9GaWxlKGhhbmRs
ZSwgZGF0YSwgbGVuZ3RoKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgJKHJldmlzaW9u
IDExODkxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3Vw
cG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsMjMgKzEyMiw2IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBkZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBjb29raWVzRW5hYmxlZChj
b25zdCBEb2N1bWVudCopOwogCi0gICAgLy8gRmlsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBzdGF0aWMgYm9vbCBk
ZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZUVtcHR5RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBib29sIGdldEZpbGVNZXRhZGF0YShj
b25zdCBTdHJpbmcmLCBGaWxlTWV0YWRhdGEmIHJlc3VsdCk7Ci0gICAgc3RhdGljIFN0cmluZyBk
aXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0gICAgc3RhdGljIFN0cmluZyBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNv
bXBvbmVudCk7Ci0gICAgc3RhdGljIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmlu
ZyYgcGF0aCk7Ci0gICAgc3RhdGljIFN0cmluZyBnZXRBYnNvbHV0ZVBhdGgoY29uc3QgU3RyaW5n
Jik7Ci0gICAgc3RhdGljIGJvb2wgaXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci0gICAgc3Rh
dGljIEtVUkwgZmlsZVBhdGhUb1VSTChjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgUGxhdGZv
cm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsK
LSAgICBzdGF0aWMgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7Ci0gICAgc3Rh
dGljIGxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEZpbGVTZWVrT3JpZ2luKTsKLSAgICBzdGF0aWMgYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KTsKLSAgICBzdGF0aWMgaW50IHJlYWRGcm9t
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwotICAgIHN0
YXRpYyBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKTsKLQogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBzdGF0aWMgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGNyZWF0ZUFzeW5jRmlsZVN5c3RlbSgpOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE4OTIyKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxMi0wNS0zMCAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW0Nocm9taXVtXSBDYWxsIGZpbGVVdGlsaXRpZXMgbWV0aG9kcyBkaXJlY3RseQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc4NTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEg
cmVmYWN0b3Jpbmcgc2VyaWVzLiBTZWUgdHJhY2tpbmcgYnVnIDgyOTQ4LgorCisgICAgICAgICog
c3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNS0z
MCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNYXRj
aCBGaXJlZm94IHJlc3RyaWN0aW9ucyB0byB3aW5kb3cuYmx1ciBhbmQgd2luZG93LmZvY3VzCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAJ
KHJldmlzaW9uIDExODkxNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3Jt
U3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMiw4NyArMzAyLDYgQEAgYm9vbCBQbGF0
Zm9ybVN1cHBvcnQ6OmNvb2tpZXNFbmFibGVkKGNvbgogCiAvLyBGaWxlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1ib29sIFBsYXRmb3JtU3VwcG9ydDo6ZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgp
Ci17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGll
cygpLT5kZWxldGVGaWxlKHBhdGgpOwotfQotCi1ib29sIFBsYXRmb3JtU3VwcG9ydDo6ZGVsZXRl
RW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBXZWJLaXQ6
OlBsYXRmb3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+ZGVsZXRlRW1wdHlEaXJlY3Rv
cnkocGF0aCk7Ci19Ci0KLWJvb2wgUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTWV0YWRhdGEoY29u
c3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEmIHJlc3VsdCkKLXsKLSAgICBXZWJGaWxlSW5m
byB3ZWJGaWxlSW5mbzsKLSAgICBpZiAoIXdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5maWxlVXRp
bGl0aWVzKCktPmdldEZpbGVJbmZvKHBhdGgsIHdlYkZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJlc3VsdC5tb2RpZmljYXRpb25UaW1lID0gd2ViRmlsZUluZm8ubW9kaWZp
Y2F0aW9uVGltZTsKLSAgICByZXN1bHQubGVuZ3RoID0gd2ViRmlsZUluZm8ubGVuZ3RoOwotICAg
IHJlc3VsdC50eXBlID0gc3RhdGljX2Nhc3Q8RmlsZU1ldGFkYXRhOjpUeXBlPih3ZWJGaWxlSW5m
by50eXBlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotU3RyaW5nIFBsYXRmb3JtU3VwcG9ydDo6
ZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6
UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT5kaXJlY3RvcnlOYW1lKHBhdGgp
OwotfQotCi1TdHJpbmcgUGxhdGZvcm1TdXBwb3J0OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKLXsKLSAgICByZXR1
cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChwYXRoLCBjb21wb25lbnQpOwotfQotCi1ib29sIFBsYXRmb3JtU3Vw
cG9ydDo6bWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1
cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPm1ha2VBbGxE
aXJlY3RvcmllcyhwYXRoKTsKLX0KLQotU3RyaW5nIFBsYXRmb3JtU3VwcG9ydDo6Z2V0QWJzb2x1
dGVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9y
bTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmdldEFic29sdXRlUGF0aChwYXRoKTsKLX0K
LQotYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OmlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkK
LXsKLSAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVz
KCktPmlzRGlyZWN0b3J5KHBhdGgpOwotfQotCi1LVVJMIFBsYXRmb3JtU3VwcG9ydDo6ZmlsZVBh
dGhUb1VSTChjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGxhdGZv
cm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT5maWxlUGF0aFRvVVJMKHBhdGgpOwotfQot
Ci1QbGF0Zm9ybUZpbGVIYW5kbGUgUGxhdGZvcm1TdXBwb3J0OjpvcGVuRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQotewotICAgIHJldHVybiBXZWJLaXQ6OlBsYXRm
b3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+b3BlbkZpbGUocGF0aCwgbW9kZSk7Ci19
Ci0KLXZvaWQgUGxhdGZvcm1TdXBwb3J0OjpjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBo
YW5kbGUpCi17Ci0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVz
KCktPmNsb3NlRmlsZShoYW5kbGUpOwotfQotCi1sb25nIGxvbmcgUGxhdGZvcm1TdXBwb3J0Ojpz
ZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxl
U2Vla09yaWdpbiBvcmlnaW4pCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJl
bnQoKS0+ZmlsZVV0aWxpdGllcygpLT5zZWVrRmlsZShoYW5kbGUsIG9mZnNldCwgb3JpZ2luKTsK
LX0KLQotYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OnRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KQotewotICAgIHJldHVybiBXZWJLaXQ6OlBsYXRm
b3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+dHJ1bmNhdGVGaWxlKGhhbmRsZSwgb2Zm
c2V0KTsKLX0KLQotaW50IFBsYXRmb3JtU3VwcG9ydDo6cmVhZEZyb21GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFdl
YktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT5yZWFkRnJvbUZpbGUo
aGFuZGxlLCBkYXRhLCBsZW5ndGgpOwotfQotCi1pbnQgUGxhdGZvcm1TdXBwb3J0Ojp3cml0ZVRv
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKQotewotICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZpbGVVdGls
aXRpZXMoKS0+d3JpdGVUb0ZpbGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgpOwotfQotCiAjaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQogUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IFBsYXRmb3JtU3Vw
cG9ydDo6Y3JlYXRlQXN5bmNGaWxlU3lzdGVtKCkKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144904</attachid>
            <date>2012-05-30 13:24:38 -0700</date>
            <delta_ts>2012-05-30 13:30:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87852-20120530162359.patch</filename>
            <type>text/plain</type>
            <size>12176</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExODkyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA1LTMwICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIENhbGwg
ZmlsZVV0aWxpdGllcyBtZXRob2RzIGRpcmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzg1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2YgYSByZWZhY3RvcmluZyBzZXJpZXMuIFNlZSB0
cmFja2luZyBidWcgODI5NDguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0
YUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmRlbGV0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1l
dGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VB
bGxEaXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjbG9zZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6c2Vla0ZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6dHJ1bmNhdGVGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRGcm9tRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChQbGF0Zm9ybVN1cHBvcnQpOgor
CiAyMDEyLTA1LTMwICBBbGV4ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgdHJhY2UoKSBtZXRob2QgdG8gdGhlIFdvcmtlckNv
bnNvbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdEYXRhQ2hy
b21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0RyYWdEYXRhQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMTg5MTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0YUNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsOSArMzgsMTEgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlBsYXRmb3Jt
U3VwcG9ydC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogCisjaW5jbHVkZSA8cHVibGljL1BsYXRm
b3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaD4KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBjb250YWluc0hUTUwoY29uc3QgQ2hyb21pdW1EYXRh
T2JqZWN0KiBkcm9wRGF0YSkKQEAgLTYwLDcgKzYyLDkgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VS
TChGcmFtZSosIEZpbGVuYW1lQwogICAgIGlmIChtX3BsYXRmb3JtRHJhZ0RhdGEtPnR5cGVzKCku
Y29udGFpbnMobWltZVR5cGVUZXh0VVJJTGlzdCkpCiAgICAgICAgIG1fcGxhdGZvcm1EcmFnRGF0
YS0+dXJsQW5kVGl0bGUodXJsLCB0aXRsZSk7CiAgICAgZWxzZSBpZiAoZmlsZW5hbWVQb2xpY3kg
PT0gQ29udmVydEZpbGVuYW1lcyAmJiBjb250YWluc0ZpbGVzKCkpIHsKLSAgICAgICAgdXJsID0g
UGxhdGZvcm1TdXBwb3J0OjpmaWxlUGF0aFRvVVJMKFBsYXRmb3JtU3VwcG9ydDo6Z2V0QWJzb2x1
dGVQYXRoKG1fcGxhdGZvcm1EcmFnRGF0YS0+ZmlsZW5hbWVzKClbMF0pKTsKKyAgICAgICAgU3Ry
aW5nIHBhdGg7CisgICAgICAgIHBhdGggPSBTdHJpbmcoV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVu
dCgpLT5maWxlVXRpbGl0aWVzKCktPmdldEFic29sdXRlUGF0aChtX3BsYXRmb3JtRHJhZ0RhdGEt
PmZpbGVuYW1lcygpWzBdKSk7CisgICAgICAgIHVybCA9IEtVUkwoV2ViS2l0OjpQbGF0Zm9ybTo6
Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmZpbGVQYXRoVG9VUkwocGF0aCkpOwogICAgIH0K
ICAgICByZXR1cm4gdXJsOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMTg5MTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwyNyArMzQsMjcgQEAKICNpbmNsdWRlICJGaWxlTWV0
YWRhdGEuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCiAKICNpbmNsdWRlIDxwdWJs
aWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsZUluZm8uaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViRmlsZVV0aWxpdGllcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJv
b2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3Jt
U3VwcG9ydDo6ZGVsZXRlRmlsZShwYXRoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6
Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmRlbGV0ZUZpbGUocGF0aCk7CiB9CiAKIGJvb2wg
ZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiBQ
bGF0Zm9ybVN1cHBvcnQ6OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOworICAgIHJldHVybiBX
ZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+ZGVsZXRlRW1wdHlE
aXJlY3RvcnkocGF0aCk7CiB9CiAKIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRo
LCBsb25nIGxvbmcmIHJlc3VsdCkKIHsKICAgICBGaWxlTWV0YWRhdGEgbWV0YWRhdGE7Ci0gICAg
aWYgKCFQbGF0Zm9ybVN1cHBvcnQ6OmdldEZpbGVNZXRhZGF0YShwYXRoLCBtZXRhZGF0YSkpCisg
ICAgaWYgKCFnZXRGaWxlTWV0YWRhdGEocGF0aCwgbWV0YWRhdGEpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmVzdWx0ID0gbWV0YWRhdGEubGVuZ3RoOwogICAgIHJldHVybiB0cnVlOwpA
QCAtNjMsNyArNjMsNyBAQCBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9u
CiBib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90
JiByZXN1bHQpCiB7CiAgICAgRmlsZU1ldGFkYXRhIG1ldGFkYXRhOwotICAgIGlmICghUGxhdGZv
cm1TdXBwb3J0OjpnZXRGaWxlTWV0YWRhdGEocGF0aCwgbWV0YWRhdGEpKQorICAgIGlmICghZ2V0
RmlsZU1ldGFkYXRhKHBhdGgsIG1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IHJlc3VsdCA9IG1ldGFkYXRhLm1vZGlmaWNhdGlvblRpbWU7CiAgICAgcmV0dXJuIHRydWU7CkBA
IC03MSwyMiArNzEsMjggQEAgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJp
bgogCiBib29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0
YSYgbWV0YWRhdGEpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6Z2V0RmlsZU1ldGFk
YXRhKHBhdGgsIG1ldGFkYXRhKTsKKyAgICBXZWJLaXQ6OldlYkZpbGVJbmZvIHdlYkZpbGVJbmZv
OworICAgIGlmICghV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCkt
PmdldEZpbGVJbmZvKHBhdGgsIHdlYkZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIG1ldGFkYXRhLm1vZGlmaWNhdGlvblRpbWUgPSB3ZWJGaWxlSW5mby5tb2RpZmljYXRpb25U
aW1lOworICAgIG1ldGFkYXRhLmxlbmd0aCA9IHdlYkZpbGVJbmZvLmxlbmd0aDsKKyAgICBtZXRh
ZGF0YS50eXBlID0gc3RhdGljX2Nhc3Q8RmlsZU1ldGFkYXRhOjpUeXBlPih3ZWJGaWxlSW5mby50
eXBlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OmRpcmVjdG9yeU5h
bWUocGF0aCk7CisgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0
aWxpdGllcygpLT5kaXJlY3RvcnlOYW1lKHBhdGgpOwogfQogCiBTdHJpbmcgcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQp
CiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHBhdGgsIGNvbXBvbmVudCk7CisgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQo
KS0+ZmlsZVV0aWxpdGllcygpLT5wYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgY29tcG9u
ZW50KTsKIH0KIAogYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQog
ewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRoKTsK
KyAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCkt
Pm1ha2VBbGxEaXJlY3RvcmllcyhwYXRoKTsKIH0KIAogYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0
cmluZyYgcGF0aCkKQEAgLTk2LDMyICsxMDIsMzIgQEAgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0
cmluZyYgcGF0aCkKIAogUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6
b3BlbkZpbGUocGF0aCwgbW9kZSk7CisgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJl
bnQoKS0+ZmlsZVV0aWxpdGllcygpLT5vcGVuRmlsZShwYXRoLCBtb2RlKTsKIH0KIAogdm9pZCBj
bG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCiB7Ci0gICAgcmV0dXJuIFBsYXRm
b3JtU3VwcG9ydDo6Y2xvc2VGaWxlKGhhbmRsZSk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmNsb3NlRmlsZShoYW5kbGUpOwogfQogCiBsb25nIGxv
bmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwg
RmlsZVNlZWtPcmlnaW4gb3JpZ2luKQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OnNl
ZWtGaWxlKGhhbmRsZSwgb2Zmc2V0LCBvcmlnaW4pOworICAgIHJldHVybiBXZWJLaXQ6OlBsYXRm
b3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+c2Vla0ZpbGUoaGFuZGxlLCBvZmZzZXQs
IG9yaWdpbik7CiB9CiAKIGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUsIGxvbmcgbG9uZyBvZmZzZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6dHJ1
bmNhdGVGaWxlKGhhbmRsZSwgb2Zmc2V0KTsKKyAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6
Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPnRydW5jYXRlRmlsZShoYW5kbGUsIG9mZnNldCk7
CiB9CiAKIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpyZWFkRnJv
bUZpbGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgpOworICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3Jt
OjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+cmVhZEZyb21GaWxlKGhhbmRsZSwgZGF0YSwg
bGVuZ3RoKTsKIH0KIAogaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3Vw
cG9ydDo6d3JpdGVUb0ZpbGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgpOworICAgIHJldHVybiBXZWJL
aXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+d3JpdGVUb0ZpbGUoaGFu
ZGxlLCBkYXRhLCBsZW5ndGgpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAkocmV2aXNp
b24gMTE4OTE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1T
dXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiwyMyArMTIyLDYgQEAgcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogICAgIHN0YXRpYyBib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IERvY3VtZW50Kik7CiAKLSAgICAvLyBGaWxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHN0YXRpYyBib29s
IGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlRW1wdHlE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0RmlsZU1ldGFkYXRh
KGNvbnN0IFN0cmluZyYsIEZpbGVNZXRhZGF0YSYgcmVzdWx0KTsKLSAgICBzdGF0aWMgU3RyaW5n
IGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICBzdGF0aWMgU3RyaW5nIHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
Y29tcG9uZW50KTsKLSAgICBzdGF0aWMgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKLSAgICBzdGF0aWMgU3RyaW5nIGdldEFic29sdXRlUGF0aChjb25zdCBTdHJp
bmcmKTsKLSAgICBzdGF0aWMgYm9vbCBpc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSAgICBz
dGF0aWMgS1VSTCBmaWxlUGF0aFRvVVJMKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBQbGF0
Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUp
OwotICAgIHN0YXRpYyB2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKLSAgICBz
dGF0aWMgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9m
ZnNldCwgRmlsZVNlZWtPcmlnaW4pOwotICAgIHN0YXRpYyBib29sIHRydW5jYXRlRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOwotICAgIHN0YXRpYyBpbnQgcmVhZEZy
b21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7Ci0gICAg
c3RhdGljIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpOwotCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gY3JlYXRlQXN5bmNGaWxlU3lzdGVtKCk7CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTg5MjIpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE1IEBACisyMDEyLTA1LTMwICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbQ2hyb21pdW1dIENhbGwgZmlsZVV0aWxpdGllcyBtZXRob2RzIGRpcmVjdGx5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzg1Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2Yg
YSByZWZhY3RvcmluZyBzZXJpZXMuIFNlZSB0cmFja2luZyBidWcgODI5NDguCisKKyAgICAgICAg
KiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA1
LTMwICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1h
dGNoIEZpcmVmb3ggcmVzdHJpY3Rpb25zIHRvIHdpbmRvdy5ibHVyIGFuZCB3aW5kb3cuZm9jdXMK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNw
cAkocmV2aXNpb24gMTE4OTE2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZv
cm1TdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAyLDg3ICszMDIsNiBAQCBib29sIFBs
YXRmb3JtU3VwcG9ydDo6Y29va2llc0VuYWJsZWQoY29uCiAKIC8vIEZpbGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLWJvb2wgUGxhdGZvcm1TdXBwb3J0OjpkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0
aWVzKCktPmRlbGV0ZUZpbGUocGF0aCk7Ci19Ci0KLWJvb2wgUGxhdGZvcm1TdXBwb3J0OjpkZWxl
dGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIFdlYktp
dDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT5kZWxldGVFbXB0eURpcmVj
dG9yeShwYXRoKTsKLX0KLQotYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZpbGVNZXRhZGF0YShj
b25zdCBTdHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgcmVzdWx0KQotewotICAgIFdlYkZpbGVJ
bmZvIHdlYkZpbGVJbmZvOwotICAgIGlmICghd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmZpbGVV
dGlsaXRpZXMoKS0+Z2V0RmlsZUluZm8ocGF0aCwgd2ViRmlsZUluZm8pKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSB3ZWJGaWxlSW5mby5tb2Rp
ZmljYXRpb25UaW1lOwotICAgIHJlc3VsdC5sZW5ndGggPSB3ZWJGaWxlSW5mby5sZW5ndGg7Ci0g
ICAgcmVzdWx0LnR5cGUgPSBzdGF0aWNfY2FzdDxGaWxlTWV0YWRhdGE6OlR5cGU+KHdlYkZpbGVJ
bmZvLnR5cGUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1TdHJpbmcgUGxhdGZvcm1TdXBwb3J0
OjpkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmRpcmVjdG9yeU5hbWUocGF0
aCk7Ci19Ci0KLVN0cmluZyBQbGF0Zm9ybVN1cHBvcnQ6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQotewotICAgIHJl
dHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGNvbXBvbmVudCk7Ci19Ci0KLWJvb2wgUGxhdGZvcm1T
dXBwb3J0OjptYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJl
dHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+bWFrZUFs
bERpcmVjdG9yaWVzKHBhdGgpOwotfQotCi1TdHJpbmcgUGxhdGZvcm1TdXBwb3J0OjpnZXRBYnNv
bHV0ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBXZWJLaXQ6OlBsYXRm
b3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+Z2V0QWJzb2x1dGVQYXRoKHBhdGgpOwot
fQotCi1ib29sIFBsYXRmb3JtU3VwcG9ydDo6aXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRo
KQotewotICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRp
ZXMoKS0+aXNEaXJlY3RvcnkocGF0aCk7Ci19Ci0KLUtVUkwgUGxhdGZvcm1TdXBwb3J0OjpmaWxl
UGF0aFRvVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpQbGF0
Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmZpbGVQYXRoVG9VUkwocGF0aCk7Ci19
Ci0KLVBsYXRmb3JtRmlsZUhhbmRsZSBQbGF0Zm9ybVN1cHBvcnQ6Om9wZW5GaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGxh
dGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT5vcGVuRmlsZShwYXRoLCBtb2RlKTsK
LX0KLQotdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUm
IGhhbmRsZSkKLXsKLSAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRp
ZXMoKS0+Y2xvc2VGaWxlKGhhbmRsZSk7Ci19Ci0KLWxvbmcgbG9uZyBQbGF0Zm9ybVN1cHBvcnQ6
OnNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZp
bGVTZWVrT3JpZ2luIG9yaWdpbikKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT5maWxlVXRpbGl0aWVzKCktPnNlZWtGaWxlKGhhbmRsZSwgb2Zmc2V0LCBvcmlnaW4p
OwotfQotCi1ib29sIFBsYXRmb3JtU3VwcG9ydDo6dHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGxh
dGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT50cnVuY2F0ZUZpbGUoaGFuZGxlLCBv
ZmZzZXQpOwotfQotCi1pbnQgUGxhdGZvcm1TdXBwb3J0OjpyZWFkRnJvbUZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICByZXR1cm4g
V2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPnJlYWRGcm9tRmls
ZShoYW5kbGUsIGRhdGEsIGxlbmd0aCk7Ci19Ci0KLWludCBQbGF0Zm9ybVN1cHBvcnQ6OndyaXRl
VG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0
aWxpdGllcygpLT53cml0ZVRvRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCk7Ci19Ci0KICNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCiBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gUGxhdGZvcm1T
dXBwb3J0OjpjcmVhdGVBc3luY0ZpbGVTeXN0ZW0oKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144907</attachid>
            <date>2012-05-30 13:30:41 -0700</date>
            <delta_ts>2012-05-30 19:31:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87852-20120530163002.patch</filename>
            <type>text/plain</type>
            <size>12161</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExODkyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA1LTMwICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIENhbGwg
ZmlsZVV0aWxpdGllcyBtZXRob2RzIGRpcmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzg1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2YgYSByZWZhY3RvcmluZyBzZXJpZXMuIFNlZSB0
cmFja2luZyBidWcgODI5NDguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0
YUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmRlbGV0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1l
dGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VB
bGxEaXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjbG9zZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6c2Vla0ZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6dHJ1bmNhdGVGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRGcm9tRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChQbGF0Zm9ybVN1cHBvcnQpOgor
CiAyMDEyLTA1LTMwICBBbGV4ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgdHJhY2UoKSBtZXRob2QgdG8gdGhlIFdvcmtlckNv
bnNvbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdEYXRhQ2hy
b21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0RyYWdEYXRhQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMTg5MTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0YUNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsOSArMzgsMTEgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlBsYXRmb3Jt
U3VwcG9ydC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogCisjaW5jbHVkZSA8cHVibGljL1BsYXRm
b3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaD4KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBjb250YWluc0hUTUwoY29uc3QgQ2hyb21pdW1EYXRh
T2JqZWN0KiBkcm9wRGF0YSkKQEAgLTYwLDcgKzYyLDggQEAgU3RyaW5nIERyYWdEYXRhOjphc1VS
TChGcmFtZSosIEZpbGVuYW1lQwogICAgIGlmIChtX3BsYXRmb3JtRHJhZ0RhdGEtPnR5cGVzKCku
Y29udGFpbnMobWltZVR5cGVUZXh0VVJJTGlzdCkpCiAgICAgICAgIG1fcGxhdGZvcm1EcmFnRGF0
YS0+dXJsQW5kVGl0bGUodXJsLCB0aXRsZSk7CiAgICAgZWxzZSBpZiAoZmlsZW5hbWVQb2xpY3kg
PT0gQ29udmVydEZpbGVuYW1lcyAmJiBjb250YWluc0ZpbGVzKCkpIHsKLSAgICAgICAgdXJsID0g
UGxhdGZvcm1TdXBwb3J0OjpmaWxlUGF0aFRvVVJMKFBsYXRmb3JtU3VwcG9ydDo6Z2V0QWJzb2x1
dGVQYXRoKG1fcGxhdGZvcm1EcmFnRGF0YS0+ZmlsZW5hbWVzKClbMF0pKTsKKyAgICAgICAgU3Ry
aW5nIHBhdGggPSBTdHJpbmcoV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0
aWVzKCktPmdldEFic29sdXRlUGF0aChtX3BsYXRmb3JtRHJhZ0RhdGEtPmZpbGVuYW1lcygpWzBd
KSk7CisgICAgICAgIHVybCA9IEtVUkwoV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxl
VXRpbGl0aWVzKCktPmZpbGVQYXRoVG9VUkwocGF0aCkpOwogICAgIH0KICAgICByZXR1cm4gdXJs
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNo
cm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMTg5MTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCwyNyArMzQsMjcgQEAKICNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5j
bHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCiAKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4K
KyNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsZUluZm8uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmls
ZVV0aWxpdGllcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgZGVsZXRlRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6ZGVsZXRl
RmlsZShwYXRoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxl
VXRpbGl0aWVzKCktPmRlbGV0ZUZpbGUocGF0aCk7CiB9CiAKIGJvb2wgZGVsZXRlRW1wdHlEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6
OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOworICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3Jt
OjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7
CiB9CiAKIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJl
c3VsdCkKIHsKICAgICBGaWxlTWV0YWRhdGEgbWV0YWRhdGE7Ci0gICAgaWYgKCFQbGF0Zm9ybVN1
cHBvcnQ6OmdldEZpbGVNZXRhZGF0YShwYXRoLCBtZXRhZGF0YSkpCisgICAgaWYgKCFnZXRGaWxl
TWV0YWRhdGEocGF0aCwgbWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVz
dWx0ID0gbWV0YWRhdGEubGVuZ3RoOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjMsNyArNjMsNyBA
QCBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uCiBib29sIGdldEZpbGVN
b2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiB7CiAg
ICAgRmlsZU1ldGFkYXRhIG1ldGFkYXRhOwotICAgIGlmICghUGxhdGZvcm1TdXBwb3J0OjpnZXRG
aWxlTWV0YWRhdGEocGF0aCwgbWV0YWRhdGEpKQorICAgIGlmICghZ2V0RmlsZU1ldGFkYXRhKHBh
dGgsIG1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdCA9IG1ldGFk
YXRhLm1vZGlmaWNhdGlvblRpbWU7CiAgICAgcmV0dXJuIHRydWU7CkBAIC03MSwyMiArNzEsMjgg
QEAgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbgogCiBib29sIGdldEZp
bGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7
Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6Z2V0RmlsZU1ldGFkYXRhKHBhdGgsIG1ldGFk
YXRhKTsKKyAgICBXZWJLaXQ6OldlYkZpbGVJbmZvIHdlYkZpbGVJbmZvOworICAgIGlmICghV2Vi
S2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmdldEZpbGVJbmZvKHBh
dGgsIHdlYkZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1ldGFkYXRhLm1v
ZGlmaWNhdGlvblRpbWUgPSB3ZWJGaWxlSW5mby5tb2RpZmljYXRpb25UaW1lOworICAgIG1ldGFk
YXRhLmxlbmd0aCA9IHdlYkZpbGVJbmZvLmxlbmd0aDsKKyAgICBtZXRhZGF0YS50eXBlID0gc3Rh
dGljX2Nhc3Q8RmlsZU1ldGFkYXRhOjpUeXBlPih3ZWJGaWxlSW5mby50eXBlKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQog
ewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OmRpcmVjdG9yeU5hbWUocGF0aCk7CisgICAg
cmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT5kaXJl
Y3RvcnlOYW1lKHBhdGgpOwogfQogCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7Ci0gICAgcmV0dXJu
IFBsYXRmb3JtU3VwcG9ydDo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGNvbXBvbmVu
dCk7CisgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGll
cygpLT5wYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgY29tcG9uZW50KTsKIH0KIAogYm9v
bCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiBQ
bGF0Zm9ybVN1cHBvcnQ6Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRoKTsKKyAgICByZXR1cm4gV2Vi
S2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPm1ha2VBbGxEaXJlY3Rv
cmllcyhwYXRoKTsKIH0KIAogYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKQEAg
LTk2LDMyICsxMDIsMzIgQEAgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKIAog
UGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5N
b2RlIG1vZGUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6b3BlbkZpbGUocGF0aCwg
bW9kZSk7CisgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxp
dGllcygpLT5vcGVuRmlsZShwYXRoLCBtb2RlKTsKIH0KIAogdm9pZCBjbG9zZUZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlJiBoYW5kbGUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6Y2xv
c2VGaWxlKGhhbmRsZSk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRp
bGl0aWVzKCktPmNsb3NlRmlsZShoYW5kbGUpOwogfQogCiBsb25nIGxvbmcgc2Vla0ZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4g
b3JpZ2luKQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OnNlZWtGaWxlKGhhbmRsZSwg
b2Zmc2V0LCBvcmlnaW4pOworICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCkt
PmZpbGVVdGlsaXRpZXMoKS0+c2Vla0ZpbGUoaGFuZGxlLCBvZmZzZXQsIG9yaWdpbik7CiB9CiAK
IGJvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBv
ZmZzZXQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6dHJ1bmNhdGVGaWxlKGhhbmRs
ZSwgb2Zmc2V0KTsKKyAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxl
VXRpbGl0aWVzKCktPnRydW5jYXRlRmlsZShoYW5kbGUsIG9mZnNldCk7CiB9CiAKIGludCByZWFk
RnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBk
YXRhLCBsZW5ndGgpOworICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZp
bGVVdGlsaXRpZXMoKS0+cmVhZEZyb21GaWxlKGhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKIH0KIAog
aW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6d3JpdGVUb0Zp
bGUoaGFuZGxlLCBkYXRhLCBsZW5ndGgpOworICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpj
dXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+d3JpdGVUb0ZpbGUoaGFuZGxlLCBkYXRhLCBsZW5n
dGgpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAkocmV2aXNpb24gMTE4OTE2KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyMiwyMyArMTIyLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpOwogICAgIHN0YXRpYyBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50
Kik7CiAKLSAgICAvLyBGaWxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHN0YXRpYyBib29sIGRlbGV0ZUZpbGUoY29u
c3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYs
IEZpbGVNZXRhZGF0YSYgcmVzdWx0KTsKLSAgICBzdGF0aWMgU3RyaW5nIGRpcmVjdG9yeU5hbWUo
Y29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICBzdGF0aWMgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KTsKLSAg
ICBzdGF0aWMgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAg
ICBzdGF0aWMgU3RyaW5nIGdldEFic29sdXRlUGF0aChjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0
aWMgYm9vbCBpc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgS1VSTCBmaWxl
UGF0aFRvVVJMKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBQbGF0Zm9ybUZpbGVIYW5kbGUg
b3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUpOwotICAgIHN0YXRpYyB2
b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKLSAgICBzdGF0aWMgbG9uZyBsb25n
IHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtP
cmlnaW4pOwotICAgIHN0YXRpYyBib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUs
IGxvbmcgbG9uZyBvZmZzZXQpOwotICAgIHN0YXRpYyBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7Ci0gICAgc3RhdGljIGludCB3cml0
ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
OwotCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIHN0YXRpYyBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbT4gY3JlYXRlQXN5bmNGaWxlU3lzdGVtKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTg5MjIpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA1
LTMwICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hy
b21pdW1dIENhbGwgZmlsZVV0aWxpdGllcyBtZXRob2RzIGRpcmVjdGx5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzg1MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2YgYSByZWZhY3RvcmluZyBz
ZXJpZXMuIFNlZSB0cmFja2luZyBidWcgODI5NDguCisKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1T
dXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA1LTMwICBKb2NoZW4gRWlz
aW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1hdGNoIEZpcmVmb3ggcmVz
dHJpY3Rpb25zIHRvIHdpbmRvdy5ibHVyIGFuZCB3aW5kb3cuZm9jdXMKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkocmV2aXNpb24gMTE4
OTE2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAyLDg3ICszMDIsNiBAQCBib29sIFBsYXRmb3JtU3VwcG9ydDo6
Y29va2llc0VuYWJsZWQoY29uCiAKIC8vIEZpbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWJvb2wgUGxh
dGZvcm1TdXBwb3J0OjpkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1
cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmRlbGV0ZUZp
bGUocGF0aCk7Ci19Ci0KLWJvb2wgUGxhdGZvcm1TdXBwb3J0OjpkZWxldGVFbXB0eURpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1
cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT5kZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKLX0K
LQotYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBh
dGgsIEZpbGVNZXRhZGF0YSYgcmVzdWx0KQotewotICAgIFdlYkZpbGVJbmZvIHdlYkZpbGVJbmZv
OwotICAgIGlmICghd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmZpbGVVdGlsaXRpZXMoKS0+Z2V0
RmlsZUluZm8ocGF0aCwgd2ViRmlsZUluZm8pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSB3ZWJGaWxlSW5mby5tb2RpZmljYXRpb25UaW1lOwot
ICAgIHJlc3VsdC5sZW5ndGggPSB3ZWJGaWxlSW5mby5sZW5ndGg7Ci0gICAgcmVzdWx0LnR5cGUg
PSBzdGF0aWNfY2FzdDxGaWxlTWV0YWRhdGE6OlR5cGU+KHdlYkZpbGVJbmZvLnR5cGUpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1TdHJpbmcgUGxhdGZvcm1TdXBwb3J0OjpkaXJlY3RvcnlOYW1l
KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmRpcmVjdG9yeU5hbWUocGF0aCk7Ci19Ci0KLVN0cmlu
ZyBQbGF0Zm9ybVN1cHBvcnQ6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQotewotICAgIHJldHVybiBXZWJLaXQ6OlBs
YXRmb3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHBhdGgsIGNvbXBvbmVudCk7Ci19Ci0KLWJvb2wgUGxhdGZvcm1TdXBwb3J0OjptYWtlQWxs
RGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBXZWJLaXQ6OlBs
YXRmb3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+bWFrZUFsbERpcmVjdG9yaWVzKHBh
dGgpOwotfQotCi1TdHJpbmcgUGxhdGZvcm1TdXBwb3J0OjpnZXRBYnNvbHV0ZVBhdGgoY29uc3Qg
U3RyaW5nJiBwYXRoKQotewotICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCkt
PmZpbGVVdGlsaXRpZXMoKS0+Z2V0QWJzb2x1dGVQYXRoKHBhdGgpOwotfQotCi1ib29sIFBsYXRm
b3JtU3VwcG9ydDo6aXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHJldHVy
biBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+aXNEaXJlY3Rv
cnkocGF0aCk7Ci19Ci0KLUtVUkwgUGxhdGZvcm1TdXBwb3J0OjpmaWxlUGF0aFRvVVJMKGNvbnN0
IFN0cmluZyYgcGF0aCkKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgp
LT5maWxlVXRpbGl0aWVzKCktPmZpbGVQYXRoVG9VUkwocGF0aCk7Ci19Ci0KLVBsYXRmb3JtRmls
ZUhhbmRsZSBQbGF0Zm9ybVN1cHBvcnQ6Om9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmls
ZU9wZW5Nb2RlIG1vZGUpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQo
KS0+ZmlsZVV0aWxpdGllcygpLT5vcGVuRmlsZShwYXRoLCBtb2RlKTsKLX0KLQotdm9pZCBQbGF0
Zm9ybVN1cHBvcnQ6OmNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKLXsKLSAg
ICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMoKS0+Y2xvc2VGaWxl
KGhhbmRsZSk7Ci19Ci0KLWxvbmcgbG9uZyBQbGF0Zm9ybVN1cHBvcnQ6OnNlZWtGaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9y
aWdpbikKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRp
bGl0aWVzKCktPnNlZWtGaWxlKGhhbmRsZSwgb2Zmc2V0LCBvcmlnaW4pOwotfQotCi1ib29sIFBs
YXRmb3JtU3VwcG9ydDo6dHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxv
bmcgbG9uZyBvZmZzZXQpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQo
KS0+ZmlsZVV0aWxpdGllcygpLT50cnVuY2F0ZUZpbGUoaGFuZGxlLCBvZmZzZXQpOwotfQotCi1p
bnQgUGxhdGZvcm1TdXBwb3J0OjpyZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9y
bTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPnJlYWRGcm9tRmlsZShoYW5kbGUsIGRhdGEs
IGxlbmd0aCk7Ci19Ci0KLWludCBQbGF0Zm9ybVN1cHBvcnQ6OndyaXRlVG9GaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCi17Ci0gICAg
cmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT53cml0
ZVRvRmlsZShoYW5kbGUsIGRhdGEsIGxlbmd0aCk7Ci19Ci0KICNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCiBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gUGxhdGZvcm1TdXBwb3J0OjpjcmVhdGVB
c3luY0ZpbGVTeXN0ZW0oKQogewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>