<?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>27701</bug_id>
          
          <creation_ts>2009-07-27 01:52:21 -0700</creation_ts>
          <short_desc>[V8] Teach V8Proxy::context about isolated worlds</short_desc>
          <delta_ts>2009-07-29 01:00:54 -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 JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>27703</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>134866</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-27 01:52:21 -0700</bug_when>
    <thetext>I&apos;ve looked through all the clients of V8Proxy::context(Frame*), and they&apos;d all rather call V8DOMWrapper::getWrapperContext(Frame*).  Instead of converting all the call sites, we should just teach V8Proxy::context(Frame*) to retrieve the context of Frame* in the current isolated world.  Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134873</commentid>
    <comment_count>1</comment_count>
      <attachid>33527</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-27 02:34:25 -0700</bug_when>
    <thetext>Created attachment 33527
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134876</commentid>
    <comment_count>2</comment_count>
      <attachid>33528</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-27 02:42:31 -0700</bug_when>
    <thetext>Created attachment 33528
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135469</commentid>
    <comment_count>3</comment_count>
      <attachid>33528</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-07-28 20:50:02 -0700</bug_when>
    <thetext>Comment on attachment 33528
patch

ok. Will this affect performance in any measurable way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135516</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-29 00:59:47 -0700</bug_when>
    <thetext>Sending        LayoutTests/ChangeLog
Adding         LayoutTests/http/tests/security/isolatedWorld/document-open-expected.txt
Adding         LayoutTests/http/tests/security/isolatedWorld/document-open.html
Sending        LayoutTests/platform/gtk/Skipped
Sending        LayoutTests/platform/mac/Skipped
Sending        LayoutTests/platform/qt/Skipped
Sending        LayoutTests/platform/win/Skipped
Sending        WebCore/ChangeLog
Sending        WebCore/bindings/v8/ScriptController.cpp
Sending        WebCore/bindings/v8/ScriptObjectQuarantine.cpp
Sending        WebCore/bindings/v8/V8AbstractEventListener.cpp
Sending        WebCore/bindings/v8/V8DOMWrapper.cpp
Sending        WebCore/bindings/v8/V8DOMWrapper.h
Sending        WebCore/bindings/v8/V8Helpers.cpp
Sending        WebCore/bindings/v8/V8LazyEventListener.cpp
Sending        WebCore/bindings/v8/V8Proxy.cpp
Sending        WebCore/bindings/v8/V8Proxy.h
Transmitting file data .................
Committed revision 46523.
http://trac.webkit.org/changeset/46523</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135518</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-29 01:00:54 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; ok. Will this affect performance in any measurable way?

It shouldn&apos;t, but we&apos;ll see from the perf bots.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33527</attachid>
            <date>2009-07-27 02:34:25 -0700</date>
            <delta_ts>2009-07-27 02:42:24 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-27701-20090727023425.patch</filename>
            <type>text/plain</type>
            <size>14375</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjQxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMDktMDctMjcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbVjhd
