<?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>16447</bug_id>
          
          <creation_ts>2007-12-15 03:28:30 -0800</creation_ts>
          <short_desc>onload called too many times for &lt;svg:image&gt;</short_desc>
          <delta_ts>2008-04-30 13:42:01 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>18785</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>64263</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-15 03:28:30 -0800</bug_when>
    <thetext>onload called too many times for &lt;svg:image&gt;

We seem to be calling onload multiple times for each &lt;svg:image&gt; object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64264</commentid>
    <comment_count>1</comment_count>
      <attachid>17911</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-15 03:28:49 -0800</bug_when>
    <thetext>Created attachment 17911
test case (uses remote URL)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76417</commentid>
    <comment_count>2</comment_count>
      <attachid>20363</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-04-06 04:05:44 -0700</bug_when>
    <thetext>Created attachment 20363
First attempt

There were two problems here. First, that load was dispatched both when image was loaded and tag was closed. Second, that image load was dispatched to parents too, while the spec says:

A SVGLoad event is dispatched only to the element to which the event applies; it is not dispatched to its ancestors.

This patch fixes that. The testcase works, just not sure if external image is allowed, can change it to use a local image if needed.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76468</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-07 00:31:14 -0700</bug_when>
    <thetext>Bah.  Unfortunately we need to better understand what proper SVGLoad event handling is before we can really make any changes to this code.  To do so, we need at least 3 (possibly 4) test cases, as described below:

