<?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>71763</bug_id>
          
          <creation_ts>2011-11-07 21:32:50 -0800</creation_ts>
          <short_desc>Add support for float[] and double[] to IDL bindings code generator</short_desc>
          <delta_ts>2011-11-18 18:24:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>71753</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Scott Graham">scottmg</reporter>
          <assigned_to name="Scott Graham">scottmg</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>497718</commentid>
    <comment_count>0</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-07 21:32:50 -0800</bug_when>
    <thetext>Rather than writing more custom binding code, add support for array types to code generator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497723</commentid>
    <comment_count>1</comment_count>
      <attachid>113986</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-07 21:41:57 -0800</bug_when>
    <thetext>Created attachment 113986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497729</commentid>
    <comment_count>2</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-07 21:50:52 -0800</bug_when>
    <thetext>Not ready yet, just looking for some guidance (i.e. am I way off in the weeds here?)

Specific questions:

Currently just using Vector&lt;float&gt; and Vector&lt;double&gt; (and returning them by value from conversions). Is there an appropriate type to use here that&apos;s Ref? Or a terser conversion method assuming I wanted to do all of short/ushort/int/uint/long/ulong/float/double?

Is there a test that runs for bindings or do we just rely on the main build as a compile test? (I found Tools/Scripts/run-bindings-test but it&apos;s just a diff&apos;r).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497735</commentid>
    <comment_count>3</comment_count>
      <attachid>113986</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-07 21:55:28 -0800</bug_when>
    <thetext>Comment on attachment 113986
Patch

Attachment 113986 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10330922</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497800</commentid>
    <comment_count>4</comment_count>
      <attachid>113986</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-08 00:21:11 -0800</bug_when>
    <thetext>Comment on attachment 113986
Patch

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

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:328
&gt; +    unsigned size = values.size();

unsigned -&gt; size_t

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:329
&gt; +    v8::Local&lt;v8::Array&gt; ret = v8::Array::New(size);

ret -&gt; result (WebKit prefers complete words for variable names)

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:335
&gt; +v8::Handle&lt;v8::Value&gt; v8NumberArray(const Vector&lt;double&gt;&amp; values)

Can this just be templated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497801</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-08 00:21:43 -0800</bug_when>
    <thetext>This approach looks pretty reasonable to me.  @haraken: Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497872</commentid>
    <comment_count>6</comment_count>
      <attachid>113986</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-08 02:25:44 -0800</bug_when>
    <thetext>Comment on attachment 113986
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Add support for T[] to IDL bindings code generator

By the way, what are the use cases of T[]? I know there should be use cases, but I am curious about what custom constructors you are assuming as use cases.

&gt; Source/WebCore/bindings/scripts/test/TestObj.idl:178
&gt; +        attribute double[]                  doubleArrayAttr;

&apos;floatArray&apos; and &apos;doubleArray&apos; might be a better name in order to avoid verbose names like &apos;floatArrayAttrAttrGetter&apos; and &apos;doubleArrayAttrAttrGetter&apos;.

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:647
&gt; +        ret-&gt;append(indexedValue-&gt;ToNumber());

I am not sure, but does this really work? I could not find .append method in Vector. static_cast&lt;float&gt; is needed, isn&apos;t it?

&gt; Source/WebCore/bindings/v8/V8Binding.h:353
&gt; +    v8::Handle&lt;v8::Value&gt; v8NumberArray(const Vector&lt;double&gt;&amp; values);

In WebKit a variable name is unnecessary in a method declaration. It should be &apos;v8::Handle&lt;v8::Value&gt; v8NumberArray(const Vector&lt;float&gt;&amp;)&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497873</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-08 02:26:06 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; This approach looks pretty reasonable to me.  @haraken: Thoughts?

The approach looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498149</commentid>
    <comment_count>8</comment_count>
      <attachid>114095</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-08 09:39:27 -0800</bug_when>
    <thetext>Created attachment 114095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498155</commentid>
    <comment_count>9</comment_count>
      <attachid>113986</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-08 09:43:28 -0800</bug_when>
    <thetext>Comment on attachment 113986
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        Add support for T[] to IDL bindings code generator
&gt; 
&gt; By the way, what are the use cases of T[]? I know there should be use cases, but I am curious about what custom constructors you are assuming as use cases.

Just float[] and double[]. I thought maybe it would be &quot;free&quot; to have generic T[] but it seems not (or at least not obviously to me).

&gt;&gt; Source/WebCore/bindings/scripts/test/TestObj.idl:178
&gt;&gt; +        attribute double[]                  doubleArrayAttr;
&gt; 
&gt; &apos;floatArray&apos; and &apos;doubleArray&apos; might be a better name in order to avoid verbose names like &apos;floatArrayAttrAttrGetter&apos; and &apos;doubleArrayAttrAttrGetter&apos;.

Done.

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.cpp:328
&gt;&gt; +    unsigned size = values.size();
&gt; 
&gt; unsigned -&gt; size_t

Done.

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.cpp:329
&gt;&gt; +    v8::Local&lt;v8::Array&gt; ret = v8::Array::New(size);
&gt; 
&gt; ret -&gt; result (WebKit prefers complete words for variable names)

Done.

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.cpp:335
&gt;&gt; +v8::Handle&lt;v8::Value&gt; v8NumberArray(const Vector&lt;double&gt;&amp; values)
&gt; 
&gt; Can this just be templated?

Done. (Only OK for floating point-ish numbers because of the v8 constructors, but that&apos;s all I need anyway).

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.cpp:647
&gt;&gt; +        ret-&gt;append(indexedValue-&gt;ToNumber());
&gt; 
&gt; I am not sure, but does this really work? I could not find .append method in Vector. static_cast&lt;float&gt; is needed, isn&apos;t it?

Fixed and templated. append is here I think: http://trac.webkit.org/browser/trunk/Source/JavaScriptCore/wtf/Vector.h#L579

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.h:353
&gt;&gt; +    v8::Handle&lt;v8::Value&gt; v8NumberArray(const Vector&lt;double&gt;&amp; values);
&gt; 
&gt; In WebKit a variable name is unnecessary in a method declaration. It should be &apos;v8::Handle&lt;v8::Value&gt; v8NumberArray(const Vector&lt;float&gt;&amp;)&apos;

Noted, thank you (but as it&apos;s now a template I had to keep a name).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498357</commentid>
    <comment_count>10</comment_count>
      <attachid>114095</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-08 12:40:06 -0800</bug_when>
    <thetext>Comment on attachment 114095
Patch

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

&gt; Source/WebCore/bindings/v8/V8Binding.h:399
&gt; +        for (size_t i = 0; i &lt; v8Array-&gt;Length(); ++i) {

Should we store the Length in a temporary?  I&apos;m not sure how expensive this call is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498368</commentid>
    <comment_count>11</comment_count>
      <attachid>114138</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-08 12:49:08 -0800</bug_when>
    <thetext>Created attachment 114138
cache length</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498444</commentid>
    <comment_count>12</comment_count>
      <attachid>114138</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-08 14:44:51 -0800</bug_when>
    <thetext>Comment on attachment 114138
cache length

Rejecting attachment 114138 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ab3c-d52691b4dbfc ...
Currently at 99611 = 22fdee69221aa1af63319d551b4cfb947ca7f6e8
r99612 = 5ccb211e65d931949fac632697f43446b7f10096
r99613 = 1bf25204738bc0ef0dc9adfa86fe5384fba24093
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
RA layer request failed: OPTIONS of &apos;http://svn.webkit.org/repository/webkit&apos;: timed out waiting for server (http://svn.webkit.org) at /usr/lib/git-core/git-svn line 2295

Died at Tools/Scripts/update-webkit line 157.

Full output: http://queues.webkit.org/results/10376186</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498466</commentid>
    <comment_count>13</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-08 15:25:30 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 114138 [details])