IFRlYWNoIFY4UHJveHk6OmNvbnRleHQgYWJvdXQgaXNvbGF0ZWQgd29ybGRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzcwMQorCisgICAgICAgIENo
YW5nZSBWOFByb3h5Ojpjb250ZXh0KEZyYW1lKikgdG8gdW5kZXJzdGFuZCBpc29sYXRlZCB3b3Js
ZHMuICBBdWRpdAorICAgICAgICBhbGwgY2FsbGVycyBvZiB0aGlzIG1ldGhvZCB0byBtYWtlIHN1
cmUgdGhleSB3YW50IGlzb2xhdGVkIHdvcmxkcy4gIEluCisgICAgICAgIGNhc2VzIHdoZXJlIHdl
IHJlYWxseSB3YW50IHRoZSBtYWluIHdvcmxkLCBJJ3ZlIGNoYW5nZWQgdGhlIGNhbGwgdG8KKyAg
ICAgICAgVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChGcmFtZSopLgorICAgICAgICAKKyAgICAg
ICAgVGhlIG1haW4gdmlzaWJsZSBjaGFuZ2UgaXMgdG8gdGhlIGRvY3VtZW50Lm9wZW4gbWV0aG9k
IHdoZW4gY2FsbGVkIHdpdGgKKyAgICAgICAgbW9yZSB0aGFuIHR3byBhcmd1bWVudHMuICBUaGlz
IGRlc2lnbiBzZWVtcyBtb3JlIGxpa2VseSB0byBsZWFkIHRvCisgICAgICAgIGZ1dHVyZSBjb3Jy
ZWN0IGNvZGUuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdv
cmxkL2RvY3VtZW50LW9wZW4uaHRtbAorCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNz
aW5nVXNlckdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6YmluZFRvV2luZG93
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RHYXJi
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcmlwdE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRPYmplY3RGb3JQbHVnaW5FbGVt
ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRPYmplY3RRdWFyYW50aW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmdldFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBw
ZXI6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6c2V0
SGlkZGVuV2luZG93UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6
Y29udmVydE5vZGVUb1Y4T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6
Y29udmVydFdpbmRvd1RvVjhPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SGVscGVy
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Q29udGV4dCk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExhenlF
dmVudExpc3RlbmVyOjpnZXRMaXN0ZW5lckZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
TGF6eUV2ZW50TGlzdGVuZXI6OmdldFdyYXBwZWRMaXN0ZW5lckZ1bmN0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OmNv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6bWFpbldvcmxkQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpiaW5kSnNPYmplY3RUb1dpbmRvdyk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhQcm94eS5oOgorCiAyMDA5LTA3LTI3ICBQYXZlbCBGZWxkbWFuICA8
cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0
Y2hlci4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gNDYyMzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVy
Ojpwcm9jZXNzaW5nVXNlckdlcwogICAgIFY4UHJveHkqIGFjdGl2ZVByb3h5ID0gYWN0aXZlRnJh
bWUtPnNjcmlwdCgpLT5wcm94eSgpOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OwotICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IFY4UHJveHk6OmNvbnRl
eHQoYWN0aXZlRnJhbWUpOworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9
IFY4UHJveHk6Om1haW5Xb3JsZENvbnRleHQoYWN0aXZlRnJhbWUpOwogICAgIC8vIEZJWE1FOiBm
aW5kIGFsbCBjYXNlcyBjb250ZXh0IGNhbiBiZSBlbXB0eToKICAgICAvLyAgMSkgSlMgaXMgZGlz
YWJsZWQ7CiAgICAgLy8gIDIpIHBhZ2UgaXMgTlVMTDsKQEAgLTIwNiw3ICsyMDYsNyBAQCBTY3Jp
cHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjCiAgICAgfQogCiAgICAgdjg6Okhh
bmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29u
dGV4dCA9IFY4UHJveHk6OmNvbnRleHQobV9wcm94eS0+ZnJhbWUoKSk7CisgICAgdjg6OkhhbmRs
ZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChtX3By
b3h5LT5mcmFtZSgpKTsKICAgICBpZiAodjhDb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIFNjcmlwdFZhbHVlKCk7CiAKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmJpbmRUb1dpbmRvd09iamVjCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gVjhQcm94eTo6
Y29udGV4dChmcmFtZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0g
VjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChmcmFtZSk7CiAgICAgaWYgKHY4Q29udGV4dC5Jc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6YmluZFRvV2luZG93T2JqZWMKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y29s
bGVjdEdhcmJhZ2UoKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSBWOFByb3h5Ojpjb250ZXh0KG1fcHJv
eHktPmZyYW1lKCkpOworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IFY4
UHJveHk6Om1haW5Xb3JsZENvbnRleHQobV9wcm94eS0+ZnJhbWUoKSk7CiAgICAgaWYgKHY4Q29u
dGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzM4LDcgKzMzOCw3IEBAIHN0
YXRpYyBOUE9iamVjdCogY3JlYXRlTm9TY3JpcHRPYmplY3QoKQogc3RhdGljIE5QT2JqZWN0KiBj
cmVhdGVTY3JpcHRPYmplY3QoRnJhbWUqIGZyYW1lKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBo
YW5kbGVTY29wZTsKLSAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSBWOFBy
b3h5Ojpjb250ZXh0KGZyYW1lKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRl
eHQgPSBWOFByb3h5OjptYWluV29ybGRDb250ZXh0KGZyYW1lKTsKICAgICBpZiAodjhDb250ZXh0
LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZU5vU2NyaXB0T2JqZWN0KCk7CiAKQEAg
LTM3NSw3ICszNzUsNyBAQCBOUE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0
CiAgICAgICAgIHJldHVybiBjcmVhdGVOb1NjcmlwdE9iamVjdCgpOwogCiAgICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4
dCA9IFY4UHJveHk6OmNvbnRleHQobV9mcmFtZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4gdjhDb250ZXh0ID0gVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChtX2ZyYW1lKTsKICAgICBp
ZiAodjhDb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZU5vU2NyaXB0T2Jq
ZWN0KCk7CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7CkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdFF1YXJhbnRpbmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAJKHJldmlz
aW9uIDQ2MjM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3RRdWFyYW50aW5l
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQCBib29sIGdldFF1YXJhbnRpbmVk
U2NyaXB0T2JqZWN0KEZyYW1lKiBmCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAgIHY4OjpI
YW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRl
eHQgPSBWOFByb3h5Ojpjb250ZXh0KGZyYW1lKTsKKyAgICAvLyBGSVhNRTogV2hhdCBpZiBjb250
ZXh0LklzRW1wdHkoKT8KICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CiAK
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhTdG9yYWdlID0gVjhET01XcmFwcGVyOjpjb252
ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OlNUT1JBR0UsIHN0b3JhZ2UpOwpAQCAtODUsNiAr
ODYsOCBAQCBib29sIGdldFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KE5vZGUqIG5vCiAgICAgQVNT
RVJUKG5vZGUpOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIC8vIEZJ
WE1FOiBUaGlzIGNvZGUgbWFrZXMgbm8gc2Vuc2UhCisgICAgLy8gRklYTUU6IFdoYXQgaWYgY29u
dGV4dC5Jc0VtcHR5KCk/CiAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gVjhQ
cm94eTo6Y29udGV4dChub2RlLT5kb2N1bWVudCgpLT5wYWdlKCktPm1haW5GcmFtZSgpKTsKICAg
ICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CiAKQEAgLTEwMCw2ICsxMDMsNyBA
QCBib29sIGdldFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KERPTVdpbmRvCiAKICAgICB2ODo6SGFu
ZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0
ID0gVjhQcm94eTo6Y29udGV4dChkb21XaW5kb3ctPmZyYW1lKCkpOworICAgIC8vIEZJWE1FOiBX
aGF0IGlmIGNvbnRleHQuSXNFbXB0eSgpPwogICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShj
b250ZXh0KTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OERvbVdpbmRvdyA9IFY4RE9N
V3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGRvbVdp
bmRvdyk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExp
c3RlbmVyLmNwcAkocmV2aXNpb24gNDYyMzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWJz
dHJhY3RFdmVudExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw4IEBA
IHZvaWQgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW4KIAogICAgIHY4OjpIYW5k
bGVTY29wZSBoYW5kbGVTY29wZTsKIAorICAgIC8vIEZJWE1FOiBUaGlzIGNvbnRleHQgbWlnaHQg
YmUgaW4gdGhlIHdyb25nIHdvcmxkIQorICAgIC8vICAgICAgICBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTMzCiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4gdjhDb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChtX2ZyYW1lKTsKICAgICBpZiAodjhDb250
ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdyYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmNwcAkocmV2aXNpb24gNDYyMzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV3JhcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4OSw3ICs0ODksNyBAQCB2ODo6TG9j
YWw8djg6OkZ1bmN0aW9uPiBWOERPTVdyYXBwZXI6OmdlCiAgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+KCk7CiAKLSAgICB2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjb250ZXh0ID0gZ2V0V3JhcHBlckNvbnRleHQoZnJhbWUpOworICAgIHY4OjpI
YW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBWOFByb3h5Ojpjb250ZXh0KGZyYW1lKTsKICAg
ICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkZ1
bmN0aW9uPigpOwogICAgIC8vIEVudGVyIHRoZSBzY29wZSBmb3IgdGhpcyBET01XaW5kb3cgdG8g
Z2V0IHRoZSBjb3JyZWN0IGNvbnN0cnVjdG9yLgpAQCAtNjIzLDcgKzYyMyw3IEBAIHZvaWQgVjhE
T01XcmFwcGVyOjpzZXRIaWRkZW5XaW5kb3dSZWZlcmUKICAgICAvLyBHZXQgRE9NV2luZG93CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOyAvLyBPYmplY3QgbWlnaHQgYmUgZGV0YWNo
ZWQgZnJvbSB3aW5kb3cKLSAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gZ2V0
V3JhcHBlckNvbnRleHQoZnJhbWUpOworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRl
eHQgPSBWOFByb3h5Ojpjb250ZXh0KGZyYW1lKTsKICAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMTEzMiw3ICsxMTMyLDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udgogCiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4g
Y29udGV4dDsKICAgICBpZiAocHJveHkpCi0gICAgICAgIGNvbnRleHQgPSBnZXRXcmFwcGVyQ29u
dGV4dChwcm94eS0+ZnJhbWUoKSk7CisgICAgICAgIGNvbnRleHQgPSBWOFByb3h5Ojpjb250ZXh0
KHByb3h5LT5mcmFtZSgpKTsKIAogICAgIC8vIEVudGVyIHRoZSBub2RlJ3MgY29udGV4dCBhbmQg
Y3JlYXRlIHRoZSB3cmFwcGVyIGluIHRoYXQgY29udGV4dC4KICAgICBpZiAoIWNvbnRleHQuSXNF
bXB0eSgpKQpAQCAtMTM5Miw3ICsxMzkyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9N
V3JhcHBlcjo6Y29udgogICAgIH0KIAogICAgIC8vIE90aGVyd2lzZSwgcmV0dXJuIHRoZSBnbG9i
YWwgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZyYW1lLgotICAgIHY4OjpIYW5kbGU8djg6
OkNvbnRleHQ+IGNvbnRleHQgPSBnZXRXcmFwcGVyQ29udGV4dChmcmFtZSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IFY4UHJveHk6OmNvbnRleHQoZnJhbWUpOwogICAg
IGlmIChjb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4oKTsKIApAQCAtMTQwMSwxOSArMTQwMSw0IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OERPTVdyYXBwZXI6OmNvbnYKICAgICByZXR1cm4gZ2xvYmFsOwogfQogCi12ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBWOERPTVdyYXBwZXI6OmdldFdyYXBwZXJDb250ZXh0KEZyYW1lKiBmcmFtZSkK
LXsKLSAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gVjhQcm94eTo6Y29udGV4
dChmcmFtZSk7Ci0gICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4oKTsKLQotICAgIGlmIChWOElzb2xhdGVkV29ybGQqIHdvcmxk
ID0gVjhJc29sYXRlZFdvcmxkOjpnZXRFbnRlcmVkKCkpIHsKLSAgICAgICBjb250ZXh0ID0gd29y
bGQtPmNvbnRleHQoKTsKLSAgICAgICBpZiAoZnJhbWUgIT0gVjhQcm94eTo6cmV0cmlldmVGcmFt
ZShjb250ZXh0KSkKLSAgICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gY29udGV4dDsKLX0KLQogfSAgLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhIZWxwZXJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGVscGVycy5jcHAJKHJldmlzaW9uIDQ2MjM1KQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3
ICs0Niw3IEBAIHZvaWQgd3JhcE5QT2JqZWN0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4KIHY4OjpM
b2NhbDx2ODo6Q29udGV4dD4gdG9WOENvbnRleHQoTlBQIG5wcCwgTlBPYmplY3QqIG5wT2JqZWN0
KQogewogICAgIFY4TlBPYmplY3QqIG9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VjhOUE9iamVj
dCo+KG5wT2JqZWN0KTsKLSAgICByZXR1cm4gVjhQcm94eTo6Y29udGV4dChvYmplY3QtPnJvb3RP
YmplY3QtPmZyYW1lKCkpOworICAgIHJldHVybiBWOFByb3h5OjptYWluV29ybGRDb250ZXh0KG9i
amVjdC0+cm9vdE9iamVjdC0+ZnJhbWUoKSk7CiB9CiAKIFY4UHJveHkqIHRvVjhQcm94eShOUE9i
amVjdCogbnBPYmplY3QpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlz
dGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRM
aXN0ZW5lci5jcHAJKHJldmlzaW9uIDQ2MjM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOExh
enlFdmVudExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCB2ODo6
TG9jYWw8djg6OkZ1bmN0aW9uPiBWOExhenlFdmVudExpc3RlCiAgICAgICAgIHY4OjpIYW5kbGVT
Y29wZSBoYW5kbGVTY29wZTsKIAogICAgICAgICAvLyBVc2UgdGhlIG91dGVyIHNjb3BlIHRvIGhv
bGQgY29udGV4dC4KLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0g
VjhQcm94eTo6Y29udGV4dChtX2ZyYW1lKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4gdjhDb250ZXh0ID0gVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChtX2ZyYW1lKTsKICAgICAg
ICAgLy8gQmFpbCBvdXQgaWYgd2UgY291bGQgbm90IGdldCB0aGUgY29udGV4dC4KICAgICAgICAg
aWYgKHY4Q29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4
OjpGdW5jdGlvbj4oKTsKQEAgLTE1OCw3ICsxNTgsNyBAQCB2ODo6TG9jYWw8djg6OkZ1bmN0aW9u
PiBWOExhenlFdmVudExpc3RlCiAgICAgICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsK
IAogICAgICAgICAvLyBVc2UgdGhlIG91dGVyIHNjb3BlIHRvIGhvbGQgY29udGV4dC4KLSAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dCht
X2ZyYW1lKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gVjhQ
cm94eTo6bWFpbldvcmxkQ29udGV4dChtX2ZyYW1lKTsKICAgICAgICAgLy8gQmFpbCBvdXQgaWYg
d2UgY2Fubm90IGdldCB0aGUgY29udGV4dC4KICAgICAgICAgaWYgKHY4Q29udGV4dC5Jc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4oKTsKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFByb3h5LmNwcAkocmV2aXNpb24gNDYyMzUpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTA2LDYgKzExMDYsMjEgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4UHJveHk6OnRocm93RXJybwogCiB2ODo6TG9jYWw8djg6
OkNvbnRleHQ+IFY4UHJveHk6OmNvbnRleHQoRnJhbWUqIGZyYW1lKQogeworICAgIHY4OjpMb2Nh
bDx2ODo6Q29udGV4dD4gY29udGV4dCA9IFY4UHJveHk6Om1haW5Xb3JsZENvbnRleHQoZnJhbWUp
OworICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2
ODo6Q29udGV4dD4oKTsKKworICAgIGlmIChWOElzb2xhdGVkV29ybGQqIHdvcmxkID0gVjhJc29s
YXRlZFdvcmxkOjpnZXRFbnRlcmVkKCkpIHsKKyAgICAgICAgY29udGV4dCA9IHY4OjpMb2NhbDx2
ODo6Q29udGV4dD46Ok5ldyh3b3JsZC0+Y29udGV4dCgpKTsKKyAgICAgICAgaWYgKGZyYW1lICE9
IFY4UHJveHk6OnJldHJpZXZlRnJhbWUoY29udGV4dCkpCisgICAgICAgICAgICByZXR1cm4gdjg6
OkxvY2FsPHY4OjpDb250ZXh0PigpOworICAgIH0KKworICAgIHJldHVybiBjb250ZXh0OworfQor
Cit2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFY4UHJveHk6Om1haW5Xb3JsZENvbnRleHQoRnJhbWUq
IGZyYW1lKQorewogICAgIFY4UHJveHkqIHByb3h5ID0gcmV0cmlldmUoZnJhbWUpOwogICAgIGlm
ICghcHJveHkpCiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+KCk7CkBAIC0x
MTMwLDcgKzExNDUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhQcm94eTo6Y2hlY2tOZXdM
CiB2b2lkIFY4UHJveHk6OmJpbmRKc09iamVjdFRvV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3Qg
Y2hhciogbmFtZSwgaW50IHR5cGUsIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRl
c2NyaXB0b3IsIHZvaWQqIGltcGwpCiB7CiAgICAgLy8gR2V0IGVudmlyb25tZW50LgotICAgIHY4
OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IFY4UHJveHk6OmNvbnRleHQoZnJhbWUp
OworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IFY4UHJveHk6Om1haW5X
b3JsZENvbnRleHQoZnJhbWUpOwogICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47IC8vIEpTIG5vdCBlbmFibGVkLgogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAko
cmV2aXNpb24gNDYyMzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjkxLDYgKzI5MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ly8gUmV0dXJucyBWOCBDb250ZXh0IG9mIGEgZnJhbWUuIElmIG5vbmUgZXhpc3RzLCBjcmVhdGVz
CiAgICAgICAgIC8vIGEgbmV3IGNvbnRleHQuIEl0IGlzIHBvdGVudGlhbGx5IHNsb3cgYW5kIGNv
bnN1bWVzIG1lbW9yeS4KICAgICAgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29u
dGV4dChGcmFtZSopOworICAgICAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBtYWlu
V29ybGRDb250ZXh0KEZyYW1lKik7CiAgICAgICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6OkNvbnRl
eHQ+IGN1cnJlbnRDb250ZXh0KCk7CiAKICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgY29udGV4
dCBjYXVzZXMgb3V0IG9mIG1lbW9yeSwgSmF2YVNjcmlwdCBzZXR0aW5nCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA0NjQxMCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE2IEBACisyMDA5LTA3LTI3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1Y4XSBU
ZWFjaCBWOFByb3h5Ojpjb250ZXh0IGFib3V0IGlzb2xhdGVkIHdvcmxkcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc3MDEKKworICAgICAgICBUZXN0
IHRoYXQgY2FsbGluZyBkb2N1bWVudC5vcGVuIHdpdGggbW9yZSB0aGFuIHR3byBhcmd1bWVudHMg
Y2FsbHMgdGhlCisgICAgICAgIHdpbmRvdy5vcGVuIG1ldGhvZCBmcm9tIHRoZSBjb3JyZWN0IHdv
cmxkLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2RvY3Vt
ZW50LW9wZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2lzb2xhdGVkV29ybGQvZG9jdW1lbnQtb3Blbi5odG1sOiBBZGRlZC4KKwogMjAwOS0wNy0x
NiAgU2hpbmljaGlybyBIYW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9pc29sYXRlZFdvcmxkL2RvY3VtZW50LW9wZW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9kb2N1bWVu
dC1vcGVuLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9kb2N1bWVudC1vcGVuLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitBTEVSVDogUEFTUworCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvZG9jdW1lbnQtb3Blbi5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3Js
ZC9kb2N1bWVudC1vcGVuLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvZG9jdW1lbnQtb3Blbi5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit3aW5kb3cub3BlbiA9IGZ1bmN0aW9uICgp
IHsgYWxlcnQoIkZBSUw6IFZpc2libGUgaW4gaXNvbGF0ZWQgd29ybGQuIik7IH07CitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVTY3JpcHRJbklzb2xhdGVkV29y
bGQoCisgICAgIndpbmRvdy5vcGVuID0gZnVuY3Rpb24gKCkgeyBhbGVydCgnUEFTUycpOyB9O1xu
IiArCisgICAgImRvY3VtZW50Lm9wZW4oMSwgMiwgMyk7Iik7Cit9Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33528</attachid>
            <date>2009-07-27 02:42:31 -0700</date>
            <delta_ts>2009-07-28 20:50:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-27701-20090727024230.patch</filename>
            <type>text/plain</type>
            <size>14864</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjQxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMDktMDctMjcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbVjhd
