<?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>85681</bug_id>
          
          <creation_ts>2012-05-04 16:05:09 -0700</creation_ts>
          <short_desc>Simplify AudioNode ref-counting by removing RefTypeDisabled</short_desc>
          <delta_ts>2012-05-21 15:22:37 -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>Web Audio</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>77224</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Raymond Toy">rtoy</reporter>
          <assigned_to name="Raymond Toy">rtoy</assigned_to>
          <cc>crogers</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>616765</commentid>
    <comment_count>0</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-05-04 16:05:09 -0700</bug_when>
    <thetext>It should be possible to remove the RefTypeDisabled ref type and also the corresponding enable() and disable() methods that set the ref type to RefTypeDisabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616769</commentid>
    <comment_count>1</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-05-04 16:05:59 -0700</bug_when>
    <thetext>Implement this before fixing 77224.  This change will simplify 77224.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623377</commentid>
    <comment_count>2</comment_count>
      <attachid>141797</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-05-14 15:24:05 -0700</bug_when>
    <thetext>Created attachment 141797
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623386</commentid>
    <comment_count>3</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-05-14 15:32:45 -0700</bug_when>
    <thetext>Cannot remove the enable() and disable() methods.  They&apos;re still needed to do the correct things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623388</commentid>
    <comment_count>4</comment_count>
      <attachid>141797</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-05-14 15:33:21 -0700</bug_when>
    <thetext>Comment on attachment 141797
WIP

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

&gt; Source/WebCore/Modules/webaudio/AudioNode.cpp:270
&gt; +    fprintf(stderr, &quot;%p: %d: AudioNode::enableOutputs %d %d\n&quot;, this, nodeType(), m_normalRefCount, m_connectionRefCount);

we&apos;re using print (instead of fprintf) let&apos;s stay consistent -- in another patch you can change everything over to fprintf, but let&apos;s not mix that up in this one

&gt; Source/WebCore/Modules/webaudio/AudioNode.cpp:302
&gt; +    if (m_isDisabled &amp;&amp; m_connectionRefCount &gt; 0 &amp;&amp; refType == RefTypeConnection)

Can we just move the if() logic from line 302 into line 272 and call enable... directly?

&gt; Source/WebCore/Modules/webaudio/AudioNode.cpp:340
&gt; +void AudioNode::disableOutputsIfNotDisabled()

I&apos;d move the code for this method up to just after the &quot;enable&quot; version of this method

&gt; Source/WebCore/Modules/webaudio/AudioNode.h:158
&gt; +    void disableOutputsIfNotDisabled();

nit: I&apos;m too crazy about these names - how about:
enableOutputsIfNecessary
disableOutputsIfNecessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624697</commentid>
    <comment_count>5</comment_count>
      <attachid>142090</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-05-15 16:05:38 -0700</bug_when>
    <thetext>Created attachment 142090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624701</commentid>
    <comment_count>6</comment_count>
      <attachid>141797</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-05-15 16:09:48 -0700</bug_when>
    <thetext>Comment on attachment 141797
WIP

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

Updated according to review.  Chris, please review the changes in AudioNodeInput::disable() and AudioNode::disableOutputsIfNecessary().  AudioNodeInput::disable() is better, but AudioNode::disableOutputsIfNecessary() is not as nice as I would want, but I&apos;m not sure how else to do it.

&gt;&gt; Source/WebCore/Modules/webaudio/AudioNode.cpp:270
&gt;&gt; +    fprintf(stderr, &quot;%p: %d: AudioNode::enableOutputs %d %d\n&quot;, this, nodeType(), m_normalRefCount, m_connectionRefCount);
&gt; 
&gt; we&apos;re using print (instead of fprintf) let&apos;s stay consistent -- in another patch you can change everything over to fprintf, but let&apos;s not mix that up in this one

Removed.  I forgot to delete this debugging print.

&gt;&gt; Source/WebCore/Modules/webaudio/AudioNode.cpp:302
&gt;&gt; +    if (m_isDisabled &amp;&amp; m_connectionRefCount &gt; 0 &amp;&amp; refType == RefTypeConnection)
&gt; 
&gt; Can we just move the if() logic from line 302 into line 272 and call enable... directly?

Done.  But need to add refType as a parameter to work with finishDeref.

&gt;&gt; Source/WebCore/Modules/webaudio/AudioNode.cpp:340
&gt;&gt; +void AudioNode::disableOutputsIfNotDisabled()
&gt; 
&gt; I&apos;d move the code for this method up to just after the &quot;enable&quot; version of this method

Done.

&gt;&gt; Source/WebCore/Modules/webaudio/AudioNode.h:158
&gt;&gt; +    void disableOutputsIfNotDisabled();
&gt; 
&gt; nit: I&apos;m too crazy about these names - how about:
&gt; enableOutputsIfNecessary
&gt; disableOutputsIfNecessary

New names applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624852</commentid>
    <comment_count>7</comment_count>
      <attachid>142090</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-05-15 19:00:21 -0700</bug_when>
    <thetext>Comment on attachment 142090
Patch

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

&gt; Source/WebCore/Modules/webaudio/AudioNode.cpp:267
&gt; +void AudioNode::enableOutputsIfNecessary(RefType refType)

Please remove refType argument -- see comment below in ref() method.