&gt; Rejecting attachment 114138 [details] from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2
&gt; 
&gt; Last 500 characters of output:
&gt; ab3c-d52691b4dbfc ...
&gt; Currently at 99611 = 22fdee69221aa1af63319d551b4cfb947ca7f6e8
&gt; r99612 = 5ccb211e65d931949fac632697f43446b7f10096
&gt; r99613 = 1bf25204738bc0ef0dc9adfa86fe5384fba24093
&gt; Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
&gt; RA layer request failed: OPTIONS of &apos;http://svn.webkit.org/repository/webkit&apos;: timed out waiting for server (http://svn.webkit.org) at /usr/lib/git-core/git-svn line 2295
&gt; 
&gt; Died at Tools/Scripts/update-webkit line 157.
&gt; 
&gt; Full output: http://queues.webkit.org/results/10376186

Wharrgarbl? Try again maybe, since it looks like a timeout?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498514</commentid>
    <comment_count>14</comment_count>
      <attachid>114138</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-08 16:43:22 -0800</bug_when>
    <thetext>Comment on attachment 114138
cache length

Clearing flags on attachment: 114138

Committed r99632: &lt;http://trac.webkit.org/changeset/99632&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498516</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-08 16:43:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113986</attachid>
            <date>2011-11-07 21:41:57 -0800</date>
            <delta_ts>2011-11-08 09:43:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71763-20111107214156.patch</filename>
            <type>text/plain</type>
            <size>11358</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk1MDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNjFiMDRmZjY1NWJkZjll
