<?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>78180</bug_id>
          
          <creation_ts>2012-02-08 16:44:24 -0800</creation_ts>
          <short_desc>MathML internals for bug 52444 fix - type checking, PassRefPtr</short_desc>
          <delta_ts>2012-02-09 11:12:16 -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>MathML</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>52444</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Dave Barton">dbarton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>fred.wang</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>552625</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-02-08 16:44:24 -0800</bug_when>
    <thetext>MathML internals for bug 52444 fix - type checking, PassRefPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552637</commentid>
    <comment_count>1</comment_count>
      <attachid>126190</attachid>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-02-08 16:54:32 -0800</bug_when>
    <thetext>Created attachment 126190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552646</commentid>
    <comment_count>2</comment_count>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-02-08 17:01:22 -0800</bug_when>
    <thetext>Wait - I didn&apos;t pick up the new ChangeLog entry in my patch. Sorry, I will try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552652</commentid>
    <comment_count>3</comment_count>
      <attachid>126195</attachid>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-02-08 17:06:15 -0800</bug_when>
    <thetext>Created attachment 126195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552655</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-02-08 17:07:37 -0800</bug_when>
    <thetext>Wait - I didn&apos;t pick up the new ChangeLog entry in my patch. Sorry, I will try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552662</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-02-08 17:14:01 -0800</bug_when>
    <thetext>The second patch (at 17:06 PST) has the ChangeLog entry and can be reviewed. Thanks for your patience. I am learning (I think). :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552735</commentid>
    <comment_count>6</comment_count>
      <attachid>126195</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-08 18:39:03 -0800</bug_when>
    <thetext>Comment on attachment 126195
Patch

Attachment 126195 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11473004

New failing tests:
platform/chromium/compositing/layout-width-change.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552800</commentid>
    <comment_count>7</comment_count>
      <attachid>126195</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-08 20:19:57 -0800</bug_when>
    <thetext>Comment on attachment 126195
Patch

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

&gt; Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h:37
&gt; -    RenderMathMLUnderOver(Node* expression);
&gt; +    RenderMathMLUnderOver(Element*);

Are you sure that names like this one add no useful information?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552877</commentid>
    <comment_count>8</comment_count>
      <attachid>126195</attachid>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-02-08 22:44:45 -0800</bug_when>
    <thetext>Comment on attachment 126195
Patch

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

&gt;&gt; Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h:37
&gt;&gt; +    RenderMathMLUnderOver(Element*);
&gt; 
&gt; Are you sure that names like this one add no useful information?

In all these RenderMathML classes, the argument to the constructor is a MathML element that corresponds to that RenderMathML class. Sometimes the current (old) code calls it &quot;container&quot; or &quot;expression&quot; or even &quot;fraction&quot; (including when it&apos;s not a fraction). In this case, the argument is supposed to be an &lt;munder&gt;, &lt;mover&gt;, or &lt;munderover&gt; element. We could call the argument something like underOver, but that name equally applies to the RenderMathMLUnderOver rendering object that&apos;s being constructed. I think in reading the code, the context implies munder/mover/munderover, and the clearest thing is to call the munder/mover/munderover element &quot;element&quot;, and the rendering object that corresponds to it has some other name (&quot;this&quot; in this case). The important thing for type safety of later casts is that the argument is an Element*, not just a Node*.

I will change the argument name to &quot;expression&quot; if you insist, but it makes the code less clear to me. The RenderMathMLUnderOver object equally represents a mathematical expression. The difference is that one is a DOM element of type Element*, and the other in a rendering object of type RenderMathMLUnderOver*. So I really find the variable name &quot;element&quot; to be clearer than &quot;expression&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553247</commentid>
    <comment_count>9</comment_count>
      <attachid>126195</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-09 10:01:01 -0800</bug_when>
    <thetext>Comment on attachment 126195
Patch

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

LGTM.  Keep them coming.  This code needs lots of love.

&gt; Source/WebCore/rendering/mathml/RenderMathMLFenced.cpp:83
&gt; +PassRefPtr&lt;RenderStyle&gt; RenderMathMLFenced::makeOperatorStyle()