&gt; Source/WebCore/Modules/webaudio/AudioNode.cpp:286
&gt; +        if (!m_isDisabled) {

It&apos;s odd to have a nested if () here.  Please roll this test into the first if ()

&gt; Source/WebCore/Modules/webaudio/AudioNode.cpp:327
&gt; +    enableOutputsIfNecessary(refType);

You can remove refType argument and simply wrap the enableOutputsIfNecessary() call in:
 if (refType == RefTypeConnection)

&gt; Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:110
&gt; +    // Disable outputs, but only if there is one connection left (checked in

Please remove all of these comment about &quot;one connection left&quot;, etc.
All of this is logic internal (implementation detail) to disableOutputsIfNecessary()

On the other hand, the difficult part of understanding this code is that we&apos;re inside of the disable() method right here, and yet we&apos;re 
calling something called disableOutputsIfNecessary().
The essential point to be made in the comment is that we &quot;propagate&quot; the disabling from this input to any outputs of this AudioNode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624905</commentid>
    <comment_count>8</comment_count>
      <attachid>142135</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-05-15 20:16:36 -0700</bug_when>
    <thetext>Created attachment 142135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624911</commentid>
    <comment_count>9</comment_count>
      <attachid>142090</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-05-15 20:19:18 -0700</bug_when>
    <thetext>Comment on attachment 142090
Patch

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

&gt;&gt; Source/WebCore/Modules/webaudio/AudioNode.cpp:267
&gt;&gt; +void AudioNode::enableOutputsIfNecessary(RefType refType)
&gt; 
&gt; Please remove refType argument -- see comment below in ref() method.

Done.

&gt;&gt; Source/WebCore/Modules/webaudio/AudioNode.cpp:286
&gt;&gt; +        if (!m_isDisabled) {
&gt; 
&gt; It&apos;s odd to have a nested if () here.  Please roll this test into the first if ()

Combined into one.

&gt;&gt; Source/WebCore/Modules/webaudio/AudioNode.cpp:327
&gt;&gt; +    enableOutputsIfNecessary(refType);
&gt; 
&gt; You can remove refType argument and simply wrap the enableOutputsIfNecessary() call in:
&gt;  if (refType == RefTypeConnection)

Done.

&gt;&gt; Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:110
&gt;&gt; +    // Disable outputs, but only if there is one connection left (checked in
&gt; 
&gt; Please remove all of these comment about &quot;one connection left&quot;, etc.
&gt; All of this is logic internal (implementation detail) to disableOutputsIfNecessary()
&gt; 
&gt; On the other hand, the difficult part of understanding this code is that we&apos;re inside of the disable() method right here, and yet we&apos;re 
&gt; calling something called disableOutputsIfNecessary().
&gt; The essential point to be made in the comment is that we &quot;propagate&quot; the disabling from this input to any outputs of this AudioNode

Comment removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625530</commentid>
    <comment_count>10</comment_count>
      <attachid>142090</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-05-16 09:19:08 -0700</bug_when>
    <thetext>Comment on attachment 142090
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:110
&gt;&gt;&gt; +    // Disable outputs, but only if there is one connection left (checked in
&gt;&gt; 
&gt;&gt; Please remove all of these comment about &quot;one connection left&quot;, etc.
&gt;&gt; All of this is logic internal (implementation detail) to disableOutputsIfNecessary()
&gt;&gt; 
&gt;&gt; On the other hand, the difficult part of understanding this code is that we&apos;re inside of the disable() method right here, and yet we&apos;re 
&gt;&gt; calling something called disableOutputsIfNecessary().
&gt;&gt; The essential point to be made in the comment is that we &quot;propagate&quot; the disabling from this input to any outputs of this AudioNode
&gt; 
&gt; Comment removed.

Maybe the functions should be renamed propagateOutputEnables and propagateOutputDisables?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625795</commentid>
    <comment_count>11</comment_count>
      <attachid>142135</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-05-16 13:28:35 -0700</bug_when>
    <thetext>Comment on attachment 142135
Patch

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

Looks good with a couple of comment nits.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Remove RefTypDisabled and disable() and enable() methods

Please update comment since disable and enable are not removed in this patch, and RefTypDisabled is a typo.  I&apos;d recommend changing the title of the WebKit bug itself to something like:

&quot;Simplify AudioNode ref-counting by removing RefTypeDisabled&quot;

&gt; Source/WebCore/Modules/webaudio/AudioNode.cpp:281
&gt; +    // Disable outputs if they have not been disabled yet. We do this if the number of connections

&quot;if they have not been disabled yet&quot; -&gt; &quot;if appropriate&quot;

&gt; Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:110
&gt; +    node()-&gt;disableOutputsIfNecessary();

Please add comment:
// Propagate disabled state to outputs.

&gt; Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:128
&gt; +    node()-&gt;enableOutputsIfNecessary();

Please add comment:
// Propagate enabled state to outputs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625813</commentid>
    <comment_count>12</comment_count>
      <attachid>142336</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-05-16 13:38:24 -0700</bug_when>
    <thetext>Created attachment 142336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625830</commentid>
    <comment_count>13</comment_count>
      <attachid>142336</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-05-16 13:54:08 -0700</bug_when>
    <thetext>Comment on attachment 142336
Patch

Thanks Ray</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625927</commentid>
    <comment_count>14</comment_count>
      <attachid>142336</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-16 15:26:24 -0700</bug_when>
    <thetext>Comment on attachment 142336
Patch

Clearing flags on attachment: 142336

Committed r117354: &lt;http://trac.webkit.org/changeset/117354&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625928</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-16 15:26:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629586</commentid>
    <comment_count>16</comment_count>
      <attachid>141797</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-21 15:22:37 -0700</bug_when>
    <thetext>Comment on attachment 141797
WIP

Cleared review? from obsolete attachment 141797 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141797</attachid>
            <date>2012-05-14 15:24:05 -0700</date>
            <delta_ts>2012-05-21 15:22:36 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-85681-20120514152404.patch</filename>
            <type>text/plain</type>
            <size>11900</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY4YzM1YmMzYjNlZjc3
MWNjZDQ4MzA1NjVhYjliMzAxMGE4YjdmZC4uNzgwN2M5YWI4ZDVhMTkwYWI4MDRjZGIxNzBlZTFm
NjhjZTlhY2Q4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA1LTE0ICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVmVHlwRGlzYWJs
ZWQgYW5kIGRpc2FibGUoKSBhbmQgZW5hYmxlKCkgbWV0aG9kcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU2ODEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeGlzdGluZyB0ZXN0cyBzaG91bGQgY292ZXIg
dGhlc2UgY2hhbmdlcy4KKworICAgICAgICBSZW1vdmUgUmVmVHlwZURpc2FibGVkIGFuZCBtX2Rp
c2FibGVkUmVmQ291bnQuICBkaXNhYmxlKCkgYW5kCisgICAgICAgIGVuYWJsZSgpIG1ldGhvZHMg
cmVtYWluLgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OkF1ZGlvTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb05vZGU6On5BdWRpb05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9O
b2RlOjplbmFibGVPdXRwdXRzSWZOb3RFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpyZWYpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9O
b2RlOjpkaXNhYmxlT3V0cHV0c0lmTm90RGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Ob2RlOjpmaW5pc2hEZXJlZik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05v
ZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29ubmVjdGlvblJlZkNvdW50KToK
KyAgICAgICAgKEF1ZGlvTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05v
ZGVJbnB1dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6ZGlzY29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6ZGlzYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6ZW5hYmxlKToKKwogMjAxMi0wNS0xMSAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjExNjc1Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Ob2RlLmNwcAppbmRleCA4YWY5ZmM3MzQ0MTA5MzhmMmQzMWMxNjg1MmRlOTlkYzRm
YTQ2ZjM3Li5hN2I5MjEyNzJiZjgxOTg5ZmYwNmRkN2FlNDE0NTQ5N2QyZDg5ZWI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCkBAIC00Nyw3ICs0
Nyw2IEBAIEF1ZGlvTm9kZTo6QXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSkKICAgICAsIG1fbGFzdE5vblNpbGVudFRpbWUoLTEpCiAgICAgLCBtX25vcm1h
bFJlZkNvdW50KDEpIC8vIHN0YXJ0IG91dCB3aXRoIG5vcm1hbCByZWZDb3VudCA9PSAxIChsaWtl
IFdURjo6UmVmQ291bnRlZCBjbGFzcykKICAgICAsIG1fY29ubmVjdGlvblJlZkNvdW50KDApCi0g
ICAgLCBtX2Rpc2FibGVkUmVmQ291bnQoMCkKICAgICAsIG1faXNNYXJrZWRGb3JEZWxldGlvbihm
YWxzZSkKICAgICAsIG1faXNEaXNhYmxlZChmYWxzZSkKIHsKQEAgLTYzLDcgKzYyLDcgQEAgQXVk
aW9Ob2RlOjp+QXVkaW9Ob2RlKCkKIHsKICNpZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUwog
ICAgIC0tc19ub2RlQ291bnRbbm9kZVR5cGUoKV07Ci0gICAgcHJpbnRmKCIlcDogJWQ6IEF1ZGlv
Tm9kZTo6fkF1ZGlvTm9kZSgpICVkICVkICVkXG4iLCB0aGlzLCBub2RlVHlwZSgpLCBtX25vcm1h
bFJlZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZDb3VudCwgbV9kaXNhYmxlZFJlZkNvdW50KTsKKyAg
ICBwcmludGYoIiVwOiAlZDogQXVkaW9Ob2RlOjp+QXVkaW9Ob2RlKCkgJWQgJWRcbiIsIHRoaXMs
IG5vZGVUeXBlKCksIG1fbm9ybWFsUmVmQ291bnQsIG1fY29ubmVjdGlvblJlZkNvdW50KTsKICNl
bmRpZgogfQogCkBAIC0yNjUsNiArMjY0LDIxIEBAIHZvaWQgQXVkaW9Ob2RlOjp1bnNpbGVuY2VP
dXRwdXRzKCkKICAgICAgICAgb3V0cHV0KGkpLT5idXMoKS0+Y2xlYXJTaWxlbnRGbGFnKCk7CiB9
CiAKK3ZvaWQgQXVkaW9Ob2RlOjplbmFibGVPdXRwdXRzSWZOb3RFbmFibGVkKCkKK3sKKyNpZiBE
RUJVR19BVURJT05PREVfUkVGRVJFTkNFUworICAgIGZwcmludGYoc3RkZXJyLCAiJXA6ICVkOiBB
dWRpb05vZGU6OmVuYWJsZU91dHB1dHMgJWQgJWRcbiIsIHRoaXMsIG5vZGVUeXBlKCksIG1fbm9y
bWFsUmVmQ291bnQsIG1fY29ubmVjdGlvblJlZkNvdW50KTsKKyNlbmRpZgorICAgIGlmIChtX2lz
RGlzYWJsZWQpIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQXVk
aW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworCisgICAgICAgIG1faXNE
aXNhYmxlZCA9IGZhbHNlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9vdXRw
dXRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgb3V0cHV0KGkpLT5lbmFibGUoKTsKKyAgICB9
Cit9CisKIHZvaWQgQXVkaW9Ob2RlOjpyZWYoUmVmVHlwZSByZWZUeXBlKQogewogICAgIHN3aXRj
aCAocmVmVHlwZSkgewpAQCAtMjc0LDI4ICsyODgsMTkgQEAgdm9pZCBBdWRpb05vZGU6OnJlZihS
ZWZUeXBlIHJlZlR5cGUpCiAgICAgY2FzZSBSZWZUeXBlQ29ubmVjdGlvbjoKICAgICAgICAgYXRv
bWljSW5jcmVtZW50KCZtX2Nvbm5lY3Rpb25SZWZDb3VudCk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUmVmVHlwZURpc2FibGVkOgotICAgICAgICBhdG9taWNJbmNyZW1lbnQoJm1fZGlzYWJs
ZWRSZWZDb3VudCk7Ci0gICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VT
Ci0gICAgcHJpbnRmKCIlcDogJWQ6IEF1ZGlvTm9kZTo6cmVmKCVkKSAlZCAlZCAlZFxuIiwgdGhp
cywgbm9kZVR5cGUoKSwgcmVmVHlwZSwgbV9ub3JtYWxSZWZDb3VudCwgbV9jb25uZWN0aW9uUmVm
Q291bnQsIG1fZGlzYWJsZWRSZWZDb3VudCk7CisgICAgcHJpbnRmKCIlcDogJWQ6IEF1ZGlvTm9k
ZTo6cmVmKCVkKSAlZCAlZFxuIiwgdGhpcywgbm9kZVR5cGUoKSwgcmVmVHlwZSwgbV9ub3JtYWxS
ZWZDb3VudCwgbV9jb25uZWN0aW9uUmVmQ291bnQpOwogI2VuZGlmCiAKICAgICAvLyBTZWUgdGhl
IGRpc2FibGluZyBjb2RlIGluIGZpbmlzaERlcmVmKCkgYmVsb3cuIFRoaXMgaGFuZGxlcyB0aGUg
Y2FzZSB3aGVyZSBhIG5vZGUKICAgICAvLyBpcyBiZWluZyByZS1jb25uZWN0ZWQgYWZ0ZXIgYmVp
bmcgdXNlZCBhdCBsZWFzdCBvbmNlIGFuZCBkaXNjb25uZWN0ZWQuCiAgICAgLy8gSW4gdGhpcyBj
YXNlLCB3ZSBuZWVkIHRvIHJlLWVuYWJsZS4KLSAgICBpZiAobV9pc0Rpc2FibGVkICYmIG1fY29u
bmVjdGlvblJlZkNvdW50ID4gMCAmJiByZWZUeXBlID09IFJlZlR5cGVDb25uZWN0aW9uKSB7Ci0g
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIEF1ZGlvQ29udGV4dDo6QXV0
b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKLQotICAgICAgICBtX2lzRGlzYWJsZWQgPSBmYWxz
ZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fb3V0cHV0cy5zaXplKCk7ICsr
aSkKLSAgICAgICAgICAgIG91dHB1dChpKS0+ZW5hYmxlKCk7Ci0gICAgfQorICAgIGlmIChtX2lz
RGlzYWJsZWQgJiYgbV9jb25uZWN0aW9uUmVmQ291bnQgPiAwICYmIHJlZlR5cGUgPT0gUmVmVHlw
ZUNvbm5lY3Rpb24pCisgICAgICAgIGVuYWJsZU91dHB1dHNJZk5vdEVuYWJsZWQoKTsKIH0KIAog
dm9pZCBBdWRpb05vZGU6OmRlcmVmKFJlZlR5cGUgcmVmVHlwZSkKQEAgLTMzMiw2ICszMzcsMjgg
QEAgdm9pZCBBdWRpb05vZGU6OmRlcmVmKFJlZlR5cGUgcmVmVHlwZSkKICAgICAgICAgY29udGV4
dCgpLT5kZWxldGVNYXJrZWROb2RlcygpOwogfQogCit2b2lkIEF1ZGlvTm9kZTo6ZGlzYWJsZU91
dHB1dHNJZk5vdERpc2FibGVkKCkKK3sKKyAgICBpZiAoIW1faXNEaXNhYmxlZCkgeworICAgICAg
ICAvLyBTdGlsbCBtYXkgaGF2ZSBKYXZhU2NyaXB0IHJlZmVyZW5jZXMsIGJ1dCBubyBtb3JlICJh
Y3RpdmUiIGNvbm5lY3Rpb24gcmVmZXJlbmNlcywgc28gcHV0IGFsbCBvZiBvdXIgb3V0cHV0cyBp
biBhICJkb3JtYW50IiBkaXNhYmxlZCBzdGF0ZS4KKyAgICAgICAgLy8gR2FyYmFnZSBjb2xsZWN0
aW9uIG1heSB0YWtlIGEgdmVyeSBsb25nIHRpbWUgYWZ0ZXIgdGhpcyB0aW1lLCBzbyB0aGUgImRv
cm1hbnQiIGRpc2FibGVkIG5vZGVzIHNob3VsZCBub3QgYm9nIGRvd24gdGhlIHJlbmRlcmluZy4u
LgorCisgICAgICAgIC8vIEFzIGZhciBhcyBKYXZhU2NyaXB0IGlzIGNvbmNlcm5lZCwgb3VyIG91
dHB1dHMgbXVzdCBzdGlsbCBhcHBlYXIgdG8gYmUgY29ubmVjdGVkLgorICAgICAgICAvLyBCdXQg
aW50ZXJuYWxseSBvdXIgb3V0cHV0cyBzaG91bGQgYmUgZGlzYWJsZWQgZnJvbSB0aGUgaW5wdXRz
IHRoZXkncmUgY29ubmVjdGVkIHRvLgorICAgICAgICAvLyBkaXNhYmxlKCkgY2FuIHJlY3Vyc2l2
ZWx5IGRlcmVmIGNvbm5lY3Rpb25zIChhbmQgY2FsbCBkaXNhYmxlKCkpIGRvd24gYSB3aG9sZSBj
aGFpbiBvZiBjb25uZWN0ZWQgbm9kZXMuCisKKyAgICAgICAgLy8gRklYTUU6IHdlIHNwZWNpYWwg
Y2FzZSB0aGUgY29udm9sdmVyIGFuZCBkZWxheSBzaW5jZSB0aGV5IGhhdmUgYSBzaWduaWZpY2Fu
dCB0YWlsLXRpbWUgYW5kIHNob3VsZG4ndCBiZSBkaXNjb25uZWN0ZWQgc2ltcGx5CisgICAgICAg
IC8vIGJlY2F1c2UgdGhleSBubyBsb25nZXIgaGF2ZSBhbnkgaW5wdXQgY29ubmVjdGlvbnMuIFRo
aXMgbmVlZHMgdG8gYmUgaGFuZGxlZCBtb3JlIGdlbmVyYWxseSB3aGVyZSBBdWRpb05vZGVzIGhh
dmUKKyAgICAgICAgLy8gYSB0YWlsVGltZSBhdHRyaWJ1dGUuIFRoZW4gdGhlIEF1ZGlvTm9kZSBv
bmx5IG5lZWRzIHRvIHJlbWFpbiAiYWN0aXZlIiBmb3IgdGFpbFRpbWUgc2Vjb25kcyBhZnRlciB0
aGVyZSBhcmUgbm8KKyAgICAgICAgLy8gbG9uZ2VyIGFueSBhY3RpdmUgY29ubmVjdGlvbnMuCisg
ICAgICAgIGlmIChub2RlVHlwZSgpICE9IE5vZGVUeXBlQ29udm9sdmVyICYmIG5vZGVUeXBlKCkg
IT0gTm9kZVR5cGVEZWxheSkgeworICAgICAgICAgICAgbV9pc0Rpc2FibGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX291dHB1dHMuc2l6ZSgpOyArK2kp
CisgICAgICAgICAgICAgICAgb3V0cHV0KGkpLT5kaXNhYmxlKCk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKIHZvaWQgQXVkaW9Ob2RlOjpmaW5pc2hEZXJlZihSZWZUeXBlIHJlZlR5cGUpCiB7CiAg
ICAgQVNTRVJUKGNvbnRleHQoKS0+aXNHcmFwaE93bmVyKCkpOwpAQCAtMzQ1LDIwICszNzIsMTYg
QEAgdm9pZCBBdWRpb05vZGU6OmZpbmlzaERlcmVmKFJlZlR5cGUgcmVmVHlwZSkKICAgICAgICAg
QVNTRVJUKG1fY29ubmVjdGlvblJlZkNvdW50ID4gMCk7CiAgICAgICAgIGF0b21pY0RlY3JlbWVu
dCgmbV9jb25uZWN0aW9uUmVmQ291bnQpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlZlR5
cGVEaXNhYmxlZDoKLSAgICAgICAgQVNTRVJUKG1fZGlzYWJsZWRSZWZDb3VudCA+IDApOwotICAg
ICAgICBhdG9taWNEZWNyZW1lbnQoJm1fZGlzYWJsZWRSZWZDb3VudCk7Ci0gICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAg
ICAKICNpZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUwotICAgIHByaW50ZigiJXA6ICVkOiBB
dWRpb05vZGU6OmRlcmVmKCVkKSAlZCAlZCAlZFxuIiwgdGhpcywgbm9kZVR5cGUoKSwgcmVmVHlw
ZSwgbV9ub3JtYWxSZWZDb3VudCwgbV9jb25uZWN0aW9uUmVmQ291bnQsIG1fZGlzYWJsZWRSZWZD
b3VudCk7CisgICAgcHJpbnRmKCIlcDogJWQ6IEF1ZGlvTm9kZTo6ZGVyZWYoJWQpICVkICVkXG4i
LCB0aGlzLCBub2RlVHlwZSgpLCByZWZUeXBlLCBtX25vcm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rp
b25SZWZDb3VudCk7CiAjZW5kaWYKIAogICAgIGlmICghbV9jb25uZWN0aW9uUmVmQ291bnQpIHsK
LSAgICAgICAgaWYgKCFtX25vcm1hbFJlZkNvdW50ICYmICFtX2Rpc2FibGVkUmVmQ291bnQpIHsK
KyAgICAgICAgaWYgKCFtX25vcm1hbFJlZkNvdW50KSB7CiAgICAgICAgICAgICBpZiAoIW1faXNN
YXJrZWRGb3JEZWxldGlvbikgewogICAgICAgICAgICAgICAgIC8vIEFsbCByZWZlcmVuY2VzIGFy
ZSBnb25lIC0gd2UgbmVlZCB0byBnbyBhd2F5LgogICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX291dHB1dHMuc2l6ZSgpOyArK2kpCkBAIC0zNjgsMjYgKzM5MSw4IEBA
IHZvaWQgQXVkaW9Ob2RlOjpmaW5pc2hEZXJlZihSZWZUeXBlIHJlZlR5cGUpCiAgICAgICAgICAg
ICAgICAgY29udGV4dCgpLT5tYXJrRm9yRGVsZXRpb24odGhpcyk7CiAgICAgICAgICAgICAgICAg
bV9pc01hcmtlZEZvckRlbGV0aW9uID0gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIGlmIChyZWZUeXBlID09IFJlZlR5cGVDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBpZiAo
IW1faXNEaXNhYmxlZCkgewotICAgICAgICAgICAgICAgIC8vIFN0aWxsIG1heSBoYXZlIEphdmFT
Y3JpcHQgcmVmZXJlbmNlcywgYnV0IG5vIG1vcmUgImFjdGl2ZSIgY29ubmVjdGlvbiByZWZlcmVu
Y2VzLCBzbyBwdXQgYWxsIG9mIG91ciBvdXRwdXRzIGluIGEgImRvcm1hbnQiIGRpc2FibGVkIHN0
YXRlLgotICAgICAgICAgICAgICAgIC8vIEdhcmJhZ2UgY29sbGVjdGlvbiBtYXkgdGFrZSBhIHZl
cnkgbG9uZyB0aW1lIGFmdGVyIHRoaXMgdGltZSwgc28gdGhlICJkb3JtYW50IiBkaXNhYmxlZCBu
b2RlcyBzaG91bGQgbm90IGJvZyBkb3duIHRoZSByZW5kZXJpbmcuLi4KLQotICAgICAgICAgICAg
ICAgIC8vIEFzIGZhciBhcyBKYXZhU2NyaXB0IGlzIGNvbmNlcm5lZCwgb3VyIG91dHB1dHMgbXVz
dCBzdGlsbCBhcHBlYXIgdG8gYmUgY29ubmVjdGVkLgotICAgICAgICAgICAgICAgIC8vIEJ1dCBp
bnRlcm5hbGx5IG91ciBvdXRwdXRzIHNob3VsZCBiZSBkaXNhYmxlZCBmcm9tIHRoZSBpbnB1dHMg
dGhleSdyZSBjb25uZWN0ZWQgdG8uCi0gICAgICAgICAgICAgICAgLy8gZGlzYWJsZSgpIGNhbiBy
ZWN1cnNpdmVseSBkZXJlZiBjb25uZWN0aW9ucyAoYW5kIGNhbGwgZGlzYWJsZSgpKSBkb3duIGEg
d2hvbGUgY2hhaW4gb2YgY29ubmVjdGVkIG5vZGVzLgotCi0gICAgICAgICAgICAgICAgLy8gRklY
TUU6IHdlIHNwZWNpYWwgY2FzZSB0aGUgY29udm9sdmVyIGFuZCBkZWxheSBzaW5jZSB0aGV5IGhh
dmUgYSBzaWduaWZpY2FudCB0YWlsLXRpbWUgYW5kIHNob3VsZG4ndCBiZSBkaXNjb25uZWN0ZWQg
c2ltcGx5Ci0gICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGV5IG5vIGxvbmdlciBoYXZlIGFu
eSBpbnB1dCBjb25uZWN0aW9ucy4gIFRoaXMgbmVlZHMgdG8gYmUgaGFuZGxlZCBtb3JlIGdlbmVy
YWxseSB3aGVyZSBBdWRpb05vZGVzIGhhdmUKLSAgICAgICAgICAgICAgICAvLyBhIHRhaWxUaW1l
IGF0dHJpYnV0ZS4gIFRoZW4gdGhlIEF1ZGlvTm9kZSBvbmx5IG5lZWRzIHRvIHJlbWFpbiAiYWN0
aXZlIiBmb3IgdGFpbFRpbWUgc2Vjb25kcyBhZnRlciB0aGVyZSBhcmUgbm8KLSAgICAgICAgICAg
ICAgICAvLyBsb25nZXIgYW55IGFjdGl2ZSBjb25uZWN0aW9ucy4KLSAgICAgICAgICAgICAgICBp
ZiAobm9kZVR5cGUoKSAhPSBOb2RlVHlwZUNvbnZvbHZlciAmJiBub2RlVHlwZSgpICE9IE5vZGVU
eXBlRGVsYXkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9pc0Rpc2FibGVkID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fb3V0cHV0cy5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dChpKS0+ZGlzYWJsZSgpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVs
c2UgaWYgKHJlZlR5cGUgPT0gUmVmVHlwZUNvbm5lY3Rpb24pCisgICAgICAgICAgICBkaXNhYmxl
T3V0cHV0c0lmTm90RGlzYWJsZWQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCmluZGV4IDY0YzVmMjYyZTQyMjA2ZDE4M2I3YTkyNDhi
ZWYyMTJiMDBhZDRhZTMuLjUxYzkwZDJhZjZlMzY1OTc5NTdiMDM1ZGE0MzM2MzRjOThhMzM0MjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtODMs
NyArODMsNyBAQCBwdWJsaWM6CiAgICAgLy8gV2UgaGFuZGxlIG91ciBvd24gcmVmLWNvdW50aW5n
IGJlY2F1c2Ugb2YgdGhlIHRocmVhZGluZyBpc3N1ZXMgYW5kIHN1YnRsZSBuYXR1cmUgb2YKICAg
ICAvLyBob3cgQXVkaW9Ob2RlcyBjYW4gY29udGludWUgcHJvY2Vzc2luZyAocGxheWluZyBvbmUt
c2hvdCBzb3VuZCkgYWZ0ZXIgdGhlcmUgYXJlIG5vIG1vcmUKICAgICAvLyBKYXZhU2NyaXB0IHJl
ZmVyZW5jZXMgdG8gdGhlIG9iamVjdC4KLSAgICBlbnVtIFJlZlR5cGUgeyBSZWZUeXBlTm9ybWFs
LCBSZWZUeXBlQ29ubmVjdGlvbiwgUmVmVHlwZURpc2FibGVkIH07CisgICAgZW51bSBSZWZUeXBl
IHsgUmVmVHlwZU5vcm1hbCwgUmVmVHlwZUNvbm5lY3Rpb24gfTsKIAogICAgIC8vIENhbiBiZSBj
YWxsZWQgZnJvbSBtYWluIHRocmVhZCBvciBjb250ZXh0J3MgYXVkaW8gdGhyZWFkLgogICAgIHZv
aWQgcmVmKFJlZlR5cGUgcmVmVHlwZSA9IFJlZlR5cGVOb3JtYWwpOwpAQCAtMTUzLDYgKzE1Myw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNpbGVuY2VPdXRwdXRzKCk7CiAgICAgdm9pZCB1bnNpbGVu
Y2VPdXRwdXRzKCk7CiAKKyAgICBpbnQgY29ubmVjdGlvblJlZkNvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9jb25uZWN0aW9uUmVmQ291bnQ7IH0KKyAgICB2b2lkIGVuYWJsZU91dHB1dHNJZk5vdEVu
YWJsZWQoKTsKKyAgICB2b2lkIGRpc2FibGVPdXRwdXRzSWZOb3REaXNhYmxlZCgpOwogcHJvdGVj
dGVkOgogICAgIC8vIElucHV0cyBhbmQgb3V0cHV0cyBtdXN0IGJlIGNyZWF0ZWQgYmVmb3JlIHRo
ZSBBdWRpb05vZGUgaXMgaW5pdGlhbGl6ZWQuCiAgICAgdm9pZCBhZGRJbnB1dChQYXNzT3duUHRy
PEF1ZGlvTm9kZUlucHV0Pik7CkBAIC0xNzcsNyArMTgwLDYgQEAgcHJpdmF0ZToKICAgICAvLyBS
ZWYtY291bnRpbmcKICAgICB2b2xhdGlsZSBpbnQgbV9ub3JtYWxSZWZDb3VudDsKICAgICB2b2xh
dGlsZSBpbnQgbV9jb25uZWN0aW9uUmVmQ291bnQ7Ci0gICAgdm9sYXRpbGUgaW50IG1fZGlzYWJs
ZWRSZWZDb3VudDsKICAgICAKICAgICBib29sIG1faXNNYXJrZWRGb3JEZWxldGlvbjsKICAgICBi
b29sIG1faXNEaXNhYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb05vZGVJbnB1dC5jcHAKaW5kZXggMzc0ZjI3YTE4N2E0M2FlNzNhYThlNDdmZjc4ZWRi
NjM0MTJkYjQ2My4uYjU3YmU2OGVmZTE4ZjQ3MTIxNDkyNTk5ZDFmYWNiZTEyYjYwOWUyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5j
cHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBBdWRpb05vZGVJbnB1dDo6ZGlzY29ubmVjdChBdWRp
b05vZGVPdXRwdXQqIG91dHB1dCkKICAgICBpZiAobV9kaXNhYmxlZE91dHB1dHMuY29udGFpbnMo
b3V0cHV0KSkgewogICAgICAgICBtX2Rpc2FibGVkT3V0cHV0cy5yZW1vdmUob3V0cHV0KTsKICAg
ICAgICAgb3V0cHV0LT5yZW1vdmVJbnB1dCh0aGlzKTsKLSAgICAgICAgbm9kZSgpLT5kZXJlZihB
dWRpb05vZGU6OlJlZlR5cGVEaXNhYmxlZCk7IC8vIE5vdGU6IGl0J3MgaW1wb3J0YW50IHRvIHJl
dHVybiBpbW1lZGlhdGVseSBhZnRlciBhbGwgZGVyZWYoKSBjYWxscyBzaW5jZSB0aGUgbm9kZSBt
YXkgYmUgZGVsZXRlZC4KKyAgICAgICAgbm9kZSgpLT5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVD
b25uZWN0aW9uKTsgLy8gTm90ZTogaXQncyBpbXBvcnRhbnQgdG8gcmV0dXJuIGltbWVkaWF0ZWx5
IGFmdGVyIGFsbCBkZXJlZigpIGNhbGxzIHNpbmNlIHRoZSBub2RlIG1heSBiZSBkZWxldGVkLgog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDcsOCArMTA3LDEwIEBAIHZvaWQgQXVkaW9O
b2RlSW5wdXQ6OmRpc2FibGUoQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQpCiAgICAgbV9vdXRwdXRz
LnJlbW92ZShvdXRwdXQpOwogICAgIGNoYW5nZWRPdXRwdXRzKCk7CiAKLSAgICBub2RlKCktPnJl
ZihBdWRpb05vZGU6OlJlZlR5cGVEaXNhYmxlZCk7Ci0gICAgbm9kZSgpLT5kZXJlZihBdWRpb05v
ZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsgLy8gTm90ZTogaXQncyBpbXBvcnRhbnQgdG8gcmV0dXJu
IGltbWVkaWF0ZWx5IGFmdGVyIGFsbCBkZXJlZigpIGNhbGxzIHNpbmNlIHRoZSBub2RlIG1heSBi
ZSBkZWxldGVkLgorICAgIC8vIElmIHRoZXJlJ3Mgb25seSBvbmUgY29ubmVjdGlvbiBsZWZ0LCBk
aXNhYmxlIHRoZSBvdXRwdXRzLiAgKFdlIGRvbid0IHdhbnQgdG8gZGVyZWYgYmVjYXVzZSB3ZQor
ICAgIC8vIGRvbid0IHdhbnQgdGhlIG5vZGUgdG8gZ28gYXdheSB5ZXQuCisgICAgaWYgKG5vZGUo
KS0+Y29ubmVjdGlvblJlZkNvdW50KCkgPT0gMSkKKyAgICAgICAgbm9kZSgpLT5kaXNhYmxlT3V0
cHV0c0lmTm90RGlzYWJsZWQoKTsKIH0KIAogdm9pZCBBdWRpb05vZGVJbnB1dDo6ZW5hYmxlKEF1
ZGlvTm9kZU91dHB1dCogb3V0cHV0KQpAQCAtMTI2LDggKzEyOCw3IEBAIHZvaWQgQXVkaW9Ob2Rl
SW5wdXQ6OmVuYWJsZShBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKICAgICBtX2Rpc2FibGVkT3V0
cHV0cy5yZW1vdmUob3V0cHV0KTsKICAgICBjaGFuZ2VkT3V0cHV0cygpOwogCi0gICAgbm9kZSgp
LT5yZWYoQXVkaW9Ob2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7Ci0gICAgbm9kZSgpLT5kZXJlZihB
dWRpb05vZGU6OlJlZlR5cGVEaXNhYmxlZCk7IC8vIE5vdGU6IGl0J3MgaW1wb3J0YW50IHRvIHJl
dHVybiBpbW1lZGlhdGVseSBhZnRlciBhbGwgZGVyZWYoKSBjYWxscyBzaW5jZSB0aGUgbm9kZSBt
YXkgYmUgZGVsZXRlZC4KKyAgICBub2RlKCktPmVuYWJsZU91dHB1dHNJZk5vdEVuYWJsZWQoKTsK
IH0KIAogdm9pZCBBdWRpb05vZGVJbnB1dDo6Y2hhbmdlZE91dHB1dHMoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142090</attachid>
            <date>2012-05-15 16:05:38 -0700</date>
            <delta_ts>2012-05-16 09:19:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85681-20120515160537.patch</filename>
            <type>text/plain</type>
            <size>12088</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY4YzM1YmMzYjNlZjc3
MWNjZDQ4MzA1NjVhYjliMzAxMGE4YjdmZC4uMGMwMjNhYTJhNWQ3MWY3Y2NhNTY5ZTI0ZTdmZGQ5
NTQyNzE3OTcyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA1LTE0ICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVmVHlwRGlzYWJs
ZWQgYW5kIGRpc2FibGUoKSBhbmQgZW5hYmxlKCkgbWV0aG9kcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU2ODEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeGlzdGluZyB0ZXN0cyBzaG91bGQgY292ZXIg
dGhlc2UgY2hhbmdlcy4KKworICAgICAgICBSZW1vdmUgUmVmVHlwZURpc2FibGVkIGFuZCBtX2Rp
c2FibGVkUmVmQ291bnQuICBkaXNhYmxlKCkgYW5kCisgICAgICAgIGVuYWJsZSgpIG1ldGhvZHMg
cmVtYWluLgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5j
cHA6IFJlbW92ZSBSZWZUeXBlRGlhYmxlZCBhbmQgbV9kaXNhYmxlZFJlZkNvdW50LgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpBdWRpb05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Ob2RlOjp+QXVkaW9Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6ZW5hYmxl
T3V0cHV0c0lmTmVjZXNzYXJ5KTogTmV3CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnJl
Zik6IAorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpkaXNhYmxlT3V0cHV0c0lmTmVjZXNz
YXJ5KTogTmV3CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmZpbmlzaERlcmVmKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oOiBSZW1vdmUgUmVmVHlwZURpc2Fi
bGVkIGFuZCBtX2Rpc2FibGVkUmVmQ291bnQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb05vZGVJbnB1dC5jcHA6IFJlbW92ZWQgdXNlcyBvZiBSZWZUeXBlRGlzYmxlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUlucHV0OjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvTm9kZUlucHV0OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9k
ZUlucHV0OjplbmFibGUpOgorCiAyMDEyLTA1LTExICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZp
ZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTE2
NzUyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCmlu
ZGV4IDhhZjlmYzczNDQxMDkzOGYyZDMxYzE2ODUyZGU5OWRjNGZhNDZmMzcuLjNlNGViMjBlM2Ew
NTJlMDk0ZjYyYmMzYzgxZDNhMmVjOGY2YjEzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAgQXVkaW9Ob2RlOjpB
dWRpb05vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgICwg
bV9sYXN0Tm9uU2lsZW50VGltZSgtMSkKICAgICAsIG1fbm9ybWFsUmVmQ291bnQoMSkgLy8gc3Rh
cnQgb3V0IHdpdGggbm9ybWFsIHJlZkNvdW50ID09IDEgKGxpa2UgV1RGOjpSZWZDb3VudGVkIGNs
YXNzKQogICAgICwgbV9jb25uZWN0aW9uUmVmQ291bnQoMCkKLSAgICAsIG1fZGlzYWJsZWRSZWZD
b3VudCgwKQogICAgICwgbV9pc01hcmtlZEZvckRlbGV0aW9uKGZhbHNlKQogICAgICwgbV9pc0Rp
c2FibGVkKGZhbHNlKQogewpAQCAtNjMsNyArNjIsNyBAQCBBdWRpb05vZGU6On5BdWRpb05vZGUo
KQogewogI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTCiAgICAgLS1zX25vZGVDb3VudFtu
b2RlVHlwZSgpXTsKLSAgICBwcmludGYoIiVwOiAlZDogQXVkaW9Ob2RlOjp+QXVkaW9Ob2RlKCkg
JWQgJWQgJWRcbiIsIHRoaXMsIG5vZGVUeXBlKCksIG1fbm9ybWFsUmVmQ291bnQsIG1fY29ubmVj
dGlvblJlZkNvdW50LCBtX2Rpc2FibGVkUmVmQ291bnQpOworICAgIHByaW50ZigiJXA6ICVkOiBB
dWRpb05vZGU6On5BdWRpb05vZGUoKSAlZCAlZFxuIiwgdGhpcywgbm9kZVR5cGUoKSwgbV9ub3Jt
YWxSZWZDb3VudCwgbV9jb25uZWN0aW9uUmVmQ291bnQpOwogI2VuZGlmCiB9CiAKQEAgLTI2NSw2
ICsyNjQsNDYgQEAgdm9pZCBBdWRpb05vZGU6OnVuc2lsZW5jZU91dHB1dHMoKQogICAgICAgICBv
dXRwdXQoaSktPmJ1cygpLT5jbGVhclNpbGVudEZsYWcoKTsKIH0KIAordm9pZCBBdWRpb05vZGU6
OmVuYWJsZU91dHB1dHNJZk5lY2Vzc2FyeShSZWZUeXBlIHJlZlR5cGUpCit7CisgICAgaWYgKG1f
aXNEaXNhYmxlZCAmJiBtX2Nvbm5lY3Rpb25SZWZDb3VudCA+IDAgJiYgcmVmVHlwZSA9PSBSZWZU
eXBlQ29ubmVjdGlvbikgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAg
ICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisKKyAgICAgICAg
bV9pc0Rpc2FibGVkID0gZmFsc2U7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X291dHB1dHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBvdXRwdXQoaSktPmVuYWJsZSgpOwor
ICAgIH0KK30KKwordm9pZCBBdWRpb05vZGU6OmRpc2FibGVPdXRwdXRzSWZOZWNlc3NhcnkoKQor
eworICAgIC8vIERpc2FibGUgb3V0cHV0cyBpZiB0aGV5IGhhdmUgbm90IGJlZW4gZGlzYWJsZWQg
eWV0LiBXZSBkbyB0aGlzIGlmIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMKKyAgICAvLyBpcyAw
IG9yIDEuIFRoZSBjYXNlIG9mIDAgaXMgZnJvbSBmaW5pc2hEZXJlZigpIHdoZXJlIHRoZXJlIGFy
ZSBubyBjb25uZWN0aW9ucyBsZWZ0LiBUaGUKKyAgICAvLyBjYXNlIG9mIDEgaXMgZnJvbSBBdWRp
b05vZGVJbnB1dDo6ZGlzYWJsZSgpIHdoZXJlIHdlIHdhbnQgdG8gZGlzYWJsZSBvdXRwdXRzIHdo
ZW4gdGhlcmUncworICAgIC8vIG9ubHkgb25lIGNvbm5lY3Rpb24gbGVmdCBiZWNhdXNlIHdlJ3Jl
IHJlYWR5IHRvIGdvIGF3YXksIGJ1dCBjYW4ndCBxdWl0ZSB5ZXQuCisgICAgaWYgKG1fY29ubmVj
dGlvblJlZkNvdW50IDw9IDEpIHsKKyAgICAgICAgaWYgKCFtX2lzRGlzYWJsZWQpIHsKKyAgICAg
ICAgICAgIC8vIFN0aWxsIG1heSBoYXZlIEphdmFTY3JpcHQgcmVmZXJlbmNlcywgYnV0IG5vIG1v
cmUgImFjdGl2ZSIgY29ubmVjdGlvbiByZWZlcmVuY2VzLCBzbyBwdXQgYWxsIG9mIG91ciBvdXRw
dXRzIGluIGEgImRvcm1hbnQiIGRpc2FibGVkIHN0YXRlLgorICAgICAgICAgICAgLy8gR2FyYmFn
ZSBjb2xsZWN0aW9uIG1heSB0YWtlIGEgdmVyeSBsb25nIHRpbWUgYWZ0ZXIgdGhpcyB0aW1lLCBz
byB0aGUgImRvcm1hbnQiIGRpc2FibGVkIG5vZGVzIHNob3VsZCBub3QgYm9nIGRvd24gdGhlIHJl
bmRlcmluZy4uLgorCisgICAgICAgICAgICAvLyBBcyBmYXIgYXMgSmF2YVNjcmlwdCBpcyBjb25j
ZXJuZWQsIG91ciBvdXRwdXRzIG11c3Qgc3RpbGwgYXBwZWFyIHRvIGJlIGNvbm5lY3RlZC4KKyAg
ICAgICAgICAgIC8vIEJ1dCBpbnRlcm5hbGx5IG91ciBvdXRwdXRzIHNob3VsZCBiZSBkaXNhYmxl
ZCBmcm9tIHRoZSBpbnB1dHMgdGhleSdyZSBjb25uZWN0ZWQgdG8uCisgICAgICAgICAgICAvLyBk
aXNhYmxlKCkgY2FuIHJlY3Vyc2l2ZWx5IGRlcmVmIGNvbm5lY3Rpb25zIChhbmQgY2FsbCBkaXNh
YmxlKCkpIGRvd24gYSB3aG9sZSBjaGFpbiBvZiBjb25uZWN0ZWQgbm9kZXMuCisKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiB3ZSBzcGVjaWFsIGNhc2UgdGhlIGNvbnZvbHZlciBhbmQgZGVsYXkgc2lu
Y2UgdGhleSBoYXZlIGEgc2lnbmlmaWNhbnQgdGFpbC10aW1lIGFuZCBzaG91bGRuJ3QgYmUgZGlz
Y29ubmVjdGVkIHNpbXBseQorICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGV5IG5vIGxvbmdlciBo
YXZlIGFueSBpbnB1dCBjb25uZWN0aW9ucy4gVGhpcyBuZWVkcyB0byBiZSBoYW5kbGVkIG1vcmUg
Z2VuZXJhbGx5IHdoZXJlIEF1ZGlvTm9kZXMgaGF2ZQorICAgICAgICAgICAgLy8gYSB0YWlsVGlt
ZSBhdHRyaWJ1dGUuIFRoZW4gdGhlIEF1ZGlvTm9kZSBvbmx5IG5lZWRzIHRvIHJlbWFpbiAiYWN0
aXZlIiBmb3IgdGFpbFRpbWUgc2Vjb25kcyBhZnRlciB0aGVyZSBhcmUgbm8KKyAgICAgICAgICAg
IC8vIGxvbmdlciBhbnkgYWN0aXZlIGNvbm5lY3Rpb25zLgorICAgICAgICAgICAgaWYgKG5vZGVU
eXBlKCkgIT0gTm9kZVR5cGVDb252b2x2ZXIgJiYgbm9kZVR5cGUoKSAhPSBOb2RlVHlwZURlbGF5
KSB7CisgICAgICAgICAgICAgICAgbV9pc0Rpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9vdXRwdXRzLnNpemUoKTsgKytpKQorICAgICAg
ICAgICAgICAgICAgICBvdXRwdXQoaSktPmRpc2FibGUoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KK30KKwogdm9pZCBBdWRpb05vZGU6OnJlZihSZWZUeXBlIHJlZlR5cGUpCiB7
CiAgICAgc3dpdGNoIChyZWZUeXBlKSB7CkBAIC0yNzQsMjggKzMxMywxOCBAQCB2b2lkIEF1ZGlv
Tm9kZTo6cmVmKFJlZlR5cGUgcmVmVHlwZSkKICAgICBjYXNlIFJlZlR5cGVDb25uZWN0aW9uOgog
ICAgICAgICBhdG9taWNJbmNyZW1lbnQoJm1fY29ubmVjdGlvblJlZkNvdW50KTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBSZWZUeXBlRGlzYWJsZWQ6Ci0gICAgICAgIGF0b21pY0luY3JlbWVu
dCgmbV9kaXNhYmxlZFJlZkNvdW50KTsKLSAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCiAjaWYgREVCVUdfQVVESU9OT0RF
X1JFRkVSRU5DRVMKLSAgICBwcmludGYoIiVwOiAlZDogQXVkaW9Ob2RlOjpyZWYoJWQpICVkICVk
ICVkXG4iLCB0aGlzLCBub2RlVHlwZSgpLCByZWZUeXBlLCBtX25vcm1hbFJlZkNvdW50LCBtX2Nv
bm5lY3Rpb25SZWZDb3VudCwgbV9kaXNhYmxlZFJlZkNvdW50KTsKKyAgICBwcmludGYoIiVwOiAl
ZDogQXVkaW9Ob2RlOjpyZWYoJWQpICVkICVkXG4iLCB0aGlzLCBub2RlVHlwZSgpLCByZWZUeXBl
LCBtX25vcm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZDb3VudCk7CiAjZW5kaWYKIAogICAg
IC8vIFNlZSB0aGUgZGlzYWJsaW5nIGNvZGUgaW4gZmluaXNoRGVyZWYoKSBiZWxvdy4gVGhpcyBo
YW5kbGVzIHRoZSBjYXNlIHdoZXJlIGEgbm9kZQogICAgIC8vIGlzIGJlaW5nIHJlLWNvbm5lY3Rl
ZCBhZnRlciBiZWluZyB1c2VkIGF0IGxlYXN0IG9uY2UgYW5kIGRpc2Nvbm5lY3RlZC4KICAgICAv
LyBJbiB0aGlzIGNhc2UsIHdlIG5lZWQgdG8gcmUtZW5hYmxlLgotICAgIGlmIChtX2lzRGlzYWJs
ZWQgJiYgbV9jb25uZWN0aW9uUmVmQ291bnQgPiAwICYmIHJlZlR5cGUgPT0gUmVmVHlwZUNvbm5l
Y3Rpb24pIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgQXVkaW9D
b250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwotCi0gICAgICAgIG1faXNEaXNh
YmxlZCA9IGZhbHNlOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9vdXRwdXRz
LnNpemUoKTsgKytpKQotICAgICAgICAgICAgb3V0cHV0KGkpLT5lbmFibGUoKTsKLSAgICB9Cisg
ICAgZW5hYmxlT3V0cHV0c0lmTmVjZXNzYXJ5KHJlZlR5cGUpOwogfQogCiB2b2lkIEF1ZGlvTm9k
ZTo6ZGVyZWYoUmVmVHlwZSByZWZUeXBlKQpAQCAtMzQ1LDIwICszNzQsMTYgQEAgdm9pZCBBdWRp
b05vZGU6OmZpbmlzaERlcmVmKFJlZlR5cGUgcmVmVHlwZSkKICAgICAgICAgQVNTRVJUKG1fY29u
bmVjdGlvblJlZkNvdW50ID4gMCk7CiAgICAgICAgIGF0b21pY0RlY3JlbWVudCgmbV9jb25uZWN0
aW9uUmVmQ291bnQpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlZlR5cGVEaXNhYmxlZDoK
LSAgICAgICAgQVNTRVJUKG1fZGlzYWJsZWRSZWZDb3VudCA+IDApOwotICAgICAgICBhdG9taWNE
ZWNyZW1lbnQoJm1fZGlzYWJsZWRSZWZDb3VudCk7Ci0gICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAKICNpZiBERUJV
R19BVURJT05PREVfUkVGRVJFTkNFUwotICAgIHByaW50ZigiJXA6ICVkOiBBdWRpb05vZGU6OmRl
cmVmKCVkKSAlZCAlZCAlZFxuIiwgdGhpcywgbm9kZVR5cGUoKSwgcmVmVHlwZSwgbV9ub3JtYWxS
ZWZDb3VudCwgbV9jb25uZWN0aW9uUmVmQ291bnQsIG1fZGlzYWJsZWRSZWZDb3VudCk7CisgICAg
cHJpbnRmKCIlcDogJWQ6IEF1ZGlvTm9kZTo6ZGVyZWYoJWQpICVkICVkXG4iLCB0aGlzLCBub2Rl
VHlwZSgpLCByZWZUeXBlLCBtX25vcm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZDb3VudCk7
CiAjZW5kaWYKIAogICAgIGlmICghbV9jb25uZWN0aW9uUmVmQ291bnQpIHsKLSAgICAgICAgaWYg
KCFtX25vcm1hbFJlZkNvdW50ICYmICFtX2Rpc2FibGVkUmVmQ291bnQpIHsKKyAgICAgICAgaWYg
KCFtX25vcm1hbFJlZkNvdW50KSB7CiAgICAgICAgICAgICBpZiAoIW1faXNNYXJrZWRGb3JEZWxl
dGlvbikgewogICAgICAgICAgICAgICAgIC8vIEFsbCByZWZlcmVuY2VzIGFyZSBnb25lIC0gd2Ug
bmVlZCB0byBnbyBhd2F5LgogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX291dHB1dHMuc2l6ZSgpOyArK2kpCkBAIC0zNjgsMjYgKzM5Myw4IEBAIHZvaWQgQXVkaW9O
b2RlOjpmaW5pc2hEZXJlZihSZWZUeXBlIHJlZlR5cGUpCiAgICAgICAgICAgICAgICAgY29udGV4
dCgpLT5tYXJrRm9yRGVsZXRpb24odGhpcyk7CiAgICAgICAgICAgICAgICAgbV9pc01hcmtlZEZv
ckRlbGV0aW9uID0gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChyZWZU
eXBlID09IFJlZlR5cGVDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBpZiAoIW1faXNEaXNhYmxl
ZCkgewotICAgICAgICAgICAgICAgIC8vIFN0aWxsIG1heSBoYXZlIEphdmFTY3JpcHQgcmVmZXJl
bmNlcywgYnV0IG5vIG1vcmUgImFjdGl2ZSIgY29ubmVjdGlvbiByZWZlcmVuY2VzLCBzbyBwdXQg
YWxsIG9mIG91ciBvdXRwdXRzIGluIGEgImRvcm1hbnQiIGRpc2FibGVkIHN0YXRlLgotICAgICAg
ICAgICAgICAgIC8vIEdhcmJhZ2UgY29sbGVjdGlvbiBtYXkgdGFrZSBhIHZlcnkgbG9uZyB0aW1l
IGFmdGVyIHRoaXMgdGltZSwgc28gdGhlICJkb3JtYW50IiBkaXNhYmxlZCBub2RlcyBzaG91bGQg
bm90IGJvZyBkb3duIHRoZSByZW5kZXJpbmcuLi4KLQotICAgICAgICAgICAgICAgIC8vIEFzIGZh
ciBhcyBKYXZhU2NyaXB0IGlzIGNvbmNlcm5lZCwgb3VyIG91dHB1dHMgbXVzdCBzdGlsbCBhcHBl
YXIgdG8gYmUgY29ubmVjdGVkLgotICAgICAgICAgICAgICAgIC8vIEJ1dCBpbnRlcm5hbGx5IG91
ciBvdXRwdXRzIHNob3VsZCBiZSBkaXNhYmxlZCBmcm9tIHRoZSBpbnB1dHMgdGhleSdyZSBjb25u
ZWN0ZWQgdG8uCi0gICAgICAgICAgICAgICAgLy8gZGlzYWJsZSgpIGNhbiByZWN1cnNpdmVseSBk
ZXJlZiBjb25uZWN0aW9ucyAoYW5kIGNhbGwgZGlzYWJsZSgpKSBkb3duIGEgd2hvbGUgY2hhaW4g
b2YgY29ubmVjdGVkIG5vZGVzLgotCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IHdlIHNwZWNp
YWwgY2FzZSB0aGUgY29udm9sdmVyIGFuZCBkZWxheSBzaW5jZSB0aGV5IGhhdmUgYSBzaWduaWZp
Y2FudCB0YWlsLXRpbWUgYW5kIHNob3VsZG4ndCBiZSBkaXNjb25uZWN0ZWQgc2ltcGx5Ci0gICAg
ICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGV5IG5vIGxvbmdlciBoYXZlIGFueSBpbnB1dCBjb25u
ZWN0aW9ucy4gIFRoaXMgbmVlZHMgdG8gYmUgaGFuZGxlZCBtb3JlIGdlbmVyYWxseSB3aGVyZSBB
dWRpb05vZGVzIGhhdmUKLSAgICAgICAgICAgICAgICAvLyBhIHRhaWxUaW1lIGF0dHJpYnV0ZS4g
IFRoZW4gdGhlIEF1ZGlvTm9kZSBvbmx5IG5lZWRzIHRvIHJlbWFpbiAiYWN0aXZlIiBmb3IgdGFp
bFRpbWUgc2Vjb25kcyBhZnRlciB0aGVyZSBhcmUgbm8KLSAgICAgICAgICAgICAgICAvLyBsb25n
ZXIgYW55IGFjdGl2ZSBjb25uZWN0aW9ucy4KLSAgICAgICAgICAgICAgICBpZiAobm9kZVR5cGUo
KSAhPSBOb2RlVHlwZUNvbnZvbHZlciAmJiBub2RlVHlwZSgpICE9IE5vZGVUeXBlRGVsYXkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9pc0Rpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fb3V0cHV0cy5zaXplKCk7ICsraSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG91dHB1dChpKS0+ZGlzYWJsZSgpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHJlZlR5
cGUgPT0gUmVmVHlwZUNvbm5lY3Rpb24pCisgICAgICAgICAgICBkaXNhYmxlT3V0cHV0c0lmTmVj
ZXNzYXJ5KCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb05vZGUuaAppbmRleCA2NGM1ZjI2MmU0MjIwNmQxODNiN2E5MjQ4YmVmMjEyYjAwYWQ0YWUz
Li5hMjA5NWMxNmM2MmRjYzg0OTA5OTRmZGQzNTU1MGYzMzQyNDMxMDAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVi
bGljOgogICAgIC8vIFdlIGhhbmRsZSBvdXIgb3duIHJlZi1jb3VudGluZyBiZWNhdXNlIG9mIHRo
ZSB0aHJlYWRpbmcgaXNzdWVzIGFuZCBzdWJ0bGUgbmF0dXJlIG9mCiAgICAgLy8gaG93IEF1ZGlv
Tm9kZXMgY2FuIGNvbnRpbnVlIHByb2Nlc3NpbmcgKHBsYXlpbmcgb25lLXNob3Qgc291bmQpIGFm
dGVyIHRoZXJlIGFyZSBubyBtb3JlCiAgICAgLy8gSmF2YVNjcmlwdCByZWZlcmVuY2VzIHRvIHRo
ZSBvYmplY3QuCi0gICAgZW51bSBSZWZUeXBlIHsgUmVmVHlwZU5vcm1hbCwgUmVmVHlwZUNvbm5l
Y3Rpb24sIFJlZlR5cGVEaXNhYmxlZCB9OworICAgIGVudW0gUmVmVHlwZSB7IFJlZlR5cGVOb3Jt
YWwsIFJlZlR5cGVDb25uZWN0aW9uIH07CiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gbWFp
biB0aHJlYWQgb3IgY29udGV4dCdzIGF1ZGlvIHRocmVhZC4KICAgICB2b2lkIHJlZihSZWZUeXBl
IHJlZlR5cGUgPSBSZWZUeXBlTm9ybWFsKTsKQEAgLTE1Myw2ICsxNTMsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzaWxlbmNlT3V0cHV0cygpOwogICAgIHZvaWQgdW5zaWxlbmNlT3V0cHV0cygpOwog
CisgICAgdm9pZCBlbmFibGVPdXRwdXRzSWZOZWNlc3NhcnkoUmVmVHlwZSk7CisgICAgdm9pZCBk
aXNhYmxlT3V0cHV0c0lmTmVjZXNzYXJ5KCk7CiBwcm90ZWN0ZWQ6CiAgICAgLy8gSW5wdXRzIGFu
ZCBvdXRwdXRzIG11c3QgYmUgY3JlYXRlZCBiZWZvcmUgdGhlIEF1ZGlvTm9kZSBpcyBpbml0aWFs
aXplZC4KICAgICB2b2lkIGFkZElucHV0KFBhc3NPd25QdHI8QXVkaW9Ob2RlSW5wdXQ+KTsKQEAg
LTE3Nyw3ICsxNzksNiBAQCBwcml2YXRlOgogICAgIC8vIFJlZi1jb3VudGluZwogICAgIHZvbGF0
aWxlIGludCBtX25vcm1hbFJlZkNvdW50OwogICAgIHZvbGF0aWxlIGludCBtX2Nvbm5lY3Rpb25S
ZWZDb3VudDsKLSAgICB2b2xhdGlsZSBpbnQgbV9kaXNhYmxlZFJlZkNvdW50OwogICAgIAogICAg
IGJvb2wgbV9pc01hcmtlZEZvckRlbGV0aW9uOwogICAgIGJvb2wgbV9pc0Rpc2FibGVkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcApp
bmRleCAzNzRmMjdhMTg3YTQzYWU3M2FhOGU0N2ZmNzhlZGI2MzQxMmRiNDYzLi45ZTI3ZGZiYmU0
YmVmNjM4NTRkMmFmYTI2YWI4Mzk0Njk5NTBjZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcApAQCAtODYsNyArODYsNyBAQCB2
b2lkIEF1ZGlvTm9kZUlucHV0OjpkaXNjb25uZWN0KEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0KQog
ICAgIGlmIChtX2Rpc2FibGVkT3V0cHV0cy5jb250YWlucyhvdXRwdXQpKSB7CiAgICAgICAgIG1f
ZGlzYWJsZWRPdXRwdXRzLnJlbW92ZShvdXRwdXQpOwogICAgICAgICBvdXRwdXQtPnJlbW92ZUlu
cHV0KHRoaXMpOwotICAgICAgICBub2RlKCktPmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZURpc2Fi
bGVkKTsgLy8gTm90ZTogaXQncyBpbXBvcnRhbnQgdG8gcmV0dXJuIGltbWVkaWF0ZWx5IGFmdGVy
IGFsbCBkZXJlZigpIGNhbGxzIHNpbmNlIHRoZSBub2RlIG1heSBiZSBkZWxldGVkLgorICAgICAg
ICBub2RlKCktPmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOyAvLyBOb3RlOiBp
dCdzIGltcG9ydGFudCB0byByZXR1cm4gaW1tZWRpYXRlbHkgYWZ0ZXIgYWxsIGRlcmVmKCkgY2Fs
bHMgc2luY2UgdGhlIG5vZGUgbWF5IGJlIGRlbGV0ZWQuCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTEwNyw4ICsxMDcsMTAgQEAgdm9pZCBBdWRpb05vZGVJbnB1dDo6ZGlzYWJsZShBdWRp
b05vZGVPdXRwdXQqIG91dHB1dCkKICAgICBtX291dHB1dHMucmVtb3ZlKG91dHB1dCk7CiAgICAg
Y2hhbmdlZE91dHB1dHMoKTsKIAotICAgIG5vZGUoKS0+cmVmKEF1ZGlvTm9kZTo6UmVmVHlwZURp
c2FibGVkKTsKLSAgICBub2RlKCktPmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24p
OyAvLyBOb3RlOiBpdCdzIGltcG9ydGFudCB0byByZXR1cm4gaW1tZWRpYXRlbHkgYWZ0ZXIgYWxs
IGRlcmVmKCkgY2FsbHMgc2luY2UgdGhlIG5vZGUgbWF5IGJlIGRlbGV0ZWQuCisgICAgLy8gRGlz
YWJsZSBvdXRwdXRzLCBidXQgb25seSBpZiB0aGVyZSBpcyBvbmUgY29ubmVjdGlvbiBsZWZ0IChj
aGVja2VkIGluCisgICAgLy8gZGlzYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpKS4gSW4gdGhpcyBj
YXNlLCB3ZSdyZSByZWFkeSB0byBiZSBkZWxldGVkLCBidXQgZG9uJ3Qgd2FudCB0byBiZQorICAg
IC8vIGRlbGV0ZWQgeWV0LiAoVGhpcyB3aWxsIGhhcHBlbiBpbiBBdWRpb05vZGVPdXRwdXQ6OmRp
c2Nvbm5lY3RBbGwsIGV2ZW50dWFsbHkuKQorICAgIG5vZGUoKS0+ZGlzYWJsZU91dHB1dHNJZk5l
Y2Vzc2FyeSgpOwogfQogCiB2b2lkIEF1ZGlvTm9kZUlucHV0OjplbmFibGUoQXVkaW9Ob2RlT3V0
cHV0KiBvdXRwdXQpCkBAIC0xMjYsOCArMTI4LDcgQEAgdm9pZCBBdWRpb05vZGVJbnB1dDo6ZW5h
YmxlKEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0KQogICAgIG1fZGlzYWJsZWRPdXRwdXRzLnJlbW92
ZShvdXRwdXQpOwogICAgIGNoYW5nZWRPdXRwdXRzKCk7CiAKLSAgICBub2RlKCktPnJlZihBdWRp
b05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKLSAgICBub2RlKCktPmRlcmVmKEF1ZGlvTm9kZTo6
UmVmVHlwZURpc2FibGVkKTsgLy8gTm90ZTogaXQncyBpbXBvcnRhbnQgdG8gcmV0dXJuIGltbWVk
aWF0ZWx5IGFmdGVyIGFsbCBkZXJlZigpIGNhbGxzIHNpbmNlIHRoZSBub2RlIG1heSBiZSBkZWxl
dGVkLgorICAgIG5vZGUoKS0+ZW5hYmxlT3V0cHV0c0lmTmVjZXNzYXJ5KEF1ZGlvTm9kZTo6UmVm
VHlwZUNvbm5lY3Rpb24pOwogfQogCiB2b2lkIEF1ZGlvTm9kZUlucHV0OjpjaGFuZ2VkT3V0cHV0
cygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142135</attachid>
            <date>2012-05-15 20:16:36 -0700</date>
            <delta_ts>2012-05-16 13:38:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85681-20120515201634.patch</filename>
            <type>text/plain</type>
            <size>11673</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVhN2ZmNmJiYTI3ZGUy
NWZmN2E0MGJmZmE1YWEzMDgxOWJlNGE5NC4uZGRmM2JlNGNjMTRiYWZkODU5ZjY0NWJlZTFmZWNm
ZmM1ZWNkNzVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA1LTE0ICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVmVHlwRGlzYWJs
ZWQgYW5kIGRpc2FibGUoKSBhbmQgZW5hYmxlKCkgbWV0aG9kcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU2ODEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeGlzdGluZyB0ZXN0cyBzaG91bGQgY292ZXIg
dGhlc2UgY2hhbmdlcy4KKworICAgICAgICBSZW1vdmUgUmVmVHlwZURpc2FibGVkIGFuZCBtX2Rp
c2FibGVkUmVmQ291bnQuICBkaXNhYmxlKCkgYW5kCisgICAgICAgIGVuYWJsZSgpIG1ldGhvZHMg
cmVtYWluLgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OkF1ZGlvTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb05vZGU6On5BdWRpb05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9O
b2RlOjplbmFibGVPdXRwdXRzSWZOb3RFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpyZWYpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9O
b2RlOjpkaXNhYmxlT3V0cHV0c0lmTm90RGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Ob2RlOjpmaW5pc2hEZXJlZik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05v
ZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29ubmVjdGlvblJlZkNvdW50KToK
KyAgICAgICAgKEF1ZGlvTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05v
ZGVJbnB1dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6ZGlzY29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6ZGlzYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6ZW5hYmxlKToKKwogMjAxMi0wNS0xMSAgWXVyeSBT
ZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBhZGQgUHJvZmlsZXIuZ2V0SGVhcE9iamVjdElkIGNvbW1hbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAppbmRleCA4YWY5ZmM3MzQ0MTA5MzhmMmQz
MWMxNjg1MmRlOTlkYzRmYTQ2ZjM3Li4zMDQ0NjBlMTFjMDAwMzQzNmU0MmRjNGFlYjM2YThmY2M1
MTFjOGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUu
Y3BwCkBAIC00Nyw3ICs0Nyw2IEBAIEF1ZGlvTm9kZTo6QXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCog
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICAsIG1fbGFzdE5vblNpbGVudFRpbWUoLTEp
CiAgICAgLCBtX25vcm1hbFJlZkNvdW50KDEpIC8vIHN0YXJ0IG91dCB3aXRoIG5vcm1hbCByZWZD
b3VudCA9PSAxIChsaWtlIFdURjo6UmVmQ291bnRlZCBjbGFzcykKICAgICAsIG1fY29ubmVjdGlv
blJlZkNvdW50KDApCi0gICAgLCBtX2Rpc2FibGVkUmVmQ291bnQoMCkKICAgICAsIG1faXNNYXJr
ZWRGb3JEZWxldGlvbihmYWxzZSkKICAgICAsIG1faXNEaXNhYmxlZChmYWxzZSkKIHsKQEAgLTYz
LDcgKzYyLDcgQEAgQXVkaW9Ob2RlOjp+QXVkaW9Ob2RlKCkKIHsKICNpZiBERUJVR19BVURJT05P
REVfUkVGRVJFTkNFUwogICAgIC0tc19ub2RlQ291bnRbbm9kZVR5cGUoKV07Ci0gICAgcHJpbnRm
KCIlcDogJWQ6IEF1ZGlvTm9kZTo6fkF1ZGlvTm9kZSgpICVkICVkICVkXG4iLCB0aGlzLCBub2Rl
VHlwZSgpLCBtX25vcm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZDb3VudCwgbV9kaXNhYmxl
ZFJlZkNvdW50KTsKKyAgICBwcmludGYoIiVwOiAlZDogQXVkaW9Ob2RlOjp+QXVkaW9Ob2RlKCkg
JWQgJWRcbiIsIHRoaXMsIG5vZGVUeXBlKCksIG1fbm9ybWFsUmVmQ291bnQsIG1fY29ubmVjdGlv
blJlZkNvdW50KTsKICNlbmRpZgogfQogCkBAIC0yNjUsNiArMjY0LDQ0IEBAIHZvaWQgQXVkaW9O
b2RlOjp1bnNpbGVuY2VPdXRwdXRzKCkKICAgICAgICAgb3V0cHV0KGkpLT5idXMoKS0+Y2xlYXJT
aWxlbnRGbGFnKCk7CiB9CiAKK3ZvaWQgQXVkaW9Ob2RlOjplbmFibGVPdXRwdXRzSWZOZWNlc3Nh
cnkoKQoreworICAgIGlmIChtX2lzRGlzYWJsZWQgJiYgbV9jb25uZWN0aW9uUmVmQ291bnQgPiAw
KSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEF1ZGlvQ29udGV4
dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKworICAgICAgICBtX2lzRGlzYWJsZWQg
PSBmYWxzZTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fb3V0cHV0cy5zaXpl
KCk7ICsraSkKKyAgICAgICAgICAgIG91dHB1dChpKS0+ZW5hYmxlKCk7CisgICAgfQorfQorCit2
b2lkIEF1ZGlvTm9kZTo6ZGlzYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpCit7CisgICAgLy8gRGlz
YWJsZSBvdXRwdXRzIGlmIHRoZXkgaGF2ZSBub3QgYmVlbiBkaXNhYmxlZCB5ZXQuIFdlIGRvIHRo
aXMgaWYgdGhlIG51bWJlciBvZiBjb25uZWN0aW9ucworICAgIC8vIGlzIDAgb3IgMS4gVGhlIGNh
c2Ugb2YgMCBpcyBmcm9tIGZpbmlzaERlcmVmKCkgd2hlcmUgdGhlcmUgYXJlIG5vIGNvbm5lY3Rp
b25zIGxlZnQuIFRoZQorICAgIC8vIGNhc2Ugb2YgMSBpcyBmcm9tIEF1ZGlvTm9kZUlucHV0Ojpk
aXNhYmxlKCkgd2hlcmUgd2Ugd2FudCB0byBkaXNhYmxlIG91dHB1dHMgd2hlbiB0aGVyZSdzCisg
ICAgLy8gb25seSBvbmUgY29ubmVjdGlvbiBsZWZ0IGJlY2F1c2Ugd2UncmUgcmVhZHkgdG8gZ28g
YXdheSwgYnV0IGNhbid0IHF1aXRlIHlldC4KKyAgICBpZiAobV9jb25uZWN0aW9uUmVmQ291bnQg
PD0gMSAmJiAhbV9pc0Rpc2FibGVkKSB7CisgICAgICAgIC8vIFN0aWxsIG1heSBoYXZlIEphdmFT
Y3JpcHQgcmVmZXJlbmNlcywgYnV0IG5vIG1vcmUgImFjdGl2ZSIgY29ubmVjdGlvbiByZWZlcmVu
Y2VzLCBzbyBwdXQgYWxsIG9mIG91ciBvdXRwdXRzIGluIGEgImRvcm1hbnQiIGRpc2FibGVkIHN0
YXRlLgorICAgICAgICAvLyBHYXJiYWdlIGNvbGxlY3Rpb24gbWF5IHRha2UgYSB2ZXJ5IGxvbmcg
dGltZSBhZnRlciB0aGlzIHRpbWUsIHNvIHRoZSAiZG9ybWFudCIgZGlzYWJsZWQgbm9kZXMgc2hv
dWxkIG5vdCBib2cgZG93biB0aGUgcmVuZGVyaW5nLi4uCisKKyAgICAgICAgLy8gQXMgZmFyIGFz
IEphdmFTY3JpcHQgaXMgY29uY2VybmVkLCBvdXIgb3V0cHV0cyBtdXN0IHN0aWxsIGFwcGVhciB0
byBiZSBjb25uZWN0ZWQuCisgICAgICAgIC8vIEJ1dCBpbnRlcm5hbGx5IG91ciBvdXRwdXRzIHNo
b3VsZCBiZSBkaXNhYmxlZCBmcm9tIHRoZSBpbnB1dHMgdGhleSdyZSBjb25uZWN0ZWQgdG8uCisg
ICAgICAgIC8vIGRpc2FibGUoKSBjYW4gcmVjdXJzaXZlbHkgZGVyZWYgY29ubmVjdGlvbnMgKGFu
ZCBjYWxsIGRpc2FibGUoKSkgZG93biBhIHdob2xlIGNoYWluIG9mIGNvbm5lY3RlZCBub2Rlcy4K
KworICAgICAgICAvLyBGSVhNRTogd2Ugc3BlY2lhbCBjYXNlIHRoZSBjb252b2x2ZXIgYW5kIGRl
bGF5IHNpbmNlIHRoZXkgaGF2ZSBhIHNpZ25pZmljYW50IHRhaWwtdGltZSBhbmQgc2hvdWxkbid0
IGJlIGRpc2Nvbm5lY3RlZCBzaW1wbHkKKyAgICAgICAgLy8gYmVjYXVzZSB0aGV5IG5vIGxvbmdl
ciBoYXZlIGFueSBpbnB1dCBjb25uZWN0aW9ucy4gVGhpcyBuZWVkcyB0byBiZSBoYW5kbGVkIG1v
cmUgZ2VuZXJhbGx5IHdoZXJlIEF1ZGlvTm9kZXMgaGF2ZQorICAgICAgICAvLyBhIHRhaWxUaW1l
IGF0dHJpYnV0ZS4gVGhlbiB0aGUgQXVkaW9Ob2RlIG9ubHkgbmVlZHMgdG8gcmVtYWluICJhY3Rp
dmUiIGZvciB0YWlsVGltZSBzZWNvbmRzIGFmdGVyIHRoZXJlIGFyZSBubworICAgICAgICAvLyBs
b25nZXIgYW55IGFjdGl2ZSBjb25uZWN0aW9ucy4KKyAgICAgICAgaWYgKG5vZGVUeXBlKCkgIT0g
Tm9kZVR5cGVDb252b2x2ZXIgJiYgbm9kZVR5cGUoKSAhPSBOb2RlVHlwZURlbGF5KSB7CisgICAg
ICAgICAgICBtX2lzRGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fb3V0cHV0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBvdXRwdXQo
aSktPmRpc2FibGUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBBdWRpb05vZGU6OnJl
ZihSZWZUeXBlIHJlZlR5cGUpCiB7CiAgICAgc3dpdGNoIChyZWZUeXBlKSB7CkBAIC0yNzQsMjgg
KzMxMSwxOSBAQCB2b2lkIEF1ZGlvTm9kZTo6cmVmKFJlZlR5cGUgcmVmVHlwZSkKICAgICBjYXNl
IFJlZlR5cGVDb25uZWN0aW9uOgogICAgICAgICBhdG9taWNJbmNyZW1lbnQoJm1fY29ubmVjdGlv
blJlZkNvdW50KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWZUeXBlRGlzYWJsZWQ6Ci0g
ICAgICAgIGF0b21pY0luY3JlbWVudCgmbV9kaXNhYmxlZFJlZkNvdW50KTsKLSAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQog
CiAjaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKLSAgICBwcmludGYoIiVwOiAlZDogQXVk
aW9Ob2RlOjpyZWYoJWQpICVkICVkICVkXG4iLCB0aGlzLCBub2RlVHlwZSgpLCByZWZUeXBlLCBt
X25vcm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZDb3VudCwgbV9kaXNhYmxlZFJlZkNvdW50
KTsKKyAgICBwcmludGYoIiVwOiAlZDogQXVkaW9Ob2RlOjpyZWYoJWQpICVkICVkXG4iLCB0aGlz
LCBub2RlVHlwZSgpLCByZWZUeXBlLCBtX25vcm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZD
b3VudCk7CiAjZW5kaWYKIAogICAgIC8vIFNlZSB0aGUgZGlzYWJsaW5nIGNvZGUgaW4gZmluaXNo
RGVyZWYoKSBiZWxvdy4gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIGEgbm9kZQogICAgIC8v
IGlzIGJlaW5nIHJlLWNvbm5lY3RlZCBhZnRlciBiZWluZyB1c2VkIGF0IGxlYXN0IG9uY2UgYW5k
IGRpc2Nvbm5lY3RlZC4KICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIG5lZWQgdG8gcmUtZW5hYmxl
LgotICAgIGlmIChtX2lzRGlzYWJsZWQgJiYgbV9jb25uZWN0aW9uUmVmQ291bnQgPiAwICYmIHJl
ZlR5cGUgPT0gUmVmVHlwZUNvbm5lY3Rpb24pIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkp
OwotCi0gICAgICAgIG1faXNEaXNhYmxlZCA9IGZhbHNlOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9vdXRwdXRzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgb3V0cHV0KGkp
LT5lbmFibGUoKTsKLSAgICB9CisgICAgaWYgKHJlZlR5cGUgPT0gUmVmVHlwZUNvbm5lY3Rpb24p
CisgICAgICAgIGVuYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpOwogfQogCiB2b2lkIEF1ZGlvTm9k
ZTo6ZGVyZWYoUmVmVHlwZSByZWZUeXBlKQpAQCAtMzQ1LDIwICszNzMsMTYgQEAgdm9pZCBBdWRp
b05vZGU6OmZpbmlzaERlcmVmKFJlZlR5cGUgcmVmVHlwZSkKICAgICAgICAgQVNTRVJUKG1fY29u
bmVjdGlvblJlZkNvdW50ID4gMCk7CiAgICAgICAgIGF0b21pY0RlY3JlbWVudCgmbV9jb25uZWN0
aW9uUmVmQ291bnQpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlZlR5cGVEaXNhYmxlZDoK
LSAgICAgICAgQVNTRVJUKG1fZGlzYWJsZWRSZWZDb3VudCA+IDApOwotICAgICAgICBhdG9taWNE
ZWNyZW1lbnQoJm1fZGlzYWJsZWRSZWZDb3VudCk7Ci0gICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAKICNpZiBERUJV
R19BVURJT05PREVfUkVGRVJFTkNFUwotICAgIHByaW50ZigiJXA6ICVkOiBBdWRpb05vZGU6OmRl
cmVmKCVkKSAlZCAlZCAlZFxuIiwgdGhpcywgbm9kZVR5cGUoKSwgcmVmVHlwZSwgbV9ub3JtYWxS
ZWZDb3VudCwgbV9jb25uZWN0aW9uUmVmQ291bnQsIG1fZGlzYWJsZWRSZWZDb3VudCk7CisgICAg
cHJpbnRmKCIlcDogJWQ6IEF1ZGlvTm9kZTo6ZGVyZWYoJWQpICVkICVkXG4iLCB0aGlzLCBub2Rl
VHlwZSgpLCByZWZUeXBlLCBtX25vcm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZDb3VudCk7
CiAjZW5kaWYKIAogICAgIGlmICghbV9jb25uZWN0aW9uUmVmQ291bnQpIHsKLSAgICAgICAgaWYg
KCFtX25vcm1hbFJlZkNvdW50ICYmICFtX2Rpc2FibGVkUmVmQ291bnQpIHsKKyAgICAgICAgaWYg
KCFtX25vcm1hbFJlZkNvdW50KSB7CiAgICAgICAgICAgICBpZiAoIW1faXNNYXJrZWRGb3JEZWxl
dGlvbikgewogICAgICAgICAgICAgICAgIC8vIEFsbCByZWZlcmVuY2VzIGFyZSBnb25lIC0gd2Ug
bmVlZCB0byBnbyBhd2F5LgogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX291dHB1dHMuc2l6ZSgpOyArK2kpCkBAIC0zNjgsMjYgKzM5Miw4IEBAIHZvaWQgQXVkaW9O
b2RlOjpmaW5pc2hEZXJlZihSZWZUeXBlIHJlZlR5cGUpCiAgICAgICAgICAgICAgICAgY29udGV4
dCgpLT5tYXJrRm9yRGVsZXRpb24odGhpcyk7CiAgICAgICAgICAgICAgICAgbV9pc01hcmtlZEZv
ckRlbGV0aW9uID0gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChyZWZU
eXBlID09IFJlZlR5cGVDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBpZiAoIW1faXNEaXNhYmxl
ZCkgewotICAgICAgICAgICAgICAgIC8vIFN0aWxsIG1heSBoYXZlIEphdmFTY3JpcHQgcmVmZXJl
bmNlcywgYnV0IG5vIG1vcmUgImFjdGl2ZSIgY29ubmVjdGlvbiByZWZlcmVuY2VzLCBzbyBwdXQg
YWxsIG9mIG91ciBvdXRwdXRzIGluIGEgImRvcm1hbnQiIGRpc2FibGVkIHN0YXRlLgotICAgICAg
ICAgICAgICAgIC8vIEdhcmJhZ2UgY29sbGVjdGlvbiBtYXkgdGFrZSBhIHZlcnkgbG9uZyB0aW1l
IGFmdGVyIHRoaXMgdGltZSwgc28gdGhlICJkb3JtYW50IiBkaXNhYmxlZCBub2RlcyBzaG91bGQg
bm90IGJvZyBkb3duIHRoZSByZW5kZXJpbmcuLi4KLQotICAgICAgICAgICAgICAgIC8vIEFzIGZh
ciBhcyBKYXZhU2NyaXB0IGlzIGNvbmNlcm5lZCwgb3VyIG91dHB1dHMgbXVzdCBzdGlsbCBhcHBl
YXIgdG8gYmUgY29ubmVjdGVkLgotICAgICAgICAgICAgICAgIC8vIEJ1dCBpbnRlcm5hbGx5IG91
ciBvdXRwdXRzIHNob3VsZCBiZSBkaXNhYmxlZCBmcm9tIHRoZSBpbnB1dHMgdGhleSdyZSBjb25u
ZWN0ZWQgdG8uCi0gICAgICAgICAgICAgICAgLy8gZGlzYWJsZSgpIGNhbiByZWN1cnNpdmVseSBk
ZXJlZiBjb25uZWN0aW9ucyAoYW5kIGNhbGwgZGlzYWJsZSgpKSBkb3duIGEgd2hvbGUgY2hhaW4g
b2YgY29ubmVjdGVkIG5vZGVzLgotCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IHdlIHNwZWNp
YWwgY2FzZSB0aGUgY29udm9sdmVyIGFuZCBkZWxheSBzaW5jZSB0aGV5IGhhdmUgYSBzaWduaWZp
Y2FudCB0YWlsLXRpbWUgYW5kIHNob3VsZG4ndCBiZSBkaXNjb25uZWN0ZWQgc2ltcGx5Ci0gICAg
ICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGV5IG5vIGxvbmdlciBoYXZlIGFueSBpbnB1dCBjb25u
ZWN0aW9ucy4gIFRoaXMgbmVlZHMgdG8gYmUgaGFuZGxlZCBtb3JlIGdlbmVyYWxseSB3aGVyZSBB
dWRpb05vZGVzIGhhdmUKLSAgICAgICAgICAgICAgICAvLyBhIHRhaWxUaW1lIGF0dHJpYnV0ZS4g
IFRoZW4gdGhlIEF1ZGlvTm9kZSBvbmx5IG5lZWRzIHRvIHJlbWFpbiAiYWN0aXZlIiBmb3IgdGFp
bFRpbWUgc2Vjb25kcyBhZnRlciB0aGVyZSBhcmUgbm8KLSAgICAgICAgICAgICAgICAvLyBsb25n
ZXIgYW55IGFjdGl2ZSBjb25uZWN0aW9ucy4KLSAgICAgICAgICAgICAgICBpZiAobm9kZVR5cGUo
KSAhPSBOb2RlVHlwZUNvbnZvbHZlciAmJiBub2RlVHlwZSgpICE9IE5vZGVUeXBlRGVsYXkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9pc0Rpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fb3V0cHV0cy5zaXplKCk7ICsraSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG91dHB1dChpKS0+ZGlzYWJsZSgpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHJlZlR5
cGUgPT0gUmVmVHlwZUNvbm5lY3Rpb24pCisgICAgICAgICAgICBkaXNhYmxlT3V0cHV0c0lmTmVj
ZXNzYXJ5KCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb05vZGUuaAppbmRleCA2NGM1ZjI2MmU0MjIwNmQxODNiN2E5MjQ4YmVmMjEyYjAwYWQ0YWUz
Li5iZWU3OGY3ZTgzNjBmYTVmYmNlNjdjZDI5ZTQ1YjM1OTlkOTYzZTY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVi
bGljOgogICAgIC8vIFdlIGhhbmRsZSBvdXIgb3duIHJlZi1jb3VudGluZyBiZWNhdXNlIG9mIHRo
ZSB0aHJlYWRpbmcgaXNzdWVzIGFuZCBzdWJ0bGUgbmF0dXJlIG9mCiAgICAgLy8gaG93IEF1ZGlv
Tm9kZXMgY2FuIGNvbnRpbnVlIHByb2Nlc3NpbmcgKHBsYXlpbmcgb25lLXNob3Qgc291bmQpIGFm
dGVyIHRoZXJlIGFyZSBubyBtb3JlCiAgICAgLy8gSmF2YVNjcmlwdCByZWZlcmVuY2VzIHRvIHRo
ZSBvYmplY3QuCi0gICAgZW51bSBSZWZUeXBlIHsgUmVmVHlwZU5vcm1hbCwgUmVmVHlwZUNvbm5l
Y3Rpb24sIFJlZlR5cGVEaXNhYmxlZCB9OworICAgIGVudW0gUmVmVHlwZSB7IFJlZlR5cGVOb3Jt
YWwsIFJlZlR5cGVDb25uZWN0aW9uIH07CiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gbWFp
biB0aHJlYWQgb3IgY29udGV4dCdzIGF1ZGlvIHRocmVhZC4KICAgICB2b2lkIHJlZihSZWZUeXBl
IHJlZlR5cGUgPSBSZWZUeXBlTm9ybWFsKTsKQEAgLTE1Myw2ICsxNTMsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzaWxlbmNlT3V0cHV0cygpOwogICAgIHZvaWQgdW5zaWxlbmNlT3V0cHV0cygpOwog
CisgICAgdm9pZCBlbmFibGVPdXRwdXRzSWZOZWNlc3NhcnkoKTsKKyAgICB2b2lkIGRpc2FibGVP
dXRwdXRzSWZOZWNlc3NhcnkoKTsKIHByb3RlY3RlZDoKICAgICAvLyBJbnB1dHMgYW5kIG91dHB1
dHMgbXVzdCBiZSBjcmVhdGVkIGJlZm9yZSB0aGUgQXVkaW9Ob2RlIGlzIGluaXRpYWxpemVkLgog
ICAgIHZvaWQgYWRkSW5wdXQoUGFzc093blB0cjxBdWRpb05vZGVJbnB1dD4pOwpAQCAtMTc3LDcg
KzE3OSw2IEBAIHByaXZhdGU6CiAgICAgLy8gUmVmLWNvdW50aW5nCiAgICAgdm9sYXRpbGUgaW50
IG1fbm9ybWFsUmVmQ291bnQ7CiAgICAgdm9sYXRpbGUgaW50IG1fY29ubmVjdGlvblJlZkNvdW50
OwotICAgIHZvbGF0aWxlIGludCBtX2Rpc2FibGVkUmVmQ291bnQ7CiAgICAgCiAgICAgYm9vbCBt
X2lzTWFya2VkRm9yRGVsZXRpb247CiAgICAgYm9vbCBtX2lzRGlzYWJsZWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwCmluZGV4IDM3
NGYyN2ExODdhNDNhZTczYWE4ZTQ3ZmY3OGVkYjYzNDEyZGI0NjMuLjNmM2IyOTlhOWE3NzVhNmFl
NzU0MGYwNWZmMmFhYjJkYzc0ZDc4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgQXVk
aW9Ob2RlSW5wdXQ6OmRpc2Nvbm5lY3QoQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQpCiAgICAgaWYg
KG1fZGlzYWJsZWRPdXRwdXRzLmNvbnRhaW5zKG91dHB1dCkpIHsKICAgICAgICAgbV9kaXNhYmxl
ZE91dHB1dHMucmVtb3ZlKG91dHB1dCk7CiAgICAgICAgIG91dHB1dC0+cmVtb3ZlSW5wdXQodGhp
cyk7Ci0gICAgICAgIG5vZGUoKS0+ZGVyZWYoQXVkaW9Ob2RlOjpSZWZUeXBlRGlzYWJsZWQpOyAv
LyBOb3RlOiBpdCdzIGltcG9ydGFudCB0byByZXR1cm4gaW1tZWRpYXRlbHkgYWZ0ZXIgYWxsIGRl
cmVmKCkgY2FsbHMgc2luY2UgdGhlIG5vZGUgbWF5IGJlIGRlbGV0ZWQuCisgICAgICAgIG5vZGUo
KS0+ZGVyZWYoQXVkaW9Ob2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7IC8vIE5vdGU6IGl0J3MgaW1w
b3J0YW50IHRvIHJldHVybiBpbW1lZGlhdGVseSBhZnRlciBhbGwgZGVyZWYoKSBjYWxscyBzaW5j
ZSB0aGUgbm9kZSBtYXkgYmUgZGVsZXRlZC4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MTA3LDggKzEwNyw3IEBAIHZvaWQgQXVkaW9Ob2RlSW5wdXQ6OmRpc2FibGUoQXVkaW9Ob2RlT3V0
cHV0KiBvdXRwdXQpCiAgICAgbV9vdXRwdXRzLnJlbW92ZShvdXRwdXQpOwogICAgIGNoYW5nZWRP
dXRwdXRzKCk7CiAKLSAgICBub2RlKCktPnJlZihBdWRpb05vZGU6OlJlZlR5cGVEaXNhYmxlZCk7
Ci0gICAgbm9kZSgpLT5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsgLy8gTm90
ZTogaXQncyBpbXBvcnRhbnQgdG8gcmV0dXJuIGltbWVkaWF0ZWx5IGFmdGVyIGFsbCBkZXJlZigp
IGNhbGxzIHNpbmNlIHRoZSBub2RlIG1heSBiZSBkZWxldGVkLgorICAgIG5vZGUoKS0+ZGlzYWJs
ZU91dHB1dHNJZk5lY2Vzc2FyeSgpOwogfQogCiB2b2lkIEF1ZGlvTm9kZUlucHV0OjplbmFibGUo
QXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQpCkBAIC0xMjYsOCArMTI1LDcgQEAgdm9pZCBBdWRpb05v
ZGVJbnB1dDo6ZW5hYmxlKEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0KQogICAgIG1fZGlzYWJsZWRP
dXRwdXRzLnJlbW92ZShvdXRwdXQpOwogICAgIGNoYW5nZWRPdXRwdXRzKCk7CiAKLSAgICBub2Rl
KCktPnJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKLSAgICBub2RlKCktPmRlcmVm
KEF1ZGlvTm9kZTo6UmVmVHlwZURpc2FibGVkKTsgLy8gTm90ZTogaXQncyBpbXBvcnRhbnQgdG8g
cmV0dXJuIGltbWVkaWF0ZWx5IGFmdGVyIGFsbCBkZXJlZigpIGNhbGxzIHNpbmNlIHRoZSBub2Rl
IG1heSBiZSBkZWxldGVkLgorICAgIG5vZGUoKS0+ZW5hYmxlT3V0cHV0c0lmTmVjZXNzYXJ5KCk7
CiB9CiAKIHZvaWQgQXVkaW9Ob2RlSW5wdXQ6OmNoYW5nZWRPdXRwdXRzKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142336</attachid>
            <date>2012-05-16 13:38:24 -0700</date>
            <delta_ts>2012-05-16 15:26:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85681-20120516133823.patch</filename>
            <type>text/plain</type>
            <size>11648</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjExODA2YTJiNTU1MDcy
YWEzZmM2NjA3NzI4YmVmM2EzZWI3M2ZiNi4uMzQxZTRmYmUzMzUyYjk1ZTIwZTQ5NmJiYmJjNmFk
NTkzN2Q2ZjUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA1LTE0ICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBBdWRpb05vZGUg
cmVmLWNvdW50aW5nIGJ5IHJlbW92aW5nIFJlZlR5cGVEaXNhYmxlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU2ODEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeGlzdGluZyB0ZXN0cyBzaG91bGQgY292
ZXIgdGhlc2UgY2hhbmdlcy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
LmNwcDogUmVtb3ZlIFJlZlR5cGVEaWFibGVkIGFuZCBtX2Rpc2FibGVkUmVmQ291bnQuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OkF1ZGlvTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb05vZGU6On5BdWRpb05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjplbmFi
bGVPdXRwdXRzSWZOZWNlc3NhcnkpOiBOZXcKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6
cmVmKTogCisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmRpc2FibGVPdXRwdXRzSWZOZWNl
c3NhcnkpOiBOZXcKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6ZmluaXNoRGVyZWYpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmg6IFJlbW92ZSBSZWZUeXBlRGlz
YWJsZWQgYW5kIG1fZGlzYWJsZWRSZWZDb3VudC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZUlucHV0LmNwcDogUmVtb3ZlZCB1c2VzIG9mIFJlZlR5cGVEaXNibGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Ob2RlSW5wdXQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9O
b2RlSW5wdXQ6OmVuYWJsZSk6CisKIDIwMTItMDUtMTYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
MTcwNTAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAK
aW5kZXggOGFmOWZjNzM0NDEwOTM4ZjJkMzFjMTY4NTJkZTk5ZGM0ZmE0NmYzNy4uMDk0MzhmNWUy
ZjUxMGUwNTc2MTE5ODYxZDA2MjE4ZDE3OWQ3NDRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcApAQCAtNDcsNyArNDcsNiBAQCBBdWRpb05vZGU6
OkF1ZGlvTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
LCBtX2xhc3ROb25TaWxlbnRUaW1lKC0xKQogICAgICwgbV9ub3JtYWxSZWZDb3VudCgxKSAvLyBz
dGFydCBvdXQgd2l0aCBub3JtYWwgcmVmQ291bnQgPT0gMSAobGlrZSBXVEY6OlJlZkNvdW50ZWQg
Y2xhc3MpCiAgICAgLCBtX2Nvbm5lY3Rpb25SZWZDb3VudCgwKQotICAgICwgbV9kaXNhYmxlZFJl
ZkNvdW50KDApCiAgICAgLCBtX2lzTWFya2VkRm9yRGVsZXRpb24oZmFsc2UpCiAgICAgLCBtX2lz
RGlzYWJsZWQoZmFsc2UpCiB7CkBAIC02Myw3ICs2Miw3IEBAIEF1ZGlvTm9kZTo6fkF1ZGlvTm9k
ZSgpCiB7CiAjaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKICAgICAtLXNfbm9kZUNvdW50
W25vZGVUeXBlKCldOwotICAgIHByaW50ZigiJXA6ICVkOiBBdWRpb05vZGU6On5BdWRpb05vZGUo
KSAlZCAlZCAlZFxuIiwgdGhpcywgbm9kZVR5cGUoKSwgbV9ub3JtYWxSZWZDb3VudCwgbV9jb25u
ZWN0aW9uUmVmQ291bnQsIG1fZGlzYWJsZWRSZWZDb3VudCk7CisgICAgcHJpbnRmKCIlcDogJWQ6
IEF1ZGlvTm9kZTo6fkF1ZGlvTm9kZSgpICVkICVkXG4iLCB0aGlzLCBub2RlVHlwZSgpLCBtX25v
cm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZDb3VudCk7CiAjZW5kaWYKIH0KIApAQCAtMjY1
LDYgKzI2NCw0NCBAQCB2b2lkIEF1ZGlvTm9kZTo6dW5zaWxlbmNlT3V0cHV0cygpCiAgICAgICAg
IG91dHB1dChpKS0+YnVzKCktPmNsZWFyU2lsZW50RmxhZygpOwogfQogCit2b2lkIEF1ZGlvTm9k
ZTo6ZW5hYmxlT3V0cHV0c0lmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAobV9pc0Rpc2FibGVkICYm
IG1fY29ubmVjdGlvblJlZkNvdW50ID4gMCkgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7
CisKKyAgICAgICAgbV9pc0Rpc2FibGVkID0gZmFsc2U7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX291dHB1dHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBvdXRwdXQoaSkt
PmVuYWJsZSgpOworICAgIH0KK30KKwordm9pZCBBdWRpb05vZGU6OmRpc2FibGVPdXRwdXRzSWZO
ZWNlc3NhcnkoKQoreworICAgIC8vIERpc2FibGUgb3V0cHV0cyBpZiBhcHByb3ByaWF0ZS4gV2Ug
ZG8gdGhpcyBpZiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGlzIDAgb3IgMS4gVGhlIGNhc2UK
KyAgICAvLyBvZiAwIGlzIGZyb20gZmluaXNoRGVyZWYoKSB3aGVyZSB0aGVyZSBhcmUgbm8gY29u
bmVjdGlvbnMgbGVmdC4gVGhlIGNhc2Ugb2YgMSBpcyBmcm9tCisgICAgLy8gQXVkaW9Ob2RlSW5w
dXQ6OmRpc2FibGUoKSB3aGVyZSB3ZSB3YW50IHRvIGRpc2FibGUgb3V0cHV0cyB3aGVuIHRoZXJl
J3Mgb25seSBvbmUgY29ubmVjdGlvbgorICAgIC8vIGxlZnQgYmVjYXVzZSB3ZSdyZSByZWFkeSB0
byBnbyBhd2F5LCBidXQgY2FuJ3QgcXVpdGUgeWV0LgorICAgIGlmIChtX2Nvbm5lY3Rpb25SZWZD
b3VudCA8PSAxICYmICFtX2lzRGlzYWJsZWQpIHsKKyAgICAgICAgLy8gU3RpbGwgbWF5IGhhdmUg
SmF2YVNjcmlwdCByZWZlcmVuY2VzLCBidXQgbm8gbW9yZSAiYWN0aXZlIiBjb25uZWN0aW9uIHJl
ZmVyZW5jZXMsIHNvIHB1dCBhbGwgb2Ygb3VyIG91dHB1dHMgaW4gYSAiZG9ybWFudCIgZGlzYWJs
ZWQgc3RhdGUuCisgICAgICAgIC8vIEdhcmJhZ2UgY29sbGVjdGlvbiBtYXkgdGFrZSBhIHZlcnkg
bG9uZyB0aW1lIGFmdGVyIHRoaXMgdGltZSwgc28gdGhlICJkb3JtYW50IiBkaXNhYmxlZCBub2Rl
cyBzaG91bGQgbm90IGJvZyBkb3duIHRoZSByZW5kZXJpbmcuLi4KKworICAgICAgICAvLyBBcyBm
YXIgYXMgSmF2YVNjcmlwdCBpcyBjb25jZXJuZWQsIG91ciBvdXRwdXRzIG11c3Qgc3RpbGwgYXBw
ZWFyIHRvIGJlIGNvbm5lY3RlZC4KKyAgICAgICAgLy8gQnV0IGludGVybmFsbHkgb3VyIG91dHB1
dHMgc2hvdWxkIGJlIGRpc2FibGVkIGZyb20gdGhlIGlucHV0cyB0aGV5J3JlIGNvbm5lY3RlZCB0
by4KKyAgICAgICAgLy8gZGlzYWJsZSgpIGNhbiByZWN1cnNpdmVseSBkZXJlZiBjb25uZWN0aW9u
cyAoYW5kIGNhbGwgZGlzYWJsZSgpKSBkb3duIGEgd2hvbGUgY2hhaW4gb2YgY29ubmVjdGVkIG5v
ZGVzLgorCisgICAgICAgIC8vIEZJWE1FOiB3ZSBzcGVjaWFsIGNhc2UgdGhlIGNvbnZvbHZlciBh
bmQgZGVsYXkgc2luY2UgdGhleSBoYXZlIGEgc2lnbmlmaWNhbnQgdGFpbC10aW1lIGFuZCBzaG91
bGRuJ3QgYmUgZGlzY29ubmVjdGVkIHNpbXBseQorICAgICAgICAvLyBiZWNhdXNlIHRoZXkgbm8g
bG9uZ2VyIGhhdmUgYW55IGlucHV0IGNvbm5lY3Rpb25zLiBUaGlzIG5lZWRzIHRvIGJlIGhhbmRs
ZWQgbW9yZSBnZW5lcmFsbHkgd2hlcmUgQXVkaW9Ob2RlcyBoYXZlCisgICAgICAgIC8vIGEgdGFp
bFRpbWUgYXR0cmlidXRlLiBUaGVuIHRoZSBBdWRpb05vZGUgb25seSBuZWVkcyB0byByZW1haW4g
ImFjdGl2ZSIgZm9yIHRhaWxUaW1lIHNlY29uZHMgYWZ0ZXIgdGhlcmUgYXJlIG5vCisgICAgICAg
IC8vIGxvbmdlciBhbnkgYWN0aXZlIGNvbm5lY3Rpb25zLgorICAgICAgICBpZiAobm9kZVR5cGUo
KSAhPSBOb2RlVHlwZUNvbnZvbHZlciAmJiBub2RlVHlwZSgpICE9IE5vZGVUeXBlRGVsYXkpIHsK
KyAgICAgICAgICAgIG1faXNEaXNhYmxlZCA9IHRydWU7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9vdXRwdXRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgIG91
dHB1dChpKS0+ZGlzYWJsZSgpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIEF1ZGlvTm9k
ZTo6cmVmKFJlZlR5cGUgcmVmVHlwZSkKIHsKICAgICBzd2l0Y2ggKHJlZlR5cGUpIHsKQEAgLTI3
NCwyOCArMzExLDE5IEBAIHZvaWQgQXVkaW9Ob2RlOjpyZWYoUmVmVHlwZSByZWZUeXBlKQogICAg
IGNhc2UgUmVmVHlwZUNvbm5lY3Rpb246CiAgICAgICAgIGF0b21pY0luY3JlbWVudCgmbV9jb25u
ZWN0aW9uUmVmQ291bnQpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlZlR5cGVEaXNhYmxl
ZDoKLSAgICAgICAgYXRvbWljSW5jcmVtZW50KCZtX2Rpc2FibGVkUmVmQ291bnQpOwotICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiAKICNpZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUwotICAgIHByaW50ZigiJXA6ICVk
OiBBdWRpb05vZGU6OnJlZiglZCkgJWQgJWQgJWRcbiIsIHRoaXMsIG5vZGVUeXBlKCksIHJlZlR5
cGUsIG1fbm9ybWFsUmVmQ291bnQsIG1fY29ubmVjdGlvblJlZkNvdW50LCBtX2Rpc2FibGVkUmVm
Q291bnQpOworICAgIHByaW50ZigiJXA6ICVkOiBBdWRpb05vZGU6OnJlZiglZCkgJWQgJWRcbiIs
IHRoaXMsIG5vZGVUeXBlKCksIHJlZlR5cGUsIG1fbm9ybWFsUmVmQ291bnQsIG1fY29ubmVjdGlv
blJlZkNvdW50KTsKICNlbmRpZgogCiAgICAgLy8gU2VlIHRoZSBkaXNhYmxpbmcgY29kZSBpbiBm
aW5pc2hEZXJlZigpIGJlbG93LiBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgYSBub2RlCiAg
ICAgLy8gaXMgYmVpbmcgcmUtY29ubmVjdGVkIGFmdGVyIGJlaW5nIHVzZWQgYXQgbGVhc3Qgb25j
ZSBhbmQgZGlzY29ubmVjdGVkLgogICAgIC8vIEluIHRoaXMgY2FzZSwgd2UgbmVlZCB0byByZS1l
bmFibGUuCi0gICAgaWYgKG1faXNEaXNhYmxlZCAmJiBtX2Nvbm5lY3Rpb25SZWZDb3VudCA+IDAg
JiYgcmVmVHlwZSA9PSBSZWZUeXBlQ29ubmVjdGlvbikgewotICAgICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRl
eHQoKSk7Ci0KLSAgICAgICAgbV9pc0Rpc2FibGVkID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX291dHB1dHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBvdXRw
dXQoaSktPmVuYWJsZSgpOwotICAgIH0KKyAgICBpZiAocmVmVHlwZSA9PSBSZWZUeXBlQ29ubmVj
dGlvbikKKyAgICAgICAgZW5hYmxlT3V0cHV0c0lmTmVjZXNzYXJ5KCk7CiB9CiAKIHZvaWQgQXVk
aW9Ob2RlOjpkZXJlZihSZWZUeXBlIHJlZlR5cGUpCkBAIC0zNDUsMjAgKzM3MywxNiBAQCB2b2lk
IEF1ZGlvTm9kZTo6ZmluaXNoRGVyZWYoUmVmVHlwZSByZWZUeXBlKQogICAgICAgICBBU1NFUlQo
bV9jb25uZWN0aW9uUmVmQ291bnQgPiAwKTsKICAgICAgICAgYXRvbWljRGVjcmVtZW50KCZtX2Nv
bm5lY3Rpb25SZWZDb3VudCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVmVHlwZURpc2Fi
bGVkOgotICAgICAgICBBU1NFUlQobV9kaXNhYmxlZFJlZkNvdW50ID4gMCk7Ci0gICAgICAgIGF0
b21pY0RlY3JlbWVudCgmbV9kaXNhYmxlZFJlZkNvdW50KTsKLSAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAogI2lm
IERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTCi0gICAgcHJpbnRmKCIlcDogJWQ6IEF1ZGlvTm9k
ZTo6ZGVyZWYoJWQpICVkICVkICVkXG4iLCB0aGlzLCBub2RlVHlwZSgpLCByZWZUeXBlLCBtX25v
cm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZDb3VudCwgbV9kaXNhYmxlZFJlZkNvdW50KTsK
KyAgICBwcmludGYoIiVwOiAlZDogQXVkaW9Ob2RlOjpkZXJlZiglZCkgJWQgJWRcbiIsIHRoaXMs
IG5vZGVUeXBlKCksIHJlZlR5cGUsIG1fbm9ybWFsUmVmQ291bnQsIG1fY29ubmVjdGlvblJlZkNv
dW50KTsKICNlbmRpZgogCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb25SZWZDb3VudCkgewotICAgICAg
ICBpZiAoIW1fbm9ybWFsUmVmQ291bnQgJiYgIW1fZGlzYWJsZWRSZWZDb3VudCkgeworICAgICAg
ICBpZiAoIW1fbm9ybWFsUmVmQ291bnQpIHsKICAgICAgICAgICAgIGlmICghbV9pc01hcmtlZEZv
ckRlbGV0aW9uKSB7CiAgICAgICAgICAgICAgICAgLy8gQWxsIHJlZmVyZW5jZXMgYXJlIGdvbmUg
LSB3ZSBuZWVkIHRvIGdvIGF3YXkuCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fb3V0cHV0cy5zaXplKCk7ICsraSkKQEAgLTM2OCwyNiArMzkyLDggQEAgdm9pZCBB
dWRpb05vZGU6OmZpbmlzaERlcmVmKFJlZlR5cGUgcmVmVHlwZSkKICAgICAgICAgICAgICAgICBj
b250ZXh0KCktPm1hcmtGb3JEZWxldGlvbih0aGlzKTsKICAgICAgICAgICAgICAgICBtX2lzTWFy
a2VkRm9yRGVsZXRpb24gPSB0cnVlOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYg
KHJlZlR5cGUgPT0gUmVmVHlwZUNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIGlmICghbV9pc0Rp
c2FibGVkKSB7Ci0gICAgICAgICAgICAgICAgLy8gU3RpbGwgbWF5IGhhdmUgSmF2YVNjcmlwdCBy
ZWZlcmVuY2VzLCBidXQgbm8gbW9yZSAiYWN0aXZlIiBjb25uZWN0aW9uIHJlZmVyZW5jZXMsIHNv
IHB1dCBhbGwgb2Ygb3VyIG91dHB1dHMgaW4gYSAiZG9ybWFudCIgZGlzYWJsZWQgc3RhdGUuCi0g
ICAgICAgICAgICAgICAgLy8gR2FyYmFnZSBjb2xsZWN0aW9uIG1heSB0YWtlIGEgdmVyeSBsb25n
IHRpbWUgYWZ0ZXIgdGhpcyB0aW1lLCBzbyB0aGUgImRvcm1hbnQiIGRpc2FibGVkIG5vZGVzIHNo
b3VsZCBub3QgYm9nIGRvd24gdGhlIHJlbmRlcmluZy4uLgotCi0gICAgICAgICAgICAgICAgLy8g
QXMgZmFyIGFzIEphdmFTY3JpcHQgaXMgY29uY2VybmVkLCBvdXIgb3V0cHV0cyBtdXN0IHN0aWxs
IGFwcGVhciB0byBiZSBjb25uZWN0ZWQuCi0gICAgICAgICAgICAgICAgLy8gQnV0IGludGVybmFs
bHkgb3VyIG91dHB1dHMgc2hvdWxkIGJlIGRpc2FibGVkIGZyb20gdGhlIGlucHV0cyB0aGV5J3Jl
IGNvbm5lY3RlZCB0by4KLSAgICAgICAgICAgICAgICAvLyBkaXNhYmxlKCkgY2FuIHJlY3Vyc2l2
ZWx5IGRlcmVmIGNvbm5lY3Rpb25zIChhbmQgY2FsbCBkaXNhYmxlKCkpIGRvd24gYSB3aG9sZSBj
aGFpbiBvZiBjb25uZWN0ZWQgbm9kZXMuCi0KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogd2Ug
c3BlY2lhbCBjYXNlIHRoZSBjb252b2x2ZXIgYW5kIGRlbGF5IHNpbmNlIHRoZXkgaGF2ZSBhIHNp
Z25pZmljYW50IHRhaWwtdGltZSBhbmQgc2hvdWxkbid0IGJlIGRpc2Nvbm5lY3RlZCBzaW1wbHkK
LSAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoZXkgbm8gbG9uZ2VyIGhhdmUgYW55IGlucHV0
IGNvbm5lY3Rpb25zLiAgVGhpcyBuZWVkcyB0byBiZSBoYW5kbGVkIG1vcmUgZ2VuZXJhbGx5IHdo
ZXJlIEF1ZGlvTm9kZXMgaGF2ZQotICAgICAgICAgICAgICAgIC8vIGEgdGFpbFRpbWUgYXR0cmli
dXRlLiAgVGhlbiB0aGUgQXVkaW9Ob2RlIG9ubHkgbmVlZHMgdG8gcmVtYWluICJhY3RpdmUiIGZv
ciB0YWlsVGltZSBzZWNvbmRzIGFmdGVyIHRoZXJlIGFyZSBubwotICAgICAgICAgICAgICAgIC8v
IGxvbmdlciBhbnkgYWN0aXZlIGNvbm5lY3Rpb25zLgotICAgICAgICAgICAgICAgIGlmIChub2Rl
VHlwZSgpICE9IE5vZGVUeXBlQ29udm9sdmVyICYmIG5vZGVUeXBlKCkgIT0gTm9kZVR5cGVEZWxh
eSkgewotICAgICAgICAgICAgICAgICAgICBtX2lzRGlzYWJsZWQgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9vdXRwdXRzLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KGkpLT5kaXNhYmxlKCk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAo
cmVmVHlwZSA9PSBSZWZUeXBlQ29ubmVjdGlvbikKKyAgICAgICAgICAgIGRpc2FibGVPdXRwdXRz
SWZOZWNlc3NhcnkoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvTm9kZS5oCmluZGV4IDY0YzVmMjYyZTQyMjA2ZDE4M2I3YTkyNDhiZWYyMTJiMDBh
ZDRhZTMuLmJlZTc4ZjdlODM2MGZhNWZiY2U2N2NkMjllNDViMzU5OWQ5NjNlNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtODMsNyArODMsNyBA
QCBwdWJsaWM6CiAgICAgLy8gV2UgaGFuZGxlIG91ciBvd24gcmVmLWNvdW50aW5nIGJlY2F1c2Ug
b2YgdGhlIHRocmVhZGluZyBpc3N1ZXMgYW5kIHN1YnRsZSBuYXR1cmUgb2YKICAgICAvLyBob3cg
QXVkaW9Ob2RlcyBjYW4gY29udGludWUgcHJvY2Vzc2luZyAocGxheWluZyBvbmUtc2hvdCBzb3Vu
ZCkgYWZ0ZXIgdGhlcmUgYXJlIG5vIG1vcmUKICAgICAvLyBKYXZhU2NyaXB0IHJlZmVyZW5jZXMg
dG8gdGhlIG9iamVjdC4KLSAgICBlbnVtIFJlZlR5cGUgeyBSZWZUeXBlTm9ybWFsLCBSZWZUeXBl
Q29ubmVjdGlvbiwgUmVmVHlwZURpc2FibGVkIH07CisgICAgZW51bSBSZWZUeXBlIHsgUmVmVHlw
ZU5vcm1hbCwgUmVmVHlwZUNvbm5lY3Rpb24gfTsKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgZnJv
bSBtYWluIHRocmVhZCBvciBjb250ZXh0J3MgYXVkaW8gdGhyZWFkLgogICAgIHZvaWQgcmVmKFJl
ZlR5cGUgcmVmVHlwZSA9IFJlZlR5cGVOb3JtYWwpOwpAQCAtMTUzLDYgKzE1Myw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNpbGVuY2VPdXRwdXRzKCk7CiAgICAgdm9pZCB1bnNpbGVuY2VPdXRwdXRz
KCk7CiAKKyAgICB2b2lkIGVuYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgZGlz
YWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpOwogcHJvdGVjdGVkOgogICAgIC8vIElucHV0cyBhbmQg
b3V0cHV0cyBtdXN0IGJlIGNyZWF0ZWQgYmVmb3JlIHRoZSBBdWRpb05vZGUgaXMgaW5pdGlhbGl6
ZWQuCiAgICAgdm9pZCBhZGRJbnB1dChQYXNzT3duUHRyPEF1ZGlvTm9kZUlucHV0Pik7CkBAIC0x
NzcsNyArMTc5LDYgQEAgcHJpdmF0ZToKICAgICAvLyBSZWYtY291bnRpbmcKICAgICB2b2xhdGls
ZSBpbnQgbV9ub3JtYWxSZWZDb3VudDsKICAgICB2b2xhdGlsZSBpbnQgbV9jb25uZWN0aW9uUmVm
Q291bnQ7Ci0gICAgdm9sYXRpbGUgaW50IG1fZGlzYWJsZWRSZWZDb3VudDsKICAgICAKICAgICBi
b29sIG1faXNNYXJrZWRGb3JEZWxldGlvbjsKICAgICBib29sIG1faXNEaXNhYmxlZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5jcHAKaW5k
ZXggNmMyYTIyMmE0Y2QwNmNkODdiYzg1NDIwNjFiZjI0MWVmMDExN2M1NC4uZjNmNDhiZTg0MTlj
NDgzODU0ZTBlZTgwNTY0OTEzM2FlMWEyNjBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9p
ZCBBdWRpb05vZGVJbnB1dDo6ZGlzY29ubmVjdChBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKICAg
ICBpZiAobV9kaXNhYmxlZE91dHB1dHMuY29udGFpbnMob3V0cHV0KSkgewogICAgICAgICBtX2Rp
c2FibGVkT3V0cHV0cy5yZW1vdmUob3V0cHV0KTsKICAgICAgICAgb3V0cHV0LT5yZW1vdmVJbnB1
dCh0aGlzKTsKLSAgICAgICAgbm9kZSgpLT5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVEaXNhYmxl
ZCk7IC8vIE5vdGU6IGl0J3MgaW1wb3J0YW50IHRvIHJldHVybiBpbW1lZGlhdGVseSBhZnRlciBh
bGwgZGVyZWYoKSBjYWxscyBzaW5jZSB0aGUgbm9kZSBtYXkgYmUgZGVsZXRlZC4KKyAgICAgICAg
bm9kZSgpLT5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsgLy8gTm90ZTogaXQn
cyBpbXBvcnRhbnQgdG8gcmV0dXJuIGltbWVkaWF0ZWx5IGFmdGVyIGFsbCBkZXJlZigpIGNhbGxz
IHNpbmNlIHRoZSBub2RlIG1heSBiZSBkZWxldGVkLgogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xMDcsOCArMTA3LDggQEAgdm9pZCBBdWRpb05vZGVJbnB1dDo6ZGlzYWJsZShBdWRpb05v
ZGVPdXRwdXQqIG91dHB1dCkKICAgICBtX291dHB1dHMucmVtb3ZlKG91dHB1dCk7CiAgICAgY2hh
bmdlZE91dHB1dHMoKTsKIAotICAgIG5vZGUoKS0+cmVmKEF1ZGlvTm9kZTo6UmVmVHlwZURpc2Fi
bGVkKTsKLSAgICBub2RlKCktPmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOyAv
LyBOb3RlOiBpdCdzIGltcG9ydGFudCB0byByZXR1cm4gaW1tZWRpYXRlbHkgYWZ0ZXIgYWxsIGRl
cmVmKCkgY2FsbHMgc2luY2UgdGhlIG5vZGUgbWF5IGJlIGRlbGV0ZWQuCisgICAgLy8gUHJvcGFn
YXRlIGRpc2FibGVkIHN0YXRlIHRvIG91dHB1dHMuCisgICAgbm9kZSgpLT5kaXNhYmxlT3V0cHV0
c0lmTmVjZXNzYXJ5KCk7CiB9CiAKIHZvaWQgQXVkaW9Ob2RlSW5wdXQ6OmVuYWJsZShBdWRpb05v
ZGVPdXRwdXQqIG91dHB1dCkKQEAgLTEyNiw4ICsxMjYsOCBAQCB2b2lkIEF1ZGlvTm9kZUlucHV0
OjplbmFibGUoQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQpCiAgICAgbV9kaXNhYmxlZE91dHB1dHMu
cmVtb3ZlKG91dHB1dCk7CiAgICAgY2hhbmdlZE91dHB1dHMoKTsKIAotICAgIG5vZGUoKS0+cmVm
KEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOwotICAgIG5vZGUoKS0+ZGVyZWYoQXVkaW9O
b2RlOjpSZWZUeXBlRGlzYWJsZWQpOyAvLyBOb3RlOiBpdCdzIGltcG9ydGFudCB0byByZXR1cm4g
aW1tZWRpYXRlbHkgYWZ0ZXIgYWxsIGRlcmVmKCkgY2FsbHMgc2luY2UgdGhlIG5vZGUgbWF5IGJl
IGRlbGV0ZWQuCisgICAgLy8gUHJvcGFnYXRlIGVuYWJsZWQgc3RhdGUgdG8gb3V0cHV0cy4KKyAg
ICBub2RlKCktPmVuYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpOwogfQogCiB2b2lkIEF1ZGlvTm9k
ZUlucHV0OjpkaWRVcGRhdGUoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>