1. normal loading, sign up for all listeners, make sure they are in order (a single capture listener on the top element should work)
2.  loading with externalResourcesRequired, make sure it delays all parents, but not siblings
3. using display: none, possibly (#4?) in combination with externalResoucesRequired

Your attached patch removes code which was originally written to handle the externalResoucesRequired delay case.  However, I&apos;m not sure if &lt;svg:image&gt; sends its Load event right after tag close, or after image load?  The spec is somewhat vague:
http://www.w3.org/TR/SVG11/interact.html#LoadEvent
The event is triggered at the point at which the user agent has fully parsed the element and its descendants and is ready to act appropriately upon that element, such as being ready to render the element to the target device. Referenced external resources that are required must be loaded, parsed and ready to render before the event is triggered. Optional external resources are not required to be ready for the event to be triggered.

I think &lt;image&gt; has sorta an implicit &quot;external resources required&quot; on it, and thus delays its load event and all parent load events until its image is loaded, and thus it&apos;s ready for display.

http://www.w3.org/TR/SVG11/struct.html#ExternalResourcesRequired
externalResourcesRequired=true
Indicates that resources external to the current document are required. If an external resource is not available, progressive rendering is suspended, the document&apos;s SVGLoad event is not fired and the animation timeline does not begin until that resource and all other required resources become available, have been parsed and are ready to be rendered. If a timeout event occurs on a required resource, then the document goes into an error state (see Error processing). The document remains in an error state until all required resources become available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76469</commentid>
    <comment_count>4</comment_count>
      <attachid>20363</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-07 00:31:36 -0700</bug_when>
    <thetext>Comment on attachment 20363
First attempt

I think we need more test cases (see comments above) before we can really evaluate this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77340</commentid>
    <comment_count>5</comment_count>
      <attachid>20490</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-04-12 06:41:34 -0700</bug_when>
    <thetext>Created attachment 20490
Better approach

This patch keeps the intend of the current code, delaying parent load dispatching until the image is loaded for externalResourcesRequired=true. Also it makes sure the event is dispatched to the parent node, the current code used &quot;this&quot;! With the new checks there are no multiple load dispatches.


Comparing with other implementations is a bit hard; Opera does not seem to support externalResourcesRequired, saying:

Failed attribute on image element: externalResourcesRequired=&quot;true&quot;.

Both and FireFox and Opera just seem to dispatch the load for the image right
after parsing the tag, but I don&apos;t think this is what the spec indicates.

The malloc avoiding code is just an idea I have, and could be dealt with separately, though while messing with the load code I think it is convenient
to attack that problem too.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77343</commentid>
    <comment_count>6</comment_count>
      <attachid>20490</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-12 11:00:32 -0700</bug_when>
    <thetext>Comment on attachment 20490
Better approach

Nice!

I don&apos;t think static RefPtr is &quot;safe&quot;.  the Event object would end up shared between frames, and would be unsafe.  Data could survive on the JSEvent wrapper too (since those are generally cached based on pointer).

I think that &lt;image&gt; should delay its onload until after its resources are loaded and ready to render anyway.  I&apos;m not sure what that means for externalResourcesRequired on &lt;image&gt; then...

r- for the Event sharing issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77347</commentid>
    <comment_count>7</comment_count>
      <attachid>20491</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-04-12 12:36:53 -0700</bug_when>
    <thetext>Created attachment 20491
Fix the &quot;avoid malloc&quot; part

This patch introduces hasListenerType, could also be called hasListenerForType
and/or moved into EventTargetNode.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77348</commentid>
    <comment_count>8</comment_count>
      <attachid>20491</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-12 12:48:34 -0700</bug_when>
    <thetext>Comment on attachment 20491
Fix the &quot;avoid malloc&quot; part

Two comments:

1.  I think SVG Load events might support capture, in which case you need to dispatch the event anyway (unless you walk up the parent chain and check to see if any parent has a capturing load event listener (which is what the comment is about).

Also, 
hasListenerType(const AtomicString &amp;eventType)
we put the &amp; next to AtomicString, per our style guidelines.

Since you&apos;ve pointed out yet another case that our testing missed, you might want to write a test case to verify that we correctly support capturing load event listeners (since this patch would have broken that).

r- for the broken event capture support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77352</commentid>
    <comment_count>9</comment_count>
      <attachid>20492</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-04-12 14:30:10 -0700</bug_when>
    <thetext>Created attachment 20492
Fix the &quot;avoid malloc&quot; part part II

This patch tries to do the ancestor capture listener check and adds a testcase for it, where it verifies that the capturing listener on the document element receives
all load events.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79100</commentid>
    <comment_count>10</comment_count>
      <attachid>20492</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-04-28 01:51:41 -0700</bug_when>
    <thetext>Comment on attachment 20492
Fix the &quot;avoid malloc&quot; part part II

Looks nice. From a first glance, it seems all issues Eric menioned, are fixed, right? In  that case r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79101</commentid>
    <comment_count>11</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-04-28 02:05:24 -0700</bug_when>
    <thetext>Hi Niko,

(In reply to comment #10)
&gt; (From update of attachment 20492 [edit])
&gt; Looks nice. From a first glance, it seems all issues Eric menioned, are fixed,
&gt; right? In  that case r=me.

Thnx for the r+!
Eric had some issues about a method name IIRC, I&apos;ll try to contact him about that.
Mfg,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79122</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-28 09:27:58 -0700</bug_when>
    <thetext>The change looks fine.

My comment over IRC was simply that:
hasLoadListener

doesn&apos;t actually do what it says.  It&apos;s more:
hasListenerForLoadEventTarget(element)
(although that&apos;s kinda klunky name)

The real fix of course is to fix the event system to use &quot;EventPromise&quot; stack-elements.  I think this fix is fine until Darin or someone follows through with adding an EventPromise.

Event promise is a stack-allocated object which knows how to malloc an Event with the right information, but only does so when required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79124</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-28 09:28:43 -0700</bug_when>
    <thetext>*** Bug 10264 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79126</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-28 09:28:49 -0700</bug_when>
    <thetext>*** Bug 12282 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79301</commentid>
    <comment_count>15</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-04-30 13:42:01 -0700</bug_when>
    <thetext>Landed in r32738.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>17911</attachid>
            <date>2007-12-15 03:28:49 -0800</date>
            <delta_ts>2007-12-15 03:28:49 -0800</delta_ts>
            <desc>test case (uses remote URL)</desc>
            <filename>test.svg</filename>
            <type>image/svg+xml</type>
            <size>665</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICA8c2NyaXB0PgogICAgPCFbQ0RBVEFbCiAgICAg
IHZhciBsb2FkZWQgPSAxOwogICAgICBmdW5jdGlvbiBpbWFnZUxvYWRlZCgpIHsKICAgICAgICB2
YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CiAgICAgICAgdGVzdC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgibG9hZGVkICIgKyBsb2FkZWQrKyAr
ICIgIikpOwogICAgICB9CiAgICBdXT4KICA8L3NjcmlwdD4KICA8Zm9yZWlnbk9iamVjdCB5PSI1
MDBweCIgd2lkdGg9IjIwMHB4IiBoZWlnaHQ9IjQwMHB4Ij4KICAgIDxkaXYgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIGlkPSJ0ZXN0Ij48L2Rpdj4KICA8L2ZvcmVpZ25PYmpl
Y3Q+CiAgPGltYWdlIGlkPSJpbWFnZSIgb25sb2FkPSJpbWFnZUxvYWRlZCgpIiB3aWR0aD0iMTAw
IiBoZWlnaHQ9IjEwMCIgeGxpbms6aHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy9wcm9qZWN0
cy93ZWJraXQvYnJvd3Nlci90cnVuay9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy9n
cmVlbi1jaGVja2VyLnBuZz9mb3JtYXQ9cmF3IiAvPgo8L3N2Zz4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20363</attachid>
            <date>2008-04-06 04:05:44 -0700</date>
            <delta_ts>2008-04-12 06:41:34 -0700</delta_ts>
            <desc>First attempt</desc>
            <filename>16447.diff</filename>
            <type>text/plain</type>
            <size>7415</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMTY3MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDgtMDQtMDYgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDQ3CisgICAgICAgIG9ubG9hZCBjYWxsZWQg
dG9vIG1hbnkgdGltZXMgZm9yIDxzdmc6aW1hZ2U+CisKKyAgICAgICAgRml4IG9ubG9hZCBjYWxs
aW5nIGZvciA8aW1hZ2U+LgorCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c2VuZFNWR0xvYWRFdmVudElmUG9zc2libGUpOgorICAg
ICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGls
ZHJlbik6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdJbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUxvYWRlcjo6ZGlz
cGF0Y2hMb2FkRXZlbnQpOgorCiAyMDA4LTA0LTA1ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0
aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuY3BwCShyZXZpc2lvbiAzMTY3MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHBy
b2plY3QKIApAQCAtMTU3LDIwICsxNTcsMTQgQEAgYm9vbCBTVkdFbGVtZW50OjpoYXZlTG9hZGVk
UmVxdWlyZWRSZXNvdQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNWR0VsZW1lbnQ6OnNl
bmRTVkdMb2FkRXZlbnRJZlBvc3NpYmxlKGJvb2wgc2VuZFBhcmVudExvYWRFdmVudHMpCit2b2lk
IFNWR0VsZW1lbnQ6OnNlbmRTVkdMb2FkRXZlbnRJZlBvc3NpYmxlKCkKIHsKLSAgICBSZWZQdHI8
U1ZHRWxlbWVudD4gY3VycmVudFRhcmdldCA9IHRoaXM7Ci0gICAgd2hpbGUgKGN1cnJlbnRUYXJn
ZXQgJiYgY3VycmVudFRhcmdldC0+aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkpIHsKLSAg
ICAgICAgUmVmUHRyPE5vZGU+IHBhcmVudDsKLSAgICAgICAgaWYgKHNlbmRQYXJlbnRMb2FkRXZl
bnRzKQotICAgICAgICAgICAgcGFyZW50ID0gY3VycmVudFRhcmdldC0+cGFyZW50Tm9kZSgpOyAv
LyBzYXZlIHRoZSBuZXh0IHBhcmVudCB0byBkaXNwYXRjaCB0b28gaW5jYXNlIGRpc3BhdGNoaW5n
IHRoZSBldmVudCBjaGFuZ2VzIHRoZSB0cmVlCi0gICAgICAgIAorICAgIGlmIChoYXZlTG9hZGVk
UmVxdWlyZWRSZXNvdXJjZXMoKSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBtYWxsb2MgY291
bGQgYmUgYXZvaWRlZCBieSB3YWxraW5nIHRoZSB0cmVlIGZpcnN0IHRvIGNoZWNrIGlmIGFueSBs
aXN0ZW5lcnMgYXJlIHByZXNlbnQ6IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMjY0CiAgICAgICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBuZXcgRXZlbnQobG9hZEV2
ZW50LCBmYWxzZSwgZmFsc2UpOwotICAgICAgICBldmVudC0+c2V0VGFyZ2V0KGN1cnJlbnRUYXJn
ZXQpOworICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwogICAgICAgICBFeGNlcHRpb25D
b2RlIGlnbm9yZWQgPSAwOwogICAgICAgICBkaXNwYXRjaEdlbmVyaWNFdmVudCh0aGlzLCBldmVu
dC5yZWxlYXNlKCksIGlnbm9yZWQsIGZhbHNlKTsKLSAgICAgICAgY3VycmVudFRhcmdldCA9IChw
YXJlbnQgJiYgcGFyZW50LT5pc1NWR0VsZW1lbnQoKSkgPyBzdGF0aWNfcG9pbnRlcl9jYXN0PFNW
R0VsZW1lbnQ+KHBhcmVudCkgOiAwOwogICAgIH0KIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkocmV2aXNp
b24gMzE2NzApCisrKyBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
OCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAog
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC0yMjMsNyArMjIz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNscyA9IGZhbHNl
KTsKIAotICAgICAgICB2b2lkIHNlbmRTVkdMb2FkRXZlbnRJZlBvc3NpYmxlKGJvb2wgc2VuZFBh
cmVudExvYWRFdmVudHMgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgc2VuZFNWR0xvYWRFdmVudElm
UG9zc2libGUoKTsKIAogICAgICAgICAvLyBGb3J3YXJkZWQgcHJvcGVydGllcyAoZGVjbGFyZWQv
ZGVmaW5lZCBhbnl3aGVyZSBlbHNlIGluIHRoZSBpbmhlcml0YW5jZSBzdHJ1Y3R1cmUpCiAKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMzE2NzApCisrKyBXZWJDb3JlL3N2
Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAgICAg
ICAgICAgICAgICAyMDA2IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+CiAKICAg
ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTE0Niw2ICsxNDYsMTAg
QEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmdldFN1YnJlc291cmNlQXR0cgogewogICAgIHVybHMu
YXBwZW5kKGhyZWYoKSk7CiB9CisgCit2b2lkIFNWR0ltYWdlRWxlbWVudDo6ZmluaXNoUGFyc2lu
Z0NoaWxkcmVuKCkKK3sKK30KIAogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkocmV2aXNp
b24gMzE2NzApCisrKyBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAg
ICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUub3Jn
PgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTYxLDYg
KzYxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdmlydHVhbCBi
b29sIGhhc1JlbGF0aXZlVmFsdWVzKCkgY29uc3Q7CiAKKyAgICAgICAgdmlydHVhbCB2b2lkIGZp
bmlzaFBhcnNpbmdDaGlsZHJlbigpOworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFs
IGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsg
fQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAzMTY3MCkKKysrIFdlYkNv
cmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA1IEFsZXhhbmRlciBLZWxsZXR0IDxseXBh
bm92QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA4IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2plY3QKIApAQCAt
NzksNyArODAsNyBAQCB2b2lkIFNWR0ltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRFdmVudCgpCiAg
ICAgICAgIGlmIChpbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpIHsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXZSdyZSBzdXBwb3NlZCB0byBwdXQgdGhlIGRvY3VtZW50IGluIGFuICJlcnJvciBzdGF0
ZSIgcGVyIHRoZSBzcGVjLgogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN0YXRpY19jYXN0
PFNWR0VsZW1lbnQqPihlbGVtZW50KCkpLT5zZW5kU1ZHTG9hZEV2ZW50SWZQb3NzaWJsZSh0cnVl
KTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihlbGVtZW50KCkpLT5zZW5k
U1ZHTG9hZEV2ZW50SWZQb3NzaWJsZSgpOwogICAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MzE2NzApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNCBAQAorMjAwOC0wNC0wNiAgUm9iIEJ1aXMgIDxidWlzQGtkZS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGNhc2UgZm9yOgorICAg
ICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ0NworICAgICAg
ICBvbmxvYWQgY2FsbGVkIHRvbyBtYW55IHRpbWVzIGZvciA8c3ZnOmltYWdlPgorCisgICAgICAg
ICogc3ZnL2N1c3RvbS9pbWFnZS1vbmxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvY3VzdG9tL2ltYWdlLW9ubG9hZC5zdmc6IEFkZGVkLgorCiAyMDA4LTA0LTA1ICBSb2Ig
QnVpcyAgPGJ1aXNAa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljLgpJbmRleDog
TGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9pbWFnZS1vbmxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20vaW1hZ2Utb25sb2FkLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vaW1hZ2Utb25sb2FkLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitpbWFnZSBvbmxvYWQgY2FsbCAx
CisKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vaW1hZ2Utb25sb2FkLnN2Zwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2ltYWdlLW9ubG9hZC5zdmcJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2ltYWdlLW9ubG9hZC5zdmcJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTcgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxzY3Jp
cHQ+CisgICAgPCFbQ0RBVEFbCisgICAgICB2YXIgbG9hZGVkID0gMTsKKyAgICAgIGZ1bmN0aW9u
IGltYWdlTG9hZGVkKCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICB2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgICAgIHRl
c3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoImltYWdlIG9ubG9hZCBjYWxs
ICIgKyBsb2FkZWQrKyArICIgIikpOworICAgICAgfQorICAgIF1dPgorICA8L3NjcmlwdD4KKyAg
PGZvcmVpZ25PYmplY3QgeT0iNTAwcHgiIHdpZHRoPSIyMDBweCIgaGVpZ2h0PSI0MDBweCI+Cisg
ICAgPGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgaWQ9InRlc3QiPjwv
ZGl2PgorICA8L2ZvcmVpZ25PYmplY3Q+CisgIDxpbWFnZSBpZD0iaW1hZ2UiIG9ubG9hZD0iaW1h
Z2VMb2FkZWQoKSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHhsaW5rOmhyZWY9Imh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvcHJvamVjdHMvd2Via2l0L2Jyb3dzZXIvdHJ1bmsvTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS9yZXNvdXJjZXMvZ3JlZW4tY2hlY2tlci5wbmc/Zm9ybWF0PXJhdyIgLz4KKzwv
c3ZnPgo=
</data>
<flag name="review"
          id="8862"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20490</attachid>
            <date>2008-04-12 06:41:34 -0700</date>
            <delta_ts>2008-04-12 12:36:53 -0700</delta_ts>
            <desc>Better approach</desc>
            <filename>16447-2.diff</filename>
            <type>text/plain</type>
            <size>13156</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMTg0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDgtMDQtMTIgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ0NworICAgICAgICBvbmxvYWQgY2FsbGVk
IHRvbyBtYW55IHRpbWVzIGZvciA8c3ZnOmltYWdlPgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyODIKKyAgICAgICAgU1ZHIHdhc3RlcyB0aW1lIGlu
IG1hbGxvYyB0byBzZW5kIGxvYWRFdmVudHMgdG8gbm9uLWV4aXN0ZW50IGxpc3RlbmVycworCisg
ICAgICAgIFBvc3Rwb25lIGxvYWQgZXZlbnQgZGlzcGF0Y2hpbmcgZm9yIGltYWdlIHdoZW4gZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAorICAgICAgICBpcyB0cnVlLCBkZWxheWluZyBwYXJlbnRz
IGJ1dCBub3Qgc2libGluZ3MsIGFuZCBtYWtlIHN1cmUgdGhlIGxvYWQgZXZlbnQKKyAgICAgICAg
aXMgc2VudCBvbmNlIGZvciBpbWFnZSBpbiBhbGwgY2FzZXMuCisKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzZW5kU1ZHTG9hZEV2
ZW50SWZQb3NzaWJsZSk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNl
cyk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRFdmVudCk6CisKIDIwMDgtMDQtMTIgIERhdmlk
IEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBncmFkaWVudCBzdXBwb3J0
IHRvIGJvcmRlci1pbWFnZSAoZXZlbiB0aG91Z2ggaXQncyBtb3N0bHkganVzdCB3ZWlyZCkuCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMzE4NDEpCisrKyBXZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDE3ICsxNTksMTUgQEAgYm9vbCBTVkdFbGVt
ZW50OjpoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdQogCiB2b2lkIFNWR0VsZW1lbnQ6OnNlbmRTVkdM
b2FkRXZlbnRJZlBvc3NpYmxlKGJvb2wgc2VuZFBhcmVudExvYWRFdmVudHMpCiB7CisgICAgc3Rh
dGljIFJlZlB0cjxFdmVudD4gbG9hZCA9IG5ldyBFdmVudChsb2FkRXZlbnQsIGZhbHNlLCBmYWxz
ZSk7CiAgICAgUmVmUHRyPFNWR0VsZW1lbnQ+IGN1cnJlbnRUYXJnZXQgPSB0aGlzOwogICAgIHdo
aWxlIChjdXJyZW50VGFyZ2V0ICYmIGN1cnJlbnRUYXJnZXQtPmhhdmVMb2FkZWRSZXF1aXJlZFJl
c291cmNlcygpKSB7CiAgICAgICAgIFJlZlB0cjxOb2RlPiBwYXJlbnQ7CiAgICAgICAgIGlmIChz
ZW5kUGFyZW50TG9hZEV2ZW50cykKLSAgICAgICAgICAgIHBhcmVudCA9IGN1cnJlbnRUYXJnZXQt
PnBhcmVudE5vZGUoKTsgLy8gc2F2ZSB0aGUgbmV4dCBwYXJlbnQgdG8gZGlzcGF0Y2ggdG9vIGlu
Y2FzZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQgY2hhbmdlcyB0aGUgdHJlZQotICAgICAgICAKLSAg
ICAgICAgLy8gRklYTUU6IFRoaXMgbWFsbG9jIGNvdWxkIGJlIGF2b2lkZWQgYnkgd2Fsa2luZyB0
aGUgdHJlZSBmaXJzdCB0byBjaGVjayBpZiBhbnkgbGlzdGVuZXJzIGFyZSBwcmVzZW50OiBodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NAotICAgICAgICBSZWZQdHI8
RXZlbnQ+IGV2ZW50ID0gbmV3IEV2ZW50KGxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKTsKLSAgICAg
ICAgZXZlbnQtPnNldFRhcmdldChjdXJyZW50VGFyZ2V0KTsKKyAgICAgICAgICAgIHBhcmVudCA9
IGN1cnJlbnRUYXJnZXQtPnBhcmVudE5vZGUoKTsgLy8gc2F2ZSB0aGUgbmV4dCBwYXJlbnQgdG8g
ZGlzcGF0Y2ggdG8gaW5jYXNlIGRpc3BhdGNoaW5nIHRoZSBldmVudCBjaGFuZ2VzIHRoZSB0cmVl
CisgICAgICAgIGxvYWQtPnNldFRhcmdldChjdXJyZW50VGFyZ2V0KTsKICAgICAgICAgRXhjZXB0
aW9uQ29kZSBpZ25vcmVkID0gMDsKLSAgICAgICAgZGlzcGF0Y2hHZW5lcmljRXZlbnQodGhpcywg
ZXZlbnQucmVsZWFzZSgpLCBpZ25vcmVkLCBmYWxzZSk7CisgICAgICAgIGRpc3BhdGNoR2VuZXJp
Y0V2ZW50KGN1cnJlbnRUYXJnZXQuZ2V0KCksIGxvYWQuZ2V0KCksIGlnbm9yZWQsIGZhbHNlKTsK
ICAgICAgICAgY3VycmVudFRhcmdldCA9IChwYXJlbnQgJiYgcGFyZW50LT5pc1NWR0VsZW1lbnQo
KSkgPyBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0VsZW1lbnQ+KHBhcmVudCkgOiAwOwogICAgIH0K
IH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMzE4NDEpCisrKyBXZWJD
b3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNyArMTMx
LDcgQEAgUmVuZGVyT2JqZWN0KiBTVkdJbWFnZUVsZW1lbnQ6OmNyZWF0ZVJlbgogCiBib29sIFNW
R0ltYWdlRWxlbWVudDo6aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkKIHsKLSAgICByZXR1
cm4gKCFleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQmFzZVZhbHVlKCkgfHwgbV9pbWFnZUxvYWRl
ci5pbWFnZUNvbXBsZXRlKCkpOworICAgIHJldHVybiAhZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEJhc2VWYWx1ZSgpIHx8IG1faW1hZ2VMb2FkZXIuaGF2ZUZpcmVkTG9hZEV2ZW50KCk7CiB9CiAK
IHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjphdHRhY2goKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNw
cAkocmV2aXNpb24gMzE4NDEpCisrKyBXZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBTVkdJbWFnZUxvYWRlcjo6ZGlzcGF0
Y2hMb2FkRXZlbnQoKQogICAgICAgICBzZXRIYXZlRmlyZWRMb2FkRXZlbnQodHJ1ZSk7CiAgICAg
ICAgIGlmIChpbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1F
OiBXZSdyZSBzdXBwb3NlZCB0byBwdXQgdGhlIGRvY3VtZW50IGluIGFuICJlcnJvciBzdGF0ZSIg
cGVyIHRoZSBzcGVjLgotICAgICAgICB9IGVsc2UKKyAgICAgICAgfSBlbHNlIGlmIChzdGF0aWNf
Y2FzdDxTVkdJbWFnZUVsZW1lbnQqPihlbGVtZW50KCkpLT5leHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkQmFzZVZhbHVlKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oZWxl
bWVudCgpKS0+c2VuZFNWR0xvYWRFdmVudElmUG9zc2libGUodHJ1ZSk7CiAgICAgfQogfQpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMzE4NDEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAwOC0wNC0xMiAgUm9iIEJ1aXMgIDxidWlzQGtkZS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dGNhc2VzIGZvcjoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDQ3CisgICAgICAgIG9ubG9hZCBjYWxsZWQgdG9vIG1hbnkgdGltZXMgZm9yIDxzdmc6
aW1hZ2U+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjI4MgorICAgICAgICBTVkcgd2FzdGVzIHRpbWUgaW4gbWFsbG9jIHRvIHNlbmQgbG9hZEV2ZW50
cyB0byBub24tZXhpc3RlbnQgbGlzdGVuZXJzCisKKyAgICAgICAgKiBzdmcvY3VzdG9tL2xvYWRl
dmVudHMtZXh0ZXJuYWxyZXNvdXJjZXNyZXF1aXJlZC1kaXNwbGF5bm9uZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20vbG9hZGV2ZW50cy1leHRlcm5hbHJlc291cmNl
c3JlcXVpcmVkLWRpc3BsYXlub25lLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS9s
b2FkZXZlbnRzLWV4dGVybmFscmVzb3VyY2VzcmVxdWlyZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvY3VzdG9tL2xvYWRldmVudHMtZXh0ZXJuYWxyZXNvdXJjZXNyZXF1aXJl
ZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20vbG9hZGV2ZW50cy1ub3JtYWwtZGlz
cGxheW5vbmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL2xvYWRl
dmVudHMtbm9ybWFsLWRpc3BsYXlub25lLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2N1c3Rv
bS9sb2FkZXZlbnRzLW5vcm1hbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9j
dXN0b20vbG9hZGV2ZW50cy1ub3JtYWwuc3ZnOiBBZGRlZC4KKwogMjAwOC0wNC0xMSAgRGFuIEJl
cm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlh
dHQuCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtZXh0ZXJuYWxyZXNv
dXJjZXNyZXF1aXJlZC1kaXNwbGF5bm9uZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLWV4dGVybmFscmVzb3VyY2VzcmVxdWlyZWQt
ZGlzcGxheW5vbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3Zn
L2N1c3RvbS9sb2FkZXZlbnRzLWV4dGVybmFscmVzb3VyY2VzcmVxdWlyZWQtZGlzcGxheW5vbmUt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK1RoaXMgdGVzdHMgbG9h
ZCBkaXNwYXRjaGluZyBvcmRlciB3aXRoIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgYW5kIGFu
IGltYWdlIHRoYXQgZG9lcyBub3QgcmVuZGVyKGRpc3BsYXk9bm9uZSkuIEJ1ZyAxNjQ0NworUGFz
c2VkCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtZXh0ZXJuYWxyZXNv
dXJjZXNyZXF1aXJlZC1kaXNwbGF5bm9uZS5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS9sb2FkZXZlbnRzLWV4dGVybmFscmVzb3VyY2VzcmVxdWlyZWQtZGlzcGxheW5v
bmUuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRz
LWV4dGVybmFscmVzb3VyY2VzcmVxdWlyZWQtZGlzcGxheW5vbmUuc3ZnCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMwIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG9ubG9hZD0icmVwb3J0
TG9hZEV2ZW50KHRoaXMpO3J1blRlc3QoKTsiPgorICA8c2NyaXB0PgorICAgIDwhW0NEQVRBWwor
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICB2YXIgcmVzdWx0cyA9IG5ldyBBcnJh
eSgpOworCisgICAgICBmdW5jdGlvbiByZXBvcnRMb2FkRXZlbnQoZWwpIHsKKyAgICAgICAgcmVz
dWx0cy5wdXNoKGVsLmxvY2FsTmFtZSk7CisgICAgICB9CisgICAgICBmdW5jdGlvbiBydW5UZXN0
KCkKKyAgICAgIHsKKyAgICAgICAgdmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29uc29sZSIpOworICAgICAgICBpZiAoIHJlc3VsdHMubGVuZ3RoICE9IDQgfHwgcmVzdWx0c1sw
XSAhPSAidGV4dCIgfHwKKyAgICAgICAgICAgICByZXN1bHRzWzFdICE9ICJpbWFnZSIgfHwgcmVz
dWx0c1syXSAhPSAiZyIgfHwKKyAgICAgICAgICAgICByZXN1bHRzWzNdICE9ICJzdmciKSB7Cisg
ICAgICAgICAgdGVzdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiRmFpbGVk
IikpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHRlc3QuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoIlBhc3NlZCIpKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIF1d
PgorICA8L3NjcmlwdD4KKyAgPGcgb25sb2FkPSJyZXBvcnRMb2FkRXZlbnQodGhpcykiPgorICAg
IDxpbWFnZSBkaXNwbGF5PSJub25lIiBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPSJ0cnVlIiBp
ZD0iaW1hZ2UiIG9ubG9hZD0icmVwb3J0TG9hZEV2ZW50KHRoaXMpIiB3aWR0aD0iMTAwIiBoZWln
aHQ9IjEwMCIgeGxpbms6aHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy9wcm9qZWN0cy93ZWJr
aXQvYnJvd3Nlci90cnVuay9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy9ncmVlbi1j
aGVja2VyLnBuZz9mb3JtYXQ9cmF3IiAvPgorICAgIDx0ZXh0IHk9IjEzMCIgeD0iMjAiPlRoaXMg
dGVzdHMgbG9hZCBkaXNwYXRjaGluZyBvcmRlciB3aXRoIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQgYW5kIGFuIGltYWdlIHRoYXQgZG9lcyBub3QgcmVuZGVyKGRpc3BsYXk9bm9uZSkuIEJ1ZyAx
NjQ0NzwvdGV4dD4KKyAgICA8dGV4dCB5PSIxNTAiIHg9IjIwIiBpZD0iY29uc29sZSIgb25sb2Fk
PSJyZXBvcnRMb2FkRXZlbnQodGhpcykiLz4KKyAgPC9nPgorPC9zdmc+CkluZGV4OiBMYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtZXh0ZXJuYWxyZXNvdXJjZXNyZXF1aXJlZC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRz
LWV4dGVybmFscmVzb3VyY2VzcmVxdWlyZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLWV4dGVybmFscmVzb3VyY2VzcmVxdWly
ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKKworVGhpcyB0ZXN0
cyBsb2FkIGRpc3BhdGNoaW5nIG9yZGVyIHdpdGggZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC4g
QnVnIDE2NDQ3CitQYXNzZWQKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vbG9hZGV2ZW50
cy1leHRlcm5hbHJlc291cmNlc3JlcXVpcmVkLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtZXh0ZXJuYWxyZXNvdXJjZXNyZXF1aXJlZC5zdmcJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtZXh0ZXJuYWxy
ZXNvdXJjZXNyZXF1aXJlZC5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayIgb25sb2FkPSJyZXBvcnRMb2FkRXZlbnQodGhpcyk7cnVuVGVz
dCgpOyI+CisgIDxzY3JpcHQ+CisgICAgPCFbQ0RBVEFbCisgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisKKyAgICAgIHZhciByZXN1bHRzID0gbmV3IEFycmF5KCk7CisKKyAgICAgIGZ1bmN0aW9u
IHJlcG9ydExvYWRFdmVudChlbCkgeworICAgICAgICByZXN1bHRzLnB1c2goZWwubG9jYWxOYW1l
KTsKKyAgICAgIH0KKyAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgeworICAgICAgICB2
YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgIGlm
ICggcmVzdWx0cy5sZW5ndGggIT0gNCB8fCByZXN1bHRzWzBdICE9ICJ0ZXh0IiB8fAorICAgICAg
ICAgICAgIHJlc3VsdHNbMV0gIT0gImltYWdlIiB8fCByZXN1bHRzWzJdICE9ICJnIiB8fAorICAg
ICAgICAgICAgIHJlc3VsdHNbM10gIT0gInN2ZyIpIHsKKyAgICAgICAgICB0ZXN0LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJGYWlsZWQiKSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgdGVzdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiUGFz
c2VkIikpOworICAgICAgICB9CisgICAgICB9CisgICAgXV0+CisgIDwvc2NyaXB0PgorICA8ZyBv
bmxvYWQ9InJlcG9ydExvYWRFdmVudCh0aGlzKSI+CisgICAgPGltYWdlIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQ9InRydWUiIGlkPSJpbWFnZSIgb25sb2FkPSJyZXBvcnRMb2FkRXZlbnQodGhp
cykiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB4bGluazpocmVmPSJodHRwOi8vdHJhYy53ZWJr
aXQub3JnL3Byb2plY3RzL3dlYmtpdC9icm93c2VyL3RydW5rL0xheW91dFRlc3RzL3N2Zy9jdXN0
b20vcmVzb3VyY2VzL2dyZWVuLWNoZWNrZXIucG5nP2Zvcm1hdD1yYXciIC8+CisgICAgPHRleHQg
eT0iMTMwIiB4PSIyMCI+VGhpcyB0ZXN0cyBsb2FkIGRpc3BhdGNoaW5nIG9yZGVyIHdpdGggZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC4gQnVnIDE2NDQ3PC90ZXh0PgorICAgIDx0ZXh0IHk9IjE1
MCIgeD0iMjAiIGlkPSJjb25zb2xlIiBvbmxvYWQ9InJlcG9ydExvYWRFdmVudCh0aGlzKSIvPgor
ICA8L2c+Cis8L3N2Zz4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1u
b3JtYWwtZGlzcGxheW5vbmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1ub3JtYWwtZGlzcGxheW5vbmUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLW5vcm1hbC1k
aXNwbGF5bm9uZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorVGhp
cyB0ZXN0cyBub3JtYWwgbG9hZCBkaXNwYXRjaGluZyBvcmRlciBhbmQgYW4gaW1hZ2UgdGhhdCBk
b2VzIG5vdCByZW5kZXIoZGlzcGxheT1ub25lKS4gQnVnIDE2NDQ3CitQYXNzZWQKSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1ub3JtYWwtZGlzcGxheW5vbmUuc3ZnCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1ub3JtYWwtZGlz
cGxheW5vbmUuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2Fk
ZXZlbnRzLW5vcm1hbC1kaXNwbGF5bm9uZS5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAg
QEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgb25sb2FkPSJyZXBvcnRMb2FkRXZlbnQodGhp
cyk7cnVuVGVzdCgpOyI+CisgIDxzY3JpcHQ+CisgICAgPCFbQ0RBVEFbCisgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisKKyAgICAgIHZhciByZXN1bHRzID0gbmV3IEFycmF5KCk7CisKKyAgICAg
IGZ1bmN0aW9uIHJlcG9ydExvYWRFdmVudChlbCkgeworICAgICAgICByZXN1bHRzLnB1c2goZWwu
bG9jYWxOYW1lKTsKKyAgICAgIH0KKyAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgewor
ICAgICAgICB2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7Cisg
ICAgICAgIGlmICggcmVzdWx0cy5sZW5ndGggIT0gNCB8fCByZXN1bHRzWzBdICE9ICJpbWFnZSIg
fHwKKyAgICAgICAgICAgICByZXN1bHRzWzFdICE9ICJ0ZXh0IiB8fCByZXN1bHRzWzJdICE9ICJn
IiB8fAorICAgICAgICAgICAgIHJlc3VsdHNbM10gIT0gInN2ZyIpIHsKKyAgICAgICAgICB0ZXN0
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJGYWlsZWQiKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgdGVzdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgiUGFzc2VkIikpOworICAgICAgICB9CisgICAgICB9CisgICAgXV0+CisgIDwvc2NyaXB0
PgorICA8ZyBvbmxvYWQ9InJlcG9ydExvYWRFdmVudCh0aGlzKSI+CisgICAgPGltYWdlIGRpc3Bs
YXk9Im5vbmUiIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ9ImZhbHNlIiBpZD0iaW1hZ2UiIG9u
bG9hZD0icmVwb3J0TG9hZEV2ZW50KHRoaXMpIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgeGxp
bms6aHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy9wcm9qZWN0cy93ZWJraXQvYnJvd3Nlci90
cnVuay9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy9ncmVlbi1jaGVja2VyLnBuZz9m
b3JtYXQ9cmF3IiAvPgorICAgIDx0ZXh0IHk9IjEzMCIgeD0iMjAiPlRoaXMgdGVzdHMgbm9ybWFs
IGxvYWQgZGlzcGF0Y2hpbmcgb3JkZXIgYW5kIGFuIGltYWdlIHRoYXQgZG9lcyBub3QgcmVuZGVy
KGRpc3BsYXk9bm9uZSkuIEJ1ZyAxNjQ0NzwvdGV4dD4KKyAgICA8dGV4dCB5PSIxNTAiIHg9IjIw
IiBpZD0iY29uc29sZSIgb25sb2FkPSJyZXBvcnRMb2FkRXZlbnQodGhpcykiLz4KKyAgPC9nPgor
PC9zdmc+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtbm9ybWFsLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xvYWRldmVu
dHMtbm9ybWFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9j
dXN0b20vbG9hZGV2ZW50cy1ub3JtYWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDMgQEAKKworVGhpcyB0ZXN0cyBub3JtYWwgbG9hZCBkaXNwYXRjaGluZyBvcmRlci4gQnVn
IDE2NDQ3CitQYXNzZWQKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1u
b3JtYWwuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20vbG9hZGV2ZW50
cy1ub3JtYWwuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2Fk
ZXZlbnRzLW5vcm1hbC5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94bGluayIgb25sb2FkPSJyZXBvcnRMb2FkRXZlbnQodGhpcyk7cnVuVGVzdCgp
OyI+CisgIDxzY3JpcHQ+CisgICAgPCFbQ0RBVEFbCisgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKKyAgICAgIHZhciByZXN1bHRzID0gbmV3IEFycmF5KCk7CisKKyAgICAgIGZ1bmN0aW9uIHJl
cG9ydExvYWRFdmVudChlbCkgeworICAgICAgICByZXN1bHRzLnB1c2goZWwubG9jYWxOYW1lKTsK
KyAgICAgIH0KKyAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgeworICAgICAgICB2YXIg
dGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgIGlmICgg
cmVzdWx0cy5sZW5ndGggIT0gNCB8fCByZXN1bHRzWzBdICE9ICJpbWFnZSIgfHwKKyAgICAgICAg
ICAgICByZXN1bHRzWzFdICE9ICJ0ZXh0IiB8fCByZXN1bHRzWzJdICE9ICJnIiB8fAorICAgICAg
ICAgICAgIHJlc3VsdHNbM10gIT0gInN2ZyIpIHsKKyAgICAgICAgICB0ZXN0LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJGYWlsZWQiKSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgdGVzdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiUGFzc2Vk
IikpOworICAgICAgICB9CisgICAgICB9CisgICAgXV0+CisgIDwvc2NyaXB0PgorICA8ZyBvbmxv
YWQ9InJlcG9ydExvYWRFdmVudCh0aGlzKSI+CisgICAgPGltYWdlIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQ9ImZhbHNlIiBpZD0iaW1hZ2UiIG9ubG9hZD0icmVwb3J0TG9hZEV2ZW50KHRoaXMp
IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgeGxpbms6aHJlZj0iaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9wcm9qZWN0cy93ZWJraXQvYnJvd3Nlci90cnVuay9MYXlvdXRUZXN0cy9zdmcvY3VzdG9t
L3Jlc291cmNlcy9ncmVlbi1jaGVja2VyLnBuZz9mb3JtYXQ9cmF3IiAvPgorICAgIDx0ZXh0IHk9
IjEzMCIgeD0iMjAiPlRoaXMgdGVzdHMgbm9ybWFsIGxvYWQgZGlzcGF0Y2hpbmcgb3JkZXIuIEJ1
ZyAxNjQ0NzwvdGV4dD4KKyAgICA8dGV4dCB5PSIxNTAiIHg9IjIwIiBpZD0iY29uc29sZSIgb25s
b2FkPSJyZXBvcnRMb2FkRXZlbnQodGhpcykiLz4KKyAgPC9nPgorPC9zdmc+Cg==
</data>
<flag name="review"
          id="8925"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20491</attachid>
            <date>2008-04-12 12:36:53 -0700</date>
            <delta_ts>2008-04-12 14:30:10 -0700</delta_ts>
            <desc>Fix the &quot;avoid malloc&quot; part</desc>
            <filename>16447-3.diff</filename>
            <type>text/plain</type>
            <size>14944</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMTg0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDgtMDQtMTIgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ0NworICAgICAgICBvbmxvYWQgY2FsbGVk
IHRvbyBtYW55IHRpbWVzIGZvciA8c3ZnOmltYWdlPgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyODIKKyAgICAgICAgU1ZHIHdhc3RlcyB0aW1lIGlu
IG1hbGxvYyB0byBzZW5kIGxvYWRFdmVudHMgdG8gbm9uLWV4aXN0ZW50IGxpc3RlbmVycworCisg
ICAgICAgIFBvc3Rwb25lIGxvYWQgZXZlbnQgZGlzcGF0Y2hpbmcgZm9yIGltYWdlIHdoZW4gZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAorICAgICAgICBpcyB0cnVlLCBkZWxheWluZyBwYXJlbnRz
IGJ1dCBub3Qgc2libGluZ3MsIGFuZCBtYWtlIHN1cmUgdGhlIGxvYWQgZXZlbnQKKyAgICAgICAg
aXMgc2VudCBvbmNlIGZvciBpbWFnZSBpbiBhbGwgY2FzZXMuCisKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzZW5kU1ZHTG9hZEV2
ZW50SWZQb3NzaWJsZSk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNl
cyk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRFdmVudCk6CisKIDIwMDgtMDQtMTIgIERhdmlk
IEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBncmFkaWVudCBzdXBwb3J0
IHRvIGJvcmRlci1pbWFnZSAoZXZlbiB0aG91Z2ggaXQncyBtb3N0bHkganVzdCB3ZWlyZCkuCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMzE4NDEpCisrKyBXZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtE
RSBwcm9qZWN0CiAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJTVkdVc2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKKyNp
bmNsdWRlICJSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTE2NiwxNCArMTY3LDI5IEBAIHZvaWQgU1ZHRWxlbWVudDo6c2VuZFNWR0xvYWRFdmVu
dElmUG9zc2kKICAgICAgICAgICAgIHBhcmVudCA9IGN1cnJlbnRUYXJnZXQtPnBhcmVudE5vZGUo
KTsgLy8gc2F2ZSB0aGUgbmV4dCBwYXJlbnQgdG8gZGlzcGF0Y2ggdG9vIGluY2FzZSBkaXNwYXRj
aGluZyB0aGUgZXZlbnQgY2hhbmdlcyB0aGUgdHJlZQogICAgICAgICAKICAgICAgICAgLy8gRklY
TUU6IFRoaXMgbWFsbG9jIGNvdWxkIGJlIGF2b2lkZWQgYnkgd2Fsa2luZyB0aGUgdHJlZSBmaXJz
dCB0byBjaGVjayBpZiBhbnkgbGlzdGVuZXJzIGFyZSBwcmVzZW50OiBodHRwOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NAotICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50
ID0gbmV3IEV2ZW50KGxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgZXZlbnQtPnNl
dFRhcmdldChjdXJyZW50VGFyZ2V0KTsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkID0g
MDsKLSAgICAgICAgZGlzcGF0Y2hHZW5lcmljRXZlbnQodGhpcywgZXZlbnQucmVsZWFzZSgpLCBp
Z25vcmVkLCBmYWxzZSk7CisgICAgICAgIGlmIChjdXJyZW50VGFyZ2V0LT5oYXNMaXN0ZW5lclR5
cGUobG9hZEV2ZW50KSkgeworICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IG5ldyBF
dmVudChsb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudC0+c2V0VGFy
Z2V0KGN1cnJlbnRUYXJnZXQpOworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkID0g
MDsKKyAgICAgICAgICAgIGRpc3BhdGNoR2VuZXJpY0V2ZW50KGN1cnJlbnRUYXJnZXQuZ2V0KCks
IGV2ZW50LnJlbGVhc2UoKSwgaWdub3JlZCwgZmFsc2UpOworICAgICAgICB9CiAgICAgICAgIGN1
cnJlbnRUYXJnZXQgPSAocGFyZW50ICYmIHBhcmVudC0+aXNTVkdFbGVtZW50KCkpID8gc3RhdGlj
X3BvaW50ZXJfY2FzdDxTVkdFbGVtZW50PihwYXJlbnQpIDogMDsKICAgICB9CiB9CiAKK2Jvb2wg
U1ZHRWxlbWVudDo6aGFzTGlzdGVuZXJUeXBlKGNvbnN0IEF0b21pY1N0cmluZyAmZXZlbnRUeXBl
KSBjb25zdAoreworICAgIGlmICghbV9yZWdkTGlzdGVuZXJzKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXJMaXN0OjpJdGVyYXRvciBlbmQg
PSBtX3JlZ2RMaXN0ZW5lcnMtPmVuZCgpOworICAgIGZvciAoUmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXJMaXN0OjpJdGVyYXRvciBpdCA9IG1fcmVnZExpc3RlbmVycy0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQorICAgICAgICBpZiAoKCppdCktPmV2ZW50VHlwZSgpID09IGV2ZW50VHlwZSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFNW
R0VsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiB7CiAgICAgLy8gZmluaXNoUGFyc2lu
Z0NoaWxkcmVuKCkgaXMgY2FsbGVkIHdoZW4gdGhlIGNsb3NlIHRhZyBpcyByZWFjaGVkIGZvciBh
biBlbGVtZW50IChlLmcuIDwvc3ZnPikKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHJldmlzaW9uIDMxODQxKQor
KysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNiArMjI0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRl
Q2hhbmdlZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMgPSBmYWxzZSk7CiAKICAgICAg
ICAgdm9pZCBzZW5kU1ZHTG9hZEV2ZW50SWZQb3NzaWJsZShib29sIHNlbmRQYXJlbnRMb2FkRXZl
bnRzID0gZmFsc2UpOworICAgICAgICBib29sIGhhc0xpc3RlbmVyVHlwZShjb25zdCBBdG9taWNT
dHJpbmcgJmV2ZW50VHlwZSkgY29uc3Q7CiAKICAgICAgICAgLy8gRm9yd2FyZGVkIHByb3BlcnRp
ZXMgKGRlY2xhcmVkL2RlZmluZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgaW5oZXJpdGFuY2Ugc3Ry
dWN0dXJlKQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDMxODQxKQor
KysgV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICAgICAgICAgICAgICAgICAg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogICAgICAgICAgICAgICAgICAgMjAwNiBBbGV4YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBr
ZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0x
MzEsNyArMTMxLDcgQEAgUmVuZGVyT2JqZWN0KiBTVkdJbWFnZUVsZW1lbnQ6OmNyZWF0ZVJlbgog
CiBib29sIFNWR0ltYWdlRWxlbWVudDo6aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkKIHsK
LSAgICByZXR1cm4gKCFleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQmFzZVZhbHVlKCkgfHwgbV9p
bWFnZUxvYWRlci5pbWFnZUNvbXBsZXRlKCkpOworICAgIHJldHVybiAhZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZEJhc2VWYWx1ZSgpIHx8IG1faW1hZ2VMb2FkZXIuaGF2ZUZpcmVkTG9hZEV2ZW50
KCk7CiB9CiAKIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjphdHRhY2goKQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ltYWdl
TG9hZGVyLmNwcAkocmV2aXNpb24gMzE4NDEpCisrKyBXZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAo
QykgMjAwNSwgMjAwNSBBbGV4YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgorICAgICAg
ICAgICAgICAgICAgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0CiAKQEAgLTc4LDcgKzc5LDcgQEAgdm9pZCBT
VkdJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogICAgICAgICBzZXRIYXZlRmlyZWRM
b2FkRXZlbnQodHJ1ZSk7CiAgICAgICAgIGlmIChpbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSdyZSBzdXBwb3NlZCB0byBwdXQgdGhlIGRvY3VtZW50
IGluIGFuICJlcnJvciBzdGF0ZSIgcGVyIHRoZSBzcGVjLgotICAgICAgICB9IGVsc2UKKyAgICAg
ICAgfSBlbHNlIGlmIChzdGF0aWNfY2FzdDxTVkdJbWFnZUVsZW1lbnQqPihlbGVtZW50KCkpLT5l
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQmFzZVZhbHVlKCkpCiAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxTVkdFbGVtZW50Kj4oZWxlbWVudCgpKS0+c2VuZFNWR0xvYWRFdmVudElmUG9zc2libGUo
dHJ1ZSk7CiAgICAgfQogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMzE4NDEpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAwOC0wNC0xMiAg
Um9iIEJ1aXMgIDxidWlzQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdGNhc2VzIGZvcjoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDQ3CisgICAgICAgIG9ubG9hZCBjYWxsZWQgdG9v
IG1hbnkgdGltZXMgZm9yIDxzdmc6aW1hZ2U+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI4MgorICAgICAgICBTVkcgd2FzdGVzIHRpbWUgaW4gbWFs
bG9jIHRvIHNlbmQgbG9hZEV2ZW50cyB0byBub24tZXhpc3RlbnQgbGlzdGVuZXJzCisKKyAgICAg
ICAgKiBzdmcvY3VzdG9tL2xvYWRldmVudHMtZXh0ZXJuYWxyZXNvdXJjZXNyZXF1aXJlZC1kaXNw
bGF5bm9uZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20vbG9hZGV2
ZW50cy1leHRlcm5hbHJlc291cmNlc3JlcXVpcmVkLWRpc3BsYXlub25lLnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLWV4dGVybmFscmVzb3VyY2VzcmVxdWlyZWQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL2xvYWRldmVudHMtZXh0
ZXJuYWxyZXNvdXJjZXNyZXF1aXJlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20v
bG9hZGV2ZW50cy1ub3JtYWwtZGlzcGxheW5vbmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvY3VzdG9tL2xvYWRldmVudHMtbm9ybWFsLWRpc3BsYXlub25lLnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLW5vcm1hbC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20vbG9hZGV2ZW50cy1ub3JtYWwuc3ZnOiBBZGRlZC4K
KwogMjAwOC0wNC0xMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xv
YWRldmVudHMtZXh0ZXJuYWxyZXNvdXJjZXNyZXF1aXJlZC1kaXNwbGF5bm9uZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLWV4dGVy
bmFscmVzb3VyY2VzcmVxdWlyZWQtZGlzcGxheW5vbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLWV4dGVybmFscmVzb3VyY2Vz
cmVxdWlyZWQtZGlzcGxheW5vbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIgQEAKK1RoaXMgdGVzdHMgbG9hZCBkaXNwYXRjaGluZyBvcmRlciB3aXRoIGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQgYW5kIGFuIGltYWdlIHRoYXQgZG9lcyBub3QgcmVuZGVyKGRpc3BsYXk9
bm9uZSkuIEJ1ZyAxNjQ0NworUGFzc2VkCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xv
YWRldmVudHMtZXh0ZXJuYWxyZXNvdXJjZXNyZXF1aXJlZC1kaXNwbGF5bm9uZS5zdmcKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLWV4dGVybmFscmVzb3Vy
Y2VzcmVxdWlyZWQtZGlzcGxheW5vbmUuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS9sb2FkZXZlbnRzLWV4dGVybmFscmVzb3VyY2VzcmVxdWlyZWQtZGlzcGxheW5v
bmUuc3ZnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiIG9ubG9hZD0icmVwb3J0TG9hZEV2ZW50KHRoaXMpO3J1blRlc3QoKTsiPgorICA8c2Ny
aXB0PgorICAgIDwhW0NEQVRBWworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICB2
YXIgcmVzdWx0cyA9IG5ldyBBcnJheSgpOworCisgICAgICBmdW5jdGlvbiByZXBvcnRMb2FkRXZl
bnQoZWwpIHsKKyAgICAgICAgcmVzdWx0cy5wdXNoKGVsLmxvY2FsTmFtZSk7CisgICAgICB9Cisg
ICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgIHsKKyAgICAgICAgdmFyIHRlc3QgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICBpZiAoIHJlc3VsdHMubGVu
Z3RoICE9IDQgfHwgcmVzdWx0c1swXSAhPSAidGV4dCIgfHwKKyAgICAgICAgICAgICByZXN1bHRz
WzFdICE9ICJpbWFnZSIgfHwgcmVzdWx0c1syXSAhPSAiZyIgfHwKKyAgICAgICAgICAgICByZXN1
bHRzWzNdICE9ICJzdmciKSB7CisgICAgICAgICAgdGVzdC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgiRmFpbGVkIikpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHRl
c3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlBhc3NlZCIpKTsKKyAgICAg
ICAgfQorICAgICAgfQorICAgIF1dPgorICA8L3NjcmlwdD4KKyAgPGcgb25sb2FkPSJyZXBvcnRM
b2FkRXZlbnQodGhpcykiPgorICAgIDxpbWFnZSBkaXNwbGF5PSJub25lIiBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkPSJ0cnVlIiBpZD0iaW1hZ2UiIG9ubG9hZD0icmVwb3J0TG9hZEV2ZW50KHRo
aXMpIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgeGxpbms6aHJlZj0iaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9wcm9qZWN0cy93ZWJraXQvYnJvd3Nlci90cnVuay9MYXlvdXRUZXN0cy9zdmcvY3Vz
dG9tL3Jlc291cmNlcy9ncmVlbi1jaGVja2VyLnBuZz9mb3JtYXQ9cmF3IiAvPgorICAgIDx0ZXh0
IHk9IjEzMCIgeD0iMjAiPlRoaXMgdGVzdHMgbG9hZCBkaXNwYXRjaGluZyBvcmRlciB3aXRoIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgYW5kIGFuIGltYWdlIHRoYXQgZG9lcyBub3QgcmVuZGVy
KGRpc3BsYXk9bm9uZSkuIEJ1ZyAxNjQ0NzwvdGV4dD4KKyAgICA8dGV4dCB5PSIxNTAiIHg9IjIw
IiBpZD0iY29uc29sZSIgb25sb2FkPSJyZXBvcnRMb2FkRXZlbnQodGhpcykiLz4KKyAgPC9nPgor
PC9zdmc+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtZXh0ZXJuYWxy
ZXNvdXJjZXNyZXF1aXJlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS9sb2FkZXZlbnRzLWV4dGVybmFscmVzb3VyY2VzcmVxdWlyZWQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLWV4
dGVybmFscmVzb3VyY2VzcmVxdWlyZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDMgQEAKKworVGhpcyB0ZXN0cyBsb2FkIGRpc3BhdGNoaW5nIG9yZGVyIHdpdGggZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZC4gQnVnIDE2NDQ3CitQYXNzZWQKSW5kZXg6IExheW91dFRlc3Rz
L3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1leHRlcm5hbHJlc291cmNlc3JlcXVpcmVkLnN2Zwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtZXh0ZXJuYWxyZXNv
dXJjZXNyZXF1aXJlZC5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9t
L2xvYWRldmVudHMtZXh0ZXJuYWxyZXNvdXJjZXNyZXF1aXJlZC5zdmcJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzAgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgb25sb2FkPSJyZXBvcnRM
b2FkRXZlbnQodGhpcyk7cnVuVGVzdCgpOyI+CisgIDxzY3JpcHQ+CisgICAgPCFbQ0RBVEFbCisg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgIHZhciByZXN1bHRzID0gbmV3IEFycmF5
KCk7CisKKyAgICAgIGZ1bmN0aW9uIHJlcG9ydExvYWRFdmVudChlbCkgeworICAgICAgICByZXN1
bHRzLnB1c2goZWwubG9jYWxOYW1lKTsKKyAgICAgIH0KKyAgICAgIGZ1bmN0aW9uIHJ1blRlc3Qo
KQorICAgICAgeworICAgICAgICB2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIik7CisgICAgICAgIGlmICggcmVzdWx0cy5sZW5ndGggIT0gNCB8fCByZXN1bHRzWzBd
ICE9ICJ0ZXh0IiB8fAorICAgICAgICAgICAgIHJlc3VsdHNbMV0gIT0gImltYWdlIiB8fCByZXN1
bHRzWzJdICE9ICJnIiB8fAorICAgICAgICAgICAgIHJlc3VsdHNbM10gIT0gInN2ZyIpIHsKKyAg
ICAgICAgICB0ZXN0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJGYWlsZWQi
KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdGVzdC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgiUGFzc2VkIikpOworICAgICAgICB9CisgICAgICB9CisgICAgXV0+
CisgIDwvc2NyaXB0PgorICA8ZyBvbmxvYWQ9InJlcG9ydExvYWRFdmVudCh0aGlzKSI+CisgICAg
PGltYWdlIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ9InRydWUiIGlkPSJpbWFnZSIgb25sb2Fk
PSJyZXBvcnRMb2FkRXZlbnQodGhpcykiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB4bGluazpo
cmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnL3Byb2plY3RzL3dlYmtpdC9icm93c2VyL3RydW5r
L0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcmVzb3VyY2VzL2dyZWVuLWNoZWNrZXIucG5nP2Zvcm1h
dD1yYXciIC8+CisgICAgPHRleHQgeT0iMTMwIiB4PSIyMCI+VGhpcyB0ZXN0cyBsb2FkIGRpc3Bh
dGNoaW5nIG9yZGVyIHdpdGggZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC4gQnVnIDE2NDQ3PC90
ZXh0PgorICAgIDx0ZXh0IHk9IjE1MCIgeD0iMjAiIGlkPSJjb25zb2xlIiBvbmxvYWQ9InJlcG9y
dExvYWRFdmVudCh0aGlzKSIvPgorICA8L2c+Cis8L3N2Zz4KSW5kZXg6IExheW91dFRlc3RzL3N2
Zy9jdXN0b20vbG9hZGV2ZW50cy1ub3JtYWwtZGlzcGxheW5vbmUtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1ub3JtYWwtZGlzcGxh
eW5vbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3Rv
bS9sb2FkZXZlbnRzLW5vcm1hbC1kaXNwbGF5bm9uZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMiBAQAorVGhpcyB0ZXN0cyBub3JtYWwgbG9hZCBkaXNwYXRjaGluZyBvcmRl
ciBhbmQgYW4gaW1hZ2UgdGhhdCBkb2VzIG5vdCByZW5kZXIoZGlzcGxheT1ub25lKS4gQnVnIDE2
NDQ3CitQYXNzZWQKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1ub3Jt
YWwtZGlzcGxheW5vbmUuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20v
bG9hZGV2ZW50cy1ub3JtYWwtZGlzcGxheW5vbmUuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLW5vcm1hbC1kaXNwbGF5bm9uZS5zdmcJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgb25sb2Fk
PSJyZXBvcnRMb2FkRXZlbnQodGhpcyk7cnVuVGVzdCgpOyI+CisgIDxzY3JpcHQ+CisgICAgPCFb
Q0RBVEFbCisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgIHZhciByZXN1bHRzID0g
bmV3IEFycmF5KCk7CisKKyAgICAgIGZ1bmN0aW9uIHJlcG9ydExvYWRFdmVudChlbCkgeworICAg
ICAgICByZXN1bHRzLnB1c2goZWwubG9jYWxOYW1lKTsKKyAgICAgIH0KKyAgICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKQorICAgICAgeworICAgICAgICB2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgIGlmICggcmVzdWx0cy5sZW5ndGggIT0gNCB8fCBy
ZXN1bHRzWzBdICE9ICJpbWFnZSIgfHwKKyAgICAgICAgICAgICByZXN1bHRzWzFdICE9ICJ0ZXh0
IiB8fCByZXN1bHRzWzJdICE9ICJnIiB8fAorICAgICAgICAgICAgIHJlc3VsdHNbM10gIT0gInN2
ZyIpIHsKKyAgICAgICAgICB0ZXN0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCJGYWlsZWQiKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdGVzdC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiUGFzc2VkIikpOworICAgICAgICB9CisgICAgICB9
CisgICAgXV0+CisgIDwvc2NyaXB0PgorICA8ZyBvbmxvYWQ9InJlcG9ydExvYWRFdmVudCh0aGlz
KSI+CisgICAgPGltYWdlIGRpc3BsYXk9Im5vbmUiIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ9
ImZhbHNlIiBpZD0iaW1hZ2UiIG9ubG9hZD0icmVwb3J0TG9hZEV2ZW50KHRoaXMpIiB3aWR0aD0i
MTAwIiBoZWlnaHQ9IjEwMCIgeGxpbms6aHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy9wcm9q
ZWN0cy93ZWJraXQvYnJvd3Nlci90cnVuay9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNl
cy9ncmVlbi1jaGVja2VyLnBuZz9mb3JtYXQ9cmF3IiAvPgorICAgIDx0ZXh0IHk9IjEzMCIgeD0i
MjAiPlRoaXMgdGVzdHMgbm9ybWFsIGxvYWQgZGlzcGF0Y2hpbmcgb3JkZXIgYW5kIGFuIGltYWdl
IHRoYXQgZG9lcyBub3QgcmVuZGVyKGRpc3BsYXk9bm9uZSkuIEJ1ZyAxNjQ0NzwvdGV4dD4KKyAg
ICA8dGV4dCB5PSIxNTAiIHg9IjIwIiBpZD0iY29uc29sZSIgb25sb2FkPSJyZXBvcnRMb2FkRXZl
bnQodGhpcykiLz4KKyAgPC9nPgorPC9zdmc+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9t
L2xvYWRldmVudHMtbm9ybWFsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtbm9ybWFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1ub3JtYWwtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKKworVGhpcyB0ZXN0cyBub3JtYWwgbG9hZCBk
aXNwYXRjaGluZyBvcmRlci4gQnVnIDE2NDQ3CitQYXNzZWQKSW5kZXg6IExheW91dFRlc3RzL3N2
Zy9jdXN0b20vbG9hZGV2ZW50cy1ub3JtYWwuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1ub3JtYWwuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLW5vcm1hbC5zdmcJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzAgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgb25sb2FkPSJyZXBvcnRMb2Fk
RXZlbnQodGhpcyk7cnVuVGVzdCgpOyI+CisgIDxzY3JpcHQ+CisgICAgPCFbQ0RBVEFbCisgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgIHZhciByZXN1bHRzID0gbmV3IEFycmF5KCk7
CisKKyAgICAgIGZ1bmN0aW9uIHJlcG9ydExvYWRFdmVudChlbCkgeworICAgICAgICByZXN1bHRz
LnB1c2goZWwubG9jYWxOYW1lKTsKKyAgICAgIH0KKyAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQor
ICAgICAgeworICAgICAgICB2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25z
b2xlIik7CisgICAgICAgIGlmICggcmVzdWx0cy5sZW5ndGggIT0gNCB8fCByZXN1bHRzWzBdICE9
ICJpbWFnZSIgfHwKKyAgICAgICAgICAgICByZXN1bHRzWzFdICE9ICJ0ZXh0IiB8fCByZXN1bHRz
WzJdICE9ICJnIiB8fAorICAgICAgICAgICAgIHJlc3VsdHNbM10gIT0gInN2ZyIpIHsKKyAgICAg
ICAgICB0ZXN0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJGYWlsZWQiKSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdGVzdC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgiUGFzc2VkIikpOworICAgICAgICB9CisgICAgICB9CisgICAgXV0+Cisg
IDwvc2NyaXB0PgorICA8ZyBvbmxvYWQ9InJlcG9ydExvYWRFdmVudCh0aGlzKSI+CisgICAgPGlt
YWdlIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ9ImZhbHNlIiBpZD0iaW1hZ2UiIG9ubG9hZD0i
cmVwb3J0TG9hZEV2ZW50KHRoaXMpIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgeGxpbms6aHJl
Zj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy9wcm9qZWN0cy93ZWJraXQvYnJvd3Nlci90cnVuay9M
YXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy9ncmVlbi1jaGVja2VyLnBuZz9mb3JtYXQ9
cmF3IiAvPgorICAgIDx0ZXh0IHk9IjEzMCIgeD0iMjAiPlRoaXMgdGVzdHMgbm9ybWFsIGxvYWQg
ZGlzcGF0Y2hpbmcgb3JkZXIuIEJ1ZyAxNjQ0NzwvdGV4dD4KKyAgICA8dGV4dCB5PSIxNTAiIHg9
IjIwIiBpZD0iY29uc29sZSIgb25sb2FkPSJyZXBvcnRMb2FkRXZlbnQodGhpcykiLz4KKyAgPC9n
PgorPC9zdmc+Cg==
</data>
<flag name="review"
          id="8926"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20492</attachid>
            <date>2008-04-12 14:30:10 -0700</date>
            <delta_ts>2008-04-28 01:51:41 -0700</delta_ts>
            <desc>Fix the &quot;avoid malloc&quot; part part II</desc>
            <filename>16447-4.diff</filename>
            <type>text/plain</type>
            <size>17097</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMTg0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDgtMDQtMTIgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ0NworICAgICAgICBvbmxvYWQgY2FsbGVk
IHRvbyBtYW55IHRpbWVzIGZvciA8c3ZnOmltYWdlPgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyODIKKyAgICAgICAgU1ZHIHdhc3RlcyB0aW1lIGlu
IG1hbGxvYyB0byBzZW5kIGxvYWRFdmVudHMgdG8gbm9uLWV4aXN0ZW50IGxpc3RlbmVycworCisg
ICAgICAgIFBvc3Rwb25lIGxvYWQgZXZlbnQgZGlzcGF0Y2hpbmcgZm9yIGltYWdlIHdoZW4gZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAorICAgICAgICBpcyB0cnVlLCBkZWxheWluZyBwYXJlbnRz
IGJ1dCBub3Qgc2libGluZ3MsIGFuZCBtYWtlIHN1cmUgdGhlIGxvYWQgZXZlbnQKKyAgICAgICAg
aXMgc2VudCBvbmNlIGZvciBpbWFnZSBpbiBhbGwgY2FzZXMuCisKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNMb2FkTGlzdGVuZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c2VuZFNWR0xvYWRFdmVudElmUG9zc2libGUpOgorICAg
ICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VFbGVtZW50OjpoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMpOgorICAgICAgICAqIHN2Zy9T
VkdJbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUxvYWRlcjo6ZGlz
cGF0Y2hMb2FkRXZlbnQpOgorCiAyMDA4LTA0LTEyICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgZ3JhZGllbnQgc3VwcG9ydCB0byBib3JkZXItaW1hZ2UgKGV2
ZW4gdGhvdWdoIGl0J3MgbW9zdGx5IGp1c3Qgd2VpcmQpLgpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDMxODQxKQorKysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAgICAgICAg
ICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAg
ICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC00MSw2
ICs0MSw3IEBACiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU1ZHVXNl
RWxlbWVudC5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2
ZW50TGlzdGVuZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNTcsNiArMTU4LDI0
IEBAIGJvb2wgU1ZHRWxlbWVudDo6aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3UKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wgaGFzTG9hZExpc3RlbmVyKFNWR0VsZW1lbnQqIG5vZGUp
Cit7CisgICAgTm9kZSogY3VycmVudE5vZGUgPSBub2RlOworICAgIHdoaWxlIChjdXJyZW50Tm9k
ZSAmJiBjdXJyZW50Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CisgICAgICAgIFJlZ2lzdGVyZWRF
dmVudExpc3RlbmVyTGlzdCAqbGlzdCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihjdXJyZW50Tm9k
ZSktPmxvY2FsRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICAgICAgaWYgKGxpc3QpIHsKKyAgICAgICAg
ICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyTGlzdDo6SXRlcmF0b3IgZW5kID0gbGlzdC0+ZW5k
KCk7CisgICAgICAgICAgICBmb3IgKFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyTGlzdDo6SXRlcmF0
b3IgaXQgPSBsaXN0LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICAgICAg
aWYgKCgqaXQpLT5ldmVudFR5cGUoKSA9PSBsb2FkRXZlbnQgJiYKKyAgICAgICAgICAgICAgICAg
ICAgKCppdCktPnVzZUNhcHR1cmUoKSA9PSB0cnVlIHx8IGN1cnJlbnROb2RlID09IG5vZGUpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGN1cnJl
bnROb2RlID0gY3VycmVudE5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIHZvaWQgU1ZHRWxlbWVudDo6c2VuZFNWR0xvYWRFdmVudElmUG9zc2libGUo
Ym9vbCBzZW5kUGFyZW50TG9hZEV2ZW50cykKIHsKICAgICBSZWZQdHI8U1ZHRWxlbWVudD4gY3Vy
cmVudFRhcmdldCA9IHRoaXM7CkBAIC0xNjQsMTIgKzE4MywxMiBAQCB2b2lkIFNWR0VsZW1lbnQ6
OnNlbmRTVkdMb2FkRXZlbnRJZlBvc3NpCiAgICAgICAgIFJlZlB0cjxOb2RlPiBwYXJlbnQ7CiAg
ICAgICAgIGlmIChzZW5kUGFyZW50TG9hZEV2ZW50cykKICAgICAgICAgICAgIHBhcmVudCA9IGN1
cnJlbnRUYXJnZXQtPnBhcmVudE5vZGUoKTsgLy8gc2F2ZSB0aGUgbmV4dCBwYXJlbnQgdG8gZGlz
cGF0Y2ggdG9vIGluY2FzZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQgY2hhbmdlcyB0aGUgdHJlZQot
ICAgICAgICAKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgbWFsbG9jIGNvdWxkIGJlIGF2b2lkZWQg
Ynkgd2Fsa2luZyB0aGUgdHJlZSBmaXJzdCB0byBjaGVjayBpZiBhbnkgbGlzdGVuZXJzIGFyZSBw
cmVzZW50OiBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NAotICAg
ICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gbmV3IEV2ZW50KGxvYWRFdmVudCwgZmFsc2UsIGZh
bHNlKTsKLSAgICAgICAgZXZlbnQtPnNldFRhcmdldChjdXJyZW50VGFyZ2V0KTsKLSAgICAgICAg
RXhjZXB0aW9uQ29kZSBpZ25vcmVkID0gMDsKLSAgICAgICAgZGlzcGF0Y2hHZW5lcmljRXZlbnQo
dGhpcywgZXZlbnQucmVsZWFzZSgpLCBpZ25vcmVkLCBmYWxzZSk7CisgICAgICAgIGlmIChoYXNM
b2FkTGlzdGVuZXIoY3VycmVudFRhcmdldC5nZXQoKSkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxF
dmVudD4gZXZlbnQgPSBuZXcgRXZlbnQobG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAg
ICAgICAgZXZlbnQtPnNldFRhcmdldChjdXJyZW50VGFyZ2V0KTsKKyAgICAgICAgICAgIEV4Y2Vw
dGlvbkNvZGUgaWdub3JlZCA9IDA7CisgICAgICAgICAgICBkaXNwYXRjaEdlbmVyaWNFdmVudChj
dXJyZW50VGFyZ2V0LmdldCgpLCBldmVudC5yZWxlYXNlKCksIGlnbm9yZWQsIGZhbHNlKTsKKyAg
ICAgICAgfQogICAgICAgICBjdXJyZW50VGFyZ2V0ID0gKHBhcmVudCAmJiBwYXJlbnQtPmlzU1ZH
RWxlbWVudCgpKSA/IHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHRWxlbWVudD4ocGFyZW50KSA6IDA7
CiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzMTg0MSkK
KysrIFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAg
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAgICAg
ICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDYgQWxleGFuZGVyIEtlbGxldHQgPGx5cGFub3ZA
a2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAt
MTMxLDcgKzEzMSw3IEBAIFJlbmRlck9iamVjdCogU1ZHSW1hZ2VFbGVtZW50OjpjcmVhdGVSZW4K
IAogYm9vbCBTVkdJbWFnZUVsZW1lbnQ6OmhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpCiB7
Ci0gICAgcmV0dXJuICghZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJhc2VWYWx1ZSgpIHx8IG1f
aW1hZ2VMb2FkZXIuaW1hZ2VDb21wbGV0ZSgpKTsKKyAgICByZXR1cm4gIWV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWRCYXNlVmFsdWUoKSB8fCBtX2ltYWdlTG9hZGVyLmhhdmVGaXJlZExvYWRFdmVu
dCgpOwogfQogCiB2b2lkIFNWR0ltYWdlRWxlbWVudDo6YXR0YWNoKCkKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdJbWFn
ZUxvYWRlci5jcHAJKHJldmlzaW9uIDMxODQxKQorKysgV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQg
KEMpIDIwMDUsIDIwMDUgQWxleGFuZGVyIEtlbGxldHQgPGx5cGFub3ZAa2RlLm9yZz4KKyAgICAg
ICAgICAgICAgICAgIDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgcHJvamVjdAogCkBAIC03OCw3ICs3OSw3IEBAIHZvaWQg
U1ZHSW1hZ2VMb2FkZXI6OmRpc3BhdGNoTG9hZEV2ZW50KCkKICAgICAgICAgc2V0SGF2ZUZpcmVk
TG9hZEV2ZW50KHRydWUpOwogICAgICAgICBpZiAoaW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpKSB7
CiAgICAgICAgICAgICAvLyBGSVhNRTogV2UncmUgc3VwcG9zZWQgdG8gcHV0IHRoZSBkb2N1bWVu
dCBpbiBhbiAiZXJyb3Igc3RhdGUiIHBlciB0aGUgc3BlYy4KLSAgICAgICAgfSBlbHNlCisgICAg
ICAgIH0gZWxzZSBpZiAoc3RhdGljX2Nhc3Q8U1ZHSW1hZ2VFbGVtZW50Kj4oZWxlbWVudCgpKS0+
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJhc2VWYWx1ZSgpKQogICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8U1ZHRWxlbWVudCo+KGVsZW1lbnQoKSktPnNlbmRTVkdMb2FkRXZlbnRJZlBvc3NpYmxl
KHRydWUpOwogICAgIH0KIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDMxODQxKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDgtMDQtMTIg
IFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3RjYXNlcyBmb3I6CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ0NworICAgICAgICBvbmxvYWQgY2FsbGVkIHRv
byBtYW55IHRpbWVzIGZvciA8c3ZnOmltYWdlPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyODIKKyAgICAgICAgU1ZHIHdhc3RlcyB0aW1lIGluIG1h
bGxvYyB0byBzZW5kIGxvYWRFdmVudHMgdG8gbm9uLWV4aXN0ZW50IGxpc3RlbmVycworCisgICAg
ICAgICogc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLWNhcHR1cmluZy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHN2Zy9jdXN0b20vbG9hZGV2ZW50cy1jYXB0dXJpbmcuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvY3VzdG9tL2xvYWRldmVudHMtZXh0ZXJuYWxyZXNvdXJjZXNyZXF1aXJl
ZC1kaXNwbGF5bm9uZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20v
bG9hZGV2ZW50cy1leHRlcm5hbHJlc291cmNlc3JlcXVpcmVkLWRpc3BsYXlub25lLnN2ZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLWV4dGVybmFscmVzb3VyY2VzcmVx
dWlyZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL2xvYWRldmVu
dHMtZXh0ZXJuYWxyZXNvdXJjZXNyZXF1aXJlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9j
dXN0b20vbG9hZGV2ZW50cy1ub3JtYWwtZGlzcGxheW5vbmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvY3VzdG9tL2xvYWRldmVudHMtbm9ybWFsLWRpc3BsYXlub25lLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLW5vcm1hbC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20vbG9hZGV2ZW50cy1ub3JtYWwuc3ZnOiBB
ZGRlZC4KKwogMjAwOC0wNC0xMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3Vz
dG9tL2xvYWRldmVudHMtY2FwdHVyaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtY2FwdHVyaW5nLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1jYXB0dXJpbmct
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKKworVGhpcyB0ZXN0cyB0
aGF0IGxvYWQgZGlzcGF0Y2hpbmcgd29ya3Mgd2hlbiB0aGVyZSBhcmUgbm8KK2RpcmVjdCBsaXN0
ZW5lcnMsIGJ1dCB0aGVyZSBhcmUgY2FwdHVyaW5nIGV2ZW50IGxpc3RlbmVycyBvbiBhbiBhbmNl
c3Rvci4gQnVnIDE2NDQ3CitQYXNzZWQKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vbG9h
ZGV2ZW50cy1jYXB0dXJpbmcuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0
b20vbG9hZGV2ZW50cy1jYXB0dXJpbmcuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS9sb2FkZXZlbnRzLWNhcHR1cmluZy5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzYgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgb25sb2FkPSJydW5UZXN0KCk7Ij4K
KyAgPHNjcmlwdD4KKyAgICA8IVtDREFUQVsKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwor
ICAgICAgZnVuY3Rpb24gaGFuZGxlcihldmVudCkgeworICAgICAgICByZXN1bHRzLnB1c2goZXZl
bnQudGFyZ2V0LmxvY2FsTmFtZSk7CisgICAgICB9CisKKyAgICAgIHZhciByZXN1bHRzID0gbmV3
IEFycmF5KCk7CisKKyAgICAgIHZhciB0ZXN0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Owor
ICAgICAgdGVzdC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgaGFuZGxlciwgdHJ1ZSk7CisKKyAg
ICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgeworICAgICAgICB2YXIgdGVzdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgIGlmICggcmVzdWx0cy5sZW5n
dGggIT0gNiB8fCByZXN1bHRzWzBdICE9ICJpbWFnZSIgfHwKKyAgICAgICAgICAgICByZXN1bHRz
WzFdICE9ICJ0ZXh0IiB8fCByZXN1bHRzWzJdICE9ICJ0ZXh0IiB8fAorICAgICAgICAgICAgIHJl
c3VsdHNbM10gIT0gInRleHQiIHx8IHJlc3VsdHNbNF0gIT0gImciIHx8CisgICAgICAgICAgICAg
cmVzdWx0c1s1XSAhPSAic3ZnIikgeworICAgICAgICAgIHRlc3QuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoIkZhaWxlZCIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICB0ZXN0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJQYXNzZWQiKSk7Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICBdXT4KKyAgPC9zY3JpcHQ+CisgIDxnPgorICAgIDxpbWFn
ZSBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPSJmYWxzZSIgaWQ9ImltYWdlIiB3aWR0aD0iMTAw
IiBoZWlnaHQ9IjEwMCIgeGxpbms6aHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy9wcm9qZWN0
cy93ZWJraXQvYnJvd3Nlci90cnVuay9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy9n
cmVlbi1jaGVja2VyLnBuZz9mb3JtYXQ9cmF3IiAvPgorICAgIDx0ZXh0IHk9IjEzMCIgeD0iMjAi
PlRoaXMgdGVzdHMgdGhhdCBsb2FkIGRpc3BhdGNoaW5nIHdvcmtzIHdoZW4gdGhlcmUgYXJlIG5v
PC90ZXh0PgorICAgIDx0ZXh0IHk9IjE1MCIgeD0iMjAiPmRpcmVjdCBsaXN0ZW5lcnMsIGJ1dCB0
aGVyZSBhcmUgY2FwdHVyaW5nIGV2ZW50IGxpc3RlbmVycyBvbiBhbiBhbmNlc3Rvci4gQnVnIDE2
NDQ3PC90ZXh0PgorICAgIDx0ZXh0IHk9IjE3MCIgeD0iMjAiIGlkPSJjb25zb2xlIiAvPgorICA8
L2c+Cis8L3N2Zz4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1leHRl
cm5hbHJlc291cmNlc3JlcXVpcmVkLWRpc3BsYXlub25lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtZXh0ZXJuYWxyZXNvdXJjZXNy
ZXF1aXJlZC1kaXNwbGF5bm9uZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtZXh0ZXJuYWxyZXNvdXJjZXNyZXF1aXJlZC1kaXNw
bGF5bm9uZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorVGhpcyB0
ZXN0cyBsb2FkIGRpc3BhdGNoaW5nIG9yZGVyIHdpdGggZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCBhbmQgYW4gaW1hZ2UgdGhhdCBkb2VzIG5vdCByZW5kZXIoZGlzcGxheT1ub25lKS4gQnVnIDE2
NDQ3CitQYXNzZWQKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1leHRl
cm5hbHJlc291cmNlc3JlcXVpcmVkLWRpc3BsYXlub25lLnN2Zwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtZXh0ZXJuYWxyZXNvdXJjZXNyZXF1aXJlZC1k
aXNwbGF5bm9uZS5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xv
YWRldmVudHMtZXh0ZXJuYWxyZXNvdXJjZXNyZXF1aXJlZC1kaXNwbGF5bm9uZS5zdmcJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgb25sb2Fk
PSJyZXBvcnRMb2FkRXZlbnQodGhpcyk7cnVuVGVzdCgpOyI+CisgIDxzY3JpcHQ+CisgICAgPCFb
Q0RBVEFbCisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgIHZhciByZXN1bHRzID0g
bmV3IEFycmF5KCk7CisKKyAgICAgIGZ1bmN0aW9uIHJlcG9ydExvYWRFdmVudChlbCkgeworICAg
ICAgICByZXN1bHRzLnB1c2goZWwubG9jYWxOYW1lKTsKKyAgICAgIH0KKyAgICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKQorICAgICAgeworICAgICAgICB2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgIGlmICggcmVzdWx0cy5sZW5ndGggIT0gNCB8fCBy
ZXN1bHRzWzBdICE9ICJ0ZXh0IiB8fAorICAgICAgICAgICAgIHJlc3VsdHNbMV0gIT0gImltYWdl
IiB8fCByZXN1bHRzWzJdICE9ICJnIiB8fAorICAgICAgICAgICAgIHJlc3VsdHNbM10gIT0gInN2
ZyIpIHsKKyAgICAgICAgICB0ZXN0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCJGYWlsZWQiKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdGVzdC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiUGFzc2VkIikpOworICAgICAgICB9CisgICAgICB9
CisgICAgXV0+CisgIDwvc2NyaXB0PgorICA8ZyBvbmxvYWQ9InJlcG9ydExvYWRFdmVudCh0aGlz
KSI+CisgICAgPGltYWdlIGRpc3BsYXk9Im5vbmUiIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ9
InRydWUiIGlkPSJpbWFnZSIgb25sb2FkPSJyZXBvcnRMb2FkRXZlbnQodGhpcykiIHdpZHRoPSIx
MDAiIGhlaWdodD0iMTAwIiB4bGluazpocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnL3Byb2pl
Y3RzL3dlYmtpdC9icm93c2VyL3RydW5rL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcmVzb3VyY2Vz
L2dyZWVuLWNoZWNrZXIucG5nP2Zvcm1hdD1yYXciIC8+CisgICAgPHRleHQgeT0iMTMwIiB4PSIy
MCI+VGhpcyB0ZXN0cyBsb2FkIGRpc3BhdGNoaW5nIG9yZGVyIHdpdGggZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCBhbmQgYW4gaW1hZ2UgdGhhdCBkb2VzIG5vdCByZW5kZXIoZGlzcGxheT1ub25l
KS4gQnVnIDE2NDQ3PC90ZXh0PgorICAgIDx0ZXh0IHk9IjE1MCIgeD0iMjAiIGlkPSJjb25zb2xl
IiBvbmxvYWQ9InJlcG9ydExvYWRFdmVudCh0aGlzKSIvPgorICA8L2c+Cis8L3N2Zz4KSW5kZXg6
IExheW91dFRlc3RzL3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1leHRlcm5hbHJlc291cmNlc3JlcXVp
cmVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xv
YWRldmVudHMtZXh0ZXJuYWxyZXNvdXJjZXNyZXF1aXJlZC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xvYWRldmVudHMtZXh0ZXJuYWxyZXNvdXJj
ZXNyZXF1aXJlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorCitU
aGlzIHRlc3RzIGxvYWQgZGlzcGF0Y2hpbmcgb3JkZXIgd2l0aCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLiBCdWcgMTY0NDcKK1Bhc3NlZApJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9s
b2FkZXZlbnRzLWV4dGVybmFscmVzb3VyY2VzcmVxdWlyZWQuc3ZnCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1leHRlcm5hbHJlc291cmNlc3JlcXVpcmVk
LnN2ZwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1l
eHRlcm5hbHJlc291cmNlc3JlcXVpcmVkLnN2ZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBA
QAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBvbmxvYWQ9InJlcG9ydExvYWRFdmVudCh0aGlz
KTtydW5UZXN0KCk7Ij4KKyAgPHNjcmlwdD4KKyAgICA8IVtDREFUQVsKKyAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKworICAgICAgdmFyIHJlc3VsdHMgPSBuZXcgQXJyYXkoKTsKKworICAgICAg
ZnVuY3Rpb24gcmVwb3J0TG9hZEV2ZW50KGVsKSB7CisgICAgICAgIHJlc3VsdHMucHVzaChlbC5s
b2NhbE5hbWUpOworICAgICAgfQorICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICB7Cisg
ICAgICAgIHZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAg
ICAgICAgaWYgKCByZXN1bHRzLmxlbmd0aCAhPSA0IHx8IHJlc3VsdHNbMF0gIT0gInRleHQiIHx8
CisgICAgICAgICAgICAgcmVzdWx0c1sxXSAhPSAiaW1hZ2UiIHx8IHJlc3VsdHNbMl0gIT0gImci
IHx8CisgICAgICAgICAgICAgcmVzdWx0c1szXSAhPSAic3ZnIikgeworICAgICAgICAgIHRlc3Qu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkZhaWxlZCIpKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICB0ZXN0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCJQYXNzZWQiKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICBdXT4KKyAgPC9zY3JpcHQ+
CisgIDxnIG9ubG9hZD0icmVwb3J0TG9hZEV2ZW50KHRoaXMpIj4KKyAgICA8aW1hZ2UgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZD0idHJ1ZSIgaWQ9ImltYWdlIiBvbmxvYWQ9InJlcG9ydExvYWRF
dmVudCh0aGlzKSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHhsaW5rOmhyZWY9Imh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvcHJvamVjdHMvd2Via2l0L2Jyb3dzZXIvdHJ1bmsvTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS9yZXNvdXJjZXMvZ3JlZW4tY2hlY2tlci5wbmc/Zm9ybWF0PXJhdyIgLz4KKyAg
ICA8dGV4dCB5PSIxMzAiIHg9IjIwIj5UaGlzIHRlc3RzIGxvYWQgZGlzcGF0Y2hpbmcgb3JkZXIg
d2l0aCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLiBCdWcgMTY0NDc8L3RleHQ+CisgICAgPHRl
eHQgeT0iMTUwIiB4PSIyMCIgaWQ9ImNvbnNvbGUiIG9ubG9hZD0icmVwb3J0TG9hZEV2ZW50KHRo
aXMpIi8+CisgIDwvZz4KKzwvc3ZnPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2Fk
ZXZlbnRzLW5vcm1hbC1kaXNwbGF5bm9uZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLW5vcm1hbC1kaXNwbGF5bm9uZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2xvYWRldmVudHMt
bm9ybWFsLWRpc3BsYXlub25lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
IEBACitUaGlzIHRlc3RzIG5vcm1hbCBsb2FkIGRpc3BhdGNoaW5nIG9yZGVyIGFuZCBhbiBpbWFn
ZSB0aGF0IGRvZXMgbm90IHJlbmRlcihkaXNwbGF5PW5vbmUpLiBCdWcgMTY0NDcKK1Bhc3NlZApJ
bmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLW5vcm1hbC1kaXNwbGF5bm9u
ZS5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLW5v
cm1hbC1kaXNwbGF5bm9uZS5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3Vz
dG9tL2xvYWRldmVudHMtbm9ybWFsLWRpc3BsYXlub25lLnN2ZwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzMCBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBvbmxvYWQ9InJlcG9ydExvYWRF
dmVudCh0aGlzKTtydW5UZXN0KCk7Ij4KKyAgPHNjcmlwdD4KKyAgICA8IVtDREFUQVsKKyAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgdmFyIHJlc3VsdHMgPSBuZXcgQXJyYXkoKTsK
KworICAgICAgZnVuY3Rpb24gcmVwb3J0TG9hZEV2ZW50KGVsKSB7CisgICAgICAgIHJlc3VsdHMu
cHVzaChlbC5sb2NhbE5hbWUpOworICAgICAgfQorICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisg
ICAgICB7CisgICAgICAgIHZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKTsKKyAgICAgICAgaWYgKCByZXN1bHRzLmxlbmd0aCAhPSA0IHx8IHJlc3VsdHNbMF0gIT0g
ImltYWdlIiB8fAorICAgICAgICAgICAgIHJlc3VsdHNbMV0gIT0gInRleHQiIHx8IHJlc3VsdHNb
Ml0gIT0gImciIHx8CisgICAgICAgICAgICAgcmVzdWx0c1szXSAhPSAic3ZnIikgeworICAgICAg
ICAgIHRlc3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkZhaWxlZCIpKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0ZXN0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCJQYXNzZWQiKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICBdXT4KKyAg
PC9zY3JpcHQ+CisgIDxnIG9ubG9hZD0icmVwb3J0TG9hZEV2ZW50KHRoaXMpIj4KKyAgICA8aW1h
Z2UgZGlzcGxheT0ibm9uZSIgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD0iZmFsc2UiIGlkPSJp
bWFnZSIgb25sb2FkPSJyZXBvcnRMb2FkRXZlbnQodGhpcykiIHdpZHRoPSIxMDAiIGhlaWdodD0i
MTAwIiB4bGluazpocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnL3Byb2plY3RzL3dlYmtpdC9i
cm93c2VyL3RydW5rL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcmVzb3VyY2VzL2dyZWVuLWNoZWNr
ZXIucG5nP2Zvcm1hdD1yYXciIC8+CisgICAgPHRleHQgeT0iMTMwIiB4PSIyMCI+VGhpcyB0ZXN0
cyBub3JtYWwgbG9hZCBkaXNwYXRjaGluZyBvcmRlciBhbmQgYW4gaW1hZ2UgdGhhdCBkb2VzIG5v
dCByZW5kZXIoZGlzcGxheT1ub25lKS4gQnVnIDE2NDQ3PC90ZXh0PgorICAgIDx0ZXh0IHk9IjE1
MCIgeD0iMjAiIGlkPSJjb25zb2xlIiBvbmxvYWQ9InJlcG9ydExvYWRFdmVudCh0aGlzKSIvPgor
ICA8L2c+Cis8L3N2Zz4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vbG9hZGV2ZW50cy1u
b3JtYWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20v
bG9hZGV2ZW50cy1ub3JtYWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvc3ZnL2N1c3RvbS9sb2FkZXZlbnRzLW5vcm1hbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMyBAQAorCitUaGlzIHRlc3RzIG5vcm1hbCBsb2FkIGRpc3BhdGNoaW5nIG9y
ZGVyLiBCdWcgMTY0NDcKK1Bhc3NlZApJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9sb2Fk
ZXZlbnRzLW5vcm1hbC5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9s
b2FkZXZlbnRzLW5vcm1hbC5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3Vz
dG9tL2xvYWRldmVudHMtbm9ybWFsLnN2ZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBvbmxvYWQ9InJlcG9ydExvYWRFdmVudCh0aGlzKTty
dW5UZXN0KCk7Ij4KKyAgPHNjcmlwdD4KKyAgICA8IVtDREFUQVsKKyAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKworICAgICAgdmFyIHJlc3VsdHMgPSBuZXcgQXJyYXkoKTsKKworICAgICAgZnVu
Y3Rpb24gcmVwb3J0TG9hZEV2ZW50KGVsKSB7CisgICAgICAgIHJlc3VsdHMucHVzaChlbC5sb2Nh
bE5hbWUpOworICAgICAgfQorICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICB7CisgICAg
ICAgIHZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAg
ICAgaWYgKCByZXN1bHRzLmxlbmd0aCAhPSA0IHx8IHJlc3VsdHNbMF0gIT0gImltYWdlIiB8fAor
ICAgICAgICAgICAgIHJlc3VsdHNbMV0gIT0gInRleHQiIHx8IHJlc3VsdHNbMl0gIT0gImciIHx8
CisgICAgICAgICAgICAgcmVzdWx0c1szXSAhPSAic3ZnIikgeworICAgICAgICAgIHRlc3QuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkZhaWxlZCIpKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICB0ZXN0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCJQYXNzZWQiKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICBdXT4KKyAgPC9zY3JpcHQ+Cisg
IDxnIG9ubG9hZD0icmVwb3J0TG9hZEV2ZW50KHRoaXMpIj4KKyAgICA8aW1hZ2UgZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZD0iZmFsc2UiIGlkPSJpbWFnZSIgb25sb2FkPSJyZXBvcnRMb2FkRXZl
bnQodGhpcykiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB4bGluazpocmVmPSJodHRwOi8vdHJh
Yy53ZWJraXQub3JnL3Byb2plY3RzL3dlYmtpdC9icm93c2VyL3RydW5rL0xheW91dFRlc3RzL3N2
Zy9jdXN0b20vcmVzb3VyY2VzL2dyZWVuLWNoZWNrZXIucG5nP2Zvcm1hdD1yYXciIC8+CisgICAg
PHRleHQgeT0iMTMwIiB4PSIyMCI+VGhpcyB0ZXN0cyBub3JtYWwgbG9hZCBkaXNwYXRjaGluZyBv
cmRlci4gQnVnIDE2NDQ3PC90ZXh0PgorICAgIDx0ZXh0IHk9IjE1MCIgeD0iMjAiIGlkPSJjb25z
b2xlIiBvbmxvYWQ9InJlcG9ydExvYWRFdmVudCh0aGlzKSIvPgorICA8L2c+Cis8L3N2Zz4K
</data>
<flag name="review"
          id="8927"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>