This should probably be renamed createOperatorStyle() (to follow the CreateRule, which the ReftPtr (and Mac OS X style docs) talk about.  That doesn&apos;t have to be today, or in this patch.

&gt; Source/WebCore/rendering/mathml/RenderMathMLOperator.cpp:48
&gt; -RenderMathMLOperator::RenderMathMLOperator(Node* container, UChar operatorChar)
&gt; -    : RenderMathMLBlock(container)
&gt; +RenderMathMLOperator::RenderMathMLOperator(Node* node, UChar operatorChar)

Odd that these took nodes to begin with, since it would never make sense for a Comment or Document node to be involved in a MathML rendering tree.  (Nodes can&apos;t even have style, so they couldn&apos;t be styled to look like mathtml..)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553344</commentid>
    <comment_count>10</comment_count>
      <attachid>126195</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 11:12:12 -0800</bug_when>
    <thetext>Comment on attachment 126195
Patch

Clearing flags on attachment: 126195

Committed r107263: &lt;http://trac.webkit.org/changeset/107263&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553345</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 11:12:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126190</attachid>
            <date>2012-02-08 16:54:32 -0800</date>
            <delta_ts>2012-02-08 17:06:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78180-20120208165430.patch</filename>
            <type>text/plain</type>
            <size>16710</size>
            <attacher name="Dave Barton">dbarton</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2Vk
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEZlbmNlZC5jcHAJKHJldmlzaW9uIDEwNzA0MikKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDQsOCArNDQsOCBAQCBlbnVtIEJyYWNlcyB7IE9wZW5pbmdCcmFjZUNoYXIgPSAweDI4LCBDCiAg
ICAgCiBzdGF0aWMgY29uc3QgZmxvYXQgZ09wZXJhdG9yUGFkZGluZyA9IDAuMWY7CiAKLVJlbmRl
ck1hdGhNTEZlbmNlZDo6UmVuZGVyTWF0aE1MRmVuY2VkKE5vZGUqIGZlbmNlZCkgCi0gICAgOiBS
ZW5kZXJNYXRoTUxSb3coZmVuY2VkKQorUmVuZGVyTWF0aE1MRmVuY2VkOjpSZW5kZXJNYXRoTUxG
ZW5jZWQoRWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlck1hdGhNTFJvdyhlbGVtZW50KQog
ICAgICwgbV9vcGVuKE9wZW5pbmdCcmFjZUNoYXIpCiAgICAgLCBtX2Nsb3NlKENsb3NpbmdCcmFj
ZUNoYXIpCiB7CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRmVuY2VkOjp1cGRh
dGVGcm9tRWxlbWUKICAgICBpZiAoY2xvc2VWYWx1ZS5sZW5ndGgoKSA+IDApCiAgICAgICAgIG1f
Y2xvc2UgPSBjbG9zZVZhbHVlWzBdOwogICAgIAotICAgIEF0b21pY1N0cmluZyBzZXBhcmF0b3Jz
ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGZlbmNlZCktPmdldEF0dHJpYnV0ZShNYXRoTUxOYW1l
czo6c2VwYXJhdG9yc0F0dHIpOworICAgIEF0b21pY1N0cmluZyBzZXBhcmF0b3JzID0gZmVuY2Vk
LT5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OnNlcGFyYXRvcnNBdHRyKTsKICAgICBpZiAoIXNl
cGFyYXRvcnMuaXNOdWxsKCkpIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBjaGFyYWN0ZXJzOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHNlcGFyYXRvcnMubGVuZ3RoKCk7
IGkrKykgewpAQCAtODAsMjIgKzgwLDIyIEBAIHZvaWQgUmVuZGVyTWF0aE1MRmVuY2VkOjp1cGRh
dGVGcm9tRWxlbWUKICAgICAgICAgbWFrZUZlbmNlcygpOwogfQogCi1SZWZQdHI8UmVuZGVyU3R5
bGU+IFJlbmRlck1hdGhNTEZlbmNlZDo6bWFrZU9wZXJhdG9yU3R5bGUoKSAKK1Bhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+IFJlbmRlck1hdGhNTEZlbmNlZDo6bWFrZU9wZXJhdG9yU3R5bGUoKQogewog
ICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7
CiAgICAgbmV3U3R5bGUtPmluaGVyaXRGcm9tKHN0eWxlKCkpOwogICAgIG5ld1N0eWxlLT5zZXRE
aXNwbGF5KElOTElORV9CTE9DSyk7CiAgICAgbmV3U3R5bGUtPnNldFBhZGRpbmdSaWdodChMZW5n
dGgoc3RhdGljX2Nhc3Q8aW50PihnT3BlcmF0b3JQYWRkaW5nICogc3R5bGUoKS0+Zm9udFNpemUo
KSksIEZpeGVkKSk7Ci0gICAgcmV0dXJuIG5ld1N0eWxlOworICAgIHJldHVybiBuZXdTdHlsZS5y
ZWxlYXNlKCk7CiB9CiAKIHZvaWQgUmVuZGVyTWF0aE1MRmVuY2VkOjptYWtlRmVuY2VzKCkKIHsK
ICAgICBSZW5kZXJPYmplY3QqIG9wZW5GZW5jZSA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVy
TWF0aE1MT3BlcmF0b3Iobm9kZSgpLCBtX29wZW4pOwotICAgIG9wZW5GZW5jZS0+c2V0U3R5bGUo
bWFrZU9wZXJhdG9yU3R5bGUoKS5yZWxlYXNlKCkpOworICAgIG9wZW5GZW5jZS0+c2V0U3R5bGUo
bWFrZU9wZXJhdG9yU3R5bGUoKSk7CiAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKG9wZW5GZW5j
ZSwgZmlyc3RDaGlsZCgpKTsKICAgICBSZW5kZXJPYmplY3QqIGNsb3NlRmVuY2UgPSBuZXcgKHJl
bmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTE9wZXJhdG9yKG5vZGUoKSwgbV9jbG9zZSk7Ci0gICAg
Y2xvc2VGZW5jZS0+c2V0U3R5bGUobWFrZU9wZXJhdG9yU3R5bGUoKS5yZWxlYXNlKCkpOworICAg
IGNsb3NlRmVuY2UtPnNldFN0eWxlKG1ha2VPcGVyYXRvclN0eWxlKCkpOwogICAgIFJlbmRlckJs
b2NrOjphZGRDaGlsZChjbG9zZUZlbmNlKTsKIH0KIApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQg
UmVuZGVyTWF0aE1MRmVuY2VkOjphZGRDaGlsZChSZW5kZXIKICAgICAgICAgICAgICAgICBzZXBh
cmF0b3IgPSAoKm1fc2VwYXJhdG9ycy5nZXQoKSlbY291bnQgLSAyXTsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIFJlbmRlck9iamVjdCogc2VwYXJhdG9yT2JqID0gbmV3IChyZW5kZXJB
cmVuYSgpKSBSZW5kZXJNYXRoTUxPcGVyYXRvcihub2RlKCksIHNlcGFyYXRvcik7Ci0gICAgICAg
ICAgICBzZXBhcmF0b3JPYmotPnNldFN0eWxlKG1ha2VPcGVyYXRvclN0eWxlKCkucmVsZWFzZSgp
KTsKKyAgICAgICAgICAgIHNlcGFyYXRvck9iai0+c2V0U3R5bGUobWFrZU9wZXJhdG9yU3R5bGUo
KSk7CiAgICAgICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQoc2VwYXJhdG9yT2JqLCBsYXN0
Q2hpbGQoKSk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgJKHJldmlzaW9uIDEwNzA0
MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2Vk
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE1ICszNCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCiBjbGFzcyBSZW5kZXJNYXRoTUxGZW5jZWQgOiBwdWJsaWMgUmVuZGVyTWF0aE1MUm93
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxGZW5jZWQoTm9kZSAqZnJhY3Rpb24pOworICAg
IFJlbmRlck1hdGhNTEZlbmNlZChFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxk
KFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKICAgICAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlck1h
dGhNTEZlbmNlZCI7IH0KIAorICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IG1ha2VPcGVyYXRv
clN0eWxlKCk7CiAgICAgdm9pZCBtYWtlRmVuY2VzKCk7Ci0gICAgUmVmUHRyPFJlbmRlclN0eWxl
PiBtYWtlT3BlcmF0b3JTdHlsZSgpOworICAgIAogICAgIFVDaGFyIG1fb3BlbjsKICAgICBVQ2hh
ciBtX2Nsb3NlOwogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX3NlcGFyYXRvcnM7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEZyYWN0aW9uLmNwcAkocmV2aXNpb24gMTA3MDQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDggKzQ2LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IGdMaW5lVGhpY2sgPSAzLmY7CiBzdGF0aWMg
Y29uc3QgZmxvYXQgZ0ZyYWN0aW9uQmFyV2lkdGggPSAwLjA1ZjsKIHN0YXRpYyBjb25zdCBmbG9h
dCBnRGVub21pbmF0b3JQYWQgPSAwLjFmOwogCi1SZW5kZXJNYXRoTUxGcmFjdGlvbjo6UmVuZGVy
TWF0aE1MRnJhY3Rpb24oRWxlbWVudCogZnJhY3Rpb24pIAotICAgIDogUmVuZGVyTWF0aE1MQmxv
Y2soZnJhY3Rpb24pCitSZW5kZXJNYXRoTUxGcmFjdGlvbjo6UmVuZGVyTWF0aE1MRnJhY3Rpb24o
RWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQpCiAgICAg
LCBtX2xpbmVUaGlja25lc3MoZ0xpbmVNZWRpdW0pCiB7CiAgICAgc2V0Q2hpbGRyZW5JbmxpbmUo
ZmFsc2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxGcmFjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAkocmV2aXNpb24gMTA3MDQyKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVy
TWF0aE1MRnJhY3Rpb24gOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVibGljOgotICAg
IFJlbmRlck1hdGhNTEZyYWN0aW9uKEVsZW1lbnQqIGZyYWN0aW9uKTsKKyAgICBSZW5kZXJNYXRo
TUxGcmFjdGlvbihFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9i
amVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgYmFzZWxp
bmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9k
ZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Q7IApA
QCAtNDQsNiArNDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJl
dHVybiAiUmVuZGVyTWF0aE1MRnJhY3Rpb24iOyB9CisgICAgCiAgICAgZmxvYXQgbV9saW5lVGhp
Y2tuZXNzOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxNYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE1hdGguY3BwCShyZXZpc2lvbiAxMDcwNDIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw4ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIE1hdGhNTE5hbWVzOwogCi1SZW5kZXJNYXRoTUxNYXRoOjpSZW5kZXJNYXRoTUxNYXRoKE5v
ZGUqIG1hdGgpCi0gICAgOiBSZW5kZXJNYXRoTUxSb3cobWF0aCkKK1JlbmRlck1hdGhNTE1hdGg6
OlJlbmRlck1hdGhNTE1hdGgoRWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlck1hdGhNTFJv
dyhlbGVtZW50KQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE1hdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguaAkocmV2aXNpb24gMTA3MDQyKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVu
ZGVyTWF0aE1MTWF0aCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxSb3cgewogcHVibGljOgotICAgIFJl
bmRlck1hdGhNTE1hdGgoTm9kZSogY29udGFpbmVyKTsKKyAgICBSZW5kZXJNYXRoTUxNYXRoKEVs
ZW1lbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxNYXRoKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAJKHJldmlzaW9u
IDEwNzA0MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
T3BlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNSArMzgsMTUgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogCi1SZW5kZXJN
YXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0b3IoTm9kZSogY29udGFpbmVyKQotICAg
IDogUmVuZGVyTWF0aE1MQmxvY2soY29udGFpbmVyKQorUmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJl
bmRlck1hdGhNTE9wZXJhdG9yKEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBSZW5kZXJNYXRoTUxC
bG9jayhlbGVtZW50KQogICAgICwgbV9zdHJldGNoSGVpZ2h0KDApCiAgICAgLCBtX29wZXJhdG9y
KDApCiB7CiB9CiAKLVJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRvcihO
b2RlKiBjb250YWluZXIsIFVDaGFyIG9wZXJhdG9yQ2hhcikKLSAgICA6IFJlbmRlck1hdGhNTEJs
b2NrKGNvbnRhaW5lcikKK1JlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRv
cihOb2RlKiBub2RlLCBVQ2hhciBvcGVyYXRvckNoYXIpCisgICAgOiBSZW5kZXJNYXRoTUxCbG9j
ayhub2RlKQogICAgICwgbV9zdHJldGNoSGVpZ2h0KDApCiAgICAgLCBtX29wZXJhdG9yKGNvbnZl
cnRIeXBoZW5NaW51c1RvTWludXNTaWduKG9wZXJhdG9yQ2hhcikpCiB7CkBAIC0xMzksNyArMTM5
LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6dXBkYXRlRnJvbUVsZQogICAgIC8vIFRo
aXMgYm9vbGVhbiBpbmRpY2F0ZXMgd2hldGhlciBzdHJldGNoaW5nIGlzIGRpc2FibGVkIHZpYSB0
aGUgbWFya3VwLgogICAgIGJvb2wgc3RyZXRjaERpc2FibGVkID0gZmFsc2U7CiAgICAgCi0gICAg
Ly8gV2UgbWFkZSBuZWVkIHRoZSBlbGVtZW50IGxhdGVyIGlmIHdlIGNhbid0IHN0cmV0Y2guCisg
ICAgLy8gV2UgbWF5IG5lZWQgdGhlIGVsZW1lbnQgbGF0ZXIgaWYgd2UgY2FuJ3Qgc3RyZXRjaC4K
ICAgICBpZiAobm9kZSgpLT5ub2RlVHlwZSgpID09IE5vZGU6OkVMRU1FTlRfTk9ERSkgewogICAg
ICAgICBpZiAoRWxlbWVudCogbW8gPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSkgewog
ICAgICAgICAgICAgQXRvbWljU3RyaW5nIHN0cmV0Y2h5QXR0ciA9IG1vLT5nZXRBdHRyaWJ1dGUo
TWF0aE1MTmFtZXM6OnN0cmV0Y2h5QXR0cik7CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBSZW5k
ZXJNYXRoTUxPcGVyYXRvcjo6dXBkYXRlRnJvbUVsZQogICAgIH0KIH0KIAotUmVmUHRyPFJlbmRl
clN0eWxlPiBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Y3JlYXRlU3RhY2thYmxlU3R5bGUoaW50IHNp
emUsIGludCB0b3BSZWxhdGl2ZSkKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlck1hdGhN
TE9wZXJhdG9yOjpjcmVhdGVTdGFja2FibGVTdHlsZShpbnQgc2l6ZSwgaW50IHRvcFJlbGF0aXZl
KQogewogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3Jl
YXRlKCk7CiAgICAgbmV3U3R5bGUtPmluaGVyaXRGcm9tKHN0eWxlKCkpOwpAQCAtMzA3LDEzICsz
MDcsMTMgQEAgUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJNYXRoTUxPcGVyYXRvcgogICAgICAg
ICBuZXdTdHlsZS0+c2V0UG9zaXRpb24oUmVsYXRpdmVQb3NpdGlvbik7CiAgICAgfQogCi0gICAg
cmV0dXJuIG5ld1N0eWxlOworICAgIHJldHVybiBuZXdTdHlsZS5yZWxlYXNlKCk7CiB9CiAKIFJl
bmRlckJsb2NrKiBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Y3JlYXRlR2x5cGgoVUNoYXIgZ2x5cGgs
IGludCBzaXplLCBpbnQgY2hhclJlbGF0aXZlLCBpbnQgdG9wUmVsYXRpdmUpCiB7CiAgICAgUmVu
ZGVyQmxvY2sqIGNvbnRhaW5lciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MQmxv
Y2sobm9kZSgpKTsKLSAgICBjb250YWluZXItPnNldFN0eWxlKGNyZWF0ZVN0YWNrYWJsZVN0eWxl
KHNpemUsIHRvcFJlbGF0aXZlKS5yZWxlYXNlKCkpOworICAgIGNvbnRhaW5lci0+c2V0U3R5bGUo
Y3JlYXRlU3RhY2thYmxlU3R5bGUoc2l6ZSwgdG9wUmVsYXRpdmUpKTsKICAgICBhZGRDaGlsZChj
b250YWluZXIpOwogICAgIFJlbmRlckJsb2NrKiBwYXJlbnQgPSBjb250YWluZXI7CiAgICAgaWYg
KGNoYXJSZWxhdGl2ZSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxPcGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAkocmV2aXNpb24gMTA3MDQyKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
IGNsYXNzIFJlbmRlck1hdGhNTE9wZXJhdG9yIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxPcGVyYXRvcihOb2RlKiBjb250YWluZXIpOwotICAg
IFJlbmRlck1hdGhNTE9wZXJhdG9yKE5vZGUqIGNvbnRhaW5lciwgVUNoYXIgb3BlcmF0b3JDaGFy
KTsKKyAgICBSZW5kZXJNYXRoTUxPcGVyYXRvcihFbGVtZW50Kik7CisgICAgUmVuZGVyTWF0aE1M
T3BlcmF0b3IoTm9kZSosIFVDaGFyIG9wZXJhdG9yQ2hhcik7CiAgICAgdmlydHVhbCBib29sIGlz
UmVuZGVyTWF0aE1MT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCB2b2lkIHN0cmV0Y2hUb0hlaWdodChpbnQgcGl4ZWxIZWlnaHQpOwogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVGcm9tRWxlbWVudCgpOyAKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgICAg
ICAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci0gICAgdmlydHVhbCBS
ZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZVN0YWNrYWJsZVN0eWxlKGludCBzaXplLCBpbnQgdG9w
UmVsYXRpdmUpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3JlYXRlU3Rh
Y2thYmxlU3R5bGUoaW50IHNpemUsIGludCB0b3BSZWxhdGl2ZSk7CiAgICAgdmlydHVhbCBSZW5k
ZXJCbG9jayogY3JlYXRlR2x5cGgoVUNoYXIgZ2x5cGgsIGludCBzaXplID0gMCwgaW50IGNoYXJS
ZWxhdGl2ZSA9IDAsIGludCB0b3BSZWxhdGl2ZSA9IDApOwogICAgIAogcHJpdmF0ZToKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxS
b290LmNwcAkocmV2aXNpb24gMTA3MDQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsOCArNjQsOCBA
QCBjb25zdCBmbG9hdCBnUmFkaWNhbExpbmVUaGlja25lc3MgPSAwLjAyCiAvLyBSYWRpY2FsIHRo
aWNrIGxpbmUgdGhpY2tuZXNzICglKQogY29uc3QgZmxvYXQgZ1JhZGljYWxUaGlja0xpbmVUaGlj
a25lc3MgPSAwLjFmOwogICAgIAotUmVuZGVyTWF0aE1MUm9vdDo6UmVuZGVyTWF0aE1MUm9vdChO
b2RlICpleHByZXNzaW9uKSAKLTogUmVuZGVyTWF0aE1MQmxvY2soZXhwcmVzc2lvbikgCitSZW5k
ZXJNYXRoTUxSb290OjpSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBS
ZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50KQogewogfQogCkBAIC0yMzIsNyArMjMyLDggQEAgdm9p
ZCBSZW5kZXJNYXRoTUxSb290OjpsYXlvdXQoKQogICAgIAogICAgIExheW91dFVuaXQgaW5kZXhT
aGlmdCA9IGluZGV4Qm94LT5vZmZzZXRXaWR0aCgpICsgdG9wU3RhcnRTaGlmdDsKICAgICBMYXlv
dXRVbml0IHJhZGljYWxIZWlnaHQgPSBzdGF0aWNfY2FzdDxMYXlvdXRVbml0PigoMSAtIGdSYWRp
Y2FsVG9wTGVmdFBvaW50WVBvcykgKiBtYXhIZWlnaHQpOwotICAgIExheW91dFVuaXQgcm9vdE1h
cmdpblRvcCA9IHJhZGljYWxIZWlnaHQgKyBzdHlsZSgpLT5wYWRkaW5nQm90dG9tKCkudmFsdWUo
KSArIGluZGV4Qm94LT5vZmZzZXRIZWlnaHQoKSAtIChtYXhIZWlnaHQgKyBzdGF0aWNfY2FzdDxM
YXlvdXRVbml0PihnUm9vdFBhZGRpbmcgKiBzdHlsZSgpLT5mb250U2l6ZSgpKSk7CisgICAgTGF5
b3V0VW5pdCByb290TWFyZ2luVG9wID0gcmFkaWNhbEhlaWdodCArIHN0eWxlKCktPnBhZGRpbmdC
b3R0b20oKS52YWx1ZSgpICsgaW5kZXhCb3gtPm9mZnNldEhlaWdodCgpCisgICAgICAgIC0gKG1h
eEhlaWdodCArIHN0YXRpY19jYXN0PExheW91dFVuaXQ+KGdSb290UGFkZGluZyAqIHN0eWxlKCkt
PmZvbnRTaXplKCkpKTsKICAgICAKICAgICBzdHlsZSgpLT5zZXRQYWRkaW5nTGVmdChMZW5ndGgo
aW5kZXhTaGlmdCwgRml4ZWQpKTsKICAgICBpZiAocm9vdE1hcmdpblRvcCA+IDApCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3Qu
aAkocmV2aXNpb24gMTA3MDQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MUm9vdCA6IHB1YmxpYyBSZW5k
ZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MUm9vdChOb2RlKiBmcmFj
dGlvbik7CisgICAgUmVuZGVyTWF0aE1MUm9vdChFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2b2lk
IGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQg
PSAwKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKTsKIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUm93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAJKHJldmlzaW9uIDEwNzA0MikKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsOCArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBNYXRoTUxOYW1lczsKIAotUmVuZGVyTWF0aE1MUm93OjpSZW5kZXJNYXRoTUxSb3coTm9k
ZSogcm93KQotICAgIDogUmVuZGVyTWF0aE1MQmxvY2socm93KQorUmVuZGVyTWF0aE1MUm93OjpS
ZW5kZXJNYXRoTUxSb3coRWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlck1hdGhNTEJsb2Nr
KGVsZW1lbnQpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUm93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAkocmV2aXNpb24gMTA3MDQyKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBSZW5kZXJN
YXRoTUxSb3cgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVibGljOgotICAgIFJlbmRl
ck1hdGhNTFJvdyhOb2RlKiBjb250YWluZXIpOworICAgIFJlbmRlck1hdGhNTFJvdyhFbGVtZW50
Kik7CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MUm93KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZpcnR1YWwgaW50IG5vbk9wZXJhdG9ySGVpZ2h0KCkgY29uc3Q7CiAgICAg
dmlydHVhbCBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZp
cnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9u
Q29udGFpbmluZ0xpbmUpIGNvbnN0OyAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmNwcAkocmV2
aXNpb24gMTA3MDQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTcXVhcmVSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsOCArNjEsOCBAQCBjb25z
dCBmbG9hdCBnUmFkaWNhbExpbmVUaGlja25lc3MgPSAwLjAyCiAvLyBSYWRpY2FsIHRoaWNrIGxp
bmUgdGhpY2tuZXNzICglKQogY29uc3QgZmxvYXQgZ1JhZGljYWxUaGlja0xpbmVUaGlja25lc3Mg
PSAwLjFmOwogICAgIAotUmVuZGVyTWF0aE1MU3F1YXJlUm9vdDo6UmVuZGVyTWF0aE1MU3F1YXJl
Um9vdChOb2RlICpleHByZXNzaW9uKSAKLSAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGV4cHJlc3Np
b24pIAorUmVuZGVyTWF0aE1MU3F1YXJlUm9vdDo6UmVuZGVyTWF0aE1MU3F1YXJlUm9vdChFbGVt
ZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCkKIHsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVS
b290LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTcXVhcmVSb290LmgJKHJldmlzaW9uIDEwNzA0MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRl
ck1hdGhNTFNxdWFyZVJvb3QgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVibGljOgot
ICAgIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QoTm9kZSogZnJhY3Rpb24pOworICAgIFJlbmRlck1h
dGhNTFNxdWFyZVJvb3QoRWxlbWVudCopOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU3ViU3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5jcHAJKHJldmlzaW9uIDEwNzA0MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3ViU3VwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTYsNyArNTYsNiBAQCBSZW5kZXJNYXRoTUxTdWJTdXA6OlJlbmRlck1hdGhNTFN1
YlN1cChFCiAKIHZvaWQgUmVuZGVyTWF0aE1MU3ViU3VwOjphZGRDaGlsZChSZW5kZXJPYmplY3Qq
IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQogewotICAgIAogICAgIC8vIE5vdGU6
IFRoZSBSZW5kZXJNYXRoTUxCbG9jayBvbmx5IGFsbG93cyBlbGVtZW50IGNoaWxkcmVuIHRvIGJl
IGFkZGVkLgogICAgIEVsZW1lbnQqIGNoaWxkRWxlbWVudCA9IHRvRWxlbWVudChjaGlsZC0+bm9k
ZSgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxTdWJTdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFN1YlN1cC5oCShyZXZpc2lvbiAxMDcwNDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRlck1h
dGhNTFN1YlN1cCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVyTWF0aE1MU3ViU3VwKEVsZW1lbnQqIGZyYWN0aW9uKTsKKyAgICBSZW5kZXJNYXRoTUxTdWJT
dXAoRWxlbWVudCopOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNo
aWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CiAgICAgdmlydHVhbCBib29sIGhh
c0Jhc2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBpbnQgbm9uT3BlcmF0
b3JIZWlnaHQoKSBjb25zdDsKQEAgLTU3LDQgKzU3LDMgQEAgcHJpdmF0ZToKICNlbmRpZiAvLyBF
TkFCTEUoTUFUSE1MKQogCiAjZW5kaWYgLy8gUmVuZGVyTWF0aE1MU3ViU3VwX2gKLQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmNwcAkocmV2aXNpb24gMTA3MDQyKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCwxMCArMzgsOSBAQCB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAgICAgCiBzdGF0
aWMgY29uc3QgZG91YmxlIGdPdmVyU3BhY2luZ0FkanVzdG1lbnQgPSAwLjU7CiAgICAgCi1SZW5k
ZXJNYXRoTUxVbmRlck92ZXI6OlJlbmRlck1hdGhNTFVuZGVyT3ZlcihOb2RlKiBleHByZXNzaW9u
KSAKLSAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGV4cHJlc3Npb24pIAorUmVuZGVyTWF0aE1MVW5k
ZXJPdmVyOjpSZW5kZXJNYXRoTUxVbmRlck92ZXIoRWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJl
bmRlck1hdGhNTEJsb2NrKGVsZW1lbnQpCiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihleHByZXNzaW9uKTsKICAgICAvLyBEZXRlcm1pbmUgd2hhdCBraW5k
IG9mIHVuZGVyL292ZXIgZXhwcmVzc2lvbiB3ZSBoYXZlIGJ5IGVsZW1lbnQgbmFtZQogICAgIAog
ICAgIGlmIChlbGVtZW50LT5oYXNMb2NhbE5hbWUoTWF0aE1MTmFtZXM6Om11bmRlclRhZykpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVW5kZXJPdmVyLmgJKHJldmlzaW9uIDEwNzA0MikKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0
aE1MVW5kZXJPdmVyIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKLSAgICBS
ZW5kZXJNYXRoTUxVbmRlck92ZXIoTm9kZSogZXhwcmVzc2lvbik7CisgICAgUmVuZGVyTWF0aE1M
VW5kZXJPdmVyKEVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2Jq
ZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwogICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzQmFzZSgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126195</attachid>
            <date>2012-02-08 17:06:15 -0800</date>
            <delta_ts>2012-02-09 11:12:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78180-20120208170614.patch</filename>
            <type>text/plain</type>
            <size>19805</size>
            <attacher name="Dave Barton">dbarton</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzE1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDEyLTAyLTA4ICBEYXZpZCBC
YXJ0b24gIDxkYmFydG9uQG1hdGhzY3JpYmUuY29tPgorCisgICAgICAgIE1hdGhNTCBpbnRlcm5h
bHMgZm9yIGJ1ZyA1MjQ0NCBmaXggLSB0eXBlIGNoZWNraW5nLCBQYXNzUmVmUHRyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODE4MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG5vZGUoKSkgaXMgZG9uZSBpbiBtZXRob2RzIGluIFJlbmRlck1hdGhNTEZl
bmNlZC5jcHAgYW5kIGEgZmV3CisgICAgICAgIG90aGVyIGZpbGVzLiBJdCBpcyBtb3JlIHR5cGUt
c2FmZSBpZiB0aGUgUmVuZGVyTWF0aE1MRmVuY2VkKCkgb3Igb3RoZXIgY29uc3RydWN0b3Igb25s
eQorICAgICAgICBhY2NlcHRzIGFuIEVsZW1lbnQqLCBub3QgYSBOb2RlKi4gQWxzbyBhIGNvdXBs
ZSBmdW5jdGlvbnMgd2VyZSBjaGFuZ2VkIHRvIHJldHVybiBhCisgICAgICAgIFBhc3NSZWZQdHIg
aW5zdGVhZCBvZiBhIFJlZlB0ci4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6OlJlbmRlck1hdGhNTEZlbmNlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTEZlbmNlZDo6bWFrZU9wZXJhdG9yU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRmVuY2VkOjptYWtlRmVuY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTEZlbmNlZDo6YWRkQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmg6CisgICAgICAgIChSZW5kZXJNYXRoTUxGZW5j
ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OlJlbmRlck1hdGhNTEZy
YWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9u
Lmg6CisgICAgICAgIChSZW5kZXJNYXRoTUxGcmFjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTE1hdGg6OlJlbmRlck1hdGhNTE1hdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MTWF0aC5oOgorICAgICAgICAoUmVuZGVyTWF0aE1MTWF0aCk6CisgICAgICAg
ICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnVwZGF0ZUZyb21FbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpjcmVhdGVTdGFja2FibGVT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Y3JlYXRlR2x5
cGgpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaDoK
KyAgICAgICAgKFJlbmRlck1hdGhNTE9wZXJhdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
Um9vdDo6UmVuZGVyTWF0aE1MUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxS
b290OjpsYXlvdXQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9v
dC5oOgorICAgICAgICAoUmVuZGVyTWF0aE1MUm9vdCk6CisgICAgICAgICogcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
Um93OjpSZW5kZXJNYXRoTUxSb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MUm93Lmg6CisgICAgICAgIChSZW5kZXJNYXRoTUxSb3cpOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuaDoKKyAgICAgICAg
KFJlbmRlck1hdGhNTFNxdWFyZVJvb3QpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MU3ViU3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFN1YlN1
cDo6YWRkQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3Vi
U3VwLmg6CisgICAgICAgIChSZW5kZXJNYXRoTUxTdWJTdXApOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTFVuZGVyT3Zlcjo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oOgorICAgICAgICAoUmVuZGVy
TWF0aE1MVW5kZXJPdmVyKToKKwogMjAxMi0wMi0wOCAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBTaW1wbGlmeSBhbmQgY29ycmVjdCBtdXRhdGlvbiBkZWxpdmVy
eSB0aW1pbmcgZm9yIEpTQwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxGZW5jZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAkocmV2aXNpb24gMTA3MDQyKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw4IEBAIGVudW0gQnJhY2VzIHsgT3BlbmluZ0JyYWNl
Q2hhciA9IDB4MjgsIEMKICAgICAKIHN0YXRpYyBjb25zdCBmbG9hdCBnT3BlcmF0b3JQYWRkaW5n
ID0gMC4xZjsKIAotUmVuZGVyTWF0aE1MRmVuY2VkOjpSZW5kZXJNYXRoTUxGZW5jZWQoTm9kZSog
ZmVuY2VkKSAKLSAgICA6IFJlbmRlck1hdGhNTFJvdyhmZW5jZWQpCitSZW5kZXJNYXRoTUxGZW5j
ZWQ6OlJlbmRlck1hdGhNTEZlbmNlZChFbGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyTWF0
aE1MUm93KGVsZW1lbnQpCiAgICAgLCBtX29wZW4oT3BlbmluZ0JyYWNlQ2hhcikKICAgICAsIG1f
Y2xvc2UoQ2xvc2luZ0JyYWNlQ2hhcikKIHsKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBSZW5kZXJN
YXRoTUxGZW5jZWQ6OnVwZGF0ZUZyb21FbGVtZQogICAgIGlmIChjbG9zZVZhbHVlLmxlbmd0aCgp
ID4gMCkKICAgICAgICAgbV9jbG9zZSA9IGNsb3NlVmFsdWVbMF07CiAgICAgCi0gICAgQXRvbWlj
U3RyaW5nIHNlcGFyYXRvcnMgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZmVuY2VkKS0+Z2V0QXR0
cmlidXRlKE1hdGhNTE5hbWVzOjpzZXBhcmF0b3JzQXR0cik7CisgICAgQXRvbWljU3RyaW5nIHNl
cGFyYXRvcnMgPSBmZW5jZWQtPmdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6c2VwYXJhdG9yc0F0
dHIpOwogICAgIGlmICghc2VwYXJhdG9ycy5pc051bGwoKSkgewogICAgICAgICBTdHJpbmdCdWls
ZGVyIGNoYXJhY3RlcnM7CiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc2Vw
YXJhdG9ycy5sZW5ndGgoKTsgaSsrKSB7CkBAIC04MCwyMiArODAsMjIgQEAgdm9pZCBSZW5kZXJN
YXRoTUxGZW5jZWQ6OnVwZGF0ZUZyb21FbGVtZQogICAgICAgICBtYWtlRmVuY2VzKCk7CiB9CiAK
LVJlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVyTWF0aE1MRmVuY2VkOjptYWtlT3BlcmF0b3JTdHls
ZSgpIAorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVyTWF0aE1MRmVuY2VkOjptYWtlT3Bl
cmF0b3JTdHlsZSgpCiB7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRl
clN0eWxlOjpjcmVhdGUoKTsKICAgICBuZXdTdHlsZS0+aW5oZXJpdEZyb20oc3R5bGUoKSk7CiAg
ICAgbmV3U3R5bGUtPnNldERpc3BsYXkoSU5MSU5FX0JMT0NLKTsKICAgICBuZXdTdHlsZS0+c2V0
UGFkZGluZ1JpZ2h0KExlbmd0aChzdGF0aWNfY2FzdDxpbnQ+KGdPcGVyYXRvclBhZGRpbmcgKiBz
dHlsZSgpLT5mb250U2l6ZSgpKSwgRml4ZWQpKTsKLSAgICByZXR1cm4gbmV3U3R5bGU7CisgICAg
cmV0dXJuIG5ld1N0eWxlLnJlbGVhc2UoKTsKIH0KIAogdm9pZCBSZW5kZXJNYXRoTUxGZW5jZWQ6
Om1ha2VGZW5jZXMoKQogewogICAgIFJlbmRlck9iamVjdCogb3BlbkZlbmNlID0gbmV3IChyZW5k
ZXJBcmVuYSgpKSBSZW5kZXJNYXRoTUxPcGVyYXRvcihub2RlKCksIG1fb3Blbik7Ci0gICAgb3Bl
bkZlbmNlLT5zZXRTdHlsZShtYWtlT3BlcmF0b3JTdHlsZSgpLnJlbGVhc2UoKSk7CisgICAgb3Bl
bkZlbmNlLT5zZXRTdHlsZShtYWtlT3BlcmF0b3JTdHlsZSgpKTsKICAgICBSZW5kZXJCbG9jazo6
YWRkQ2hpbGQob3BlbkZlbmNlLCBmaXJzdENoaWxkKCkpOwogICAgIFJlbmRlck9iamVjdCogY2xv
c2VGZW5jZSA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MT3BlcmF0b3Iobm9kZSgp
LCBtX2Nsb3NlKTsKLSAgICBjbG9zZUZlbmNlLT5zZXRTdHlsZShtYWtlT3BlcmF0b3JTdHlsZSgp
LnJlbGVhc2UoKSk7CisgICAgY2xvc2VGZW5jZS0+c2V0U3R5bGUobWFrZU9wZXJhdG9yU3R5bGUo
KSk7CiAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKGNsb3NlRmVuY2UpOwogfQogCkBAIC0xMjIs
NyArMTIyLDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxGZW5jZWQ6OmFkZENoaWxkKFJlbmRlcgogICAg
ICAgICAgICAgICAgIHNlcGFyYXRvciA9ICgqbV9zZXBhcmF0b3JzLmdldCgpKVtjb3VudCAtIDJd
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBzZXBhcmF0b3JP
YmogPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTE9wZXJhdG9yKG5vZGUoKSwgc2Vw
YXJhdG9yKTsKLSAgICAgICAgICAgIHNlcGFyYXRvck9iai0+c2V0U3R5bGUobWFrZU9wZXJhdG9y
U3R5bGUoKS5yZWxlYXNlKCkpOworICAgICAgICAgICAgc2VwYXJhdG9yT2JqLT5zZXRTdHlsZSht
YWtlT3BlcmF0b3JTdHlsZSgpKTsKICAgICAgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChz
ZXBhcmF0b3JPYmosIGxhc3RDaGlsZCgpKTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQu
aAkocmV2aXNpb24gMTA3MDQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxGZW5jZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTUgKzM0LDE2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRlck1hdGhNTEZlbmNlZCA6IHB1Ymxp
YyBSZW5kZXJNYXRoTUxSb3cgewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTEZlbmNlZChOb2Rl
ICpmcmFjdGlvbik7CisgICAgUmVuZGVyTWF0aE1MRmVuY2VkKEVsZW1lbnQqKTsKICAgICB2aXJ0
dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZv
cmVDaGlsZCA9IDApOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwogICAg
IAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7
IHJldHVybiAiUmVuZGVyTWF0aE1MRmVuY2VkIjsgfQogCisgICAgUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gbWFrZU9wZXJhdG9yU3R5bGUoKTsKICAgICB2b2lkIG1ha2VGZW5jZXMoKTsKLSAgICBS
ZWZQdHI8UmVuZGVyU3R5bGU+IG1ha2VPcGVyYXRvclN0eWxlKCk7CisgICAgCiAgICAgVUNoYXIg
bV9vcGVuOwogICAgIFVDaGFyIG1fY2xvc2U7CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1fc2Vw
YXJhdG9yczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MRnJhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCShyZXZpc2lvbiAxMDcwNDIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgZ0xpbmVUaGlj
ayA9IDMuZjsKIHN0YXRpYyBjb25zdCBmbG9hdCBnRnJhY3Rpb25CYXJXaWR0aCA9IDAuMDVmOwog
c3RhdGljIGNvbnN0IGZsb2F0IGdEZW5vbWluYXRvclBhZCA9IDAuMWY7CiAKLVJlbmRlck1hdGhN
TEZyYWN0aW9uOjpSZW5kZXJNYXRoTUxGcmFjdGlvbihFbGVtZW50KiBmcmFjdGlvbikgCi0gICAg
OiBSZW5kZXJNYXRoTUxCbG9jayhmcmFjdGlvbikKK1JlbmRlck1hdGhNTEZyYWN0aW9uOjpSZW5k
ZXJNYXRoTUxGcmFjdGlvbihFbGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyTWF0aE1MQmxv
Y2soZWxlbWVudCkKICAgICAsIG1fbGluZVRoaWNrbmVzcyhnTGluZU1lZGl1bSkKIHsKICAgICBz
ZXRDaGlsZHJlbklubGluZShmYWxzZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCShyZXZpc2lvbiAxMDcw
NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBSZW5kZXJNYXRoTUxGcmFjdGlvbiA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9j
ayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MRnJhY3Rpb24oRWxlbWVudCogZnJhY3Rpb24p
OworICAgIFJlbmRlck1hdGhNTEZyYWN0aW9uKEVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQg
YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9
IDApOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwogICAgIHZpcnR1YWwg
TGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUs
IExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5p
bmdMaW5lKSBjb25zdDsgCkBAIC00NCw2ICs0NCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCk7CiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJNYXRoTUxGcmFjdGlvbiI7IH0KKyAgICAKICAg
ICBmbG9hdCBtX2xpbmVUaGlja25lc3M7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5jcHAJKHJldmlzaW9uIDEw
NzA0MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0
aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAKLVJlbmRlck1hdGhNTE1hdGg6OlJl
bmRlck1hdGhNTE1hdGgoTm9kZSogbWF0aCkKLSAgICA6IFJlbmRlck1hdGhNTFJvdyhtYXRoKQor
UmVuZGVyTWF0aE1MTWF0aDo6UmVuZGVyTWF0aE1MTWF0aChFbGVtZW50KiBlbGVtZW50KQorICAg
IDogUmVuZGVyTWF0aE1MUm93KGVsZW1lbnQpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oCShyZXZpc2lvbiAx
MDcwNDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1h
dGguaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCiBjbGFzcyBSZW5kZXJNYXRoTUxNYXRoIDogcHVibGljIFJlbmRlck1hdGhNTFJvdyB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MTWF0aChOb2RlKiBjb250YWluZXIpOworICAgIFJl
bmRlck1hdGhNTE1hdGgoRWxlbWVudCopOwogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhN
TE1hdGgoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmNwcAkocmV2aXNpb24gMTA3MDQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE1ICsz
OCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgTWF0aE1M
TmFtZXM7CiAKLVJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRvcihOb2Rl
KiBjb250YWluZXIpCi0gICAgOiBSZW5kZXJNYXRoTUxCbG9jayhjb250YWluZXIpCitSZW5kZXJN
YXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0b3IoRWxlbWVudCogZWxlbWVudCkKKyAg
ICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQpCiAgICAgLCBtX3N0cmV0Y2hIZWlnaHQoMCkK
ICAgICAsIG1fb3BlcmF0b3IoMCkKIHsKIH0KIAotUmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRl
ck1hdGhNTE9wZXJhdG9yKE5vZGUqIGNvbnRhaW5lciwgVUNoYXIgb3BlcmF0b3JDaGFyKQotICAg
IDogUmVuZGVyTWF0aE1MQmxvY2soY29udGFpbmVyKQorUmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJl
bmRlck1hdGhNTE9wZXJhdG9yKE5vZGUqIG5vZGUsIFVDaGFyIG9wZXJhdG9yQ2hhcikKKyAgICA6
IFJlbmRlck1hdGhNTEJsb2NrKG5vZGUpCiAgICAgLCBtX3N0cmV0Y2hIZWlnaHQoMCkKICAgICAs
IG1fb3BlcmF0b3IoY29udmVydEh5cGhlbk1pbnVzVG9NaW51c1NpZ24ob3BlcmF0b3JDaGFyKSkK
IHsKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVG
cm9tRWxlCiAgICAgLy8gVGhpcyBib29sZWFuIGluZGljYXRlcyB3aGV0aGVyIHN0cmV0Y2hpbmcg
aXMgZGlzYWJsZWQgdmlhIHRoZSBtYXJrdXAuCiAgICAgYm9vbCBzdHJldGNoRGlzYWJsZWQgPSBm
YWxzZTsKICAgICAKLSAgICAvLyBXZSBtYWRlIG5lZWQgdGhlIGVsZW1lbnQgbGF0ZXIgaWYgd2Ug
Y2FuJ3Qgc3RyZXRjaC4KKyAgICAvLyBXZSBtYXkgbmVlZCB0aGUgZWxlbWVudCBsYXRlciBpZiB3
ZSBjYW4ndCBzdHJldGNoLgogICAgIGlmIChub2RlKCktPm5vZGVUeXBlKCkgPT0gTm9kZTo6RUxF
TUVOVF9OT0RFKSB7CiAgICAgICAgIGlmIChFbGVtZW50KiBtbyA9IHN0YXRpY19jYXN0PEVsZW1l
bnQqPihub2RlKCkpKSB7CiAgICAgICAgICAgICBBdG9taWNTdHJpbmcgc3RyZXRjaHlBdHRyID0g
bW8tPmdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6c3RyZXRjaHlBdHRyKTsKQEAgLTI4Miw3ICsy
ODIsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVGcm9tRWxlCiAgICAgfQog
fQogCi1SZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpjcmVhdGVTdGFj
a2FibGVTdHlsZShpbnQgc2l6ZSwgaW50IHRvcFJlbGF0aXZlKQorUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmNyZWF0ZVN0YWNrYWJsZVN0eWxlKGludCBzaXpl
LCBpbnQgdG9wUmVsYXRpdmUpCiB7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9
IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKICAgICBuZXdTdHlsZS0+aW5oZXJpdEZyb20oc3R5bGUo
KSk7CkBAIC0zMDcsMTMgKzMwNywxMyBAQCBSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlck1hdGhN
TE9wZXJhdG9yCiAgICAgICAgIG5ld1N0eWxlLT5zZXRQb3NpdGlvbihSZWxhdGl2ZVBvc2l0aW9u
KTsKICAgICB9CiAKLSAgICByZXR1cm4gbmV3U3R5bGU7CisgICAgcmV0dXJuIG5ld1N0eWxlLnJl
bGVhc2UoKTsKIH0KIAogUmVuZGVyQmxvY2sqIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpjcmVhdGVH
bHlwaChVQ2hhciBnbHlwaCwgaW50IHNpemUsIGludCBjaGFyUmVsYXRpdmUsIGludCB0b3BSZWxh
dGl2ZSkKIHsKICAgICBSZW5kZXJCbG9jayogY29udGFpbmVyID0gbmV3IChyZW5kZXJBcmVuYSgp
KSBSZW5kZXJNYXRoTUxCbG9jayhub2RlKCkpOwotICAgIGNvbnRhaW5lci0+c2V0U3R5bGUoY3Jl
YXRlU3RhY2thYmxlU3R5bGUoc2l6ZSwgdG9wUmVsYXRpdmUpLnJlbGVhc2UoKSk7CisgICAgY29u
dGFpbmVyLT5zZXRTdHlsZShjcmVhdGVTdGFja2FibGVTdHlsZShzaXplLCB0b3BSZWxhdGl2ZSkp
OwogICAgIGFkZENoaWxkKGNvbnRhaW5lcik7CiAgICAgUmVuZGVyQmxvY2sqIHBhcmVudCA9IGNv
bnRhaW5lcjsKICAgICBpZiAoY2hhclJlbGF0aXZlKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCShyZXZp
c2lvbiAxMDcwNDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE9wZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MT3BlcmF0b3IgOiBwdWJsaWMgUmVu
ZGVyTWF0aE1MQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKE5vZGUq
IGNvbnRhaW5lcik7Ci0gICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IoTm9kZSogY29udGFpbmVyLCBV
Q2hhciBvcGVyYXRvckNoYXIpOworICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKEVsZW1lbnQqKTsK
KyAgICBSZW5kZXJNYXRoTUxPcGVyYXRvcihOb2RlKiwgVUNoYXIgb3BlcmF0b3JDaGFyKTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RyZXRjaFRvSGVpZ2h0KGludCBwaXhlbEhlaWdodCk7
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7IApAQCAtNDUsNyArNDUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxSZW5kZXJTdHlsZT4gY3JlYXRlU3RhY2thYmxlU3R5bGUo
aW50IHNpemUsIGludCB0b3BSZWxhdGl2ZSk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBjcmVhdGVTdGFja2FibGVTdHlsZShpbnQgc2l6ZSwgaW50IHRvcFJlbGF0aXZlKTsK
ICAgICB2aXJ0dWFsIFJlbmRlckJsb2NrKiBjcmVhdGVHbHlwaChVQ2hhciBnbHlwaCwgaW50IHNp
emUgPSAwLCBpbnQgY2hhclJlbGF0aXZlID0gMCwgaW50IHRvcFJlbGF0aXZlID0gMCk7CiAgICAg
CiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCShyZXZpc2lvbiAxMDcwNDIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NCw4ICs2NCw4IEBAIGNvbnN0IGZsb2F0IGdSYWRpY2FsTGluZVRoaWNrbmVzcyA9IDAu
MDIKIC8vIFJhZGljYWwgdGhpY2sgbGluZSB0aGlja25lc3MgKCUpCiBjb25zdCBmbG9hdCBnUmFk
aWNhbFRoaWNrTGluZVRoaWNrbmVzcyA9IDAuMWY7CiAgICAgCi1SZW5kZXJNYXRoTUxSb290OjpS
ZW5kZXJNYXRoTUxSb290KE5vZGUgKmV4cHJlc3Npb24pIAotOiBSZW5kZXJNYXRoTUxCbG9jayhl
eHByZXNzaW9uKSAKK1JlbmRlck1hdGhNTFJvb3Q6OlJlbmRlck1hdGhNTFJvb3QoRWxlbWVudCog
ZWxlbWVudCkKKyAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQpCiB7CiB9CiAKQEAgLTIz
Miw3ICsyMzIsOCBAQCB2b2lkIFJlbmRlck1hdGhNTFJvb3Q6OmxheW91dCgpCiAgICAgCiAgICAg
TGF5b3V0VW5pdCBpbmRleFNoaWZ0ID0gaW5kZXhCb3gtPm9mZnNldFdpZHRoKCkgKyB0b3BTdGFy
dFNoaWZ0OwogICAgIExheW91dFVuaXQgcmFkaWNhbEhlaWdodCA9IHN0YXRpY19jYXN0PExheW91
dFVuaXQ+KCgxIC0gZ1JhZGljYWxUb3BMZWZ0UG9pbnRZUG9zKSAqIG1heEhlaWdodCk7Ci0gICAg
TGF5b3V0VW5pdCByb290TWFyZ2luVG9wID0gcmFkaWNhbEhlaWdodCArIHN0eWxlKCktPnBhZGRp
bmdCb3R0b20oKS52YWx1ZSgpICsgaW5kZXhCb3gtPm9mZnNldEhlaWdodCgpIC0gKG1heEhlaWdo
dCArIHN0YXRpY19jYXN0PExheW91dFVuaXQ+KGdSb290UGFkZGluZyAqIHN0eWxlKCktPmZvbnRT
aXplKCkpKTsKKyAgICBMYXlvdXRVbml0IHJvb3RNYXJnaW5Ub3AgPSByYWRpY2FsSGVpZ2h0ICsg
c3R5bGUoKS0+cGFkZGluZ0JvdHRvbSgpLnZhbHVlKCkgKyBpbmRleEJveC0+b2Zmc2V0SGVpZ2h0
KCkKKyAgICAgICAgLSAobWF4SGVpZ2h0ICsgc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oZ1Jvb3RQ
YWRkaW5nICogc3R5bGUoKS0+Zm9udFNpemUoKSkpOwogICAgIAogICAgIHN0eWxlKCktPnNldFBh
ZGRpbmdMZWZ0KExlbmd0aChpbmRleFNoaWZ0LCBGaXhlZCkpOwogICAgIGlmIChyb290TWFyZ2lu
VG9wID4gMCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUm9vdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUm9vdC5oCShyZXZpc2lvbiAxMDcwNDIpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBSZW5kZXJNYXRoTUxS
b290IDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRo
TUxSb290KE5vZGUqIGZyYWN0aW9uKTsKKyAgICBSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVDaGlsZCA9IDApOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8m
LCBjb25zdCBMYXlvdXRQb2ludCYpOwogcHJvdGVjdGVkOgpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAkocmV2aXNpb24g
MTA3MDQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxS
b3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogCi1SZW5kZXJNYXRoTUxSb3c6OlJl
bmRlck1hdGhNTFJvdyhOb2RlKiByb3cpCi0gICAgOiBSZW5kZXJNYXRoTUxCbG9jayhyb3cpCitS
ZW5kZXJNYXRoTUxSb3c6OlJlbmRlck1hdGhNTFJvdyhFbGVtZW50KiBlbGVtZW50KQorICAgIDog
UmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCShyZXZpc2lvbiAxMDcw
NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAKIGNsYXNzIFJlbmRlck1hdGhNTFJvdyA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBw
dWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MUm93KE5vZGUqIGNvbnRhaW5lcik7CisgICAgUmVuZGVy
TWF0aE1MUm93KEVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxSb3co
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBpbnQgbm9uT3BlcmF0b3JIZWln
aHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250
QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9u
TW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Q7ICAgIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNx
dWFyZVJvb3QuY3BwCShyZXZpc2lvbiAxMDcwNDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MSw4ICs2MSw4IEBAIGNvbnN0IGZsb2F0IGdSYWRpY2FsTGluZVRoaWNrbmVzcyA9IDAuMDIKIC8v
IFJhZGljYWwgdGhpY2sgbGluZSB0aGlja25lc3MgKCUpCiBjb25zdCBmbG9hdCBnUmFkaWNhbFRo
aWNrTGluZVRoaWNrbmVzcyA9IDAuMWY7CiAgICAgCi1SZW5kZXJNYXRoTUxTcXVhcmVSb290OjpS
ZW5kZXJNYXRoTUxTcXVhcmVSb290KE5vZGUgKmV4cHJlc3Npb24pIAotICAgIDogUmVuZGVyTWF0
aE1MQmxvY2soZXhwcmVzc2lvbikgCitSZW5kZXJNYXRoTUxTcXVhcmVSb290OjpSZW5kZXJNYXRo
TUxTcXVhcmVSb290KEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhl
bGVtZW50KQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFNxdWFyZVJvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuaAkocmV2aXNpb24gMTA3MDQyKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MU3F1YXJlUm9vdCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxC
bG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MU3F1YXJlUm9vdChOb2RlKiBmcmFjdGlv
bik7CisgICAgUmVuZGVyTWF0aE1MU3F1YXJlUm9vdChFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2
b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxTdWJTdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3ViU3VwLmNwcAkocmV2aXNpb24gMTA3
MDQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTdWJT
dXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw2IEBAIFJlbmRlck1hdGhNTFN1YlN1
cDo6UmVuZGVyTWF0aE1MU3ViU3VwKEUKIAogdm9pZCBSZW5kZXJNYXRoTUxTdWJTdXA6OmFkZENo
aWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiB7Ci0g
ICAgCiAgICAgLy8gTm90ZTogVGhlIFJlbmRlck1hdGhNTEJsb2NrIG9ubHkgYWxsb3dzIGVsZW1l
bnQgY2hpbGRyZW4gdG8gYmUgYWRkZWQuCiAgICAgRWxlbWVudCogY2hpbGRFbGVtZW50ID0gdG9F
bGVtZW50KGNoaWxkLT5ub2RlKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3ViU3VwLmgJKHJldmlzaW9uIDEwNzA0MikK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3ViU3VwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IAogY2xhc3MgUmVuZGVyTWF0aE1MU3ViU3VwIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxTdWJTdXAoRWxlbWVudCogZnJhY3Rpb24pOworICAg
IFJlbmRlck1hdGhNTFN1YlN1cChFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxk
KFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKICAg
ICB2aXJ0dWFsIGJvb2wgaGFzQmFzZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIGludCBub25PcGVyYXRvckhlaWdodCgpIGNvbnN0OwpAQCAtNTcsNCArNTcsMyBAQCBwcml2
YXRlOgogI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCiAKICNlbmRpZiAvLyBSZW5kZXJNYXRoTUxT
dWJTdXBfaAotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFVuZGVyT3Zlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCShyZXZpc2lvbiAxMDcwNDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxO
YW1lczsKICAgICAKIHN0YXRpYyBjb25zdCBkb3VibGUgZ092ZXJTcGFjaW5nQWRqdXN0bWVudCA9
IDAuNTsKICAgICAKLVJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6UmVuZGVyTWF0aE1MVW5kZXJPdmVy
KE5vZGUqIGV4cHJlc3Npb24pIAotICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZXhwcmVzc2lvbikg
CitSZW5kZXJNYXRoTUxVbmRlck92ZXI6OlJlbmRlck1hdGhNTFVuZGVyT3ZlcihFbGVtZW50KiBl
bGVtZW50KQorICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCkKIHsKLSAgICBFbGVtZW50
KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGV4cHJlc3Npb24pOwogICAgIC8vIERl
dGVybWluZSB3aGF0IGtpbmQgb2YgdW5kZXIvb3ZlciBleHByZXNzaW9uIHdlIGhhdmUgYnkgZWxl
bWVudCBuYW1lCiAgICAgCiAgICAgaWYgKGVsZW1lbnQtPmhhc0xvY2FsTmFtZShNYXRoTUxOYW1l
czo6bXVuZGVyVGFnKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAkocmV2aXNpb24gMTA3MDQyKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
CiBjbGFzcyBSZW5kZXJNYXRoTUxVbmRlck92ZXIgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sg
ewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTFVuZGVyT3ZlcihOb2RlKiBleHByZXNzaW9uKTsK
KyAgICBSZW5kZXJNYXRoTUxVbmRlck92ZXIoRWxlbWVudCopOwogICAgIHZpcnR1YWwgdm9pZCBh
ZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0g
MCk7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwogICAgIHZpcnR1YWwgYm9vbCBoYXNCYXNl
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>