<?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>25412</bug_id>
          
          <creation_ts>2009-04-26 14:47:55 -0700</creation_ts>
          <short_desc>The Window object should be an EventTarget</short_desc>
          <delta_ts>2009-04-26 17:03:28 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>118926</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-04-26 14:47:55 -0700</bug_when>
    <thetext>The Window object should be a full fledged EventTarget and implement dispatchEvent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118927</commentid>
    <comment_count>1</comment_count>
      <attachid>29805</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-04-26 14:50:12 -0700</bug_when>
    <thetext>Created attachment 29805
Patch [WIP]

This patch turns makes the DOMWindow an EventTarget but it is still a WIP as I have not had time to make tests yet.  I will update when I next have a chance.  I am putting this up so I don&apos;t lose it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118928</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-04-26 14:50:40 -0700</bug_when>
    <thetext>A follow up patch should move more the window event dispatch code to DOMWindow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118935</commentid>
    <comment_count>3</comment_count>
      <attachid>29808</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-04-26 16:53:15 -0700</bug_when>
    <thetext>Created attachment 29808
patch with tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118936</commentid>
    <comment_count>4</comment_count>
      <attachid>29808</attachid>
    <who name="">mitz</who>
    <bug_when>2009-04-26 16:57:54 -0700</bug_when>
    <thetext>Comment on attachment 29808
patch with tests

&gt; Index: WebCore/page/DOMWindow.h
&gt; ===================================================================
&gt; --- WebCore/page/DOMWindow.h	(revision 42880)
&gt; +++ WebCore/page/DOMWindow.h	(working copy)
&gt; @@ -30,6 +30,7 @@
&gt;  #include &quot;PlatformString.h&quot;
&gt;  #include &quot;RegisteredEventListener.h&quot;
&gt;  #include &quot;SecurityOrigin.h&quot;
&gt; +#include &quot;EventTarget.h&quot;
&gt;  #include &lt;wtf/Forward.h&gt;
&gt;  #include &lt;wtf/RefCounted.h&gt;
&gt;  #include &lt;wtf/RefPtr.h&gt;

Please keep in ASCII order.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118937</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-04-26 17:03:28 -0700</bug_when>
    <thetext>Landed in r42882.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29805</attachid>
            <date>2009-04-26 14:50:12 -0700</date>
            <delta_ts>2009-04-26 16:53:15 -0700</delta_ts>
            <desc>Patch [WIP]</desc>
            <filename>wip.diff</filename>
            <type>text/plain</type>
            <size>8256</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRp
bmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiA0MjgzNSkKKysrIGJpbmRpbmdzL2pz
L0pTRXZlbnRUYXJnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiwxMCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQuaCIKIAorI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSlNET01XaW5k
b3cuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvd1NoZWxsLmgiCiAjaW5jbHVkZSAiSlNFdmVudExp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIkpTTm9kZS5o
IgpAQCAtNzEsNiArNzQsOSBAQCBKU1ZhbHVlUHRyIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBFdmVu
dFRhCiAgICAgaWYgKE5vZGUqIG5vZGUgPSB0YXJnZXQtPnRvTm9kZSgpKQogICAgICAgICByZXR1
cm4gdG9KUyhleGVjLCBub2RlKTsKIAorICAgIGlmIChET01XaW5kb3cqIGRvbVdpbmRvdyA9IHRh
cmdldC0+dG9ET01XaW5kb3coKSkKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZG9tV2luZG93
KTsKKwogICAgIGlmIChYTUxIdHRwUmVxdWVzdCogeGhyID0gdGFyZ2V0LT50b1hNTEh0dHBSZXF1
ZXN0KCkpCiAgICAgICAgIC8vIFhNTEh0dHBSZXF1ZXN0IGlzIGFsd2F5cyBjcmVhdGVkIHZpYSBK
Uywgc28gd2UgZG9uJ3QgbmVlZCB0byB1c2UgY2FjaGVET01PYmplY3QoKSBoZXJlLgogICAgICAg
ICByZXR1cm4gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcihleGVjLT5nbG9iYWxEYXRhKCksIHho
cik7CkBAIC0xMTAsNiArMTE2LDkgQEAgRXZlbnRUYXJnZXQqIHRvRXZlbnRUYXJnZXQoSlNDOjpK
U1ZhbHVlUAogICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKFhNTEh0dHBSZXF1ZXN0VXBsb2Fk
KQogICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKE1lc3NhZ2VQb3J0KQogCisgICAgaWYgKHZh
bHVlLmlzT2JqZWN0KCZKU0RPTVdpbmRvd1NoZWxsOjpzX2luZm8pKQorICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KGFzT2JqZWN0KHZhbHVlKSktPmltcGwoKTsK
KwogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgQ09OVkVSVF9UT19F
VkVOVF9UQVJHRVQoRE9NQXBwbGljYXRpb25DYWNoZSkKICNlbmRpZgpJbmRleDogZG9tL0V2ZW50
VGFyZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vRXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiA0
MjgzNSkKKysrIGRvbS9FdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5
LDExIEBAIE5vZGUqIEV2ZW50VGFyZ2V0Ojp0b05vZGUoKQogICAgIHJldHVybiAwOwogfQogCitE
T01XaW5kb3cqIEV2ZW50VGFyZ2V0Ojp0b0RPTVdpbmRvdygpCit7CisgICAgcmV0dXJuIDA7Cit9
CisKIFhNTEh0dHBSZXF1ZXN0KiBFdmVudFRhcmdldDo6dG9YTUxIdHRwUmVxdWVzdCgpCiB7CiAg
ICAgcmV0dXJuIDA7CkluZGV4OiBkb20vRXZlbnRUYXJnZXQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20v
RXZlbnRUYXJnZXQuaAkocmV2aXNpb24gNDI4MzUpCisrKyBkb20vRXZlbnRUYXJnZXQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGNsYXNzIEF0b21pY1N0cmluZzsKICAgICBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOworICAg
IGNsYXNzIERPTVdpbmRvdzsKICAgICBjbGFzcyBFdmVudDsKICAgICBjbGFzcyBFdmVudExpc3Rl
bmVyOwogICAgIGNsYXNzIE1lc3NhZ2VQb3J0OwogICAgIGNsYXNzIE5vZGU7Ci0gICAgY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7Cisg
ICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBXb3JrZXI7CiAgICAg
Y2xhc3MgV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBYTUxIdHRwUmVxdWVzdDsKQEAgLTU1LDYg
KzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVh
bCBNZXNzYWdlUG9ydCogdG9NZXNzYWdlUG9ydCgpOwogICAgICAgICB2aXJ0dWFsIE5vZGUqIHRv
Tm9kZSgpOworICAgICAgICB2aXJ0dWFsIERPTVdpbmRvdyogdG9ET01XaW5kb3coKTsKICAgICAg
ICAgdmlydHVhbCBYTUxIdHRwUmVxdWVzdCogdG9YTUxIdHRwUmVxdWVzdCgpOwogICAgICAgICB2
aXJ0dWFsIFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB0b1hNTEh0dHBSZXF1ZXN0VXBsb2FkKCk7CiAj
aWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKSW5kZXg6IHBhZ2UvRE9NV2luZG93
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDQyODM1KQor
KysgcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiRE9NU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFdmVu
dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKQEAgLTM2OCw2ICszNjksMTEgQEAgRE9NV2luZG93Ojp+RE9NV2luZG93KCkKICAg
ICByZW1vdmVQZW5kaW5nRXZlbnRMaXN0ZW5lcnMocGVuZGluZ0JlZm9yZVVubG9hZEV2ZW50TGlz
dGVuZXJNYXAoKSwgdGhpcyk7CiB9CiAKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIERPTVdpbmRv
dzo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRvY3VtZW50
KCk7Cit9CisKIHZvaWQgRE9NV2luZG93OjpkaXNjb25uZWN0RnJhbWUoKQogewogICAgIG1fZnJh
bWUgPSAwOwpAQCAtNjMwLDcgKzYzNiw4IEBAIHZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZVRp
bWVyRmlyZWQoUG8KICAgICBpZiAobWVzc2FnZVBvcnQpCiAgICAgICAgIG1lc3NhZ2VQb3J0LT5h
dHRhY2hUb0NvbnRleHQoZG9jdW1lbnQoKSk7CiAKLSAgICBkb2N1bWVudCgpLT5kaXNwYXRjaFdp
bmRvd0V2ZW50KHRpbWVyLT5ldmVudCgpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBkaXNwYXRjaEV2ZW50KHRpbWVyLT5ldmVudCgpLCBlYyk7CiB9CiAKIERPTVNlbGVjdGlvbiog
RE9NV2luZG93OjpnZXRTZWxlY3Rpb24oKQpAQCAtMTIxMSw2ICsxMjE4LDI3IEBAIHZvaWQgRE9N
V2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnMKICAgICB9CiB9CiAKK2Jvb2wgRE9NV2lu
ZG93OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIEFTU0VSVCghZXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsKKworICAgIFJlZlB0
cjxFdmVudD4gZXZlbnQgPSBlOworICAgIGlmICghZXZlbnQgfHwgZXZlbnQtPnR5cGUoKS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgZWMgPSBFdmVudEV4Y2VwdGlvbjo6VU5TUEVDSUZJRURfRVZFTlRf
VFlQRV9FUlI7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIFJlZlB0cjxET01X
aW5kb3c+IHByb3RlY3QodGhpcyk7CisKKyAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAg
IGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOworCisgICAgaGFuZGxlRXZlbnQoZXZlbnQu
Z2V0KCksIHRydWUpOworICAgIGhhbmRsZUV2ZW50KGV2ZW50LmdldCgpLCBmYWxzZSk7CisKKyAg
ICByZXR1cm4gIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7Cit9CisKIHZvaWQgRE9NV2luZG93
OjpyZW1vdmVBbGxFdmVudExpc3RlbmVycygpCiB7CiAgICAgc2l6ZV90IHNpemUgPSBtX2V2ZW50
TGlzdGVuZXJzLnNpemUoKTsKSW5kZXg6IHBhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
cGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24gNDI4MzUpCisrKyBwYWdlL0RPTVdpbmRvdy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlICJSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgpAQCAtNjgsMTEgKzY5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHR5cGVk
ZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLSAgICBjbGFzcyBET01XaW5kb3cgOiBwdWJsaWMgUmVm
Q291bnRlZDxET01XaW5kb3c+IHsKKyAgICBjbGFzcyBET01XaW5kb3cgOiBwdWJsaWMgUmVmQ291
bnRlZDxET01XaW5kb3c+LCBwdWJsaWMgRXZlbnRUYXJnZXQgewogICAgIHB1YmxpYzoKICAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NV2luZG93PiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgRE9NV2luZG93KGZyYW1lKSk7IH0KICAgICAgICAgdmlydHVhbCB+
RE9NV2luZG93KCk7CiAKKyAgICAgICAgdmlydHVhbCBET01XaW5kb3cqIHRvRE9NV2luZG93KCkg
eyByZXR1cm4gdGhpczsgfQorICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKwogICAgICAgICBGcmFtZSogZnJhbWUo
KSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAgICAgICAgIHZvaWQgZGlzY29ubmVjdEZyYW1l
KCk7CiAKQEAgLTIwOSw5ICsyMTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
dm9pZCBoYW5kbGVFdmVudChFdmVudCosIGJvb2wgdXNlQ2FwdHVyZSwgUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXJWZWN0b3IqID0gMCk7CiAKLSAgICAgICAgLy8gVXNlZCBmb3Igc3RhbmRhcmQgRE9N
IGFkZEV2ZW50TGlzdGVuZXIgLyByZW1vdmVFdmVudExpc3RlbmVyIEFQSXMuCi0gICAgICAgIHZv
aWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1Jl
ZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKLSAgICAgICAgdm9pZCByZW1v
dmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwg
Ym9vbCB1c2VDYXB0dXJlKTsKKyAgICAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICAvLyBVc2VkIGZvciBs
ZWdhY3kgIm9uRXZlbnQiIHByb3BlcnR5IEFQSXMuCiAgICAgICAgIHZvaWQgc2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPik7CkBAIC0zMDMsOSArMzA3LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgRE9NQXBwbGljYXRpb25DYWNoZSogb3B0aW9uYWxBcHBsaWNhdGlvbkNhY2hlKCkg
Y29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkNhY2hlLmdldCgpOyB9CiAjZW5kaWYKIAorICAg
ICAgICB1c2luZyBSZWZDb3VudGVkPERPTVdpbmRvdz46OnJlZjsKKyAgICAgICAgdXNpbmcgUmVm
Q291bnRlZDxET01XaW5kb3c+OjpkZXJlZjsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIERPTVdp
bmRvdyhGcmFtZSopOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsg
cmVmKCk7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVm
KCk7IH0KKwogICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47
CiAgICAgICAgIEtVUkwgbV91cmw7CiAKSW5kZXg6IHBhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBwYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDQyODM1KQorKysgcGFnZS9ET01X
aW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMjEsMTcg
KzIyMSwxOCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFtQcm90ZWN0ZWRM
aXN0ZW5lcl0gRXZlbnRMaXN0ZW5lciBvbm1vdmU7CiAjZW5kaWYKIAotICAgIC8vIEV2ZW50VGFy
Z2V0IGludGVyZmFjZQotICAgIFtDdXN0b21dIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01T
dHJpbmcgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExp
c3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJv
b2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgW0N1c3RvbV0gdm9pZCByZW1vdmVFdmVudExpc3RlbmVy
KGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAg
ICAgICAgW0N1c3RvbV0gdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxp
c3RlbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFu
IHVzZUNhcHR1cmUpOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZGlzcGF0Y2hFdmVudAorICAg
ICAgICBbQ3VzdG9tXSB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3Rl
bmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGlu
IEV2ZW50IGV2dCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CiAKLSAgICBb
SlNDQ3VzdG9tLCBWOEN1c3RvbT1ET01XaW5kb3dOT1BdIHZvaWQgY2FwdHVyZUV2ZW50cyhpbiBs
b25nIGV2ZW50RmxhZ3MpOwotICAgIFtKU0NDdXN0b20sIFY4Q3VzdG9tPURPTVdpbmRvd05PUF0g
dm9pZCByZWxlYXNlRXZlbnRzKGluIGxvbmcgZXZlbnRGbGFncyk7CisgICAgICAgIFtKU0NDdXN0
b20sIFY4Q3VzdG9tPURPTVdpbmRvd05PUF0gdm9pZCBjYXB0dXJlRXZlbnRzKGluIGxvbmcgZXZl
bnRGbGFncyk7CisgICAgICAgIFtKU0NDdXN0b20sIFY4Q3VzdG9tPURPTVdpbmRvd05PUF0gdm9p
ZCByZWxlYXNlRXZlbnRzKGluIGxvbmcgZXZlbnRGbGFncyk7CiAKICNpZiBkZWZpbmVkKExBTkdV
QUdFX0pBVkFTQ1JJUFQpCiAgICAgICAgIC8vIEdsb2JhbCBjb25zdHJ1Y3RvcnMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29808</attachid>
            <date>2009-04-26 16:53:15 -0700</date>
            <delta_ts>2009-04-26 16:57:54 -0700</delta_ts>
            <desc>patch with tests</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>14412</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Mjg4MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDktMDQtMjYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9y
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTQxMgorICAgICAgICBU
aGUgV2luZG93IG9iamVjdCBzaG91bGQgYmUgYW4gRXZlbnRUYXJnZXQKKworICAgICAgICBUZXN0
OiBmYXN0L2RvbS9XaW5kb3cvZGlzcGF0Y2hFdmVudC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOiBBZGQgRE9N
V2luZG93IGNhc2UuCisgICAgICAgIChXZWJDb3JlOjp0b0V2ZW50VGFyZ2V0KTogRGl0dG8uCisK
KyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRU
YXJnZXQ6OnRvRE9NV2luZG93KTogQWRkZWQuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6
CisKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOiBBZGRlZC4gUmV0dXJucyB0aGUgZG9jdW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmRpc3BhdGNoRXZlbnQpOiBBZGRlZC4K
KyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
Ojp0b0RPTVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnJlZkV2ZW50VGFy
Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6ZGVyZWZFdmVudFRhcmdldCk6Cisg
ICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorCiAyMDA5LTA0LTI2ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDQyODgwKQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0V2ZW50VGFy
Z2V0LmgiCiAKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3dTaGVsbC5oIgog
I2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnQuaCIK
ICNpbmNsdWRlICJKU05vZGUuaCIKQEAgLTcxLDYgKzc0LDkgQEAgSlNWYWx1ZVB0ciB0b0pTKEV4
ZWNTdGF0ZSogZXhlYywgRXZlbnRUYQogICAgIGlmIChOb2RlKiBub2RlID0gdGFyZ2V0LT50b05v
ZGUoKSkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgbm9kZSk7CiAKKyAgICBpZiAoRE9NV2lu
ZG93KiBkb21XaW5kb3cgPSB0YXJnZXQtPnRvRE9NV2luZG93KCkpCisgICAgICAgIHJldHVybiB0
b0pTKGV4ZWMsIGRvbVdpbmRvdyk7CisKICAgICBpZiAoWE1MSHR0cFJlcXVlc3QqIHhociA9IHRh
cmdldC0+dG9YTUxIdHRwUmVxdWVzdCgpKQogICAgICAgICAvLyBYTUxIdHRwUmVxdWVzdCBpcyBh
bHdheXMgY3JlYXRlZCB2aWEgSlMsIHNvIHdlIGRvbid0IG5lZWQgdG8gdXNlIGNhY2hlRE9NT2Jq
ZWN0KCkgaGVyZS4KICAgICAgICAgcmV0dXJuIGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB4aHIpOwpAQCAtMTEwLDYgKzExNiw5IEBAIEV2ZW50VGFyZ2V0KiB0
b0V2ZW50VGFyZ2V0KEpTQzo6SlNWYWx1ZVAKICAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdFVChY
TUxIdHRwUmVxdWVzdFVwbG9hZCkKICAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdFVChNZXNzYWdl
UG9ydCkKIAorICAgIGlmICh2YWx1ZS5pc09iamVjdCgmSlNET01XaW5kb3dTaGVsbDo6c19pbmZv
KSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTRE9NV2luZG93U2hlbGwqPihhc09iamVj
dCh2YWx1ZSkpLT5pbXBsKCk7CisKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05T
KQogICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKERPTUFwcGxpY2F0aW9uQ2FjaGUpCiAjZW5k
aWYKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDQyODgwKQorKysgV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSwxMSBAQCBOb2RlKiBF
dmVudFRhcmdldDo6dG9Ob2RlKCkKICAgICByZXR1cm4gMDsKIH0KIAorRE9NV2luZG93KiBFdmVu
dFRhcmdldDo6dG9ET01XaW5kb3coKQoreworICAgIHJldHVybiAwOworfQorCiBYTUxIdHRwUmVx
dWVzdCogRXZlbnRUYXJnZXQ6OnRvWE1MSHR0cFJlcXVlc3QoKQogewogICAgIHJldHVybiAwOwpJ
bmRleDogV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5oCShyZXZpc2lvbiA0Mjg4MCkKKysrIFdlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICszOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBBdG9taWNTdHJpbmc7CiAgICAgY2xhc3MgRE9NQXBwbGljYXRpb25D
YWNoZTsKKyAgICBjbGFzcyBET01XaW5kb3c7CiAgICAgY2xhc3MgRXZlbnQ7CiAgICAgY2xhc3Mg
RXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOb2RlOwot
ICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgU1ZHRWxlbWVudElu
c3RhbmNlOworICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgV29y
a2VyOwogICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7
CkBAIC01NSw2ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHZpcnR1YWwgTWVzc2FnZVBvcnQqIHRvTWVzc2FnZVBvcnQoKTsKICAgICAgICAgdmlydHVh
bCBOb2RlKiB0b05vZGUoKTsKKyAgICAgICAgdmlydHVhbCBET01XaW5kb3cqIHRvRE9NV2luZG93
KCk7CiAgICAgICAgIHZpcnR1YWwgWE1MSHR0cFJlcXVlc3QqIHRvWE1MSHR0cFJlcXVlc3QoKTsK
ICAgICAgICAgdmlydHVhbCBYTUxIdHRwUmVxdWVzdFVwbG9hZCogdG9YTUxIdHRwUmVxdWVzdFVw
bG9hZCgpOwogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCkluZGV4OiBXZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAkocmV2aXNpb24gNDI4ODApCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRPTVNlbGVjdGlvbi5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUg
IkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCkBAIC0zNjgsNiArMzY5
LDExIEBAIERPTVdpbmRvdzo6fkRPTVdpbmRvdygpCiAgICAgcmVtb3ZlUGVuZGluZ0V2ZW50TGlz
dGVuZXJzKHBlbmRpbmdCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVyTWFwKCksIHRoaXMpOwogfQog
CitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBET01XaW5kb3c6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdAoreworICAgIHJldHVybiBkb2N1bWVudCgpOworfQorCiB2b2lkIERPTVdpbmRv
dzo6ZGlzY29ubmVjdEZyYW1lKCkKIHsKICAgICBtX2ZyYW1lID0gMDsKQEAgLTEyMTEsNiArMTIx
NywyNyBAQCB2b2lkIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zCiAgICAgfQog
fQogCitib29sIERPTVdpbmRvdzo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBlLCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBBU1NFUlQoIWV2ZW50RGlzcGF0Y2hGb3JiaWRkZW4o
KSk7CisKKyAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gZTsKKyAgICBpZiAoIWV2ZW50IHx8IGV2
ZW50LT50eXBlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGVjID0gRXZlbnRFeGNlcHRpb246OlVO
U1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICBSZWZQdHI8RE9NV2luZG93PiBwcm90ZWN0KHRoaXMpOworCisgICAgZXZlbnQtPnNldFRh
cmdldCh0aGlzKTsKKyAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKworICAgIGhh
bmRsZUV2ZW50KGV2ZW50LmdldCgpLCB0cnVlKTsKKyAgICBoYW5kbGVFdmVudChldmVudC5nZXQo
KSwgZmFsc2UpOworCisgICAgcmV0dXJuICFldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOworfQor
CiB2b2lkIERPTVdpbmRvdzo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKQogewogICAgIHNpemVf
dCBzaXplID0gbV9ldmVudExpc3RlbmVycy5zaXplKCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lv
biA0Mjg4MCkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2lu
Y2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTY4LDExICs2
OSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICB0eXBlZGVmIGludCBFeGNlcHRpb25D
b2RlOwogCi0gICAgY2xhc3MgRE9NV2luZG93IDogcHVibGljIFJlZkNvdW50ZWQ8RE9NV2luZG93
PiB7CisgICAgY2xhc3MgRE9NV2luZG93IDogcHVibGljIFJlZkNvdW50ZWQ8RE9NV2luZG93Piwg
cHVibGljIEV2ZW50VGFyZ2V0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPERPTVdpbmRvdz4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IERPTVdpbmRvdyhmcmFtZSkpOyB9CiAgICAgICAgIHZpcnR1YWwgfkRPTVdpbmRvdygpOwogCisg
ICAgICAgIHZpcnR1YWwgRE9NV2luZG93KiB0b0RPTVdpbmRvdygpIHsgcmV0dXJuIHRoaXM7IH0K
KyAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3Q7CisKICAgICAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZTsgfQogICAgICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOwogCkBAIC0yMDksOSAr
MjEzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgaGFuZGxlRXZlbnQo
RXZlbnQqLCBib29sIHVzZUNhcHR1cmUsIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyVmVjdG9yKiA9
IDApOwogCi0gICAgICAgIC8vIFVzZWQgZm9yIHN0YW5kYXJkIERPTSBhZGRFdmVudExpc3RlbmVy
IC8gcmVtb3ZlRXZlbnRMaXN0ZW5lciBBUElzLgotICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4sIGJvb2wgdXNlQ2FwdHVyZSk7Ci0gICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2Fw
dHVyZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNh
cHR1cmUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7
CisgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBF
eGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgLy8gVXNlZCBmb3IgbGVnYWN5ICJvbkV2ZW50IiBw
cm9wZXJ0eSBBUElzLgogICAgICAgICB2b2lkIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOwpA
QCAtMzAzLDkgKzMwNywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERPTUFwcGxp
Y2F0aW9uQ2FjaGUqIG9wdGlvbmFsQXBwbGljYXRpb25DYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXBwbGljYXRpb25DYWNoZS5nZXQoKTsgfQogI2VuZGlmCiAKKyAgICAgICAgdXNpbmcgUmVmQ291
bnRlZDxET01XaW5kb3c+OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8RE9NV2luZG93
Pjo6ZGVyZWY7CisKICAgICBwcml2YXRlOgogICAgICAgICBET01XaW5kb3coRnJhbWUqKTsKIAor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisKICAgICAgICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogICAgICAgICBLVVJMIG1f
dXJsOwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gNDI4ODApCisrKyBXZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjIxLDE3ICsyMjEsMTggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBbUHJv
dGVjdGVkTGlzdGVuZXJdIEV2ZW50TGlzdGVuZXIgb25tb3ZlOwogI2VuZGlmCiAKLSAgICAvLyBF
dmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICBbQ3VzdG9tXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIo
aW4gRE9NU3RyaW5nIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
RXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgIFtDdXN0b21dIHZvaWQgcmVtb3ZlRXZlbnRM
aXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJm
YWNlCisgICAgICAgIFtDdXN0b21dIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcg
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0
ZW5lciBsaXN0ZW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
Ym9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IGRpc3BhdGNoRXZl
bnQKKyAgICAgICAgW0N1c3RvbV0gdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmlu
ZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZl
bnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hF
dmVudChpbiBFdmVudCBldnQpCisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwog
Ci0gICAgW0pTQ0N1c3RvbSwgVjhDdXN0b209RE9NV2luZG93Tk9QXSB2b2lkIGNhcHR1cmVFdmVu
dHMoaW4gbG9uZyBldmVudEZsYWdzKTsKLSAgICBbSlNDQ3VzdG9tLCBWOEN1c3RvbT1ET01XaW5k
b3dOT1BdIHZvaWQgcmVsZWFzZUV2ZW50cyhpbiBsb25nIGV2ZW50RmxhZ3MpOworICAgICAgICBb
SlNDQ3VzdG9tLCBWOEN1c3RvbT1ET01XaW5kb3dOT1BdIHZvaWQgY2FwdHVyZUV2ZW50cyhpbiBs
b25nIGV2ZW50RmxhZ3MpOworICAgICAgICBbSlNDQ3VzdG9tLCBWOEN1c3RvbT1ET01XaW5kb3dO
T1BdIHZvaWQgcmVsZWFzZUV2ZW50cyhpbiBsb25nIGV2ZW50RmxhZ3MpOwogCiAjaWYgZGVmaW5l
ZChMQU5HVUFHRV9KQVZBU0NSSVBUKQogICAgICAgICAvLyBHbG9iYWwgY29uc3RydWN0b3JzCklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA0Mjg4MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA5LTA0LTI2ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHMgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTQx
MgorICAgICAgICBUaGUgV2luZG93IG9iamVjdCBzaG91bGQgYmUgYW4gRXZlbnRUYXJnZXQKKwor
ICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy9kaXNwYXRjaEV2ZW50LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vV2luZG93L2Rpc3BhdGNoRXZlbnQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3Jlc291cmNlcy9kaXNwYXRjaEV2ZW50LmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0
ZWQudHh0CisgICAgICAgICogcGxhdGZvcm0vbWFjLWxlb3BhcmQvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKwogMjAwOS0wNC0yNSAgR3VzdGF2byBOb3Jv
bmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBHbyBiYWNrIHRvIGRpc2FibGlu
ZyBhY2Nlc3NpYmlsaXR5IHRlc3RzIGFzIGEgd2hvbGUsIHNpbmNlIHdlIGhhdmUKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9kaXNwYXRjaEV2ZW50LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZGlzcGF0Y2hFdmVudC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZGlz
cGF0Y2hFdmVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKK1Rl
c3Qgd2luZG93LmRpc3BhdGNoRXZlbnQoKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1Mgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZlbnQpIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogVU5TUEVDSUZJRURfRVZFTlRfVFlQRV9FUlI6IERPTSBFdmVudHMgRXhjZXB0aW9uIDAuCitQ
QVNTIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2ZW50KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFVO
U1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSOiBET00gRXZlbnRzIEV4Y2VwdGlvbiAwLgorUEFTUyBt
eUV2ZW50RGlzcGF0Y2hlZCBpcyB0cnVlCitQQVNTIHRhcmdldCBpcyB3aW5kb3cKK1BBU1MgY3Vy
cmVudFRhcmdldCBpcyB3aW5kb3cKK1BBU1MgdXNlQ2FwdHVyZURpc3BhdGNoZWQgaXMgdHJ1ZQor
UEFTUyBub25Vc2VDYXB0dXJlRGlzcGF0Y2hlZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L2Rpc3BhdGNoRXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvZGlzcGF0Y2hFdmVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L2Rpc3BhdGNoRXZlbnQuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9kaXNwYXRjaEV2ZW50LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGll
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDI4ODApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xNjQwLDYgKzE2NDAsNyBAQCB3aW5kb3cuY3J5cHRvIFt1bmRlZmlu
ZWRdCiB3aW5kb3cuZGVmYXVsdFN0YXR1cyBbc3RyaW5nXQogd2luZG93LmRlZmF1bHRzdGF0dXMg
W3N0cmluZ10KIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIFtudW1iZXJdCit3aW5kb3cuZGlzcGF0
Y2hFdmVudCBbZnVuY3Rpb25dCiB3aW5kb3cuZG9jdW1lbnQgW3ByaW50ZWQgYWJvdmUgYXMgd2lu
ZG93LkRvY3VtZW50LnByb3RvdHlwZV0KIHdpbmRvdy5ldmVudCBbdW5kZWZpbmVkXQogd2luZG93
LmZpbmQgW2Z1bmN0aW9uXQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Jlc291
cmNlcy9kaXNwYXRjaEV2ZW50LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy9yZXNvdXJjZXMvZGlzcGF0Y2hFdmVudC5qcwkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9yZXNvdXJjZXMvZGlzcGF0Y2hFdmVudC5qcwkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0MiBAQAorZGVzY3JpcHRpb24oIlRlc3Qgd2luZG93LmRpc3BhdGNo
RXZlbnQoKS4iKTsKKworLy8gVGVzdCB0aGF0IG5vbi1ldmVudHMgdGhyb3cKK3ZhciBldmVudCA9
IHt9Oworc2hvdWxkVGhyb3coIndpbmRvdy5kaXNwYXRjaEV2ZW50KGV2ZW50KSIpOworCisvLyBU
ZXN0IHRoYXQgbm9uLWluaXRpYWxpemVkIGV2ZW50cyB0aHJvdworZXZlbnQgPSBkb2N1bWVudC5j
cmVhdGVFdmVudCgiRXZlbnQiKTsKK3Nob3VsZFRocm93KCJ3aW5kb3cuZGlzcGF0Y2hFdmVudChl
dmVudCkiKTsKKworLy8gVGVzdCBiYXNpYyBkaXNwYXRjaAordmFyIG15RXZlbnREaXNwYXRjaGVk
ID0gZmFsc2U7Cit2YXIgdGFyZ2V0OwordmFyIGN1cnJlbnRUYXJnZXQ7Cit3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigibXlFdmVudCIsIGZ1bmN0aW9uKGV2dCkgeworICAgIG15RXZlbnREaXNwYXRj
aGVkID0gdHJ1ZTsKKyAgICB0YXJnZXQgPSBldnQudGFyZ2V0OworICAgIGN1cnJlbnRUYXJnZXQg
PSBldnQuY3VycmVudFRhcmdldDsKK30sIGZhbHNlKTsKK2V2ZW50ID0gZG9jdW1lbnQuY3JlYXRl
RXZlbnQoIkV2ZW50Iik7CitldmVudC5pbml0RXZlbnQoIm15RXZlbnQiLCBmYWxzZSwgZmFsc2Up
Oword2luZG93LmRpc3BhdGNoRXZlbnQoZXZlbnQpOworc2hvdWxkQmVUcnVlKCJteUV2ZW50RGlz
cGF0Y2hlZCIpOworc2hvdWxkQmUoInRhcmdldCIsICJ3aW5kb3ciKTsKK3Nob3VsZEJlKCJjdXJy
ZW50VGFyZ2V0IiwgIndpbmRvdyIpOworCisvLyBUZXN0IHRoYXQgYm90aCB1c2VDYXB0dXJlIGFu
ZCBub24tdXNlQ2FwdHVyZSBsaXN0ZW5lcnMgYXJlIGRpc3BhdGNoZWQgdG8KK3ZhciB1c2VDYXB0
dXJlRGlzcGF0Y2hlZCA9IGZhbHNlOword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm15RXZlbnQi
LCBmdW5jdGlvbihldnQpIHsKKyAgICB1c2VDYXB0dXJlRGlzcGF0Y2hlZCA9IHRydWU7Cit9LCB0
cnVlKTsKK3ZhciBub25Vc2VDYXB0dXJlRGlzcGF0Y2hlZCA9IGZhbHNlOword2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoIm15RXZlbnQiLCBmdW5jdGlvbihldnQpIHsKKyAgICBub25Vc2VDYXB0dXJl
RGlzcGF0Y2hlZCA9IHRydWU7Cit9LCBmYWxzZSk7CitldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2
ZW50KCJFdmVudCIpOworZXZlbnQuaW5pdEV2ZW50KCJteUV2ZW50IiwgZmFsc2UsIGZhbHNlKTsK
K3dpbmRvdy5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK3Nob3VsZEJlVHJ1ZSgidXNlQ2FwdHVyZURp
c3BhdGNoZWQiKTsKK3Nob3VsZEJlVHJ1ZSgibm9uVXNlQ2FwdHVyZURpc3BhdGNoZWQiKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtbGVvcGFyZC9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL2Zhc3Qv
ZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQyODgw
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTY0MCw2ICsx
NjQwLDcgQEAgd2luZG93LmNyeXB0byBbdW5kZWZpbmVkXQogd2luZG93LmRlZmF1bHRTdGF0dXMg
W3N0cmluZ10KIHdpbmRvdy5kZWZhdWx0c3RhdHVzIFtzdHJpbmddCiB3aW5kb3cuZGV2aWNlUGl4
ZWxSYXRpbyBbbnVtYmVyXQord2luZG93LmRpc3BhdGNoRXZlbnQgW2Z1bmN0aW9uXQogd2luZG93
LmRvY3VtZW50IFtwcmludGVkIGFib3ZlIGFzIHdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGVdCiB3
aW5kb3cuZXZlbnQgW3VuZGVmaW5lZF0KIHdpbmRvdy5maW5kIFtmdW5jdGlvbl0K
</data>
<flag name="review"
          id="14918"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>