NDJjNTg1YTk0MTdiMDgxMDYxNjc5N2YzLi4xZGRiOWNjMmI5MTA3MTQzNjM2MDlkODY2MmYyNzRl
OGE0MzEyY2U4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAKIDIwMTEtMTEtMDcgIFNjb3R0
IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgogCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBUW10gdG8gSURMIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc2MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGFkZGVkIHRvIFRlc3RPYmouaWRsLgor
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAg
IChJc1JlZlB0clR5cGUpOgorICAgICAgICAoR2V0TmF0aXZlVHlwZSk6CisgICAgICAgIChKU1Zh
bHVlVG9OYXRpdmUpOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJu
YWw6OmZsb2F0QXJyYXlBdHRyQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqSW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0ckF0dHJHZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9iakludGVybmFsOjpkb3VibGVBcnJheUF0dHJBdHRyU2V0dGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6djhOdW1i
ZXJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjp2OE51bWJlckFycmF5VG9GbG9hdFZlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjp2OE51bWJlckFycmF5VG9Eb3VibGVWZWN0b3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorCisyMDExLTExLTA3ICBTY290dCBHcmFoYW0g
IDxzY290dG1nQGNocm9taXVtLm9yZz4KKwogICAgICAgICBBbGxvdyBnYW1lcGFkIEFQSSB0byBi
ZSBlbmFibGVkIGF0IHJ1bnRpbWUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcxNzM2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggMzI4MTZmMGMyMTY4YzZiYjM1NWQ2Y2RmNWUx
YjE0YTkxOTA2ODZkYi4uM2E1NDI1MDUxMDc4NDQ5NWQ3NDcyNTQwYWM3MzAwM2I4N2IyMTBlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KQEAgLTMwNjksNiArMzA2OSw4IEBAIHN1YiBJc1JlZlB0clR5cGUKICAgICByZXR1cm4g
MCBpZiAkdHlwZSBlcSAidW5zaWduZWQiOwogICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJ1bnNp
Z25lZCBsb25nIjsKICAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAidW5zaWduZWQgc2hvcnQiOwor
ICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJmbG9hdFtdIjsKKyAgICByZXR1cm4gMCBpZiAkdHlw
ZSBlcSAiZG91YmxlW10iOwogCiAgICAgcmV0dXJuIDE7CiB9CkBAIC0zMTI0LDggKzMxMjYsMTAg
QEAgc3ViIEdldE5hdGl2ZVR5cGUKIAogICAgIHJldHVybiAiUmVmUHRyPE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXI+IiBpZiAkdHlwZSBlcSAiTWVkaWFRdWVyeUxpc3RMaXN0ZW5lciI7CiAKKyAgICAj
IEZJWE1FOiBTdXBwb3J0IFRbXSwgVFtdPywgc2VxdWVuY2U8VD4gZ2VuZXJpY2FsbHkKKyAgICBy
ZXR1cm4gIlZlY3RvcjxmbG9hdD4iIGlmICR0eXBlIGVxICJmbG9hdFtdIjsKKyAgICByZXR1cm4g
IlZlY3Rvcjxkb3VibGU+IiBpZiAkdHlwZSBlcSAiZG91YmxlW10iOwogICAgIHJldHVybiAiUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCI7Ci0gICAgIyBG
SVhNRTogQWRkIHByb3BlciBzdXBwb3J0IGZvciBUW10sIFRbXT8sIHNlcXVlbmNlPFQ+LgogICAg
IHJldHVybiAiUmVmUHRyPERPTVN0cmluZ0xpc3Q+IiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nW10i
OwogCiAgICAgIyBEZWZhdWx0LCBhc3N1bWUgbmF0aXZlIHR5cGUgaXMgYSBwb2ludGVyIHdpdGgg
c2FtZSB0eXBlIG5hbWUgYXMgaWRsIHR5cGUKQEAgLTMxODEsNiArMzE4NSw4IEBAIHN1YiBKU1Zh
bHVlVG9OYXRpdmUKICAgICByZXR1cm4gInRvV2ViQ29yZURhdGUoJHZhbHVlKSIgaWYgJHR5cGUg
ZXEgIkRhdGUiOwogICAgIHJldHVybiAidjhWYWx1ZVRvV2ViQ29yZURPTVN0cmluZ0xpc3QoJHZh
bHVlKSIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiOwogICAgICMgRklYTUU6IEFkZCBwcm9w
ZXIgc3VwcG9ydCBmb3IgVFtdLCBUW10/IGFuZCBzZXF1ZW5jZTxUPi4KKyAgICByZXR1cm4gInY4
TnVtYmVyQXJyYXlUb0Zsb2F0VmVjdG9yKCR2YWx1ZSkiIGlmICR0eXBlIGVxICJmbG9hdFtdIjsK
KyAgICByZXR1cm4gInY4TnVtYmVyQXJyYXlUb0RvdWJsZVZlY3RvcigkdmFsdWUpIiBpZiAkdHlw
ZSBlcSAiZG91YmxlW10iOwogICAgIHJldHVybiAidjhWYWx1ZVRvV2ViQ29yZURPTVN0cmluZ0xp
c3QoJHZhbHVlKSIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ1tdIjsKIAogICAgIGlmICgkdHlwZSBl
cSAiRE9NU3RyaW5nIiBvciAkdHlwZSBlcSAiRE9NVXNlckRhdGEiKSB7CkBAIC0zMzMyLDYgKzMz
MzgsOCBAQCBteSAlbm9uX3dyYXBwZXJfdHlwZXMgPSAoCiAgICAgJ2Jvb2xlYW4nID0+IDEsCiAg
ICAgJ2xvbmcgbG9uZycgPT4gMSwKICAgICAndW5zaWduZWQgbG9uZyBsb25nJyA9PiAxLAorICAg
ICdmbG9hdFtdJyA9PiAxLAorICAgICdkb3VibGVbXScgPT4gMSwKICAgICAnRE9NU3RyaW5nJyA9
PiAxLAogICAgICdDb21wYXJlSG93JyA9PiAxLAogICAgICdTZXJpYWxpemVkU2NyaXB0VmFsdWUn
ID0+IDEsCkBAIC0zNDIyLDYgKzM0MzAsOSBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgcmV0
dXJuICJ2ODo6TnVtYmVyOjpOZXcoJHZhbHVlKSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzUHJpbWl0
aXZlVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuICIkdmFsdWUudjhWYWx1ZSgpIiBpZiAkbmF0aXZl
VHlwZSBlcSAiU2NyaXB0VmFsdWUiOwogCisgICAgcmV0dXJuICJ2OE51bWJlckFycmF5KCR2YWx1
ZSkiIGlmICR0eXBlIGVxICJmbG9hdFtdIjsKKyAgICByZXR1cm4gInY4TnVtYmVyQXJyYXkoJHZh
bHVlKSIgaWYgJHR5cGUgZXEgImRvdWJsZVtdIjsKKwogICAgIGlmICgkY29kZUdlbmVyYXRvci0+
SXNTdHJpbmdUeXBlKCR0eXBlKSkgewogICAgICAgICBteSAkY29udiA9ICRzaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDb252ZXJ0TnVsbFN0cmluZ1RvIn07CiAgICAgICAgIGlmIChk
ZWZpbmVkICRjb252KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE9iai5pZGwKaW5kZXggMzYyNDQ2NWIxNDAwOTY0NmU2MzY3MTg1MTQzZWU3YWEwNzNl
MDc3Yy4uY2RkNzQ1Njg5MTBjM2E3MWNjNDFkNjI3ZjM4YTAxYjdkMmNkMzkxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMTcy
LDYgKzE3MiwxMiBAQCBtb2R1bGUgdGVzdCB7CiAgICAgICAgIGF0dHJpYnV0ZSBbRW5hYmxlZEF0
UnVudGltZT1GZWF0dXJlTmFtZV0gbG9uZyBlbmFibGVkQXRSdW50aW1lQXR0cjI7CiAjZW5kaWYK
IAorCisjaWYgZGVmaW5lZChURVNUSU5HX1Y4KQorICAgICAgICBhdHRyaWJ1dGUgZmxvYXRbXSAg
ICAgICAgICAgICAgICAgICBmbG9hdEFycmF5QXR0cjsKKyAgICAgICAgYXR0cmlidXRlIGRvdWJs
ZVtdICAgICAgICAgICAgICAgICAgZG91YmxlQXJyYXlBdHRyOworI2VuZGlmCisKICAgICAgICAg
Ly8gT2JqZWN0aXZlQyByZXNlcnZlZCB3b3Jkcy4KICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGxvbmcgICAgICBkZXNjcmlwdGlvbjsKICAgICAgICAgYXR0cmlidXRlIGxvbmcgICAgICAgICAg
ICAgICBpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggYzhlNTVkMzllZDhhMTkyMGNkMmFjMjdhNmU2MGUxZjk4
ZWE5NmI3Ni4uMDhmNjEwZTEzNzMzNTlkNjE4YzI4ZmFlOGQ5NTZlNTYxOGM4YzQ1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5jcHAKQEAgLTY0Miw2ICs2NDIsMzggQEAgc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGltZUF0
dHIyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2EKICAgICBy
ZXR1cm47CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZmxvYXRBcnJheUF0dHJB
dHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouZmxvYXRBcnJheUF0dHIu
X2dldCIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CisgICAgcmV0dXJuIHY4TnVtYmVyQXJyYXkoaW1wLT5mbG9hdEFycmF5QXR0cigpKTsK
K30KKworc3RhdGljIHZvaWQgZmxvYXRBcnJheUF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmZsb2F0QXJyYXlB
dHRyLl9zZXQiKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIFZlY3RvcjxmbG9hdD4gdiA9IHY4TnVtYmVyQXJyYXlUb0Zsb2F0VmVj
dG9yKHZhbHVlKTsKKyAgICBpbXAtPnNldEZsb2F0QXJyYXlBdHRyKHYpOworICAgIHJldHVybjsK
K30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkb3VibGVBcnJheUF0dHJBdHRyR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouZG91YmxlQXJyYXlBdHRyLl9nZXQi
KTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OworICAgIHJldHVybiB2OE51bWJlckFycmF5KGltcC0+ZG91YmxlQXJyYXlBdHRyKCkpOworfQor
CitzdGF0aWMgdm9pZCBkb3VibGVBcnJheUF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmRvdWJsZUFycmF5QXR0
ci5fc2V0Iik7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKKyAgICBWZWN0b3I8ZG91YmxlPiB2ID0gdjhOdW1iZXJBcnJheVRvRG91YmxlVmVj
dG9yKHZhbHVlKTsKKyAgICBpbXAtPnNldERvdWJsZUFycmF5QXR0cih2KTsKKyAgICByZXR1cm47
Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzY3JpcHRpb25BdHRyR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouZGVzY3JpcHRpb24uX2dldCIpOwpAQCAt
MTM3NSw2ICsxNDA3LDEwIEBAIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIFRlc3RPYmpB
dHRyc1tdID0gewogICAgIHsiY2FjaGVkQXR0cmlidXRlMSIsIFRlc3RPYmpJbnRlcm5hbDo6Y2Fj
aGVkQXR0cmlidXRlMUF0dHJHZXR0ZXIsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJp
YnV0ZSAnY2FjaGVkQXR0cmlidXRlMicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0
dHI6ICdDYWNoZWRBdHRyaWJ1dGUnKQogICAgIHsiY2FjaGVkQXR0cmlidXRlMiIsIFRlc3RPYmpJ
bnRlcm5hbDo6Y2FjaGVkQXR0cmlidXRlMkF0dHJHZXR0ZXIsIDAsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAor
ICAgIC8vIEF0dHJpYnV0ZSAnZmxvYXRBcnJheUF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRB
dHRyOiAnJykKKyAgICB7ImZsb2F0QXJyYXlBdHRyIiwgVGVzdE9iakludGVybmFsOjpmbG9hdEFy
cmF5QXR0ckF0dHJHZXR0ZXIsIFRlc3RPYmpJbnRlcm5hbDo6ZmxvYXRBcnJheUF0dHJBdHRyU2V0
dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ2RvdWJsZUFycmF5QXR0cicg
KFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsiZG91YmxlQXJyYXlBdHRyIiwg
VGVzdE9iakludGVybmFsOjpkb3VibGVBcnJheUF0dHJBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJu
YWw6OmRvdWJsZUFycmF5QXR0ckF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0
dHJpYnV0ZSAnZGVzY3JpcHRpb24nIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRy
OiAnJykKICAgICB7ImRlc2NyaXB0aW9uIiwgVGVzdE9iakludGVybmFsOjpkZXNjcmlwdGlvbkF0
dHJHZXR0ZXIsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnaWQnIChUeXBl
OiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJp
bmRpbmcuY3BwCmluZGV4IGYwMjlhNWZiOTkyZWM1OGI5OGY2OGYyYWM0ZTdlZmVmMzI3MzFjZTUu
LjBkMTY5OTllNjkyOTMzNjNkY2RiNjk5YzRlY2MxMGI3ZmFmNjE2MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtMzIzLDYgKzMyMywyNCBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdjhTdHJpbmdPckZhbHNlKGNvbnN0IFN0cmluZyYgc3RyKQogICAgIHJl
dHVybiBzdHIuaXNOdWxsKCkgPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6OkZhbHNlKCkpIDog
djg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4U3RyaW5nKHN0cikpOwogfQogCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdjhOdW1iZXJBcnJheShjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMpCit7Cisg
ICAgdW5zaWduZWQgc2l6ZSA9IHZhbHVlcy5zaXplKCk7CisgICAgdjg6OkxvY2FsPHY4OjpBcnJh
eT4gcmV0ID0gdjg6OkFycmF5OjpOZXcoc2l6ZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpemU7ICsraSkKKyAgICAgICAgcmV0LT5TZXQoaSwgdjg6Ok51bWJlcjo6TmV3KHZhbHVl
c1tpXSkpOworICAgIHJldHVybiByZXQ7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB2OE51
bWJlckFycmF5KGNvbnN0IFZlY3Rvcjxkb3VibGU+JiB2YWx1ZXMpCit7CisgICAgdW5zaWduZWQg
c2l6ZSA9IHZhbHVlcy5zaXplKCk7CisgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gcmV0ID0gdjg6
OkFycmF5OjpOZXcoc2l6ZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsr
aSkKKyAgICAgICAgcmV0LT5TZXQoaSwgdjg6Ok51bWJlcjo6TmV3KHZhbHVlc1tpXSkpOworICAg
IHJldHVybiByZXQ7Cit9CisKIGRvdWJsZSB0b1dlYkNvcmVEYXRlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBvYmplY3QpCiB7CiAgICAgcmV0dXJuIChvYmplY3QtPklzRGF0ZSgpIHx8IG9iamVjdC0+
SXNOdW1iZXIoKSkgPyBvYmplY3QtPk51bWJlclZhbHVlKCkgOiBzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46OnF1aWV0X05hTigpOwpAQCAtNjE2LDYgKzYzNCwzNiBAQCB2b2lkIHNldEVsZW1l
bnRTdHJpbmdBdHRyKGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8sCiAgICAgaW1wLT5zZXRB
dHRyaWJ1dGUobmFtZSwgdik7CiB9CiAKK1ZlY3RvcjxmbG9hdD4gdjhOdW1iZXJBcnJheVRvRmxv
YXRWZWN0b3Iodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQoreworICAgIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHY4VmFsdWUodjg6OkxvY2FsPHY4OjpWYWx1ZT46Ok5ldyh2YWx1ZSkpOworICAg
IGlmICghdjhWYWx1ZS0+SXNBcnJheSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFZlY3Rv
cjxmbG9hdD4gcmV0OworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHY4QXJyYXkgPSB2ODo6TG9j
YWw8djg6OkFycmF5Pjo6Q2FzdCh2OFZhbHVlKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHY4QXJyYXktPkxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
aW5kZXhlZFZhbHVlID0gdjhBcnJheS0+R2V0KHY4OjpJbnRlZ2VyOjpOZXcoaSkpOworICAgICAg
ICByZXQtPmFwcGVuZChpbmRleGVkVmFsdWUtPlRvTnVtYmVyKCkpOworICAgIH0KKyAgICByZXR1
cm4gcmV0OworfQorCitWZWN0b3I8ZG91YmxlPiB2OE51bWJlckFycmF5VG9Eb3VibGVWZWN0b3Io
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQoreworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHY4VmFsdWUodjg6OkxvY2FsPHY4OjpWYWx1ZT46Ok5ldyh2YWx1ZSkpOworICAgIGlmICghdjhW
YWx1ZS0+SXNBcnJheSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFZlY3Rvcjxkb3VibGU+
IHJldDsKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiB2OEFycmF5ID0gdjg6OkxvY2FsPHY4OjpB
cnJheT46OkNhc3QodjhWYWx1ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2OEFycmF5
LT5MZW5ndGgoKTsgKytpKSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGluZGV4ZWRW
YWx1ZSA9IHY4QXJyYXktPkdldCh2ODo6SW50ZWdlcjo6TmV3KGkpKTsKKyAgICAgICAgcmV0LT5h
cHBlbmQoaW5kZXhlZFZhbHVlLT5Ub051bWJlcigpKTsKKyAgICB9CisgICAgcmV0dXJuIHJldDsK
K30KKwogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB2OFZhbHVlVG9XZWJDb3JlRE9NU3RyaW5n
TGlzdCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCiB7CiAgICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdjhWYWx1ZSh2ODo6TG9jYWw8djg6OlZhbHVlPjo6TmV3KHZhbHVlKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IGY3Mjg3NmQzOTAyZmJkZWU4ZGZjNjQ1
MTYzZTYxYTI2OGYzMzc0YmMuLjYyNGUwYWNiZjNmZWFlOWI4ZjllZjQyYjZkNzgyNDQzODY0ZGM4
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC0zNDksNiArMzQ5
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4
U3RyaW5nT3JGYWxzZShjb25zdCBTdHJpbmcmIHN0cik7CiAKKyAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdjhOdW1iZXJBcnJheShjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMpOworICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2OE51bWJlckFycmF5KGNvbnN0IFZlY3Rvcjxkb3VibGU+JiB2
YWx1ZXMpOworCiAgICAgZG91YmxlIHRvV2ViQ29yZURhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+
IG9iamVjdCk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhEYXRlT3JOdWxsKGRvdWJs
ZSB2YWx1ZSk7CkBAIC0zNzksNiArMzgyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
U3RyaW5nIGludDMyVG9XZWJDb3JlU3RyaW5nKGludCB2YWx1ZSk7CiAKKyAgICBWZWN0b3I8Zmxv
YXQ+IHY4TnVtYmVyQXJyYXlUb0Zsb2F0VmVjdG9yKHY4OjpIYW5kbGU8djg6OlZhbHVlPik7Cisg
ICAgVmVjdG9yPGRvdWJsZT4gdjhOdW1iZXJBcnJheVRvRG91YmxlVmVjdG9yKHY4OjpIYW5kbGU8
djg6OlZhbHVlPik7CiAgICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB2OFZhbHVlVG9XZWJD
b3JlRE9NU3RyaW5nTGlzdCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOwogCiAgICAgY2xhc3MgVjhQ
YXJhbWV0ZXJCYXNlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114095</attachid>
            <date>2011-11-08 09:39:27 -0800</date>
            <delta_ts>2011-11-08 12:49:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71763-20111108093926.patch</filename>
            <type>text/plain</type>
            <size>9772</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk1MDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNjFiMDRmZjY1NWJkZjll