IFRlYWNoIFY4UHJveHk6OmNvbnRleHQgYWJvdXQgaXNvbGF0ZWQgd29ybGRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzcwMQorCisgICAgICAgIENo
YW5nZSBWOFByb3h5Ojpjb250ZXh0KEZyYW1lKikgdG8gdW5kZXJzdGFuZCBpc29sYXRlZCB3b3Js
ZHMuICBBdWRpdAorICAgICAgICBhbGwgY2FsbGVycyBvZiB0aGlzIG1ldGhvZCB0byBtYWtlIHN1
cmUgdGhleSB3YW50IGlzb2xhdGVkIHdvcmxkcy4gIEluCisgICAgICAgIGNhc2VzIHdoZXJlIHdl
IHJlYWxseSB3YW50IHRoZSBtYWluIHdvcmxkLCBJJ3ZlIGNoYW5nZWQgdGhlIGNhbGwgdG8KKyAg
ICAgICAgVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChGcmFtZSopLgorICAgICAgICAKKyAgICAg
ICAgVGhlIG1haW4gdmlzaWJsZSBjaGFuZ2UgaXMgdG8gdGhlIGRvY3VtZW50Lm9wZW4gbWV0aG9k
IHdoZW4gY2FsbGVkIHdpdGgKKyAgICAgICAgbW9yZSB0aGFuIHR3byBhcmd1bWVudHMuICBUaGlz
IGRlc2lnbiBzZWVtcyBtb3JlIGxpa2VseSB0byBsZWFkIHRvCisgICAgICAgIGZ1dHVyZSBjb3Jy
ZWN0IGNvZGUuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdv
cmxkL2RvY3VtZW50LW9wZW4uaHRtbAorCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNz
aW5nVXNlckdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6YmluZFRvV2luZG93
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RHYXJi
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcmlwdE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRPYmplY3RGb3JQbHVnaW5FbGVt
ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRPYmplY3RRdWFyYW50aW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmdldFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBw
ZXI6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6c2V0
SGlkZGVuV2luZG93UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6
Y29udmVydE5vZGVUb1Y4T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6
Y29udmVydFdpbmRvd1RvVjhPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SGVscGVy
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Q29udGV4dCk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExhenlF
dmVudExpc3RlbmVyOjpnZXRMaXN0ZW5lckZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
TGF6eUV2ZW50TGlzdGVuZXI6OmdldFdyYXBwZWRMaXN0ZW5lckZ1bmN0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OmNv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6bWFpbldvcmxkQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpiaW5kSnNPYmplY3RUb1dpbmRvdyk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhQcm94eS5oOgorCiAyMDA5LTA3LTI3ICBQYXZlbCBGZWxkbWFuICA8
cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0
Y2hlci4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gNDYyMzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVy
Ojpwcm9jZXNzaW5nVXNlckdlcwogICAgIFY4UHJveHkqIGFjdGl2ZVByb3h5ID0gYWN0aXZlRnJh
bWUtPnNjcmlwdCgpLT5wcm94eSgpOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OwotICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IFY4UHJveHk6OmNvbnRl
eHQoYWN0aXZlRnJhbWUpOworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9
IFY4UHJveHk6Om1haW5Xb3JsZENvbnRleHQoYWN0aXZlRnJhbWUpOwogICAgIC8vIEZJWE1FOiBm
aW5kIGFsbCBjYXNlcyBjb250ZXh0IGNhbiBiZSBlbXB0eToKICAgICAvLyAgMSkgSlMgaXMgZGlz
YWJsZWQ7CiAgICAgLy8gIDIpIHBhZ2UgaXMgTlVMTDsKQEAgLTIwNiw3ICsyMDYsNyBAQCBTY3Jp
cHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjCiAgICAgfQogCiAgICAgdjg6Okhh
bmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29u
dGV4dCA9IFY4UHJveHk6OmNvbnRleHQobV9wcm94eS0+ZnJhbWUoKSk7CisgICAgdjg6OkhhbmRs
ZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChtX3By
b3h5LT5mcmFtZSgpKTsKICAgICBpZiAodjhDb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIFNjcmlwdFZhbHVlKCk7CiAKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmJpbmRUb1dpbmRvd09iamVjCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gVjhQcm94eTo6
Y29udGV4dChmcmFtZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0g
VjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChmcmFtZSk7CiAgICAgaWYgKHY4Q29udGV4dC5Jc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6YmluZFRvV2luZG93T2JqZWMKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y29s
bGVjdEdhcmJhZ2UoKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSBWOFByb3h5Ojpjb250ZXh0KG1fcHJv
eHktPmZyYW1lKCkpOworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IFY4
UHJveHk6Om1haW5Xb3JsZENvbnRleHQobV9wcm94eS0+ZnJhbWUoKSk7CiAgICAgaWYgKHY4Q29u
dGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzM4LDcgKzMzOCw3IEBAIHN0
YXRpYyBOUE9iamVjdCogY3JlYXRlTm9TY3JpcHRPYmplY3QoKQogc3RhdGljIE5QT2JqZWN0KiBj
cmVhdGVTY3JpcHRPYmplY3QoRnJhbWUqIGZyYW1lKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBo
YW5kbGVTY29wZTsKLSAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSBWOFBy
b3h5Ojpjb250ZXh0KGZyYW1lKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRl
eHQgPSBWOFByb3h5OjptYWluV29ybGRDb250ZXh0KGZyYW1lKTsKICAgICBpZiAodjhDb250ZXh0
LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZU5vU2NyaXB0T2JqZWN0KCk7CiAKQEAg
LTM3NSw3ICszNzUsNyBAQCBOUE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0
CiAgICAgICAgIHJldHVybiBjcmVhdGVOb1NjcmlwdE9iamVjdCgpOwogCiAgICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4
dCA9IFY4UHJveHk6OmNvbnRleHQobV9mcmFtZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4gdjhDb250ZXh0ID0gVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChtX2ZyYW1lKTsKICAgICBp
ZiAodjhDb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZU5vU2NyaXB0T2Jq
ZWN0KCk7CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7CkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdFF1YXJhbnRpbmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAJKHJldmlz
aW9uIDQ2MjM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3RRdWFyYW50aW5l
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQCBib29sIGdldFF1YXJhbnRpbmVk
U2NyaXB0T2JqZWN0KEZyYW1lKiBmCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAgIHY4OjpI
YW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRl
eHQgPSBWOFByb3h5Ojpjb250ZXh0KGZyYW1lKTsKKyAgICAvLyBGSVhNRTogV2hhdCBpZiBjb250
ZXh0LklzRW1wdHkoKT8KICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CiAK
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhTdG9yYWdlID0gVjhET01XcmFwcGVyOjpjb252
ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OlNUT1JBR0UsIHN0b3JhZ2UpOwpAQCAtODUsNiAr
ODYsOCBAQCBib29sIGdldFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KE5vZGUqIG5vCiAgICAgQVNT
RVJUKG5vZGUpOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIC8vIEZJ
WE1FOiBUaGlzIGNvZGUgbWFrZXMgbm8gc2Vuc2UhCisgICAgLy8gRklYTUU6IFdoYXQgaWYgY29u
dGV4dC5Jc0VtcHR5KCk/CiAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gVjhQ
cm94eTo6Y29udGV4dChub2RlLT5kb2N1bWVudCgpLT5wYWdlKCktPm1haW5GcmFtZSgpKTsKICAg
ICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CiAKQEAgLTEwMCw2ICsxMDMsNyBA
QCBib29sIGdldFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KERPTVdpbmRvCiAKICAgICB2ODo6SGFu
ZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0
ID0gVjhQcm94eTo6Y29udGV4dChkb21XaW5kb3ctPmZyYW1lKCkpOworICAgIC8vIEZJWE1FOiBX
aGF0IGlmIGNvbnRleHQuSXNFbXB0eSgpPwogICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShj
b250ZXh0KTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OERvbVdpbmRvdyA9IFY4RE9N
V3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGRvbVdp
bmRvdyk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExp
c3RlbmVyLmNwcAkocmV2aXNpb24gNDYyMzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWJz
dHJhY3RFdmVudExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw4IEBA
IHZvaWQgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW4KIAogICAgIHY4OjpIYW5k
bGVTY29wZSBoYW5kbGVTY29wZTsKIAorICAgIC8vIEZJWE1FOiBUaGlzIGNvbnRleHQgbWlnaHQg
YmUgaW4gdGhlIHdyb25nIHdvcmxkIQorICAgIC8vICAgICAgICBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTMzCiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4gdjhDb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChtX2ZyYW1lKTsKICAgICBpZiAodjhDb250
ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdyYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmNwcAkocmV2aXNpb24gNDYyMzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV3JhcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4OSw3ICs0ODksNyBAQCB2ODo6TG9j
YWw8djg6OkZ1bmN0aW9uPiBWOERPTVdyYXBwZXI6OmdlCiAgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+KCk7CiAKLSAgICB2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjb250ZXh0ID0gZ2V0V3JhcHBlckNvbnRleHQoZnJhbWUpOworICAgIHY4OjpI
YW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBWOFByb3h5Ojpjb250ZXh0KGZyYW1lKTsKICAg
ICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkZ1
bmN0aW9uPigpOwogICAgIC8vIEVudGVyIHRoZSBzY29wZSBmb3IgdGhpcyBET01XaW5kb3cgdG8g
Z2V0IHRoZSBjb3JyZWN0IGNvbnN0cnVjdG9yLgpAQCAtNjIzLDcgKzYyMyw3IEBAIHZvaWQgVjhE
T01XcmFwcGVyOjpzZXRIaWRkZW5XaW5kb3dSZWZlcmUKICAgICAvLyBHZXQgRE9NV2luZG93CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOyAvLyBPYmplY3QgbWlnaHQgYmUgZGV0YWNo
ZWQgZnJvbSB3aW5kb3cKLSAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gZ2V0
V3JhcHBlckNvbnRleHQoZnJhbWUpOworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRl
eHQgPSBWOFByb3h5Ojpjb250ZXh0KGZyYW1lKTsKICAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMTEzMiw3ICsxMTMyLDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udgogCiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4g
Y29udGV4dDsKICAgICBpZiAocHJveHkpCi0gICAgICAgIGNvbnRleHQgPSBnZXRXcmFwcGVyQ29u
dGV4dChwcm94eS0+ZnJhbWUoKSk7CisgICAgICAgIGNvbnRleHQgPSBWOFByb3h5Ojpjb250ZXh0
KHByb3h5LT5mcmFtZSgpKTsKIAogICAgIC8vIEVudGVyIHRoZSBub2RlJ3MgY29udGV4dCBhbmQg
Y3JlYXRlIHRoZSB3cmFwcGVyIGluIHRoYXQgY29udGV4dC4KICAgICBpZiAoIWNvbnRleHQuSXNF
bXB0eSgpKQpAQCAtMTM5Miw3ICsxMzkyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9N
V3JhcHBlcjo6Y29udgogICAgIH0KIAogICAgIC8vIE90aGVyd2lzZSwgcmV0dXJuIHRoZSBnbG9i
YWwgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZyYW1lLgotICAgIHY4OjpIYW5kbGU8djg6
OkNvbnRleHQ+IGNvbnRleHQgPSBnZXRXcmFwcGVyQ29udGV4dChmcmFtZSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IFY4UHJveHk6OmNvbnRleHQoZnJhbWUpOwogICAg
IGlmIChjb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4oKTsKIApAQCAtMTQwMSwxOSArMTQwMSw0IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OERPTVdyYXBwZXI6OmNvbnYKICAgICByZXR1cm4gZ2xvYmFsOwogfQogCi12ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBWOERPTVdyYXBwZXI6OmdldFdyYXBwZXJDb250ZXh0KEZyYW1lKiBmcmFtZSkK
LXsKLSAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gVjhQcm94eTo6Y29udGV4
dChmcmFtZSk7Ci0gICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4oKTsKLQotICAgIGlmIChWOElzb2xhdGVkV29ybGQqIHdvcmxk
ID0gVjhJc29sYXRlZFdvcmxkOjpnZXRFbnRlcmVkKCkpIHsKLSAgICAgICBjb250ZXh0ID0gd29y
bGQtPmNvbnRleHQoKTsKLSAgICAgICBpZiAoZnJhbWUgIT0gVjhQcm94eTo6cmV0cmlldmVGcmFt
ZShjb250ZXh0KSkKLSAgICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gY29udGV4dDsKLX0KLQogfSAgLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAkocmV2aXNpb24gNDYyMzUpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDksOCArMjQ5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICAgICAg
c3RhdGljIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBpbnN0YW50aWF0ZVY4T2JqZWN0KFY4UHJveHkq
LCBWOENsYXNzSW5kZXg6OlY4V3JhcHBlclR5cGUsIFY4Q2xhc3NJbmRleDo6VjhXcmFwcGVyVHlw
ZSwgdm9pZCopOwotCi0gICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBnZXRX
cmFwcGVyQ29udGV4dChGcmFtZSopOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvdjgvVjhIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
SGVscGVycy5jcHAJKHJldmlzaW9uIDQ2MjM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhl
bHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgd3JhcE5QT2Jq
ZWN0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4KIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdG9WOENv
bnRleHQoTlBQIG5wcCwgTlBPYmplY3QqIG5wT2JqZWN0KQogewogICAgIFY4TlBPYmplY3QqIG9i
amVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VjhOUE9iamVjdCo+KG5wT2JqZWN0KTsKLSAgICByZXR1
cm4gVjhQcm94eTo6Y29udGV4dChvYmplY3QtPnJvb3RPYmplY3QtPmZyYW1lKCkpOworICAgIHJl
dHVybiBWOFByb3h5OjptYWluV29ybGRDb250ZXh0KG9iamVjdC0+cm9vdE9iamVjdC0+ZnJhbWUo
KSk7CiB9CiAKIFY4UHJveHkqIHRvVjhQcm94eShOUE9iamVjdCogbnBPYmplY3QpCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDQ2
MjM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOExh
enlFdmVudExpc3RlCiAgICAgICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKIAogICAg
ICAgICAvLyBVc2UgdGhlIG91dGVyIHNjb3BlIHRvIGhvbGQgY29udGV4dC4KLSAgICAgICAgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChtX2ZyYW1l
KTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gVjhQcm94eTo6
bWFpbldvcmxkQ29udGV4dChtX2ZyYW1lKTsKICAgICAgICAgLy8gQmFpbCBvdXQgaWYgd2UgY291
bGQgbm90IGdldCB0aGUgY29udGV4dC4KICAgICAgICAgaWYgKHY4Q29udGV4dC5Jc0VtcHR5KCkp
CiAgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4oKTsKQEAgLTE1OCw3
ICsxNTgsNyBAQCB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOExhenlFdmVudExpc3RlCiAgICAg
ICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKIAogICAgICAgICAvLyBVc2UgdGhlIG91
dGVyIHNjb3BlIHRvIGhvbGQgY29udGV4dC4KLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4gdjhDb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChtX2ZyYW1lKTsKKyAgICAgICAgdjg6Okhh
bmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dCht
X2ZyYW1lKTsKICAgICAgICAgLy8gQmFpbCBvdXQgaWYgd2UgY2Fubm90IGdldCB0aGUgY29udGV4
dC4KICAgICAgICAgaWYgKHY4Q29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4g
djg6OkxvY2FsPHY4OjpGdW5jdGlvbj4oKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAko
cmV2aXNpb24gNDYyMzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTA2LDYgKzExMDYsMjEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
UHJveHk6OnRocm93RXJybwogCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFY4UHJveHk6OmNvbnRl
eHQoRnJhbWUqIGZyYW1lKQogeworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9
IFY4UHJveHk6Om1haW5Xb3JsZENvbnRleHQoZnJhbWUpOworICAgIGlmIChjb250ZXh0LklzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsKKworICAgIGlm
IChWOElzb2xhdGVkV29ybGQqIHdvcmxkID0gVjhJc29sYXRlZFdvcmxkOjpnZXRFbnRlcmVkKCkp
IHsKKyAgICAgICAgY29udGV4dCA9IHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyh3b3JsZC0+
Y29udGV4dCgpKTsKKyAgICAgICAgaWYgKGZyYW1lICE9IFY4UHJveHk6OnJldHJpZXZlRnJhbWUo
Y29udGV4dCkpCisgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0PigpOwor
ICAgIH0KKworICAgIHJldHVybiBjb250ZXh0OworfQorCit2ODo6TG9jYWw8djg6OkNvbnRleHQ+
IFY4UHJveHk6Om1haW5Xb3JsZENvbnRleHQoRnJhbWUqIGZyYW1lKQorewogICAgIFY4UHJveHkq
IHByb3h5ID0gcmV0cmlldmUoZnJhbWUpOwogICAgIGlmICghcHJveHkpCiAgICAgICAgIHJldHVy
biB2ODo6TG9jYWw8djg6OkNvbnRleHQ+KCk7CkBAIC0xMTMwLDcgKzExNDUsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhQcm94eTo6Y2hlY2tOZXdMCiB2b2lkIFY4UHJveHk6OmJpbmRKc09i
amVjdFRvV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciogbmFtZSwgaW50IHR5cGUsIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2NyaXB0b3IsIHZvaWQqIGltcGwpCiB7
CiAgICAgLy8gR2V0IGVudmlyb25tZW50LgotICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4
Q29udGV4dCA9IFY4UHJveHk6OmNvbnRleHQoZnJhbWUpOworICAgIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IHY4Q29udGV4dCA9IFY4UHJveHk6Om1haW5Xb3JsZENvbnRleHQoZnJhbWUpOwogICAg
IGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47IC8vIEpTIG5vdCBlbmFi
bGVkLgogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAkocmV2aXNpb24gNDYyMzUpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjkxLDYgKzI5MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmV0dXJucyBWOCBDb250ZXh0IG9m
IGEgZnJhbWUuIElmIG5vbmUgZXhpc3RzLCBjcmVhdGVzCiAgICAgICAgIC8vIGEgbmV3IGNvbnRl
eHQuIEl0IGlzIHBvdGVudGlhbGx5IHNsb3cgYW5kIGNvbnN1bWVzIG1lbW9yeS4KICAgICAgICAg
c3RhdGljIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dChGcmFtZSopOworICAgICAgICBz
dGF0aWMgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBtYWluV29ybGRDb250ZXh0KEZyYW1lKik7CiAg
ICAgICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGN1cnJlbnRDb250ZXh0KCk7CiAK
ICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgY29udGV4dCBjYXVzZXMgb3V0IG9mIG1lbW9yeSwg
SmF2YVNjcmlwdCBzZXR0aW5nCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NjQxMCkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA5LTA3LTI3
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1Y4XSBUZWFjaCBWOFByb3h5Ojpjb250ZXh0IGFi
b3V0IGlzb2xhdGVkIHdvcmxkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mjc3MDEKKworICAgICAgICBUZXN0IHRoYXQgY2FsbGluZyBkb2N1bWVudC5v
cGVuIHdpdGggbW9yZSB0aGFuIHR3byBhcmd1bWVudHMgY2FsbHMgdGhlCisgICAgICAgIHdpbmRv
dy5vcGVuIG1ldGhvZCBmcm9tIHRoZSBjb3JyZWN0IHdvcmxkLgorCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2RvY3VtZW50LW9wZW4tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvZG9jdW1l
bnQtb3Blbi5odG1sOiBBZGRlZC4KKwogMjAwOS0wNy0xNiAgU2hpbmljaGlybyBIYW1hamkgIDxo
YW1hamlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2RvY3Vt
ZW50LW9wZW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9kb2N1bWVudC1vcGVuLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3Js
ZC9kb2N1bWVudC1vcGVuLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBA
CitBTEVSVDogUEFTUworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lz
b2xhdGVkV29ybGQvZG9jdW1lbnQtb3Blbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9kb2N1bWVudC1vcGVuLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29y
bGQvZG9jdW1lbnQtb3Blbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+Cit3aW5kb3cub3BlbiA9IGZ1bmN0aW9uICgpIHsgYWxlcnQoIkZBSUw6IFZpc2libGUg
aW4gaXNvbGF0ZWQgd29ybGQuIik7IH07CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgbGF5b3V0VGVzdENv
bnRyb2xsZXIucXVldWVTY3JpcHRJbklzb2xhdGVkV29ybGQoCisgICAgIndpbmRvdy5vcGVuID0g
ZnVuY3Rpb24gKCkgeyBhbGVydCgnUEFTUycpOyB9O1xuIiArCisgICAgImRvY3VtZW50Lm9wZW4o
MSwgMiwgMyk7Iik7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4=
</data>
<flag name="review"
          id="17793"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>