NDJjNTg1YTk0MTdiMDgxMDYxNjc5N2YzLi5mYzY1NThhZTYxM2ZiZmNjNWFkY2FhNmM2YzNmMDQ1
NTY5NmM1ZjRmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMTEtMDggIFNjb3R0
IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBhcnJheXMgb2YgbnVtYmVycyB0byBJREwgYmluZGluZ3MgY29kZSBnZW5lcmF0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzYzCisKKyAgICAg
ICAgQWRkcyBzdXBwb3J0IGZvciBmbG9hdFtdIGFuZCBkb3VibGVbXSB0byBJREwuIFN1cHBvcnQg
Zm9yIG90aGVyIHR5cGVzCisgICAgICAgIGFwcGVhcnMgdG8gYmUgbW9yZSBjb21wbGljYXRlZCAo
b3IgYXQgbGVhc3QgbW9yZSBjb3B5LXBhc3RlKSBzbyBub3QKKyAgICAgICAgZG9pbmcgdGhhdCBm
b3Igbm93IGZvciBsYWNrIG9mIG5lZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHMgYWRkZWQgdG8gVGVzdE9iai5pZGwuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKElzUmVmUHRy
VHlwZSk6CisgICAgICAgIChHZXROYXRpdmVUeXBlKToKKyAgICAgICAgKEpTVmFsdWVUb05hdGl2
ZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6ZmxvYXRB
cnJheUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjpmbG9h
dEFycmF5QXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OmRv
dWJsZUFycmF5QXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6
OmRvdWJsZUFycmF5QXR0clNldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5n
Lmg6CisgICAgICAgIChXZWJDb3JlOjp2OE51bWJlckFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6
OnY4TnVtYmVyQXJyYXlUb1ZlY3Rvcik6CisKIDIwMTEtMTEtMDcgIFNjb3R0IEdyYWhhbSAgPHNj
b3R0bWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFsbG93IGdhbWVwYWQgQVBJIHRvIGJlIGVu
YWJsZWQgYXQgcnVudGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAzMjgxNmYwYzIxNjhjNmJiMzU1ZDZjZGY1ZTFiMTRh
OTE5MDY4NmRiLi42NzllODRhYWQ1Mzc1NjJhOTgwNmNmMDExZDkyMGI2OTA5MmFmNzQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQpAQCAtMzA2OSw2ICszMDY5LDggQEAgc3ViIElzUmVmUHRyVHlwZQogICAgIHJldHVybiAwIGlm
ICR0eXBlIGVxICJ1bnNpZ25lZCI7CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInVuc2lnbmVk
IGxvbmciOwogICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJ1bnNpZ25lZCBzaG9ydCI7CisgICAg
cmV0dXJuIDAgaWYgJHR5cGUgZXEgImZsb2F0W10iOworICAgIHJldHVybiAwIGlmICR0eXBlIGVx
ICJkb3VibGVbXSI7CiAKICAgICByZXR1cm4gMTsKIH0KQEAgLTMxMjQsOCArMzEyNiwxMCBAQCBz
dWIgR2V0TmF0aXZlVHlwZQogCiAgICAgcmV0dXJuICJSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcj4iIGlmICR0eXBlIGVxICJNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIjsKIAorICAgICMgRklY
TUU6IFN1cHBvcnQgVFtdLCBUW10/LCBzZXF1ZW5jZTxUPiBnZW5lcmljYWxseQorICAgIHJldHVy
biAiVmVjdG9yPGZsb2F0PiIgaWYgJHR5cGUgZXEgImZsb2F0W10iOworICAgIHJldHVybiAiVmVj
dG9yPGRvdWJsZT4iIGlmICR0eXBlIGVxICJkb3VibGVbXSI7CiAgICAgcmV0dXJuICJSZWZQdHI8
RE9NU3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsKLSAgICAjIEZJWE1F
OiBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIFRbXSwgVFtdPywgc2VxdWVuY2U8VD4uCiAgICAgcmV0
dXJuICJSZWZQdHI8RE9NU3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01TdHJpbmdbXSI7CiAK
ICAgICAjIERlZmF1bHQsIGFzc3VtZSBuYXRpdmUgdHlwZSBpcyBhIHBvaW50ZXIgd2l0aCBzYW1l
IHR5cGUgbmFtZSBhcyBpZGwgdHlwZQpAQCAtMzE4Miw2ICszMTg2LDE0IEBAIHN1YiBKU1ZhbHVl
VG9OYXRpdmUKICAgICByZXR1cm4gInY4VmFsdWVUb1dlYkNvcmVET01TdHJpbmdMaXN0KCR2YWx1
ZSkiIGlmICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsKICAgICAjIEZJWE1FOiBBZGQgcHJvcGVy
IHN1cHBvcnQgZm9yIFRbXSwgVFtdPyBhbmQgc2VxdWVuY2U8VD4uCiAgICAgcmV0dXJuICJ2OFZh
bHVlVG9XZWJDb3JlRE9NU3RyaW5nTGlzdCgkdmFsdWUpIiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5n
W10iOworICAgIGlmICgkdHlwZSBlcSAiZmxvYXRbXSIpIHsKKyAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoInd0Zi9WZWN0b3IuaCIpOworICAgICAgICByZXR1cm4gInY4TnVtYmVyQXJyYXlUb1Zl
Y3RvcjxmbG9hdD4oJHZhbHVlKSI7CisgICAgfQorICAgIGlmICgkdHlwZSBlcSAiZG91YmxlW10i
KSB7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJ3dGYvVmVjdG9yLmgiKTsKKyAgICAgICAg
cmV0dXJuICJ2OE51bWJlckFycmF5VG9WZWN0b3I8ZG91YmxlPigkdmFsdWUpIjsKKyAgICB9CiAK
ICAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZyIgb3IgJHR5cGUgZXEgIkRPTVVzZXJEYXRhIikg
ewogICAgICAgICByZXR1cm4gJHZhbHVlOwpAQCAtMzMzMiw2ICszMzQ0LDggQEAgbXkgJW5vbl93
cmFwcGVyX3R5cGVzID0gKAogICAgICdib29sZWFuJyA9PiAxLAogICAgICdsb25nIGxvbmcnID0+
IDEsCiAgICAgJ3Vuc2lnbmVkIGxvbmcgbG9uZycgPT4gMSwKKyAgICAnZmxvYXRbXScgPT4gMSwK
KyAgICAnZG91YmxlW10nID0+IDEsCiAgICAgJ0RPTVN0cmluZycgPT4gMSwKICAgICAnQ29tcGFy
ZUhvdycgPT4gMSwKICAgICAnU2VyaWFsaXplZFNjcmlwdFZhbHVlJyA9PiAxLApAQCAtMzQyMiw2
ICszNDM2LDkgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgIHJldHVybiAidjg6Ok51bWJlcjo6
TmV3KCR2YWx1ZSkiIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5cGUpOwog
ICAgIHJldHVybiAiJHZhbHVlLnY4VmFsdWUoKSIgaWYgJG5hdGl2ZVR5cGUgZXEgIlNjcmlwdFZh
bHVlIjsKIAorICAgIHJldHVybiAidjhOdW1iZXJBcnJheSgkdmFsdWUpIiBpZiAkdHlwZSBlcSAi
ZmxvYXRbXSI7CisgICAgcmV0dXJuICJ2OE51bWJlckFycmF5KCR2YWx1ZSkiIGlmICR0eXBlIGVx
ICJkb3VibGVbXSI7CisKICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlw
ZSkpIHsKICAgICAgICAgbXkgJGNvbnYgPSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ29udmVydE51bGxTdHJpbmdUbyJ9OwogICAgICAgICBpZiAoZGVmaW5lZCAkY29udikgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmou
aWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmlu
ZGV4IDM2MjQ0NjViMTQwMDk2NDZlNjM2NzE4NTE0M2VlN2FhMDczZTA3N2MuLjQyODIzOWYwYjZh
YTA5YjcwNGQ2ZTM1NTIwZDhkMWI3NGJmZjBhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTE3Miw2ICsxNzIsMTIgQEAgbW9k
dWxlIHRlc3QgewogICAgICAgICBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWU9RmVhdHVyZU5h
bWVdIGxvbmcgZW5hYmxlZEF0UnVudGltZUF0dHIyOwogI2VuZGlmCiAKKworI2lmIGRlZmluZWQo
VEVTVElOR19WOCkKKyAgICAgICAgYXR0cmlidXRlIGZsb2F0W10gICAgICAgICAgICAgICAgICAg
ZmxvYXRBcnJheTsKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZVtdICAgICAgICAgICAgICAgICAg
ZG91YmxlQXJyYXk7CisjZW5kaWYKKwogICAgICAgICAvLyBPYmplY3RpdmVDIHJlc2VydmVkIHdv
cmRzLgogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAgICAgIGRlc2NyaXB0aW9uOwog
ICAgICAgICBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICAgIGlkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCBj
OGU1NWQzOWVkOGExOTIwY2QyYWMyN2E2ZTYwZTFmOThlYTk2Yjc2Li5iYTNlYzQ3ZGEzN2E2Mzlm
Y2MzMjAxNjQxZDZiMTdmZGQyZDY5MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtNDYsNiArNDYsNyBAQAog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lm
IEVOQUJMRShDb25kaXRpb24xKQogI2luY2x1ZGUgIlY4VGVzdE9iamVjdEEuaCIKQEAgLTY0Miw2
ICs2NDMsMzggQEAgc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0clNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2EKICAgICByZXR1cm47CiB9CiAKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZmxvYXRBcnJheUF0dHJHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
SU5DX1NUQVRTKCJET00uVGVzdE9iai5mbG9hdEFycmF5Ll9nZXQiKTsKKyAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OE51
bWJlckFycmF5KGltcC0+ZmxvYXRBcnJheSgpKTsKK30KKworc3RhdGljIHZvaWQgZmxvYXRBcnJh
eUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmouZmxvYXRBcnJheS5fc2V0Iik7CisgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBWZWN0b3I8ZmxvYXQ+IHYgPSB2
OE51bWJlckFycmF5VG9WZWN0b3I8ZmxvYXQ+KHZhbHVlKTsKKyAgICBpbXAtPnNldEZsb2F0QXJy
YXkodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRv
dWJsZUFycmF5QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmRvdWJs
ZUFycmF5Ll9nZXQiKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OE51bWJlckFycmF5KGltcC0+ZG91YmxlQXJyYXko
KSk7Cit9CisKK3N0YXRpYyB2b2lkIGRvdWJsZUFycmF5QXR0clNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5kb3VibGVBcnJh
eS5fc2V0Iik7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKKyAgICBWZWN0b3I8ZG91YmxlPiB2ID0gdjhOdW1iZXJBcnJheVRvVmVjdG9yPGRv
dWJsZT4odmFsdWUpOworICAgIGltcC0+c2V0RG91YmxlQXJyYXkodik7CisgICAgcmV0dXJuOwor
fQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2NyaXB0aW9uQXR0ckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmRlc2NyaXB0aW9uLl9nZXQiKTsKQEAgLTEz
NzUsNiArMTQwOCwxMCBAQCBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0T2JqQXR0
cnNbXSA9IHsKICAgICB7ImNhY2hlZEF0dHJpYnV0ZTEiLCBUZXN0T2JqSW50ZXJuYWw6OmNhY2hl
ZEF0dHJpYnV0ZTFBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1
dGUgJ2NhY2hlZEF0dHJpYnV0ZTInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRy
OiAnQ2FjaGVkQXR0cmlidXRlJykKICAgICB7ImNhY2hlZEF0dHJpYnV0ZTIiLCBUZXN0T2JqSW50
ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAg
ICAvLyBBdHRyaWJ1dGUgJ2Zsb2F0QXJyYXknIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAn
JykKKyAgICB7ImZsb2F0QXJyYXkiLCBUZXN0T2JqSW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyR2V0
dGVyLCBUZXN0T2JqSW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKKyAgICAvLyBBdHRyaWJ1dGUgJ2RvdWJsZUFycmF5JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0
QXR0cjogJycpCisgICAgeyJkb3VibGVBcnJheSIsIFRlc3RPYmpJbnRlcm5hbDo6ZG91YmxlQXJy
YXlBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0clNldHRlciwgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdkZXNjcmlwdGlvbicgKFR5cGU6ICdyZWFk
b25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQogICAgIHsiZGVzY3JpcHRpb24iLCBUZXN0T2Jq
SW50ZXJuYWw6OmRlc2NyaXB0aW9uQXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAg
Ly8gQXR0cmlidXRlICdpZCcgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCBmNzI4NzZkMzkwMmZiZGVlOGRmYzY0
NTE2M2U2MWEyNjhmMzM3NGJjLi5jM2RjN2E3YjM5YmJkMDljYTY5ZDU0NjA4NmUzYmZjNmQzZGYx
OWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMzQ5LDYgKzM0
OSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
djhTdHJpbmdPckZhbHNlKGNvbnN0IFN0cmluZyYgc3RyKTsKIAorICAgIHRlbXBsYXRlIDxjbGFz
cyBUPiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhOdW1iZXJBcnJheShjb25zdCBWZWN0b3I8VD4m
IHZhbHVlcykKKyAgICB7CisgICAgICAgIHNpemVfdCBzaXplID0gdmFsdWVzLnNpemUoKTsKKyAg
ICAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gcmVzdWx0ID0gdjg6OkFycmF5OjpOZXcoc2l6ZSk7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAg
cmVzdWx0LT5TZXQoaSwgdjg6Ok51bWJlcjo6TmV3KHZhbHVlc1tpXSkpOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKwogICAgIGRvdWJsZSB0b1dlYkNvcmVEYXRlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBvYmplY3QpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4RGF0ZU9y
TnVsbChkb3VibGUgdmFsdWUpOwpAQCAtMzc5LDYgKzM4OCwyMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBTdHJpbmcgaW50MzJUb1dlYkNvcmVTdHJpbmcoaW50IHZhbHVlKTsKIAorICAg
IHRlbXBsYXRlIDxjbGFzcyBUPiBWZWN0b3I8VD4gdjhOdW1iZXJBcnJheVRvVmVjdG9yKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHY4VmFsdWUodjg6OkxvY2FsPHY4OjpWYWx1ZT46Ok5ldyh2YWx1ZSkpOworICAgICAgICBp
ZiAoIXY4VmFsdWUtPklzQXJyYXkoKSkKKyAgICAgICAgICAgIHJldHVybiBWZWN0b3I8VD4oKTsK
KworICAgICAgICBWZWN0b3I8VD4gcmVzdWx0OworICAgICAgICB2ODo6TG9jYWw8djg6OkFycmF5
PiB2OEFycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46OkNhc3QodjhWYWx1ZSk7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdjhBcnJheS0+TGVuZ3RoKCk7ICsraSkgeworICAgICAg
ICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaW5kZXhlZFZhbHVlID0gdjhBcnJheS0+R2V0KHY4
OjpJbnRlZ2VyOjpOZXcoaSkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGF0aWNfY2Fz
dDxUPihpbmRleGVkVmFsdWUtPk51bWJlclZhbHVlKCkpKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gdjhW
YWx1ZVRvV2ViQ29yZURPTVN0cmluZ0xpc3Qodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKIAogICAg
IGNsYXNzIFY4UGFyYW1ldGVyQmFzZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114138</attachid>
            <date>2011-11-08 12:49:08 -0800</date>
            <delta_ts>2011-11-08 16:43:21 -0800</delta_ts>
            <desc>cache length</desc>
            <filename>bug-71763-20111108124907.patch</filename>
            <type>text/plain</type>
            <size>9805</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk1MDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNjFiMDRmZjY1NWJkZjll
NDJjNTg1YTk0MTdiMDgxMDYxNjc5N2YzLi5mYzY1NThhZTYxM2ZiZmNjNWFkY2FhNmM2YzNmMDQ1
NTY5NmM1ZjRmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMTEtMDggIFNjb3R0
IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBhcnJheXMgb2YgbnVtYmVycyB0byBJREwgYmluZGluZ3MgY29kZSBnZW5lcmF0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzYzCisKKyAgICAg
ICAgQWRkcyBzdXBwb3J0IGZvciBmbG9hdFtdIGFuZCBkb3VibGVbXSB0byBJREwuIFN1cHBvcnQg
Zm9yIG90aGVyIHR5cGVzCisgICAgICAgIGFwcGVhcnMgdG8gYmUgbW9yZSBjb21wbGljYXRlZCAo
b3IgYXQgbGVhc3QgbW9yZSBjb3B5LXBhc3RlKSBzbyBub3QKKyAgICAgICAgZG9pbmcgdGhhdCBm
b3Igbm93IGZvciBsYWNrIG9mIG5lZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHMgYWRkZWQgdG8gVGVzdE9iai5pZGwuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKElzUmVmUHRy
VHlwZSk6CisgICAgICAgIChHZXROYXRpdmVUeXBlKToKKyAgICAgICAgKEpTVmFsdWVUb05hdGl2
ZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6ZmxvYXRB
cnJheUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjpmbG9h
dEFycmF5QXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OmRv
dWJsZUFycmF5QXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6
OmRvdWJsZUFycmF5QXR0clNldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5n
Lmg6CisgICAgICAgIChXZWJDb3JlOjp2OE51bWJlckFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6
OnY4TnVtYmVyQXJyYXlUb1ZlY3Rvcik6CisKIDIwMTEtMTEtMDcgIFNjb3R0IEdyYWhhbSAgPHNj
b3R0bWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFsbG93IGdhbWVwYWQgQVBJIHRvIGJlIGVu
YWJsZWQgYXQgcnVudGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAzMjgxNmYwYzIxNjhjNmJiMzU1ZDZjZGY1ZTFiMTRh
OTE5MDY4NmRiLi42NzllODRhYWQ1Mzc1NjJhOTgwNmNmMDExZDkyMGI2OTA5MmFmNzQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQpAQCAtMzA2OSw2ICszMDY5LDggQEAgc3ViIElzUmVmUHRyVHlwZQogICAgIHJldHVybiAwIGlm
ICR0eXBlIGVxICJ1bnNpZ25lZCI7CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgInVuc2lnbmVk
IGxvbmciOwogICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJ1bnNpZ25lZCBzaG9ydCI7CisgICAg
cmV0dXJuIDAgaWYgJHR5cGUgZXEgImZsb2F0W10iOworICAgIHJldHVybiAwIGlmICR0eXBlIGVx
ICJkb3VibGVbXSI7CiAKICAgICByZXR1cm4gMTsKIH0KQEAgLTMxMjQsOCArMzEyNiwxMCBAQCBz
dWIgR2V0TmF0aXZlVHlwZQogCiAgICAgcmV0dXJuICJSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcj4iIGlmICR0eXBlIGVxICJNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIjsKIAorICAgICMgRklY
TUU6IFN1cHBvcnQgVFtdLCBUW10/LCBzZXF1ZW5jZTxUPiBnZW5lcmljYWxseQorICAgIHJldHVy
biAiVmVjdG9yPGZsb2F0PiIgaWYgJHR5cGUgZXEgImZsb2F0W10iOworICAgIHJldHVybiAiVmVj
dG9yPGRvdWJsZT4iIGlmICR0eXBlIGVxICJkb3VibGVbXSI7CiAgICAgcmV0dXJuICJSZWZQdHI8
RE9NU3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsKLSAgICAjIEZJWE1F
OiBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIFRbXSwgVFtdPywgc2VxdWVuY2U8VD4uCiAgICAgcmV0
dXJuICJSZWZQdHI8RE9NU3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01TdHJpbmdbXSI7CiAK
ICAgICAjIERlZmF1bHQsIGFzc3VtZSBuYXRpdmUgdHlwZSBpcyBhIHBvaW50ZXIgd2l0aCBzYW1l
IHR5cGUgbmFtZSBhcyBpZGwgdHlwZQpAQCAtMzE4Miw2ICszMTg2LDE0IEBAIHN1YiBKU1ZhbHVl
VG9OYXRpdmUKICAgICByZXR1cm4gInY4VmFsdWVUb1dlYkNvcmVET01TdHJpbmdMaXN0KCR2YWx1
ZSkiIGlmICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsKICAgICAjIEZJWE1FOiBBZGQgcHJvcGVy
IHN1cHBvcnQgZm9yIFRbXSwgVFtdPyBhbmQgc2VxdWVuY2U8VD4uCiAgICAgcmV0dXJuICJ2OFZh
bHVlVG9XZWJDb3JlRE9NU3RyaW5nTGlzdCgkdmFsdWUpIiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5n
W10iOworICAgIGlmICgkdHlwZSBlcSAiZmxvYXRbXSIpIHsKKyAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoInd0Zi9WZWN0b3IuaCIpOworICAgICAgICByZXR1cm4gInY4TnVtYmVyQXJyYXlUb1Zl
Y3RvcjxmbG9hdD4oJHZhbHVlKSI7CisgICAgfQorICAgIGlmICgkdHlwZSBlcSAiZG91YmxlW10i
KSB7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJ3dGYvVmVjdG9yLmgiKTsKKyAgICAgICAg
cmV0dXJuICJ2OE51bWJlckFycmF5VG9WZWN0b3I8ZG91YmxlPigkdmFsdWUpIjsKKyAgICB9CiAK
ICAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZyIgb3IgJHR5cGUgZXEgIkRPTVVzZXJEYXRhIikg
ewogICAgICAgICByZXR1cm4gJHZhbHVlOwpAQCAtMzMzMiw2ICszMzQ0LDggQEAgbXkgJW5vbl93
cmFwcGVyX3R5cGVzID0gKAogICAgICdib29sZWFuJyA9PiAxLAogICAgICdsb25nIGxvbmcnID0+
IDEsCiAgICAgJ3Vuc2lnbmVkIGxvbmcgbG9uZycgPT4gMSwKKyAgICAnZmxvYXRbXScgPT4gMSwK
KyAgICAnZG91YmxlW10nID0+IDEsCiAgICAgJ0RPTVN0cmluZycgPT4gMSwKICAgICAnQ29tcGFy
ZUhvdycgPT4gMSwKICAgICAnU2VyaWFsaXplZFNjcmlwdFZhbHVlJyA9PiAxLApAQCAtMzQyMiw2
ICszNDM2LDkgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgIHJldHVybiAidjg6Ok51bWJlcjo6
TmV3KCR2YWx1ZSkiIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5cGUpOwog
ICAgIHJldHVybiAiJHZhbHVlLnY4VmFsdWUoKSIgaWYgJG5hdGl2ZVR5cGUgZXEgIlNjcmlwdFZh
bHVlIjsKIAorICAgIHJldHVybiAidjhOdW1iZXJBcnJheSgkdmFsdWUpIiBpZiAkdHlwZSBlcSAi
ZmxvYXRbXSI7CisgICAgcmV0dXJuICJ2OE51bWJlckFycmF5KCR2YWx1ZSkiIGlmICR0eXBlIGVx
ICJkb3VibGVbXSI7CisKICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlw
ZSkpIHsKICAgICAgICAgbXkgJGNvbnYgPSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ29udmVydE51bGxTdHJpbmdUbyJ9OwogICAgICAgICBpZiAoZGVmaW5lZCAkY29udikgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmou
aWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmlu
ZGV4IDM2MjQ0NjViMTQwMDk2NDZlNjM2NzE4NTE0M2VlN2FhMDczZTA3N2MuLjQyODIzOWYwYjZh
YTA5YjcwNGQ2ZTM1NTIwZDhkMWI3NGJmZjBhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTE3Miw2ICsxNzIsMTIgQEAgbW9k
dWxlIHRlc3QgewogICAgICAgICBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWU9RmVhdHVyZU5h
bWVdIGxvbmcgZW5hYmxlZEF0UnVudGltZUF0dHIyOwogI2VuZGlmCiAKKworI2lmIGRlZmluZWQo
VEVTVElOR19WOCkKKyAgICAgICAgYXR0cmlidXRlIGZsb2F0W10gICAgICAgICAgICAgICAgICAg
ZmxvYXRBcnJheTsKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZVtdICAgICAgICAgICAgICAgICAg
ZG91YmxlQXJyYXk7CisjZW5kaWYKKwogICAgICAgICAvLyBPYmplY3RpdmVDIHJlc2VydmVkIHdv
cmRzLgogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAgICAgIGRlc2NyaXB0aW9uOwog
ICAgICAgICBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgICAgIGlkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCBj
OGU1NWQzOWVkOGExOTIwY2QyYWMyN2E2ZTYwZTFmOThlYTk2Yjc2Li5iYTNlYzQ3ZGEzN2E2Mzlm
Y2MzMjAxNjQxZDZiMTdmZGQyZDY5MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtNDYsNiArNDYsNyBAQAog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lm
IEVOQUJMRShDb25kaXRpb24xKQogI2luY2x1ZGUgIlY4VGVzdE9iamVjdEEuaCIKQEAgLTY0Miw2
ICs2NDMsMzggQEAgc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0clNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2EKICAgICByZXR1cm47CiB9CiAKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZmxvYXRBcnJheUF0dHJHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
SU5DX1NUQVRTKCJET00uVGVzdE9iai5mbG9hdEFycmF5Ll9nZXQiKTsKKyAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OE51
bWJlckFycmF5KGltcC0+ZmxvYXRBcnJheSgpKTsKK30KKworc3RhdGljIHZvaWQgZmxvYXRBcnJh
eUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmouZmxvYXRBcnJheS5fc2V0Iik7CisgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBWZWN0b3I8ZmxvYXQ+IHYgPSB2
OE51bWJlckFycmF5VG9WZWN0b3I8ZmxvYXQ+KHZhbHVlKTsKKyAgICBpbXAtPnNldEZsb2F0QXJy
YXkodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRv
dWJsZUFycmF5QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmRvdWJs
ZUFycmF5Ll9nZXQiKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OE51bWJlckFycmF5KGltcC0+ZG91YmxlQXJyYXko
KSk7Cit9CisKK3N0YXRpYyB2b2lkIGRvdWJsZUFycmF5QXR0clNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5kb3VibGVBcnJh
eS5fc2V0Iik7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKKyAgICBWZWN0b3I8ZG91YmxlPiB2ID0gdjhOdW1iZXJBcnJheVRvVmVjdG9yPGRv
dWJsZT4odmFsdWUpOworICAgIGltcC0+c2V0RG91YmxlQXJyYXkodik7CisgICAgcmV0dXJuOwor
fQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2NyaXB0aW9uQXR0ckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmRlc2NyaXB0aW9uLl9nZXQiKTsKQEAgLTEz
NzUsNiArMTQwOCwxMCBAQCBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0T2JqQXR0
cnNbXSA9IHsKICAgICB7ImNhY2hlZEF0dHJpYnV0ZTEiLCBUZXN0T2JqSW50ZXJuYWw6OmNhY2hl
ZEF0dHJpYnV0ZTFBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1
dGUgJ2NhY2hlZEF0dHJpYnV0ZTInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRy
OiAnQ2FjaGVkQXR0cmlidXRlJykKICAgICB7ImNhY2hlZEF0dHJpYnV0ZTIiLCBUZXN0T2JqSW50
ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAg
ICAvLyBBdHRyaWJ1dGUgJ2Zsb2F0QXJyYXknIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAn
JykKKyAgICB7ImZsb2F0QXJyYXkiLCBUZXN0T2JqSW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyR2V0
dGVyLCBUZXN0T2JqSW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKKyAgICAvLyBBdHRyaWJ1dGUgJ2RvdWJsZUFycmF5JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0
QXR0cjogJycpCisgICAgeyJkb3VibGVBcnJheSIsIFRlc3RPYmpJbnRlcm5hbDo6ZG91YmxlQXJy
YXlBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0clNldHRlciwgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdkZXNjcmlwdGlvbicgKFR5cGU6ICdyZWFk
b25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQogICAgIHsiZGVzY3JpcHRpb24iLCBUZXN0T2Jq
SW50ZXJuYWw6OmRlc2NyaXB0aW9uQXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAg
Ly8gQXR0cmlidXRlICdpZCcgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCBmNzI4NzZkMzkwMmZiZGVlOGRmYzY0
NTE2M2U2MWEyNjhmMzM3NGJjLi42YzFhYzE5ZjVhMjBiYjFiODg5M2Y0ZGY3YTYzMmZmNDIxNmRh
ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMzQ5LDYgKzM0
OSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
djhTdHJpbmdPckZhbHNlKGNvbnN0IFN0cmluZyYgc3RyKTsKIAorICAgIHRlbXBsYXRlIDxjbGFz
cyBUPiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhOdW1iZXJBcnJheShjb25zdCBWZWN0b3I8VD4m
IHZhbHVlcykKKyAgICB7CisgICAgICAgIHNpemVfdCBzaXplID0gdmFsdWVzLnNpemUoKTsKKyAg
ICAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gcmVzdWx0ID0gdjg6OkFycmF5OjpOZXcoc2l6ZSk7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAg
cmVzdWx0LT5TZXQoaSwgdjg6Ok51bWJlcjo6TmV3KHZhbHVlc1tpXSkpOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKwogICAgIGRvdWJsZSB0b1dlYkNvcmVEYXRlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBvYmplY3QpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4RGF0ZU9y
TnVsbChkb3VibGUgdmFsdWUpOwpAQCAtMzc5LDYgKzM4OCwyMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBTdHJpbmcgaW50MzJUb1dlYkNvcmVTdHJpbmcoaW50IHZhbHVlKTsKIAorICAg
IHRlbXBsYXRlIDxjbGFzcyBUPiBWZWN0b3I8VD4gdjhOdW1iZXJBcnJheVRvVmVjdG9yKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHY4VmFsdWUodjg6OkxvY2FsPHY4OjpWYWx1ZT46Ok5ldyh2YWx1ZSkpOworICAgICAgICBp
ZiAoIXY4VmFsdWUtPklzQXJyYXkoKSkKKyAgICAgICAgICAgIHJldHVybiBWZWN0b3I8VD4oKTsK
KworICAgICAgICBWZWN0b3I8VD4gcmVzdWx0OworICAgICAgICB2ODo6TG9jYWw8djg6OkFycmF5
PiB2OEFycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46OkNhc3QodjhWYWx1ZSk7CisgICAgICAg
IHNpemVfdCBsZW5ndGggPSB2OEFycmF5LT5MZW5ndGgoKTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gaW5kZXhlZFZhbHVlID0gdjhBcnJheS0+R2V0KHY4OjpJbnRlZ2VyOjpOZXcoaSkpOworICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGF0aWNfY2FzdDxUPihpbmRleGVkVmFsdWUtPk51bWJl
clZhbHVlKCkpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwog
ICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gdjhWYWx1ZVRvV2ViQ29yZURPTVN0cmluZ0xp
c3Qodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKIAogICAgIGNsYXNzIFY4UGFyYW1ldGVyQmFzZSB7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>