<?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>108384</bug_id>
          
          <creation_ts>2013-01-30 14:23:05 -0800</creation_ts>
          <short_desc>TextAutosizing: refactor the cluster related method parameters into a single struct</short_desc>
          <delta_ts>2013-02-12 05:59:41 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Android</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>107300</blocked>
    
    <blocked>108411</blocked>
    
    <blocked>109573</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Anton Vayvod">avayvod</reporter>
          <assigned_to name="Anton Vayvod">avayvod</assigned_to>
          <cc>eric</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>johnme</cc>
    
    <cc>kenneth</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>timvolodine</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>820559</commentid>
    <comment_count>0</comment_count>
    <who name="Anton Vayvod">avayvod</who>
    <bug_when>2013-01-30 14:23:05 -0800</bug_when>
    <thetext>TextAutosizing: refactor the cluster related method parameters into a single struct</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820573</commentid>
    <comment_count>1</comment_count>
      <attachid>185575</attachid>
    <who name="Anton Vayvod">avayvod</who>
    <bug_when>2013-01-30 14:30:20 -0800</bug_when>
    <thetext>Created attachment 185575
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820939</commentid>
    <comment_count>2</comment_count>
      <attachid>185575</attachid>
    <who name="John Mellor">johnme</who>
    <bug_when>2013-01-30 18:29:30 -0800</bug_when>
    <thetext>Comment on attachment 185575
Patch

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

Seems reasonable. Just some minor nits.

&gt; Source/WebCore/rendering/TextAutosizer.cpp:58
&gt; +    const RenderBlock* blockContainingAllText;

Nit: Is there a reason why one of these is const, but not the other?

&gt; Source/WebCore/rendering/TextAutosizer.cpp:150
&gt; +void TextAutosizer::processContainer(float multiplier, RenderBlock* container, const TextAutosizingClusterInfo&amp; cluster, RenderObject* subtreeRoot, const TextAutosizingWindowInfo&amp; windowInfo)

Nit: You seem to alternate between calling variables of type TextAutosizingClusterInfo a cluster or a clusterInfo. If possible, pick one and stick with it :)

&gt; Source/WebCore/rendering/TextAutosizer.h:64
&gt; +    void processCluster(TextAutosizingClusterInfo*, RenderBlock* container, RenderObject* subtreeRoot, const TextAutosizingWindowInfo&amp;);

Nit: Sometimes you pass a TextAutosizingClusterInfo*, and sometimes a TextAutosizingClusterInfo&amp;. Best to be consistent, since it doesn&apos;t seem to be optional here. (I forget which WebKit prefers).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820942</commentid>
    <comment_count>3</comment_count>
    <who name="Anton Vayvod">avayvod</who>
    <bug_when>2013-01-30 18:32:27 -0800</bug_when>
    <thetext>Julien, Kenneth, could one of you take a look, please?
Resolving John&apos;s nits now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820954</commentid>
    <comment_count>4</comment_count>
      <attachid>185655</attachid>
    <who name="Anton Vayvod">avayvod</who>
    <bug_when>2013-01-30 18:45:02 -0800</bug_when>
    <thetext>Created attachment 185655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820958</commentid>
    <comment_count>5</comment_count>
      <attachid>185575</attachid>
    <who name="Anton Vayvod">avayvod</who>
    <bug_when>2013-01-30 18:51:27 -0800</bug_when>
    <thetext>Comment on attachment 185575
Patch

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

&gt;&gt; Source/WebCore/rendering/TextAutosizer.cpp:58
&gt;&gt; +    const RenderBlock* blockContainingAllText;
&gt; 
&gt; Nit: Is there a reason why one of these is const, but not the other?

We pass |root| to methods that change the node itself or its descendants. blockContainingAllText is computed once per cluster and doesn&apos;t change with time.

&gt;&gt; Source/WebCore/rendering/TextAutosizer.cpp:150
&gt;&gt; +void TextAutosizer::processContainer(float multiplier, RenderBlock* container, const TextAutosizingClusterInfo&amp; cluster, RenderObject* subtreeRoot, const TextAutosizingWindowInfo&amp; windowInfo)
&gt; 
&gt; Nit: You seem to alternate between calling variables of type TextAutosizingClusterInfo a cluster or a clusterInfo. If possible, pick one and stick with it :)

Done.

&gt;&gt; Source/WebCore/rendering/TextAutosizer.h:64
&gt;&gt; +    void processCluster(TextAutosizingClusterInfo*, RenderBlock* container, RenderObject* subtreeRoot, const TextAutosizingWindowInfo&amp;);
&gt; 
&gt; Nit: Sometimes you pass a TextAutosizingClusterInfo*, and sometimes a TextAutosizingClusterInfo&amp;. Best to be consistent, since it doesn&apos;t seem to be optional here. (I forget which WebKit prefers).

Changed to TextAutosizingClusterInfo* (sometimes const pointer but it will change in the next patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821014</commentid>
    <comment_count>6</comment_count>
      <attachid>185655</attachid>
    <who name="John Mellor">johnme</who>
    <bug_when>2013-01-30 20:13:43 -0800</bug_when>
    <thetext>Comment on attachment 185655
Patch

Looks good. Up to Julien/Kenneth now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821282</commentid>
    <comment_count>7</comment_count>
      <attachid>185655</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-01-31 02:26:22 -0800</bug_when>
    <thetext>Comment on attachment 185655
Patch

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

im ok with this, but I also dont see any big value in the change. Could you explain what you will be adding in the future?

&gt; Source/WebCore/ChangeLog:5
&gt; +        TextAutosizing: refactor the cluster related method parameters into a single struct.
&gt; +        This anticipates adding more cluster related information in the following patches.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=108384

You should only have the bugtitle here and then the bug link.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821293</commentid>
    <comment_count>8</comment_count>
      <attachid>185655</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-31 02:43:36 -0800</bug_when>
    <thetext>Comment on attachment 185655
Patch

Attachment 185655 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16270098</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821856</commentid>
    <comment_count>9</comment_count>
      <attachid>185842</attachid>
    <who name="Anton Vayvod">avayvod</who>
    <bug_when>2013-01-31 12:48:16 -0800</bug_when>
    <thetext>Created attachment 185842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821859</commentid>
    <comment_count>10</comment_count>
      <attachid>185655</attachid>
    <who name="Anton Vayvod">avayvod</who>
    <bug_when>2013-01-31 12:49:00 -0800</bug_when>
    <thetext>Comment on attachment 185655
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:5
&gt;&gt; +        https://bugs.webkit.org/show_bug.cgi?id=108384
&gt; 
&gt; You should only have the bugtitle here and then the bug link.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821862</commentid>
    <comment_count>11</comment_count>
    <who name="Anton Vayvod">avayvod</who>
    <bug_when>2013-01-31 12:52:26 -0800</bug_when>
    <thetext>I&apos;m going to add more fields to the struct (e.g. a list of all narrower descendants of the cluster that we&apos;d like to combine into a single one so that the multiplier is the same or a maximum width difference between the cluster and its descendants, see the bug 108411).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821929</commentid>
    <comment_count>12</comment_count>
      <attachid>185842</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 14:03:48 -0800</bug_when>
    <thetext>Comment on attachment 185842
Patch

Rejecting attachment 185842 from review queue.

avayvod@chromium.org does not have reviewer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have reviewer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have reviewer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your reviewer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821931</commentid>
    <comment_count>13</comment_count>
      <attachid>185842</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 14:04:29 -0800</bug_when>
    <thetext>Comment on attachment 185842
Patch

Rejecting attachment 185842 from commit-queue.

avayvod@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821964</commentid>
    <comment_count>14</comment_count>
      <attachid>185842</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 14:33:18 -0800</bug_when>
    <thetext>Comment on attachment 185842
Patch

Clearing flags on attachment: 185842

Committed r141489: &lt;http://trac.webkit.org/changeset/141489&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821965</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 14:33:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826570</commentid>
    <comment_count>16</comment_count>
      <attachid>185842</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-06 11:07:29 -0800</bug_when>
    <thetext>Comment on attachment 185842
Patch

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

&gt; Source/WebCore/rendering/TextAutosizer.cpp:125
&gt; +void TextAutosizer::processCluster(TextAutosizingClusterInfo* clusterInfo, RenderBlock* container, RenderObject* subtreeRoot, const TextAutosizingWindowInfo&amp; windowInfo)

I am sad that this landed with a raw pointer when we assume that it can&apos;t be NULL.

Raw pointers are better used for *optional* parameters and references when you *require* the parameters. Here the code always makes a pointer out of a local copy, which makes reference the obvious choice.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185575</attachid>
            <date>2013-01-30 14:30:20 -0800</date>
            <delta_ts>2013-01-30 18:51:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108384-20130130222705.patch</filename>
            <type>text/plain</type>
            <size>12874</size>
            <attacher name="Anton Vayvod">avayvod</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNiN2IzMDkyNjZiNzAw
ZTI5YzRkMTUyYWIwZWNiYjhmYmIyNmU1Ny4uYTVkODliMDk3ZDAxZjY2Y2Q4ZDY5ZmVmZDU5NWUz
MTlhZmRjMDY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAxLTMwICBBbnRv
biBWYXl2b2QgIDxhdmF5dm9kQGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXh0QXV0b3Npemlu
ZzogcmVmYWN0b3IgdGhlIGNsdXN0ZXIgcmVsYXRlZCBtZXRob2QgcGFyYW1ldGVycyBpbnRvIGEg
c2luZ2xlIHN0cnVjdC4KKyAgICAgICAgVGhpcyBhbnRpY2lwYXRlcyBhZGRpbmcgbW9yZSBjbHVz
dGVyIHJlbGF0ZWQgaW5mb3JtYXRpb24gaW4gdGhlIGZvbGxvd2luZyBwYXRjaGVzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4Mzg0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSnVzdCBhIHJlZmFjdG9y
aW5nIHNvIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9UZXh0QXV0b3NpemVy
LmNwcDogZGVmaW5lIHRoZSBuZXcgc3RydWN0IGFuZCBwYXNzIGl0IHRvIGV2ZXJ5IG1ldGhvZCBp
bnN0ZWFkIG9mCisgICAgICAgIGEgY2x1c3RlciBhbmQgaXRzIGRlc2NlbmRhbnQgYmxvY2sgY29u
dGFpbmluZyBhbGwgdGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvc2l6aW5nQ2x1c3Rl
ckluZm86OlRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm8pOgorICAgICAgICAoVGV4dEF1dG9zaXpp
bmdDbHVzdGVySW5mbyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRBdXRvc2l6ZXI6OnByb2Nlc3NTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRv
c2l6ZXI6OnByb2Nlc3NDbHVzdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvc2l6ZXI6
OnByb2Nlc3NDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9zaXplcjo6aXNB
dXRvc2l6aW5nQ2x1c3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b3NpemVyOjpjbHVz
dGVyU2hvdWxkQmVBdXRvc2l6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9zaXplcjo6
bWVhc3VyZURlc2NlbmRhbnRUZXh0V2lkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0QXV0
b3NpemVyLmg6IGNoYW5nZSBtZXRob2QgcHJvdG90eXBlcyB0byByZWNlaXZlIHRoZSBuZXcgc3Ry
dWN0IGFzIGEgcGFyYW1ldGVyIGRlZmluaW5nIGFuIGF1dG9zaXppbmcgY2x1c3Rlci4KKwogMjAx
My0wMS0zMCAgRG9taW5payBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNAaW50ZWwuY29t
PgogCiAgICAgICAgIFtIYXJmQnV6el0gUmVtb3ZlIHRoZSBIYXJmQnV6ei1vbGQgY29kZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuY3BwCmluZGV4IGJlZGUyODQ1YjZj
N2U3YzRlMTNkYjM0ZTY3ODU0NWI3NzkzOTA3NmUuLmFkOWFhZDFhYjA5OTA0YjFkNjFkYjRmMjhm
MjczNjY5MDBkY2UwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
QXV0b3NpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXpl
ci5jcHAKQEAgLTQ3LDYgKzQ3LDE3IEBAIHN0cnVjdCBUZXh0QXV0b3NpemluZ1dpbmRvd0luZm8g
ewogICAgIEludFNpemUgbWluTGF5b3V0U2l6ZTsKIH07CiAKK3N0cnVjdCBUZXh0QXV0b3Npemlu
Z0NsdXN0ZXJJbmZvIHsKKyAgICBleHBsaWNpdCBUZXh0QXV0b3NpemluZ0NsdXN0ZXJJbmZvKFJl
bmRlckJsb2NrKiByb290KQorICAgICAgICA6IHJvb3Qocm9vdCkKKyAgICAgICAgLCBibG9ja0Nv
bnRhaW5pbmdBbGxUZXh0KDApCisgICAgeworICAgIH0KKworICAgIFJlbmRlckJsb2NrKiByb290
OworICAgIGNvbnN0IFJlbmRlckJsb2NrKiBibG9ja0NvbnRhaW5pbmdBbGxUZXh0OworfTsKKwog
CiBzdGF0aWMgY29uc3QgVmVjdG9yPFF1YWxpZmllZE5hbWU+JiBmb3JtSW5wdXRUYWdzKCkKIHsK
QEAgLTEwNiwyNCArMTE3LDI1IEBAIGJvb2wgVGV4dEF1dG9zaXplcjo6cHJvY2Vzc1N1YnRyZWUo
UmVuZGVyT2JqZWN0KiBsYXlvdXRSb290KQogICAgIHdoaWxlIChjbHVzdGVyICYmICFpc0F1dG9z
aXppbmdDbHVzdGVyKGNsdXN0ZXIpKQogICAgICAgICBjbHVzdGVyID0gY2x1c3Rlci0+Y29udGFp
bmluZ0Jsb2NrKCk7CiAKLSAgICBwcm9jZXNzQ2x1c3RlcihjbHVzdGVyLCBjb250YWluZXIsIGxh
eW91dFJvb3QsIHdpbmRvd0luZm8pOworICAgIFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm8gY2x1
c3RlckluZm8oY2x1c3Rlcik7CisgICAgcHJvY2Vzc0NsdXN0ZXIoJmNsdXN0ZXJJbmZvLCBjb250
YWluZXIsIGxheW91dFJvb3QsIHdpbmRvd0luZm8pOwogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIFRleHRBdXRvc2l6ZXI6OnByb2Nlc3NDbHVzdGVyKFJlbmRlckJsb2NrKiBjbHVzdGVyLCBS
ZW5kZXJCbG9jayogY29udGFpbmVyLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVSb290LCBjb25zdCBU
ZXh0QXV0b3NpemluZ1dpbmRvd0luZm8mIHdpbmRvd0luZm8pCit2b2lkIFRleHRBdXRvc2l6ZXI6
OnByb2Nlc3NDbHVzdGVyKFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm8qIGNsdXN0ZXIsIFJlbmRl
ckJsb2NrKiBjb250YWluZXIsIFJlbmRlck9iamVjdCogc3VidHJlZVJvb3QsIGNvbnN0IFRleHRB
dXRvc2l6aW5nV2luZG93SW5mbyYgd2luZG93SW5mbykKIHsKICAgICAvLyBNYW55IHBhZ2VzIHNl
dCBhIG1heC13aWR0aCBvbiB0aGVpciBjb250ZW50LiBTbyBlc3BlY2lhbGx5IGZvciB0aGUKICAg
ICAvLyBSZW5kZXJWaWV3LCBpbnN0ZWFkIG9mIGp1c3QgdGFraW5nIHRoZSB3aWR0aCBvZiB8Y2x1
c3Rlcnwgd2UgZmluZAogICAgIC8vIHRoZSBsb3dlc3QgY29tbW9uIGFuY2VzdG9yIG9mIHRoZSBm
aXJzdCBhbmQgbGFzdCBkZXNjZW5kYW50IHRleHQgbm9kZSBvZgogICAgIC8vIHRoZSBjbHVzdGVy
IChpLmUuIHRoZSBkZWVwZXN0IHdyYXBwZXIgYmxvY2sgdGhhdCBjb250YWlucyBhbGwgdGhlIHRl
eHQpLAogICAgIC8vIGFuZCB1c2UgaXRzIHdpZHRoIGluc3RlYWQuCi0gICAgY29uc3QgUmVuZGVy
QmxvY2sqIGJsb2NrQ29udGFpbmluZ0FsbFRleHQgPSBmaW5kRGVlcGVzdEJsb2NrQ29udGFpbmlu
Z0FsbFRleHQoY2x1c3Rlcik7Ci0gICAgZmxvYXQgdGV4dFdpZHRoID0gYmxvY2tDb250YWluaW5n
QWxsVGV4dC0+Y29udGVudExvZ2ljYWxXaWR0aCgpOworICAgIGNsdXN0ZXItPmJsb2NrQ29udGFp
bmluZ0FsbFRleHQgPSBmaW5kRGVlcGVzdEJsb2NrQ29udGFpbmluZ0FsbFRleHQoY2x1c3Rlci0+
cm9vdCk7CisgICAgZmxvYXQgdGV4dFdpZHRoID0gY2x1c3Rlci0+YmxvY2tDb250YWluaW5nQWxs
VGV4dC0+Y29udGVudExvZ2ljYWxXaWR0aCgpOwogCiAgICAgZmxvYXQgbXVsdGlwbGllciA9IDE7
Ci0gICAgaWYgKGNsdXN0ZXJTaG91bGRCZUF1dG9zaXplZChibG9ja0NvbnRhaW5pbmdBbGxUZXh0
LCB0ZXh0V2lkdGgpKSB7Ci0gICAgICAgIGludCBsb2dpY2FsV2luZG93V2lkdGggPSBjbHVzdGVy
LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gd2luZG93SW5mby53aW5kb3dTaXplLndpZHRo
KCkgOiB3aW5kb3dJbmZvLndpbmRvd1NpemUuaGVpZ2h0KCk7Ci0gICAgICAgIGludCBsb2dpY2Fs
TGF5b3V0V2lkdGggPSBjbHVzdGVyLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gd2luZG93
SW5mby5taW5MYXlvdXRTaXplLndpZHRoKCkgOiB3aW5kb3dJbmZvLm1pbkxheW91dFNpemUuaGVp
Z2h0KCk7CisgICAgaWYgKGNsdXN0ZXJTaG91bGRCZUF1dG9zaXplZCgqY2x1c3RlciwgdGV4dFdp
ZHRoKSkgeworICAgICAgICBpbnQgbG9naWNhbFdpbmRvd1dpZHRoID0gY2x1c3Rlci0+cm9vdC0+
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHdpbmRvd0luZm8ud2luZG93U2l6ZS53aWR0aCgp
IDogd2luZG93SW5mby53aW5kb3dTaXplLmhlaWdodCgpOworICAgICAgICBpbnQgbG9naWNhbExh
eW91dFdpZHRoID0gY2x1c3Rlci0+cm9vdC0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHdp
bmRvd0luZm8ubWluTGF5b3V0U2l6ZS53aWR0aCgpIDogd2luZG93SW5mby5taW5MYXlvdXRTaXpl
LmhlaWdodCgpOwogICAgICAgICAvLyBJZ25vcmUgYm94IHdpZHRoIGluIGV4Y2VzcyBvZiB0aGUg
bGF5b3V0IHdpZHRoLCB0byBhdm9pZCBleHRyZW1lIG11bHRpcGxpZXJzLgogICAgICAgICBmbG9h
dCBsb2dpY2FsQ2x1c3RlcldpZHRoID0gc3RkOjptaW48ZmxvYXQ+KHRleHRXaWR0aCwgbG9naWNh
bExheW91dFdpZHRoKTsKIApAQCAtMTMyLDEwICsxNDQsMTAgQEAgdm9pZCBUZXh0QXV0b3NpemVy
Ojpwcm9jZXNzQ2x1c3RlcihSZW5kZXJCbG9jayogY2x1c3RlciwgUmVuZGVyQmxvY2sqIGNvbnRh
aW5lciwKICAgICAgICAgbXVsdGlwbGllciA9IHN0ZDo6bWF4KDEuMGYsIG11bHRpcGxpZXIpOwog
ICAgIH0KIAotICAgIHByb2Nlc3NDb250YWluZXIobXVsdGlwbGllciwgY29udGFpbmVyLCBibG9j
a0NvbnRhaW5pbmdBbGxUZXh0LCBzdWJ0cmVlUm9vdCwgd2luZG93SW5mbyk7CisgICAgcHJvY2Vz
c0NvbnRhaW5lcihtdWx0aXBsaWVyLCBjb250YWluZXIsICpjbHVzdGVyLCBzdWJ0cmVlUm9vdCwg
d2luZG93SW5mbyk7CiB9CiAKLXZvaWQgVGV4dEF1dG9zaXplcjo6cHJvY2Vzc0NvbnRhaW5lcihm
bG9hdCBtdWx0aXBsaWVyLCBSZW5kZXJCbG9jayogY29udGFpbmVyLCBjb25zdCBSZW5kZXJCbG9j
ayogYmxvY2tDb250YWluaW5nQWxsVGV4dCwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUm9vdCwgY29u
c3QgVGV4dEF1dG9zaXppbmdXaW5kb3dJbmZvJiB3aW5kb3dJbmZvKQordm9pZCBUZXh0QXV0b3Np
emVyOjpwcm9jZXNzQ29udGFpbmVyKGZsb2F0IG11bHRpcGxpZXIsIFJlbmRlckJsb2NrKiBjb250
YWluZXIsIGNvbnN0IFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm8mIGNsdXN0ZXIsIFJlbmRlck9i
amVjdCogc3VidHJlZVJvb3QsIGNvbnN0IFRleHRBdXRvc2l6aW5nV2luZG93SW5mbyYgd2luZG93
SW5mbykKIHsKICAgICBBU1NFUlQoaXNBdXRvc2l6aW5nQ29udGFpbmVyKGNvbnRhaW5lcikpOwog
CkBAIC0xNTEsMTAgKzE2MywxMSBAQCB2b2lkIFRleHRBdXRvc2l6ZXI6OnByb2Nlc3NDb250YWlu
ZXIoZmxvYXQgbXVsdGlwbGllciwgUmVuZGVyQmxvY2sqIGNvbnRhaW5lciwgYwogICAgICAgICAg
ICAgLy8gRklYTUU6IEluY3JlYXNlIGxpc3QgbWFya2VyIHNpemUgcHJvcG9ydGlvbmF0ZWx5Lgog
ICAgICAgICB9IGVsc2UgaWYgKGlzQXV0b3NpemluZ0NvbnRhaW5lcihkZXNjZW5kYW50KSkgewog
ICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGRlc2NlbmRhbnRCbG9jayA9IHRvUmVuZGVyQmxvY2so
ZGVzY2VuZGFudCk7Ci0gICAgICAgICAgICBpZiAoaXNBdXRvc2l6aW5nQ2x1c3RlcihkZXNjZW5k
YW50QmxvY2ssIGJsb2NrQ29udGFpbmluZ0FsbFRleHQpKQotICAgICAgICAgICAgICAgIHByb2Nl
c3NDbHVzdGVyKGRlc2NlbmRhbnRCbG9jaywgZGVzY2VuZGFudEJsb2NrLCBkZXNjZW5kYW50Qmxv
Y2ssIHdpbmRvd0luZm8pOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHByb2Nl
c3NDb250YWluZXIobXVsdGlwbGllciwgZGVzY2VuZGFudEJsb2NrLCBibG9ja0NvbnRhaW5pbmdB
bGxUZXh0LCBkZXNjZW5kYW50QmxvY2ssIHdpbmRvd0luZm8pOworICAgICAgICAgICAgaWYgKGlz
QXV0b3NpemluZ0NsdXN0ZXIoZGVzY2VuZGFudEJsb2NrLCBjbHVzdGVyKSkgeworICAgICAgICAg
ICAgICAgIFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm8gY2x1c3RlckluZm8oZGVzY2VuZGFudEJs
b2NrKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzQ2x1c3RlcigmY2x1c3RlckluZm8sIGRlc2Nl
bmRhbnRCbG9jaywgZGVzY2VuZGFudEJsb2NrLCB3aW5kb3dJbmZvKTsKKyAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgIHByb2Nlc3NDb250YWluZXIobXVsdGlwbGllciwgZGVzY2Vu
ZGFudEJsb2NrLCBjbHVzdGVyLCBkZXNjZW5kYW50QmxvY2ssIHdpbmRvd0luZm8pOwogICAgICAg
ICB9CiAgICAgICAgIGRlc2NlbmRhbnQgPSBuZXh0SW5QcmVPcmRlclNraXBwaW5nRGVzY2VuZGFu
dHNPZkNvbnRhaW5lcnMoZGVzY2VuZGFudCwgc3VidHJlZVJvb3QpOwogICAgIH0KQEAgLTIxNyw3
ICsyMzAsNyBAQCBib29sIFRleHRBdXRvc2l6ZXI6OmlzQXV0b3NpemluZ0NvbnRhaW5lcihjb25z
dCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFRl
eHRBdXRvc2l6ZXI6OmlzQXV0b3NpemluZ0NsdXN0ZXIoY29uc3QgUmVuZGVyQmxvY2sqIHJlbmRl
cmVyLCBjb25zdCBSZW5kZXJCbG9jayogcGFyZW50QmxvY2tDb250YWluaW5nQWxsVGV4dCkKK2Jv
b2wgVGV4dEF1dG9zaXplcjo6aXNBdXRvc2l6aW5nQ2x1c3Rlcihjb25zdCBSZW5kZXJCbG9jayog
cmVuZGVyZXIsIGNvbnN0IFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm8mIHBhcmVudENsdXN0ZXJJ
bmZvKQogewogICAgIC8vICJBdXRvc2l6aW5nIGNsdXN0ZXJzIiBhcmUgc3BlY2lhbCBhdXRvc2l6
aW5nIGNvbnRhaW5lcnMgd2l0aGluIHdoaWNoIHdlCiAgICAgLy8gd2FudCB0byBlbmZvcmNlIGEg
dW5pZm9ybSB0ZXh0IHNpemUgbXVsdGlwbGllciwgaW4gdGhlIGhvcGVzIG9mIG1ha2luZwpAQCAt
MjQ3LDkgKzI2MCw5IEBAIGJvb2wgVGV4dEF1dG9zaXplcjo6aXNBdXRvc2l6aW5nQ2x1c3Rlcihj
b25zdCBSZW5kZXJCbG9jayogcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgLy8gdGV4dCBhbmQg
dGhhdCBvZiBhIG5hcnJvdyBjaGlsZCBiZWZvcmUgdGhlIGNoaWxkIGJlY29tZXMgYSBjbHVzdGVy
LgogICAgIGNvbnN0IGZsb2F0IG1heFdpZHRoRGlmZmVyZW5jZSA9IDIwMDsKIAotICAgIGlmIChw
YXJlbnRCbG9ja0NvbnRhaW5pbmdBbGxUZXh0KSB7CisgICAgaWYgKHBhcmVudENsdXN0ZXJJbmZv
LmJsb2NrQ29udGFpbmluZ0FsbFRleHQpIHsKICAgICAgICAgZmxvYXQgY29udGVudFdpZHRoID0g
cmVuZGVyZXItPmNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKLSAgICAgICAgZmxvYXQgY2x1c3RlclRl
eHRXaWR0aCA9IHBhcmVudEJsb2NrQ29udGFpbmluZ0FsbFRleHQtPmNvbnRlbnRMb2dpY2FsV2lk
dGgoKTsKKyAgICAgICAgZmxvYXQgY2x1c3RlclRleHRXaWR0aCA9IHBhcmVudENsdXN0ZXJJbmZv
LmJsb2NrQ29udGFpbmluZ0FsbFRleHQtPmNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKICAgICAgICAg
aWYgKGNvbnRlbnRXaWR0aCA+IGNsdXN0ZXJUZXh0V2lkdGggfHwgKGNsdXN0ZXJUZXh0V2lkdGgg
LSBjb250ZW50V2lkdGgpID4gbWF4V2lkdGhEaWZmZXJlbmNlKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMjcwLDcgKzI4Myw3IEBAIGJvb2wgVGV4dEF1dG9zaXplcjo6aXNB
dXRvc2l6aW5nQ2x1c3Rlcihjb25zdCBSZW5kZXJCbG9jayogcmVuZGVyZXIsIGNvbnN0IFJlbmRl
CiAKIGJvb2wgVGV4dEF1dG9zaXplcjo6aXNBdXRvc2l6aW5nQ2x1c3Rlcihjb25zdCBSZW5kZXJP
YmplY3QqIG9iamVjdCkKIHsKLSAgICByZXR1cm4gaXNBdXRvc2l6aW5nQ29udGFpbmVyKG9iamVj
dCkgJiYgaXNBdXRvc2l6aW5nQ2x1c3Rlcih0b1JlbmRlckJsb2NrKG9iamVjdCksIDApOworICAg
IHJldHVybiBpc0F1dG9zaXppbmdDb250YWluZXIob2JqZWN0KSAmJiBpc0F1dG9zaXppbmdDbHVz
dGVyKHRvUmVuZGVyQmxvY2sob2JqZWN0KSwgVGV4dEF1dG9zaXppbmdDbHVzdGVySW5mbygwKSk7
CiB9CiAKIGJvb2wgVGV4dEF1dG9zaXplcjo6Y29udGFpbmVyU2hvdWxkQmVBdXRvc2l6ZWQoY29u
c3QgUmVuZGVyQmxvY2sqIGNvbnRhaW5lcikKQEAgLTM2NCw3ICszNzcsNyBAQCBib29sIFRleHRB
dXRvc2l6ZXI6OmNvbnRlbnRIZWlnaHRJc0NvbnN0cmFpbmVkKGNvbnN0IFJlbmRlckJsb2NrKiBj
b250YWluZXIpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRleHRBdXRvc2l6ZXI6OmNs
dXN0ZXJTaG91bGRCZUF1dG9zaXplZChjb25zdCBSZW5kZXJCbG9jayogYmxvY2tDb250YWluaW5n
QWxsVGV4dCwgZmxvYXQgYmxvY2tXaWR0aCkKK2Jvb2wgVGV4dEF1dG9zaXplcjo6Y2x1c3RlclNo
b3VsZEJlQXV0b3NpemVkKGNvbnN0IFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm8mIGNsdXN0ZXIs
IGZsb2F0IGJsb2NrV2lkdGgpCiB7CiAgICAgLy8gRG9uJ3QgYXV0b3NpemUgY2x1c3RlcnMgdGhh
dCBjb250YWluIGxlc3MgdGhhbiA0IGxpbmVzIG9mIHRleHQgKGluCiAgICAgLy8gcHJhY3RpY2Ug
bGVzcyBsaW5lcyBhcmUgcmVxdWlyZWQsIHNpbmNlIG1lYXN1cmVEZXNjZW5kYW50VGV4dFdpZHRo
CkBAIC0zNzksMTMgKzM5MiwxMyBAQCBib29sIFRleHRBdXRvc2l6ZXI6OmNsdXN0ZXJTaG91bGRC
ZUF1dG9zaXplZChjb25zdCBSZW5kZXJCbG9jayogYmxvY2tDb250YWluaW5nQQogICAgIGNvbnN0
IGZsb2F0IG1pbkxpbmVzT2ZUZXh0ID0gNDsKICAgICBmbG9hdCBtaW5UZXh0V2lkdGggPSBibG9j
a1dpZHRoICogbWluTGluZXNPZlRleHQ7CiAgICAgZmxvYXQgdGV4dFdpZHRoID0gMDsKLSAgICBt
ZWFzdXJlRGVzY2VuZGFudFRleHRXaWR0aChibG9ja0NvbnRhaW5pbmdBbGxUZXh0LCBibG9ja0Nv
bnRhaW5pbmdBbGxUZXh0LCBtaW5UZXh0V2lkdGgsIHRleHRXaWR0aCk7CisgICAgbWVhc3VyZURl
c2NlbmRhbnRUZXh0V2lkdGgoY2x1c3Rlci5ibG9ja0NvbnRhaW5pbmdBbGxUZXh0LCBjbHVzdGVy
LCBtaW5UZXh0V2lkdGgsIHRleHRXaWR0aCk7CiAgICAgaWYgKHRleHRXaWR0aCA+PSBtaW5UZXh0
V2lkdGgpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBUZXh0QXV0b3NpemVyOjptZWFzdXJlRGVzY2VuZGFudFRleHRXaWR0aChjb25zdCBSZW5kZXJC
bG9jayogY29udGFpbmVyLCBjb25zdCBSZW5kZXJCbG9jayogYmxvY2tDb250YWluaW5nQWxsVGV4
dCwgZmxvYXQgbWluVGV4dFdpZHRoLCBmbG9hdCYgdGV4dFdpZHRoKQordm9pZCBUZXh0QXV0b3Np
emVyOjptZWFzdXJlRGVzY2VuZGFudFRleHRXaWR0aChjb25zdCBSZW5kZXJCbG9jayogY29udGFp
bmVyLCBjb25zdCBUZXh0QXV0b3NpemluZ0NsdXN0ZXJJbmZvJiBjbHVzdGVyLCBmbG9hdCBtaW5U
ZXh0V2lkdGgsIGZsb2F0JiB0ZXh0V2lkdGgpCiB7CiAgICAgYm9vbCBza2lwTG9jYWxUZXh0ID0g
IWNvbnRhaW5lclNob3VsZEJlQXV0b3NpemVkKGNvbnRhaW5lcik7CiAKQEAgLTM5NSw4ICs0MDgs
OCBAQCB2b2lkIFRleHRBdXRvc2l6ZXI6Om1lYXN1cmVEZXNjZW5kYW50VGV4dFdpZHRoKGNvbnN0
IFJlbmRlckJsb2NrKiBjb250YWluZXIsIGNvbgogICAgICAgICAgICAgdGV4dFdpZHRoICs9IHRv
UmVuZGVyVGV4dChkZXNjZW5kYW50KS0+cmVuZGVyZWRUZXh0TGVuZ3RoKCkgKiBkZXNjZW5kYW50
LT5zdHlsZSgpLT5zcGVjaWZpZWRGb250U2l6ZSgpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQXV0
b3NpemluZ0NvbnRhaW5lcihkZXNjZW5kYW50KSkgewogICAgICAgICAgICAgUmVuZGVyQmxvY2sq
IGRlc2NlbmRhbnRCbG9jayA9IHRvUmVuZGVyQmxvY2soZGVzY2VuZGFudCk7Ci0gICAgICAgICAg
ICBpZiAoIWlzQXV0b3NpemluZ0NsdXN0ZXIoZGVzY2VuZGFudEJsb2NrLCBibG9ja0NvbnRhaW5p
bmdBbGxUZXh0KSkKLSAgICAgICAgICAgICAgICBtZWFzdXJlRGVzY2VuZGFudFRleHRXaWR0aChk
ZXNjZW5kYW50QmxvY2ssIGJsb2NrQ29udGFpbmluZ0FsbFRleHQsIG1pblRleHRXaWR0aCwgdGV4
dFdpZHRoKTsKKyAgICAgICAgICAgIGlmICghaXNBdXRvc2l6aW5nQ2x1c3RlcihkZXNjZW5kYW50
QmxvY2ssIGNsdXN0ZXIpKQorICAgICAgICAgICAgICAgIG1lYXN1cmVEZXNjZW5kYW50VGV4dFdp
ZHRoKGRlc2NlbmRhbnRCbG9jaywgY2x1c3RlciwgbWluVGV4dFdpZHRoLCB0ZXh0V2lkdGgpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICh0ZXh0V2lkdGggPj0gbWluVGV4dFdpZHRoKQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRB
dXRvc2l6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmgKaW5k
ZXggZTFjMjJhZWI5ZGIzYmM5OWM4YjczZTFiMDY4OWM0ZjZhMTcwNmNmYS4uN2ZmNDZlYmFkNjAy
NTZiZmJjMmRjODFjNGQxOGM0MDI1NzEyZjBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dEF1dG9zaXplci5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFJlbmRlckJsb2NrOwogY2xh
c3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyVGV4dDsKIHN0cnVjdCBUZXh0QXV0b3Npemlu
Z1dpbmRvd0luZm87CitzdHJ1Y3QgVGV4dEF1dG9zaXppbmdDbHVzdGVySW5mbzsKIAogY2xhc3Mg
VGV4dEF1dG9zaXplciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dEF1dG9zaXplcik7
CkBAIC02MCwyMSArNjEsMjEgQEAgcHJpdmF0ZToKIAogICAgIGV4cGxpY2l0IFRleHRBdXRvc2l6
ZXIoRG9jdW1lbnQqKTsKIAotICAgIHZvaWQgcHJvY2Vzc0NsdXN0ZXIoUmVuZGVyQmxvY2sqIGNs
dXN0ZXIsIFJlbmRlckJsb2NrKiBjb250YWluZXIsIFJlbmRlck9iamVjdCogc3VidHJlZVJvb3Qs
IGNvbnN0IFRleHRBdXRvc2l6aW5nV2luZG93SW5mbyYpOwotICAgIHZvaWQgcHJvY2Vzc0NvbnRh
aW5lcihmbG9hdCBtdWx0aXBsaWVyLCBSZW5kZXJCbG9jayogY29udGFpbmVyLCBjb25zdCBSZW5k
ZXJCbG9jayogYmxvY2tDb250YWluaW5nQWxsVGV4dCwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUm9v
dCwgY29uc3QgVGV4dEF1dG9zaXppbmdXaW5kb3dJbmZvJik7CisgICAgdm9pZCBwcm9jZXNzQ2x1
c3RlcihUZXh0QXV0b3NpemluZ0NsdXN0ZXJJbmZvKiwgUmVuZGVyQmxvY2sqIGNvbnRhaW5lciwg
UmVuZGVyT2JqZWN0KiBzdWJ0cmVlUm9vdCwgY29uc3QgVGV4dEF1dG9zaXppbmdXaW5kb3dJbmZv
Jik7CisgICAgdm9pZCBwcm9jZXNzQ29udGFpbmVyKGZsb2F0IG11bHRpcGxpZXIsIFJlbmRlckJs
b2NrKiBjb250YWluZXIsIGNvbnN0IFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm8mLCBSZW5kZXJP
YmplY3QqIHN1YnRyZWVSb290LCBjb25zdCBUZXh0QXV0b3NpemluZ1dpbmRvd0luZm8mKTsKIAog
ICAgIHZvaWQgc2V0TXVsdGlwbGllcihSZW5kZXJPYmplY3QqLCBmbG9hdCk7CiAKICAgICBzdGF0
aWMgYm9vbCBpc0F1dG9zaXppbmdDb250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7Ci0gICAg
c3RhdGljIGJvb2wgaXNBdXRvc2l6aW5nQ2x1c3Rlcihjb25zdCBSZW5kZXJCbG9jayosIGNvbnN0
IFJlbmRlckJsb2NrKiBwYXJlbnRCbG9ja0NvbnRhaW5pbmdBbGxUZXh0KTsKKyAgICBzdGF0aWMg
Ym9vbCBpc0F1dG9zaXppbmdDbHVzdGVyKGNvbnN0IFJlbmRlckJsb2NrKiwgY29uc3QgVGV4dEF1
dG9zaXppbmdDbHVzdGVySW5mbyYgcGFyZW50Q2x1c3RlckluZm8pOwogICAgIHN0YXRpYyBib29s
IGlzQXV0b3NpemluZ0NsdXN0ZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7CiAKICAgICBzdGF0aWMg
Ym9vbCBjb250YWluZXJTaG91bGRCZUF1dG9zaXplZChjb25zdCBSZW5kZXJCbG9jayogY29udGFp
bmVyKTsKICAgICBzdGF0aWMgYm9vbCBjb250YWluZXJDb250YWluc09uZU9mVGFncyhjb25zdCBS
ZW5kZXJCbG9jayogY2x1c3RlciwgY29uc3QgVmVjdG9yPFF1YWxpZmllZE5hbWU+JiB0YWdzKTsK
ICAgICBzdGF0aWMgYm9vbCBjb250YWluZXJJc1Jvd09mTGlua3MoY29uc3QgUmVuZGVyT2JqZWN0
KiBjb250YWluZXIpOwogICAgIHN0YXRpYyBib29sIGNvbnRlbnRIZWlnaHRJc0NvbnN0cmFpbmVk
KGNvbnN0IFJlbmRlckJsb2NrKiBjb250YWluZXIpOwotICAgIHN0YXRpYyBib29sIGNsdXN0ZXJT
aG91bGRCZUF1dG9zaXplZChjb25zdCBSZW5kZXJCbG9jayogYmxvY2tDb250YWluaW5nQWxsVGV4
dCwgZmxvYXQgYmxvY2tXaWR0aCk7Ci0gICAgc3RhdGljIHZvaWQgbWVhc3VyZURlc2NlbmRhbnRU
ZXh0V2lkdGgoY29uc3QgUmVuZGVyQmxvY2sqIGNvbnRhaW5lciwgY29uc3QgUmVuZGVyQmxvY2sq
IGJsb2NrQ29udGFpbmluZ0FsbFRleHQsIGZsb2F0IG1pblRleHRXaWR0aCwgZmxvYXQmIHRleHRX
aWR0aCk7CisgICAgc3RhdGljIGJvb2wgY2x1c3RlclNob3VsZEJlQXV0b3NpemVkKGNvbnN0IFRl
eHRBdXRvc2l6aW5nQ2x1c3RlckluZm8mLCBmbG9hdCBibG9ja1dpZHRoKTsKKyAgICBzdGF0aWMg
dm9pZCBtZWFzdXJlRGVzY2VuZGFudFRleHRXaWR0aChjb25zdCBSZW5kZXJCbG9jayogY29udGFp
bmVyLCBjb25zdCBUZXh0QXV0b3NpemluZ0NsdXN0ZXJJbmZvJiwgZmxvYXQgbWluVGV4dFdpZHRo
LCBmbG9hdCYgdGV4dFdpZHRoKTsKIAogICAgIC8vIFVzZSB0byB0cmF2ZXJzZSB0aGUgdHJlZSBv
ZiBkZXNjZW5kYW50cywgZXhjbHVkaW5nIGRlc2NlbmRhbnRzIG9mIGNvbnRhaW5lcnMgKGJ1dCBy
ZXR1cm5pbmcgdGhlIGNvbnRhaW5lcnMgdGhlbXNlbHZlcykuCiAgICAgc3RhdGljIFJlbmRlck9i
amVjdCogbmV4dEluUHJlT3JkZXJTa2lwcGluZ0Rlc2NlbmRhbnRzT2ZDb250YWluZXJzKGNvbnN0
IFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdCogc3RheVdpdGhpbik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185655</attachid>
            <date>2013-01-30 18:45:02 -0800</date>
            <delta_ts>2013-01-31 12:49:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108384-20130131024146.patch</filename>
            <type>text/plain</type>
            <size>12546</size>
            <attacher name="Anton Vayvod">avayvod</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNiN2IzMDkyNjZiNzAw
ZTI5YzRkMTUyYWIwZWNiYjhmYmIyNmU1Ny4uYjU1Mzc4M2FkNDc5Yjc2MzRjNGFiZGZkYzNlMmQz
MTI2NDkzYzEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAxLTMwICBBbnRv
biBWYXl2b2QgIDxhdmF5dm9kQGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXh0QXV0b3Npemlu
ZzogcmVmYWN0b3IgdGhlIGNsdXN0ZXIgcmVsYXRlZCBtZXRob2QgcGFyYW1ldGVycyBpbnRvIGEg
c2luZ2xlIHN0cnVjdC4KKyAgICAgICAgVGhpcyBhbnRpY2lwYXRlcyBhZGRpbmcgbW9yZSBjbHVz
dGVyIHJlbGF0ZWQgaW5mb3JtYXRpb24gaW4gdGhlIGZvbGxvd2luZyBwYXRjaGVzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4Mzg0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSnVzdCBhIHJlZmFjdG9y
aW5nIHNvIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9UZXh0QXV0b3NpemVy
LmNwcDogZGVmaW5lIHRoZSBuZXcgc3RydWN0IGFuZCBwYXNzIGl0IHRvIGV2ZXJ5IG1ldGhvZCBp
bnN0ZWFkIG9mCisgICAgICAgIGEgY2x1c3RlciBhbmQgaXRzIGRlc2NlbmRhbnQgYmxvY2sgY29u
dGFpbmluZyBhbGwgdGV4dC4KKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oOiBj
aGFuZ2UgbWV0aG9kIHByb3RvdHlwZXMgdG8gcmVjZWl2ZSB0aGUgbmV3IHN0cnVjdAorICAgICAg
ICBhcyBhIHBhcmFtZXRlciBkZWZpbmluZyBhbiBhdXRvc2l6aW5nIGNsdXN0ZXIuCisKIDIwMTMt
MDEtMzAgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4K
IAogICAgICAgICBbSGFyZkJ1enpdIFJlbW92ZSB0aGUgSGFyZkJ1enotb2xkIGNvZGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmNwcAppbmRleCBiZWRlMjg0NWI2Yzdl
N2M0ZTEzZGIzNGU2Nzg1NDViNzc5MzkwNzZlLi42NmM1MzQ5MTBkYzZhODk1MjBhNGU2MTc4ZDU2
NDI3NTQ3ZGFiNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1
dG9zaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIu
Y3BwCkBAIC00Nyw2ICs0NywxNyBAQCBzdHJ1Y3QgVGV4dEF1dG9zaXppbmdXaW5kb3dJbmZvIHsK
ICAgICBJbnRTaXplIG1pbkxheW91dFNpemU7CiB9OwogCitzdHJ1Y3QgVGV4dEF1dG9zaXppbmdD
bHVzdGVySW5mbyB7CisgICAgZXhwbGljaXQgVGV4dEF1dG9zaXppbmdDbHVzdGVySW5mbyhSZW5k
ZXJCbG9jayogcm9vdCkKKyAgICAgICAgOiByb290KHJvb3QpCisgICAgICAgICwgYmxvY2tDb250
YWluaW5nQWxsVGV4dCgwKQorICAgIHsKKyAgICB9CisKKyAgICBSZW5kZXJCbG9jayogcm9vdDsK
KyAgICBjb25zdCBSZW5kZXJCbG9jayogYmxvY2tDb250YWluaW5nQWxsVGV4dDsKK307CisKIAog
c3RhdGljIGNvbnN0IFZlY3RvcjxRdWFsaWZpZWROYW1lPiYgZm9ybUlucHV0VGFncygpCiB7CkBA
IC0xMDYsMjQgKzExNywyNSBAQCBib29sIFRleHRBdXRvc2l6ZXI6OnByb2Nlc3NTdWJ0cmVlKFJl
bmRlck9iamVjdCogbGF5b3V0Um9vdCkKICAgICB3aGlsZSAoY2x1c3RlciAmJiAhaXNBdXRvc2l6
aW5nQ2x1c3RlcihjbHVzdGVyKSkKICAgICAgICAgY2x1c3RlciA9IGNsdXN0ZXItPmNvbnRhaW5p
bmdCbG9jaygpOwogCi0gICAgcHJvY2Vzc0NsdXN0ZXIoY2x1c3RlciwgY29udGFpbmVyLCBsYXlv
dXRSb290LCB3aW5kb3dJbmZvKTsKKyAgICBUZXh0QXV0b3NpemluZ0NsdXN0ZXJJbmZvIGNsdXN0
ZXJJbmZvKGNsdXN0ZXIpOworICAgIHByb2Nlc3NDbHVzdGVyKCZjbHVzdGVySW5mbywgY29udGFp
bmVyLCBsYXlvdXRSb290LCB3aW5kb3dJbmZvKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBUZXh0QXV0b3NpemVyOjpwcm9jZXNzQ2x1c3RlcihSZW5kZXJCbG9jayogY2x1c3RlciwgUmVu
ZGVyQmxvY2sqIGNvbnRhaW5lciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUm9vdCwgY29uc3QgVGV4
dEF1dG9zaXppbmdXaW5kb3dJbmZvJiB3aW5kb3dJbmZvKQordm9pZCBUZXh0QXV0b3NpemVyOjpw
cm9jZXNzQ2x1c3RlcihUZXh0QXV0b3NpemluZ0NsdXN0ZXJJbmZvKiBjbHVzdGVySW5mbywgUmVu
ZGVyQmxvY2sqIGNvbnRhaW5lciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUm9vdCwgY29uc3QgVGV4
dEF1dG9zaXppbmdXaW5kb3dJbmZvJiB3aW5kb3dJbmZvKQogewogICAgIC8vIE1hbnkgcGFnZXMg
c2V0IGEgbWF4LXdpZHRoIG9uIHRoZWlyIGNvbnRlbnQuIFNvIGVzcGVjaWFsbHkgZm9yIHRoZQog
ICAgIC8vIFJlbmRlclZpZXcsIGluc3RlYWQgb2YganVzdCB0YWtpbmcgdGhlIHdpZHRoIG9mIHxj
bHVzdGVyfCB3ZSBmaW5kCiAgICAgLy8gdGhlIGxvd2VzdCBjb21tb24gYW5jZXN0b3Igb2YgdGhl
IGZpcnN0IGFuZCBsYXN0IGRlc2NlbmRhbnQgdGV4dCBub2RlIG9mCiAgICAgLy8gdGhlIGNsdXN0
ZXIgKGkuZS4gdGhlIGRlZXBlc3Qgd3JhcHBlciBibG9jayB0aGF0IGNvbnRhaW5zIGFsbCB0aGUg
dGV4dCksCiAgICAgLy8gYW5kIHVzZSBpdHMgd2lkdGggaW5zdGVhZC4KLSAgICBjb25zdCBSZW5k
ZXJCbG9jayogYmxvY2tDb250YWluaW5nQWxsVGV4dCA9IGZpbmREZWVwZXN0QmxvY2tDb250YWlu
aW5nQWxsVGV4dChjbHVzdGVyKTsKLSAgICBmbG9hdCB0ZXh0V2lkdGggPSBibG9ja0NvbnRhaW5p
bmdBbGxUZXh0LT5jb250ZW50TG9naWNhbFdpZHRoKCk7CisgICAgY2x1c3RlckluZm8tPmJsb2Nr
Q29udGFpbmluZ0FsbFRleHQgPSBmaW5kRGVlcGVzdEJsb2NrQ29udGFpbmluZ0FsbFRleHQoY2x1
c3RlckluZm8tPnJvb3QpOworICAgIGZsb2F0IHRleHRXaWR0aCA9IGNsdXN0ZXJJbmZvLT5ibG9j
a0NvbnRhaW5pbmdBbGxUZXh0LT5jb250ZW50TG9naWNhbFdpZHRoKCk7CiAKICAgICBmbG9hdCBt
dWx0aXBsaWVyID0gMTsKLSAgICBpZiAoY2x1c3RlclNob3VsZEJlQXV0b3NpemVkKGJsb2NrQ29u
dGFpbmluZ0FsbFRleHQsIHRleHRXaWR0aCkpIHsKLSAgICAgICAgaW50IGxvZ2ljYWxXaW5kb3dX
aWR0aCA9IGNsdXN0ZXItPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyB3aW5kb3dJbmZvLndp
bmRvd1NpemUud2lkdGgoKSA6IHdpbmRvd0luZm8ud2luZG93U2l6ZS5oZWlnaHQoKTsKLSAgICAg
ICAgaW50IGxvZ2ljYWxMYXlvdXRXaWR0aCA9IGNsdXN0ZXItPmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkgPyB3aW5kb3dJbmZvLm1pbkxheW91dFNpemUud2lkdGgoKSA6IHdpbmRvd0luZm8ubWlu
TGF5b3V0U2l6ZS5oZWlnaHQoKTsKKyAgICBpZiAoY2x1c3RlclNob3VsZEJlQXV0b3NpemVkKGNs
dXN0ZXJJbmZvLCB0ZXh0V2lkdGgpKSB7CisgICAgICAgIGludCBsb2dpY2FsV2luZG93V2lkdGgg
PSBjbHVzdGVySW5mby0+cm9vdC0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHdpbmRvd0lu
Zm8ud2luZG93U2l6ZS53aWR0aCgpIDogd2luZG93SW5mby53aW5kb3dTaXplLmhlaWdodCgpOwor
ICAgICAgICBpbnQgbG9naWNhbExheW91dFdpZHRoID0gY2x1c3RlckluZm8tPnJvb3QtPmlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyB3aW5kb3dJbmZvLm1pbkxheW91dFNpemUud2lkdGgoKSA6
IHdpbmRvd0luZm8ubWluTGF5b3V0U2l6ZS5oZWlnaHQoKTsKICAgICAgICAgLy8gSWdub3JlIGJv
eCB3aWR0aCBpbiBleGNlc3Mgb2YgdGhlIGxheW91dCB3aWR0aCwgdG8gYXZvaWQgZXh0cmVtZSBt
dWx0aXBsaWVycy4KICAgICAgICAgZmxvYXQgbG9naWNhbENsdXN0ZXJXaWR0aCA9IHN0ZDo6bWlu
PGZsb2F0Pih0ZXh0V2lkdGgsIGxvZ2ljYWxMYXlvdXRXaWR0aCk7CiAKQEAgLTEzMiwxMCArMTQ0
LDEwIEBAIHZvaWQgVGV4dEF1dG9zaXplcjo6cHJvY2Vzc0NsdXN0ZXIoUmVuZGVyQmxvY2sqIGNs
dXN0ZXIsIFJlbmRlckJsb2NrKiBjb250YWluZXIsCiAgICAgICAgIG11bHRpcGxpZXIgPSBzdGQ6
Om1heCgxLjBmLCBtdWx0aXBsaWVyKTsKICAgICB9CiAKLSAgICBwcm9jZXNzQ29udGFpbmVyKG11
bHRpcGxpZXIsIGNvbnRhaW5lciwgYmxvY2tDb250YWluaW5nQWxsVGV4dCwgc3VidHJlZVJvb3Qs
IHdpbmRvd0luZm8pOworICAgIHByb2Nlc3NDb250YWluZXIobXVsdGlwbGllciwgY29udGFpbmVy
LCBjbHVzdGVySW5mbywgc3VidHJlZVJvb3QsIHdpbmRvd0luZm8pOwogfQogCi12b2lkIFRleHRB
dXRvc2l6ZXI6OnByb2Nlc3NDb250YWluZXIoZmxvYXQgbXVsdGlwbGllciwgUmVuZGVyQmxvY2sq
IGNvbnRhaW5lciwgY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrQ29udGFpbmluZ0FsbFRleHQsIFJl
bmRlck9iamVjdCogc3VidHJlZVJvb3QsIGNvbnN0IFRleHRBdXRvc2l6aW5nV2luZG93SW5mbyYg
d2luZG93SW5mbykKK3ZvaWQgVGV4dEF1dG9zaXplcjo6cHJvY2Vzc0NvbnRhaW5lcihmbG9hdCBt
dWx0aXBsaWVyLCBSZW5kZXJCbG9jayogY29udGFpbmVyLCBjb25zdCBUZXh0QXV0b3NpemluZ0Ns
dXN0ZXJJbmZvKiBjbHVzdGVySW5mbywgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUm9vdCwgY29uc3Qg
VGV4dEF1dG9zaXppbmdXaW5kb3dJbmZvJiB3aW5kb3dJbmZvKQogewogICAgIEFTU0VSVChpc0F1
dG9zaXppbmdDb250YWluZXIoY29udGFpbmVyKSk7CiAKQEAgLTE1MSwxMCArMTYzLDExIEBAIHZv
aWQgVGV4dEF1dG9zaXplcjo6cHJvY2Vzc0NvbnRhaW5lcihmbG9hdCBtdWx0aXBsaWVyLCBSZW5k
ZXJCbG9jayogY29udGFpbmVyLCBjCiAgICAgICAgICAgICAvLyBGSVhNRTogSW5jcmVhc2UgbGlz
dCBtYXJrZXIgc2l6ZSBwcm9wb3J0aW9uYXRlbHkuCiAgICAgICAgIH0gZWxzZSBpZiAoaXNBdXRv
c2l6aW5nQ29udGFpbmVyKGRlc2NlbmRhbnQpKSB7CiAgICAgICAgICAgICBSZW5kZXJCbG9jayog
ZGVzY2VuZGFudEJsb2NrID0gdG9SZW5kZXJCbG9jayhkZXNjZW5kYW50KTsKLSAgICAgICAgICAg
IGlmIChpc0F1dG9zaXppbmdDbHVzdGVyKGRlc2NlbmRhbnRCbG9jaywgYmxvY2tDb250YWluaW5n
QWxsVGV4dCkpCi0gICAgICAgICAgICAgICAgcHJvY2Vzc0NsdXN0ZXIoZGVzY2VuZGFudEJsb2Nr
LCBkZXNjZW5kYW50QmxvY2ssIGRlc2NlbmRhbnRCbG9jaywgd2luZG93SW5mbyk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcHJvY2Vzc0NvbnRhaW5lcihtdWx0aXBsaWVyLCBk
ZXNjZW5kYW50QmxvY2ssIGJsb2NrQ29udGFpbmluZ0FsbFRleHQsIGRlc2NlbmRhbnRCbG9jaywg
d2luZG93SW5mbyk7CisgICAgICAgICAgICBpZiAoaXNBdXRvc2l6aW5nQ2x1c3RlcihkZXNjZW5k
YW50QmxvY2ssIGNsdXN0ZXJJbmZvKSkgeworICAgICAgICAgICAgICAgIFRleHRBdXRvc2l6aW5n
Q2x1c3RlckluZm8gZGVzY2VuZGFudENsdXN0ZXJJbmZvKGRlc2NlbmRhbnRCbG9jayk7CisgICAg
ICAgICAgICAgICAgcHJvY2Vzc0NsdXN0ZXIoJmRlc2NlbmRhbnRDbHVzdGVySW5mbywgZGVzY2Vu
ZGFudEJsb2NrLCBkZXNjZW5kYW50QmxvY2ssIHdpbmRvd0luZm8pOworICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgcHJvY2Vzc0NvbnRhaW5lcihtdWx0aXBsaWVyLCBkZXNjZW5k
YW50QmxvY2ssIGNsdXN0ZXJJbmZvLCBkZXNjZW5kYW50QmxvY2ssIHdpbmRvd0luZm8pOwogICAg
ICAgICB9CiAgICAgICAgIGRlc2NlbmRhbnQgPSBuZXh0SW5QcmVPcmRlclNraXBwaW5nRGVzY2Vu
ZGFudHNPZkNvbnRhaW5lcnMoZGVzY2VuZGFudCwgc3VidHJlZVJvb3QpOwogICAgIH0KQEAgLTIx
Nyw3ICsyMzAsNyBAQCBib29sIFRleHRBdXRvc2l6ZXI6OmlzQXV0b3NpemluZ0NvbnRhaW5lcihj
b25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFRleHRBdXRvc2l6ZXI6OmlzQXV0b3NpemluZ0NsdXN0ZXIoY29uc3QgUmVuZGVyQmxvY2sqIHJl
bmRlcmVyLCBjb25zdCBSZW5kZXJCbG9jayogcGFyZW50QmxvY2tDb250YWluaW5nQWxsVGV4dCkK
K2Jvb2wgVGV4dEF1dG9zaXplcjo6aXNBdXRvc2l6aW5nQ2x1c3Rlcihjb25zdCBSZW5kZXJCbG9j
ayogcmVuZGVyZXIsIGNvbnN0IFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm8qIHBhcmVudENsdXN0
ZXJJbmZvKQogewogICAgIC8vICJBdXRvc2l6aW5nIGNsdXN0ZXJzIiBhcmUgc3BlY2lhbCBhdXRv
c2l6aW5nIGNvbnRhaW5lcnMgd2l0aGluIHdoaWNoIHdlCiAgICAgLy8gd2FudCB0byBlbmZvcmNl
IGEgdW5pZm9ybSB0ZXh0IHNpemUgbXVsdGlwbGllciwgaW4gdGhlIGhvcGVzIG9mIG1ha2luZwpA
QCAtMjQ3LDkgKzI2MCw5IEBAIGJvb2wgVGV4dEF1dG9zaXplcjo6aXNBdXRvc2l6aW5nQ2x1c3Rl
cihjb25zdCBSZW5kZXJCbG9jayogcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgLy8gdGV4dCBh
bmQgdGhhdCBvZiBhIG5hcnJvdyBjaGlsZCBiZWZvcmUgdGhlIGNoaWxkIGJlY29tZXMgYSBjbHVz
dGVyLgogICAgIGNvbnN0IGZsb2F0IG1heFdpZHRoRGlmZmVyZW5jZSA9IDIwMDsKIAotICAgIGlm
IChwYXJlbnRCbG9ja0NvbnRhaW5pbmdBbGxUZXh0KSB7CisgICAgaWYgKHBhcmVudENsdXN0ZXJJ
bmZvLT5ibG9ja0NvbnRhaW5pbmdBbGxUZXh0KSB7CiAgICAgICAgIGZsb2F0IGNvbnRlbnRXaWR0
aCA9IHJlbmRlcmVyLT5jb250ZW50TG9naWNhbFdpZHRoKCk7Ci0gICAgICAgIGZsb2F0IGNsdXN0
ZXJUZXh0V2lkdGggPSBwYXJlbnRCbG9ja0NvbnRhaW5pbmdBbGxUZXh0LT5jb250ZW50TG9naWNh
bFdpZHRoKCk7CisgICAgICAgIGZsb2F0IGNsdXN0ZXJUZXh0V2lkdGggPSBwYXJlbnRDbHVzdGVy
SW5mby0+YmxvY2tDb250YWluaW5nQWxsVGV4dC0+Y29udGVudExvZ2ljYWxXaWR0aCgpOwogICAg
ICAgICBpZiAoY29udGVudFdpZHRoID4gY2x1c3RlclRleHRXaWR0aCB8fCAoY2x1c3RlclRleHRX
aWR0aCAtIGNvbnRlbnRXaWR0aCkgPiBtYXhXaWR0aERpZmZlcmVuY2UpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNzAsNyArMjgzLDggQEAgYm9vbCBUZXh0QXV0b3NpemVy
Ojppc0F1dG9zaXppbmdDbHVzdGVyKGNvbnN0IFJlbmRlckJsb2NrKiByZW5kZXJlciwgY29uc3Qg
UmVuZGUKIAogYm9vbCBUZXh0QXV0b3NpemVyOjppc0F1dG9zaXppbmdDbHVzdGVyKGNvbnN0IFJl
bmRlck9iamVjdCogb2JqZWN0KQogewotICAgIHJldHVybiBpc0F1dG9zaXppbmdDb250YWluZXIo
b2JqZWN0KSAmJiBpc0F1dG9zaXppbmdDbHVzdGVyKHRvUmVuZGVyQmxvY2sob2JqZWN0KSwgMCk7
CisgICAgVGV4dEF1dG9zaXppbmdDbHVzdGVySW5mbyBlbXB0eUNsdXN0ZXJJbmZvKDApOworICAg
IHJldHVybiBpc0F1dG9zaXppbmdDb250YWluZXIob2JqZWN0KSAmJiBpc0F1dG9zaXppbmdDbHVz
dGVyKHRvUmVuZGVyQmxvY2sob2JqZWN0KSwgJmVtcHR5Q2x1c3RlckluZm8pOwogfQogCiBib29s
IFRleHRBdXRvc2l6ZXI6OmNvbnRhaW5lclNob3VsZEJlQXV0b3NpemVkKGNvbnN0IFJlbmRlckJs
b2NrKiBjb250YWluZXIpCkBAIC0zNjQsNyArMzc4LDcgQEAgYm9vbCBUZXh0QXV0b3NpemVyOjpj
b250ZW50SGVpZ2h0SXNDb25zdHJhaW5lZChjb25zdCBSZW5kZXJCbG9jayogY29udGFpbmVyKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUZXh0QXV0b3NpemVyOjpjbHVzdGVyU2hvdWxk
QmVBdXRvc2l6ZWQoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrQ29udGFpbmluZ0FsbFRleHQsIGZs
b2F0IGJsb2NrV2lkdGgpCitib29sIFRleHRBdXRvc2l6ZXI6OmNsdXN0ZXJTaG91bGRCZUF1dG9z
aXplZChjb25zdCBUZXh0QXV0b3NpemluZ0NsdXN0ZXJJbmZvKiBjbHVzdGVySW5mbywgZmxvYXQg
YmxvY2tXaWR0aCkKIHsKICAgICAvLyBEb24ndCBhdXRvc2l6ZSBjbHVzdGVycyB0aGF0IGNvbnRh
aW4gbGVzcyB0aGFuIDQgbGluZXMgb2YgdGV4dCAoaW4KICAgICAvLyBwcmFjdGljZSBsZXNzIGxp
bmVzIGFyZSByZXF1aXJlZCwgc2luY2UgbWVhc3VyZURlc2NlbmRhbnRUZXh0V2lkdGgKQEAgLTM3
OSwxMyArMzkzLDEzIEBAIGJvb2wgVGV4dEF1dG9zaXplcjo6Y2x1c3RlclNob3VsZEJlQXV0b3Np
emVkKGNvbnN0IFJlbmRlckJsb2NrKiBibG9ja0NvbnRhaW5pbmdBCiAgICAgY29uc3QgZmxvYXQg
bWluTGluZXNPZlRleHQgPSA0OwogICAgIGZsb2F0IG1pblRleHRXaWR0aCA9IGJsb2NrV2lkdGgg
KiBtaW5MaW5lc09mVGV4dDsKICAgICBmbG9hdCB0ZXh0V2lkdGggPSAwOwotICAgIG1lYXN1cmVE
ZXNjZW5kYW50VGV4dFdpZHRoKGJsb2NrQ29udGFpbmluZ0FsbFRleHQsIGJsb2NrQ29udGFpbmlu
Z0FsbFRleHQsIG1pblRleHRXaWR0aCwgdGV4dFdpZHRoKTsKKyAgICBtZWFzdXJlRGVzY2VuZGFu
dFRleHRXaWR0aChjbHVzdGVySW5mby0+YmxvY2tDb250YWluaW5nQWxsVGV4dCwgY2x1c3Rlcklu
Zm8sIG1pblRleHRXaWR0aCwgdGV4dFdpZHRoKTsKICAgICBpZiAodGV4dFdpZHRoID49IG1pblRl
eHRXaWR0aCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIFRleHRBdXRvc2l6ZXI6Om1lYXN1cmVEZXNjZW5kYW50VGV4dFdpZHRoKGNvbnN0IFJlbmRl
ckJsb2NrKiBjb250YWluZXIsIGNvbnN0IFJlbmRlckJsb2NrKiBibG9ja0NvbnRhaW5pbmdBbGxU
ZXh0LCBmbG9hdCBtaW5UZXh0V2lkdGgsIGZsb2F0JiB0ZXh0V2lkdGgpCit2b2lkIFRleHRBdXRv
c2l6ZXI6Om1lYXN1cmVEZXNjZW5kYW50VGV4dFdpZHRoKGNvbnN0IFJlbmRlckJsb2NrKiBjb250
YWluZXIsIGNvbnN0IFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm8qIGNsdXN0ZXJJbmZvLCBmbG9h
dCBtaW5UZXh0V2lkdGgsIGZsb2F0JiB0ZXh0V2lkdGgpCiB7CiAgICAgYm9vbCBza2lwTG9jYWxU
ZXh0ID0gIWNvbnRhaW5lclNob3VsZEJlQXV0b3NpemVkKGNvbnRhaW5lcik7CiAKQEAgLTM5NSw4
ICs0MDksOCBAQCB2b2lkIFRleHRBdXRvc2l6ZXI6Om1lYXN1cmVEZXNjZW5kYW50VGV4dFdpZHRo
KGNvbnN0IFJlbmRlckJsb2NrKiBjb250YWluZXIsIGNvbgogICAgICAgICAgICAgdGV4dFdpZHRo
ICs9IHRvUmVuZGVyVGV4dChkZXNjZW5kYW50KS0+cmVuZGVyZWRUZXh0TGVuZ3RoKCkgKiBkZXNj
ZW5kYW50LT5zdHlsZSgpLT5zcGVjaWZpZWRGb250U2l6ZSgpOwogICAgICAgICB9IGVsc2UgaWYg
KGlzQXV0b3NpemluZ0NvbnRhaW5lcihkZXNjZW5kYW50KSkgewogICAgICAgICAgICAgUmVuZGVy
QmxvY2sqIGRlc2NlbmRhbnRCbG9jayA9IHRvUmVuZGVyQmxvY2soZGVzY2VuZGFudCk7Ci0gICAg
ICAgICAgICBpZiAoIWlzQXV0b3NpemluZ0NsdXN0ZXIoZGVzY2VuZGFudEJsb2NrLCBibG9ja0Nv
bnRhaW5pbmdBbGxUZXh0KSkKLSAgICAgICAgICAgICAgICBtZWFzdXJlRGVzY2VuZGFudFRleHRX
aWR0aChkZXNjZW5kYW50QmxvY2ssIGJsb2NrQ29udGFpbmluZ0FsbFRleHQsIG1pblRleHRXaWR0
aCwgdGV4dFdpZHRoKTsKKyAgICAgICAgICAgIGlmICghaXNBdXRvc2l6aW5nQ2x1c3RlcihkZXNj
ZW5kYW50QmxvY2ssIGNsdXN0ZXJJbmZvKSkKKyAgICAgICAgICAgICAgICBtZWFzdXJlRGVzY2Vu
ZGFudFRleHRXaWR0aChkZXNjZW5kYW50QmxvY2ssIGNsdXN0ZXJJbmZvLCBtaW5UZXh0V2lkdGgs
IHRleHRXaWR0aCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRleHRXaWR0aCA+PSBtaW5UZXh0
V2lkdGgpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRB
dXRvc2l6ZXIuaAppbmRleCBlMWMyMmFlYjlkYjNiYzk5YzhiNzNlMWIwNjg5YzRmNmExNzA2Y2Zh
Li4zMDM3YmYyMGRmNzUwOWQ0ZWJjODNlNzA2N2Q2MTBiZGNmMzEzZGExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgUmVu
ZGVyQmxvY2s7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJUZXh0Owogc3RydWN0
IFRleHRBdXRvc2l6aW5nV2luZG93SW5mbzsKK3N0cnVjdCBUZXh0QXV0b3NpemluZ0NsdXN0ZXJJ
bmZvOwogCiBjbGFzcyBUZXh0QXV0b3NpemVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShU
ZXh0QXV0b3NpemVyKTsKQEAgLTYwLDIxICs2MSwyMSBAQCBwcml2YXRlOgogCiAgICAgZXhwbGlj
aXQgVGV4dEF1dG9zaXplcihEb2N1bWVudCopOwogCi0gICAgdm9pZCBwcm9jZXNzQ2x1c3RlcihS
ZW5kZXJCbG9jayogY2x1c3RlciwgUmVuZGVyQmxvY2sqIGNvbnRhaW5lciwgUmVuZGVyT2JqZWN0
KiBzdWJ0cmVlUm9vdCwgY29uc3QgVGV4dEF1dG9zaXppbmdXaW5kb3dJbmZvJik7Ci0gICAgdm9p
ZCBwcm9jZXNzQ29udGFpbmVyKGZsb2F0IG11bHRpcGxpZXIsIFJlbmRlckJsb2NrKiBjb250YWlu
ZXIsIGNvbnN0IFJlbmRlckJsb2NrKiBibG9ja0NvbnRhaW5pbmdBbGxUZXh0LCBSZW5kZXJPYmpl
Y3QqIHN1YnRyZWVSb290LCBjb25zdCBUZXh0QXV0b3NpemluZ1dpbmRvd0luZm8mKTsKKyAgICB2
b2lkIHByb2Nlc3NDbHVzdGVyKFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm8qLCBSZW5kZXJCbG9j
ayogY29udGFpbmVyLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVSb290LCBjb25zdCBUZXh0QXV0b3Np
emluZ1dpbmRvd0luZm8mKTsKKyAgICB2b2lkIHByb2Nlc3NDb250YWluZXIoZmxvYXQgbXVsdGlw
bGllciwgUmVuZGVyQmxvY2sqIGNvbnRhaW5lciwgY29uc3QgVGV4dEF1dG9zaXppbmdDbHVzdGVy
SW5mbyosIFJlbmRlck9iamVjdCogc3VidHJlZVJvb3QsIGNvbnN0IFRleHRBdXRvc2l6aW5nV2lu
ZG93SW5mbyYpOwogCiAgICAgdm9pZCBzZXRNdWx0aXBsaWVyKFJlbmRlck9iamVjdCosIGZsb2F0
KTsKIAogICAgIHN0YXRpYyBib29sIGlzQXV0b3NpemluZ0NvbnRhaW5lcihjb25zdCBSZW5kZXJP
YmplY3QqKTsKLSAgICBzdGF0aWMgYm9vbCBpc0F1dG9zaXppbmdDbHVzdGVyKGNvbnN0IFJlbmRl
ckJsb2NrKiwgY29uc3QgUmVuZGVyQmxvY2sqIHBhcmVudEJsb2NrQ29udGFpbmluZ0FsbFRleHQp
OworICAgIHN0YXRpYyBib29sIGlzQXV0b3NpemluZ0NsdXN0ZXIoY29uc3QgUmVuZGVyQmxvY2sq
LCBjb25zdCBUZXh0QXV0b3NpemluZ0NsdXN0ZXJJbmZvKiBwYXJlbnRDbHVzdGVySW5mbyk7CiAg
ICAgc3RhdGljIGJvb2wgaXNBdXRvc2l6aW5nQ2x1c3Rlcihjb25zdCBSZW5kZXJPYmplY3QqKTsK
IAogICAgIHN0YXRpYyBib29sIGNvbnRhaW5lclNob3VsZEJlQXV0b3NpemVkKGNvbnN0IFJlbmRl
ckJsb2NrKiBjb250YWluZXIpOwogICAgIHN0YXRpYyBib29sIGNvbnRhaW5lckNvbnRhaW5zT25l
T2ZUYWdzKGNvbnN0IFJlbmRlckJsb2NrKiBjbHVzdGVyLCBjb25zdCBWZWN0b3I8UXVhbGlmaWVk
TmFtZT4mIHRhZ3MpOwogICAgIHN0YXRpYyBib29sIGNvbnRhaW5lcklzUm93T2ZMaW5rcyhjb25z
dCBSZW5kZXJPYmplY3QqIGNvbnRhaW5lcik7CiAgICAgc3RhdGljIGJvb2wgY29udGVudEhlaWdo
dElzQ29uc3RyYWluZWQoY29uc3QgUmVuZGVyQmxvY2sqIGNvbnRhaW5lcik7Ci0gICAgc3RhdGlj
IGJvb2wgY2x1c3RlclNob3VsZEJlQXV0b3NpemVkKGNvbnN0IFJlbmRlckJsb2NrKiBibG9ja0Nv
bnRhaW5pbmdBbGxUZXh0LCBmbG9hdCBibG9ja1dpZHRoKTsKLSAgICBzdGF0aWMgdm9pZCBtZWFz
dXJlRGVzY2VuZGFudFRleHRXaWR0aChjb25zdCBSZW5kZXJCbG9jayogY29udGFpbmVyLCBjb25z
dCBSZW5kZXJCbG9jayogYmxvY2tDb250YWluaW5nQWxsVGV4dCwgZmxvYXQgbWluVGV4dFdpZHRo
LCBmbG9hdCYgdGV4dFdpZHRoKTsKKyAgICBzdGF0aWMgYm9vbCBjbHVzdGVyU2hvdWxkQmVBdXRv
c2l6ZWQoY29uc3QgVGV4dEF1dG9zaXppbmdDbHVzdGVySW5mbyosIGZsb2F0IGJsb2NrV2lkdGgp
OworICAgIHN0YXRpYyB2b2lkIG1lYXN1cmVEZXNjZW5kYW50VGV4dFdpZHRoKGNvbnN0IFJlbmRl
ckJsb2NrKiBjb250YWluZXIsIGNvbnN0IFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm8qLCBmbG9h
dCBtaW5UZXh0V2lkdGgsIGZsb2F0JiB0ZXh0V2lkdGgpOwogCiAgICAgLy8gVXNlIHRvIHRyYXZl
cnNlIHRoZSB0cmVlIG9mIGRlc2NlbmRhbnRzLCBleGNsdWRpbmcgZGVzY2VuZGFudHMgb2YgY29u
dGFpbmVycyAoYnV0IHJldHVybmluZyB0aGUgY29udGFpbmVycyB0aGVtc2VsdmVzKS4KICAgICBz
dGF0aWMgUmVuZGVyT2JqZWN0KiBuZXh0SW5QcmVPcmRlclNraXBwaW5nRGVzY2VuZGFudHNPZkNv
bnRhaW5lcnMoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0
aGluKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185842</attachid>
            <date>2013-01-31 12:48:16 -0800</date>
            <delta_ts>2013-02-06 11:07:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108384-20130131204500.patch</filename>
            <type>text/plain</type>
            <size>13115</size>
            <attacher name="Anton Vayvod">avayvod</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzgwOGVjMDkzZjFkYWUy
Nzk4NGQ1ZDU4MDE5Y2VlM2MzZWMxYTYxOS4uYTJjZjFlZGZjNjI2ODg5YmYxM2M5MGE0OWNhOWY0
NTE3NzkyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTAxLTMxICBBbnRv
biBWYXl2b2QgIDxhdmF5dm9kQGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXh0QXV0b3Npemlu
ZzogcmVmYWN0b3IgdGhlIGNsdXN0ZXIgcmVsYXRlZCBtZXRob2QgcGFyYW1ldGVycyBpbnRvIGEg
c2luZ2xlIHN0cnVjdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwODM4NAorCisgICAgICAgIFRoaXMgYW50aWNpcGF0ZXMgYWRkaW5nIG1vcmUgY2x1
c3RlciByZWxhdGVkIGluZm9ybWF0aW9uIGluIHRoZSBmb2xsb3dpbmcgcGF0Y2hlcy4KKyAgICAg
ICAgCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisg
ICAgICAgIEp1c3QgYSByZWZhY3RvcmluZyBzbyBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dEF1dG9zaXplci5jcHA6IGRlZmluZSB0aGUgbmV3IHN0cnVjdCBhbmQgcGFz
cyBpdCB0byBldmVyeSBtZXRob2QgaW5zdGVhZCBvZgorICAgICAgICBhIGNsdXN0ZXIgYW5kIGl0
cyBkZXNjZW5kYW50IGJsb2NrIGNvbnRhaW5pbmcgYWxsIHRleHQuCisgICAgICAgICogcmVuZGVy
aW5nL1RleHRBdXRvc2l6ZXIuaDogY2hhbmdlIG1ldGhvZCBwcm90b3R5cGVzIHRvIHJlY2VpdmUg
dGhlIG5ldyBzdHJ1Y3QKKyAgICAgICAgYXMgYSBwYXJhbWV0ZXIgZGVmaW5pbmcgYW4gYXV0b3Np
emluZyBjbHVzdGVyLgorCisgICAgICAgICogcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9zaXppbmdDbHVzdGVySW5mbzo6VGV4dEF1dG9zaXpp
bmdDbHVzdGVySW5mbyk6CisgICAgICAgIChUZXh0QXV0b3NpemluZ0NsdXN0ZXJJbmZvKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9zaXplcjo6cHJvY2Vz
c1N1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9zaXplcjo6cHJvY2Vzc0NsdXN0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9zaXplcjo6cHJvY2Vzc0NvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b3NpemVyOjppc0F1dG9zaXppbmdDbHVzdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvc2l6ZXI6OmNsdXN0ZXJTaG91bGRCZUF1dG9zaXpl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b3NpemVyOjptZWFzdXJlRGVzY2VuZGFudFRl
eHRXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorCiAyMDEzLTAxLTMwICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFBvcnQgRHJhZ0ltYWdlV2luLmNwcCB0byBXaW5DRQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuY3BwCmluZGV4IGJlZGUyODQ1YjZjN2U3
YzRlMTNkYjM0ZTY3ODU0NWI3NzkzOTA3NmUuLjY2YzUzNDkxMGRjNmE4OTUyMGE0ZTYxNzhkNTY0
Mjc1NDdkYWI0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0
b3NpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5j
cHAKQEAgLTQ3LDYgKzQ3LDE3IEBAIHN0cnVjdCBUZXh0QXV0b3NpemluZ1dpbmRvd0luZm8gewog
ICAgIEludFNpemUgbWluTGF5b3V0U2l6ZTsKIH07CiAKK3N0cnVjdCBUZXh0QXV0b3NpemluZ0Ns
dXN0ZXJJbmZvIHsKKyAgICBleHBsaWNpdCBUZXh0QXV0b3NpemluZ0NsdXN0ZXJJbmZvKFJlbmRl
ckJsb2NrKiByb290KQorICAgICAgICA6IHJvb3Qocm9vdCkKKyAgICAgICAgLCBibG9ja0NvbnRh
aW5pbmdBbGxUZXh0KDApCisgICAgeworICAgIH0KKworICAgIFJlbmRlckJsb2NrKiByb290Owor
ICAgIGNvbnN0IFJlbmRlckJsb2NrKiBibG9ja0NvbnRhaW5pbmdBbGxUZXh0OworfTsKKwogCiBz
dGF0aWMgY29uc3QgVmVjdG9yPFF1YWxpZmllZE5hbWU+JiBmb3JtSW5wdXRUYWdzKCkKIHsKQEAg
LTEwNiwyNCArMTE3LDI1IEBAIGJvb2wgVGV4dEF1dG9zaXplcjo6cHJvY2Vzc1N1YnRyZWUoUmVu
ZGVyT2JqZWN0KiBsYXlvdXRSb290KQogICAgIHdoaWxlIChjbHVzdGVyICYmICFpc0F1dG9zaXpp
bmdDbHVzdGVyKGNsdXN0ZXIpKQogICAgICAgICBjbHVzdGVyID0gY2x1c3Rlci0+Y29udGFpbmlu
Z0Jsb2NrKCk7CiAKLSAgICBwcm9jZXNzQ2x1c3RlcihjbHVzdGVyLCBjb250YWluZXIsIGxheW91
dFJvb3QsIHdpbmRvd0luZm8pOworICAgIFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm8gY2x1c3Rl
ckluZm8oY2x1c3Rlcik7CisgICAgcHJvY2Vzc0NsdXN0ZXIoJmNsdXN0ZXJJbmZvLCBjb250YWlu
ZXIsIGxheW91dFJvb3QsIHdpbmRvd0luZm8pOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IFRleHRBdXRvc2l6ZXI6OnByb2Nlc3NDbHVzdGVyKFJlbmRlckJsb2NrKiBjbHVzdGVyLCBSZW5k
ZXJCbG9jayogY29udGFpbmVyLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVSb290LCBjb25zdCBUZXh0
QXV0b3NpemluZ1dpbmRvd0luZm8mIHdpbmRvd0luZm8pCit2b2lkIFRleHRBdXRvc2l6ZXI6OnBy
b2Nlc3NDbHVzdGVyKFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm8qIGNsdXN0ZXJJbmZvLCBSZW5k
ZXJCbG9jayogY29udGFpbmVyLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVSb290LCBjb25zdCBUZXh0
QXV0b3NpemluZ1dpbmRvd0luZm8mIHdpbmRvd0luZm8pCiB7CiAgICAgLy8gTWFueSBwYWdlcyBz
ZXQgYSBtYXgtd2lkdGggb24gdGhlaXIgY29udGVudC4gU28gZXNwZWNpYWxseSBmb3IgdGhlCiAg
ICAgLy8gUmVuZGVyVmlldywgaW5zdGVhZCBvZiBqdXN0IHRha2luZyB0aGUgd2lkdGggb2YgfGNs
dXN0ZXJ8IHdlIGZpbmQKICAgICAvLyB0aGUgbG93ZXN0IGNvbW1vbiBhbmNlc3RvciBvZiB0aGUg
Zmlyc3QgYW5kIGxhc3QgZGVzY2VuZGFudCB0ZXh0IG5vZGUgb2YKICAgICAvLyB0aGUgY2x1c3Rl
ciAoaS5lLiB0aGUgZGVlcGVzdCB3cmFwcGVyIGJsb2NrIHRoYXQgY29udGFpbnMgYWxsIHRoZSB0
ZXh0KSwKICAgICAvLyBhbmQgdXNlIGl0cyB3aWR0aCBpbnN0ZWFkLgotICAgIGNvbnN0IFJlbmRl
ckJsb2NrKiBibG9ja0NvbnRhaW5pbmdBbGxUZXh0ID0gZmluZERlZXBlc3RCbG9ja0NvbnRhaW5p
bmdBbGxUZXh0KGNsdXN0ZXIpOwotICAgIGZsb2F0IHRleHRXaWR0aCA9IGJsb2NrQ29udGFpbmlu
Z0FsbFRleHQtPmNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKKyAgICBjbHVzdGVySW5mby0+YmxvY2tD
b250YWluaW5nQWxsVGV4dCA9IGZpbmREZWVwZXN0QmxvY2tDb250YWluaW5nQWxsVGV4dChjbHVz
dGVySW5mby0+cm9vdCk7CisgICAgZmxvYXQgdGV4dFdpZHRoID0gY2x1c3RlckluZm8tPmJsb2Nr
Q29udGFpbmluZ0FsbFRleHQtPmNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKIAogICAgIGZsb2F0IG11
bHRpcGxpZXIgPSAxOwotICAgIGlmIChjbHVzdGVyU2hvdWxkQmVBdXRvc2l6ZWQoYmxvY2tDb250
YWluaW5nQWxsVGV4dCwgdGV4dFdpZHRoKSkgewotICAgICAgICBpbnQgbG9naWNhbFdpbmRvd1dp
ZHRoID0gY2x1c3Rlci0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHdpbmRvd0luZm8ud2lu
ZG93U2l6ZS53aWR0aCgpIDogd2luZG93SW5mby53aW5kb3dTaXplLmhlaWdodCgpOwotICAgICAg
ICBpbnQgbG9naWNhbExheW91dFdpZHRoID0gY2x1c3Rlci0+aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IHdpbmRvd0luZm8ubWluTGF5b3V0U2l6ZS53aWR0aCgpIDogd2luZG93SW5mby5taW5M
YXlvdXRTaXplLmhlaWdodCgpOworICAgIGlmIChjbHVzdGVyU2hvdWxkQmVBdXRvc2l6ZWQoY2x1
c3RlckluZm8sIHRleHRXaWR0aCkpIHsKKyAgICAgICAgaW50IGxvZ2ljYWxXaW5kb3dXaWR0aCA9
IGNsdXN0ZXJJbmZvLT5yb290LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gd2luZG93SW5m
by53aW5kb3dTaXplLndpZHRoKCkgOiB3aW5kb3dJbmZvLndpbmRvd1NpemUuaGVpZ2h0KCk7Cisg
ICAgICAgIGludCBsb2dpY2FsTGF5b3V0V2lkdGggPSBjbHVzdGVySW5mby0+cm9vdC0+aXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IHdpbmRvd0luZm8ubWluTGF5b3V0U2l6ZS53aWR0aCgpIDog
d2luZG93SW5mby5taW5MYXlvdXRTaXplLmhlaWdodCgpOwogICAgICAgICAvLyBJZ25vcmUgYm94
IHdpZHRoIGluIGV4Y2VzcyBvZiB0aGUgbGF5b3V0IHdpZHRoLCB0byBhdm9pZCBleHRyZW1lIG11
bHRpcGxpZXJzLgogICAgICAgICBmbG9hdCBsb2dpY2FsQ2x1c3RlcldpZHRoID0gc3RkOjptaW48
ZmxvYXQ+KHRleHRXaWR0aCwgbG9naWNhbExheW91dFdpZHRoKTsKIApAQCAtMTMyLDEwICsxNDQs
MTAgQEAgdm9pZCBUZXh0QXV0b3NpemVyOjpwcm9jZXNzQ2x1c3RlcihSZW5kZXJCbG9jayogY2x1
c3RlciwgUmVuZGVyQmxvY2sqIGNvbnRhaW5lciwKICAgICAgICAgbXVsdGlwbGllciA9IHN0ZDo6
bWF4KDEuMGYsIG11bHRpcGxpZXIpOwogICAgIH0KIAotICAgIHByb2Nlc3NDb250YWluZXIobXVs
dGlwbGllciwgY29udGFpbmVyLCBibG9ja0NvbnRhaW5pbmdBbGxUZXh0LCBzdWJ0cmVlUm9vdCwg
d2luZG93SW5mbyk7CisgICAgcHJvY2Vzc0NvbnRhaW5lcihtdWx0aXBsaWVyLCBjb250YWluZXIs
IGNsdXN0ZXJJbmZvLCBzdWJ0cmVlUm9vdCwgd2luZG93SW5mbyk7CiB9CiAKLXZvaWQgVGV4dEF1
dG9zaXplcjo6cHJvY2Vzc0NvbnRhaW5lcihmbG9hdCBtdWx0aXBsaWVyLCBSZW5kZXJCbG9jayog
Y29udGFpbmVyLCBjb25zdCBSZW5kZXJCbG9jayogYmxvY2tDb250YWluaW5nQWxsVGV4dCwgUmVu
ZGVyT2JqZWN0KiBzdWJ0cmVlUm9vdCwgY29uc3QgVGV4dEF1dG9zaXppbmdXaW5kb3dJbmZvJiB3
aW5kb3dJbmZvKQordm9pZCBUZXh0QXV0b3NpemVyOjpwcm9jZXNzQ29udGFpbmVyKGZsb2F0IG11
bHRpcGxpZXIsIFJlbmRlckJsb2NrKiBjb250YWluZXIsIGNvbnN0IFRleHRBdXRvc2l6aW5nQ2x1
c3RlckluZm8qIGNsdXN0ZXJJbmZvLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVSb290LCBjb25zdCBU
ZXh0QXV0b3NpemluZ1dpbmRvd0luZm8mIHdpbmRvd0luZm8pCiB7CiAgICAgQVNTRVJUKGlzQXV0
b3NpemluZ0NvbnRhaW5lcihjb250YWluZXIpKTsKIApAQCAtMTUxLDEwICsxNjMsMTEgQEAgdm9p
ZCBUZXh0QXV0b3NpemVyOjpwcm9jZXNzQ29udGFpbmVyKGZsb2F0IG11bHRpcGxpZXIsIFJlbmRl
ckJsb2NrKiBjb250YWluZXIsIGMKICAgICAgICAgICAgIC8vIEZJWE1FOiBJbmNyZWFzZSBsaXN0
IG1hcmtlciBzaXplIHByb3BvcnRpb25hdGVseS4KICAgICAgICAgfSBlbHNlIGlmIChpc0F1dG9z
aXppbmdDb250YWluZXIoZGVzY2VuZGFudCkpIHsKICAgICAgICAgICAgIFJlbmRlckJsb2NrKiBk
ZXNjZW5kYW50QmxvY2sgPSB0b1JlbmRlckJsb2NrKGRlc2NlbmRhbnQpOwotICAgICAgICAgICAg
aWYgKGlzQXV0b3NpemluZ0NsdXN0ZXIoZGVzY2VuZGFudEJsb2NrLCBibG9ja0NvbnRhaW5pbmdB
bGxUZXh0KSkKLSAgICAgICAgICAgICAgICBwcm9jZXNzQ2x1c3RlcihkZXNjZW5kYW50QmxvY2ss
IGRlc2NlbmRhbnRCbG9jaywgZGVzY2VuZGFudEJsb2NrLCB3aW5kb3dJbmZvKTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwcm9jZXNzQ29udGFpbmVyKG11bHRpcGxpZXIsIGRl
c2NlbmRhbnRCbG9jaywgYmxvY2tDb250YWluaW5nQWxsVGV4dCwgZGVzY2VuZGFudEJsb2NrLCB3
aW5kb3dJbmZvKTsKKyAgICAgICAgICAgIGlmIChpc0F1dG9zaXppbmdDbHVzdGVyKGRlc2NlbmRh
bnRCbG9jaywgY2x1c3RlckluZm8pKSB7CisgICAgICAgICAgICAgICAgVGV4dEF1dG9zaXppbmdD
bHVzdGVySW5mbyBkZXNjZW5kYW50Q2x1c3RlckluZm8oZGVzY2VuZGFudEJsb2NrKTsKKyAgICAg
ICAgICAgICAgICBwcm9jZXNzQ2x1c3RlcigmZGVzY2VuZGFudENsdXN0ZXJJbmZvLCBkZXNjZW5k
YW50QmxvY2ssIGRlc2NlbmRhbnRCbG9jaywgd2luZG93SW5mbyk7CisgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICBwcm9jZXNzQ29udGFpbmVyKG11bHRpcGxpZXIsIGRlc2NlbmRh
bnRCbG9jaywgY2x1c3RlckluZm8sIGRlc2NlbmRhbnRCbG9jaywgd2luZG93SW5mbyk7CiAgICAg
ICAgIH0KICAgICAgICAgZGVzY2VuZGFudCA9IG5leHRJblByZU9yZGVyU2tpcHBpbmdEZXNjZW5k
YW50c09mQ29udGFpbmVycyhkZXNjZW5kYW50LCBzdWJ0cmVlUm9vdCk7CiAgICAgfQpAQCAtMjE3
LDcgKzIzMCw3IEBAIGJvb2wgVGV4dEF1dG9zaXplcjo6aXNBdXRvc2l6aW5nQ29udGFpbmVyKGNv
bnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VGV4dEF1dG9zaXplcjo6aXNBdXRvc2l6aW5nQ2x1c3Rlcihjb25zdCBSZW5kZXJCbG9jayogcmVu
ZGVyZXIsIGNvbnN0IFJlbmRlckJsb2NrKiBwYXJlbnRCbG9ja0NvbnRhaW5pbmdBbGxUZXh0KQor
Ym9vbCBUZXh0QXV0b3NpemVyOjppc0F1dG9zaXppbmdDbHVzdGVyKGNvbnN0IFJlbmRlckJsb2Nr
KiByZW5kZXJlciwgY29uc3QgVGV4dEF1dG9zaXppbmdDbHVzdGVySW5mbyogcGFyZW50Q2x1c3Rl
ckluZm8pCiB7CiAgICAgLy8gIkF1dG9zaXppbmcgY2x1c3RlcnMiIGFyZSBzcGVjaWFsIGF1dG9z
aXppbmcgY29udGFpbmVycyB3aXRoaW4gd2hpY2ggd2UKICAgICAvLyB3YW50IHRvIGVuZm9yY2Ug
YSB1bmlmb3JtIHRleHQgc2l6ZSBtdWx0aXBsaWVyLCBpbiB0aGUgaG9wZXMgb2YgbWFraW5nCkBA
IC0yNDcsOSArMjYwLDkgQEAgYm9vbCBUZXh0QXV0b3NpemVyOjppc0F1dG9zaXppbmdDbHVzdGVy
KGNvbnN0IFJlbmRlckJsb2NrKiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAvLyB0ZXh0IGFu
ZCB0aGF0IG9mIGEgbmFycm93IGNoaWxkIGJlZm9yZSB0aGUgY2hpbGQgYmVjb21lcyBhIGNsdXN0
ZXIuCiAgICAgY29uc3QgZmxvYXQgbWF4V2lkdGhEaWZmZXJlbmNlID0gMjAwOwogCi0gICAgaWYg
KHBhcmVudEJsb2NrQ29udGFpbmluZ0FsbFRleHQpIHsKKyAgICBpZiAocGFyZW50Q2x1c3Rlcklu
Zm8tPmJsb2NrQ29udGFpbmluZ0FsbFRleHQpIHsKICAgICAgICAgZmxvYXQgY29udGVudFdpZHRo
ID0gcmVuZGVyZXItPmNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKLSAgICAgICAgZmxvYXQgY2x1c3Rl
clRleHRXaWR0aCA9IHBhcmVudEJsb2NrQ29udGFpbmluZ0FsbFRleHQtPmNvbnRlbnRMb2dpY2Fs
V2lkdGgoKTsKKyAgICAgICAgZmxvYXQgY2x1c3RlclRleHRXaWR0aCA9IHBhcmVudENsdXN0ZXJJ
bmZvLT5ibG9ja0NvbnRhaW5pbmdBbGxUZXh0LT5jb250ZW50TG9naWNhbFdpZHRoKCk7CiAgICAg
ICAgIGlmIChjb250ZW50V2lkdGggPiBjbHVzdGVyVGV4dFdpZHRoIHx8IChjbHVzdGVyVGV4dFdp
ZHRoIC0gY29udGVudFdpZHRoKSA+IG1heFdpZHRoRGlmZmVyZW5jZSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTI3MCw3ICsyODMsOCBAQCBib29sIFRleHRBdXRvc2l6ZXI6
OmlzQXV0b3NpemluZ0NsdXN0ZXIoY29uc3QgUmVuZGVyQmxvY2sqIHJlbmRlcmVyLCBjb25zdCBS
ZW5kZQogCiBib29sIFRleHRBdXRvc2l6ZXI6OmlzQXV0b3NpemluZ0NsdXN0ZXIoY29uc3QgUmVu
ZGVyT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgcmV0dXJuIGlzQXV0b3NpemluZ0NvbnRhaW5lcihv
YmplY3QpICYmIGlzQXV0b3NpemluZ0NsdXN0ZXIodG9SZW5kZXJCbG9jayhvYmplY3QpLCAwKTsK
KyAgICBUZXh0QXV0b3NpemluZ0NsdXN0ZXJJbmZvIGVtcHR5Q2x1c3RlckluZm8oMCk7CisgICAg
cmV0dXJuIGlzQXV0b3NpemluZ0NvbnRhaW5lcihvYmplY3QpICYmIGlzQXV0b3NpemluZ0NsdXN0
ZXIodG9SZW5kZXJCbG9jayhvYmplY3QpLCAmZW1wdHlDbHVzdGVySW5mbyk7CiB9CiAKIGJvb2wg
VGV4dEF1dG9zaXplcjo6Y29udGFpbmVyU2hvdWxkQmVBdXRvc2l6ZWQoY29uc3QgUmVuZGVyQmxv
Y2sqIGNvbnRhaW5lcikKQEAgLTM2NCw3ICszNzgsNyBAQCBib29sIFRleHRBdXRvc2l6ZXI6OmNv
bnRlbnRIZWlnaHRJc0NvbnN0cmFpbmVkKGNvbnN0IFJlbmRlckJsb2NrKiBjb250YWluZXIpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRleHRBdXRvc2l6ZXI6OmNsdXN0ZXJTaG91bGRC
ZUF1dG9zaXplZChjb25zdCBSZW5kZXJCbG9jayogYmxvY2tDb250YWluaW5nQWxsVGV4dCwgZmxv
YXQgYmxvY2tXaWR0aCkKK2Jvb2wgVGV4dEF1dG9zaXplcjo6Y2x1c3RlclNob3VsZEJlQXV0b3Np
emVkKGNvbnN0IFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm8qIGNsdXN0ZXJJbmZvLCBmbG9hdCBi
bG9ja1dpZHRoKQogewogICAgIC8vIERvbid0IGF1dG9zaXplIGNsdXN0ZXJzIHRoYXQgY29udGFp
biBsZXNzIHRoYW4gNCBsaW5lcyBvZiB0ZXh0IChpbgogICAgIC8vIHByYWN0aWNlIGxlc3MgbGlu
ZXMgYXJlIHJlcXVpcmVkLCBzaW5jZSBtZWFzdXJlRGVzY2VuZGFudFRleHRXaWR0aApAQCAtMzc5
LDEzICszOTMsMTMgQEAgYm9vbCBUZXh0QXV0b3NpemVyOjpjbHVzdGVyU2hvdWxkQmVBdXRvc2l6
ZWQoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrQ29udGFpbmluZ0EKICAgICBjb25zdCBmbG9hdCBt
aW5MaW5lc09mVGV4dCA9IDQ7CiAgICAgZmxvYXQgbWluVGV4dFdpZHRoID0gYmxvY2tXaWR0aCAq
IG1pbkxpbmVzT2ZUZXh0OwogICAgIGZsb2F0IHRleHRXaWR0aCA9IDA7Ci0gICAgbWVhc3VyZURl
c2NlbmRhbnRUZXh0V2lkdGgoYmxvY2tDb250YWluaW5nQWxsVGV4dCwgYmxvY2tDb250YWluaW5n
QWxsVGV4dCwgbWluVGV4dFdpZHRoLCB0ZXh0V2lkdGgpOworICAgIG1lYXN1cmVEZXNjZW5kYW50
VGV4dFdpZHRoKGNsdXN0ZXJJbmZvLT5ibG9ja0NvbnRhaW5pbmdBbGxUZXh0LCBjbHVzdGVySW5m
bywgbWluVGV4dFdpZHRoLCB0ZXh0V2lkdGgpOwogICAgIGlmICh0ZXh0V2lkdGggPj0gbWluVGV4
dFdpZHRoKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgVGV4dEF1dG9zaXplcjo6bWVhc3VyZURlc2NlbmRhbnRUZXh0V2lkdGgoY29uc3QgUmVuZGVy
QmxvY2sqIGNvbnRhaW5lciwgY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrQ29udGFpbmluZ0FsbFRl
eHQsIGZsb2F0IG1pblRleHRXaWR0aCwgZmxvYXQmIHRleHRXaWR0aCkKK3ZvaWQgVGV4dEF1dG9z
aXplcjo6bWVhc3VyZURlc2NlbmRhbnRUZXh0V2lkdGgoY29uc3QgUmVuZGVyQmxvY2sqIGNvbnRh
aW5lciwgY29uc3QgVGV4dEF1dG9zaXppbmdDbHVzdGVySW5mbyogY2x1c3RlckluZm8sIGZsb2F0
IG1pblRleHRXaWR0aCwgZmxvYXQmIHRleHRXaWR0aCkKIHsKICAgICBib29sIHNraXBMb2NhbFRl
eHQgPSAhY29udGFpbmVyU2hvdWxkQmVBdXRvc2l6ZWQoY29udGFpbmVyKTsKIApAQCAtMzk1LDgg
KzQwOSw4IEBAIHZvaWQgVGV4dEF1dG9zaXplcjo6bWVhc3VyZURlc2NlbmRhbnRUZXh0V2lkdGgo
Y29uc3QgUmVuZGVyQmxvY2sqIGNvbnRhaW5lciwgY29uCiAgICAgICAgICAgICB0ZXh0V2lkdGgg
Kz0gdG9SZW5kZXJUZXh0KGRlc2NlbmRhbnQpLT5yZW5kZXJlZFRleHRMZW5ndGgoKSAqIGRlc2Nl
bmRhbnQtPnN0eWxlKCktPnNwZWNpZmllZEZvbnRTaXplKCk7CiAgICAgICAgIH0gZWxzZSBpZiAo
aXNBdXRvc2l6aW5nQ29udGFpbmVyKGRlc2NlbmRhbnQpKSB7CiAgICAgICAgICAgICBSZW5kZXJC
bG9jayogZGVzY2VuZGFudEJsb2NrID0gdG9SZW5kZXJCbG9jayhkZXNjZW5kYW50KTsKLSAgICAg
ICAgICAgIGlmICghaXNBdXRvc2l6aW5nQ2x1c3RlcihkZXNjZW5kYW50QmxvY2ssIGJsb2NrQ29u
dGFpbmluZ0FsbFRleHQpKQotICAgICAgICAgICAgICAgIG1lYXN1cmVEZXNjZW5kYW50VGV4dFdp
ZHRoKGRlc2NlbmRhbnRCbG9jaywgYmxvY2tDb250YWluaW5nQWxsVGV4dCwgbWluVGV4dFdpZHRo
LCB0ZXh0V2lkdGgpOworICAgICAgICAgICAgaWYgKCFpc0F1dG9zaXppbmdDbHVzdGVyKGRlc2Nl
bmRhbnRCbG9jaywgY2x1c3RlckluZm8pKQorICAgICAgICAgICAgICAgIG1lYXN1cmVEZXNjZW5k
YW50VGV4dFdpZHRoKGRlc2NlbmRhbnRCbG9jaywgY2x1c3RlckluZm8sIG1pblRleHRXaWR0aCwg
dGV4dFdpZHRoKTsKICAgICAgICAgfQogICAgICAgICBpZiAodGV4dFdpZHRoID49IG1pblRleHRX
aWR0aCkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0QXV0b3NpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1
dG9zaXplci5oCmluZGV4IGUxYzIyYWViOWRiM2JjOTljOGI3M2UxYjA2ODljNGY2YTE3MDZjZmEu
LjMwMzdiZjIwZGY3NTA5ZDRlYmM4M2U3MDY3ZDYxMGJkY2YzMTNkYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBSZW5k
ZXJCbG9jazsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclRleHQ7CiBzdHJ1Y3Qg
VGV4dEF1dG9zaXppbmdXaW5kb3dJbmZvOworc3RydWN0IFRleHRBdXRvc2l6aW5nQ2x1c3Rlcklu
Zm87CiAKIGNsYXNzIFRleHRBdXRvc2l6ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRl
eHRBdXRvc2l6ZXIpOwpAQCAtNjAsMjEgKzYxLDIxIEBAIHByaXZhdGU6CiAKICAgICBleHBsaWNp
dCBUZXh0QXV0b3NpemVyKERvY3VtZW50Kik7CiAKLSAgICB2b2lkIHByb2Nlc3NDbHVzdGVyKFJl
bmRlckJsb2NrKiBjbHVzdGVyLCBSZW5kZXJCbG9jayogY29udGFpbmVyLCBSZW5kZXJPYmplY3Qq
IHN1YnRyZWVSb290LCBjb25zdCBUZXh0QXV0b3NpemluZ1dpbmRvd0luZm8mKTsKLSAgICB2b2lk
IHByb2Nlc3NDb250YWluZXIoZmxvYXQgbXVsdGlwbGllciwgUmVuZGVyQmxvY2sqIGNvbnRhaW5l
ciwgY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrQ29udGFpbmluZ0FsbFRleHQsIFJlbmRlck9iamVj
dCogc3VidHJlZVJvb3QsIGNvbnN0IFRleHRBdXRvc2l6aW5nV2luZG93SW5mbyYpOworICAgIHZv
aWQgcHJvY2Vzc0NsdXN0ZXIoVGV4dEF1dG9zaXppbmdDbHVzdGVySW5mbyosIFJlbmRlckJsb2Nr
KiBjb250YWluZXIsIFJlbmRlck9iamVjdCogc3VidHJlZVJvb3QsIGNvbnN0IFRleHRBdXRvc2l6
aW5nV2luZG93SW5mbyYpOworICAgIHZvaWQgcHJvY2Vzc0NvbnRhaW5lcihmbG9hdCBtdWx0aXBs
aWVyLCBSZW5kZXJCbG9jayogY29udGFpbmVyLCBjb25zdCBUZXh0QXV0b3NpemluZ0NsdXN0ZXJJ
bmZvKiwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUm9vdCwgY29uc3QgVGV4dEF1dG9zaXppbmdXaW5k
b3dJbmZvJik7CiAKICAgICB2b2lkIHNldE11bHRpcGxpZXIoUmVuZGVyT2JqZWN0KiwgZmxvYXQp
OwogCiAgICAgc3RhdGljIGJvb2wgaXNBdXRvc2l6aW5nQ29udGFpbmVyKGNvbnN0IFJlbmRlck9i
amVjdCopOwotICAgIHN0YXRpYyBib29sIGlzQXV0b3NpemluZ0NsdXN0ZXIoY29uc3QgUmVuZGVy
QmxvY2sqLCBjb25zdCBSZW5kZXJCbG9jayogcGFyZW50QmxvY2tDb250YWluaW5nQWxsVGV4dCk7
CisgICAgc3RhdGljIGJvb2wgaXNBdXRvc2l6aW5nQ2x1c3Rlcihjb25zdCBSZW5kZXJCbG9jayos
IGNvbnN0IFRleHRBdXRvc2l6aW5nQ2x1c3RlckluZm8qIHBhcmVudENsdXN0ZXJJbmZvKTsKICAg
ICBzdGF0aWMgYm9vbCBpc0F1dG9zaXppbmdDbHVzdGVyKGNvbnN0IFJlbmRlck9iamVjdCopOwog
CiAgICAgc3RhdGljIGJvb2wgY29udGFpbmVyU2hvdWxkQmVBdXRvc2l6ZWQoY29uc3QgUmVuZGVy
QmxvY2sqIGNvbnRhaW5lcik7CiAgICAgc3RhdGljIGJvb2wgY29udGFpbmVyQ29udGFpbnNPbmVP
ZlRhZ3MoY29uc3QgUmVuZGVyQmxvY2sqIGNsdXN0ZXIsIGNvbnN0IFZlY3RvcjxRdWFsaWZpZWRO
YW1lPiYgdGFncyk7CiAgICAgc3RhdGljIGJvb2wgY29udGFpbmVySXNSb3dPZkxpbmtzKGNvbnN0
IFJlbmRlck9iamVjdCogY29udGFpbmVyKTsKICAgICBzdGF0aWMgYm9vbCBjb250ZW50SGVpZ2h0
SXNDb25zdHJhaW5lZChjb25zdCBSZW5kZXJCbG9jayogY29udGFpbmVyKTsKLSAgICBzdGF0aWMg
Ym9vbCBjbHVzdGVyU2hvdWxkQmVBdXRvc2l6ZWQoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrQ29u
dGFpbmluZ0FsbFRleHQsIGZsb2F0IGJsb2NrV2lkdGgpOwotICAgIHN0YXRpYyB2b2lkIG1lYXN1
cmVEZXNjZW5kYW50VGV4dFdpZHRoKGNvbnN0IFJlbmRlckJsb2NrKiBjb250YWluZXIsIGNvbnN0
IFJlbmRlckJsb2NrKiBibG9ja0NvbnRhaW5pbmdBbGxUZXh0LCBmbG9hdCBtaW5UZXh0V2lkdGgs
IGZsb2F0JiB0ZXh0V2lkdGgpOworICAgIHN0YXRpYyBib29sIGNsdXN0ZXJTaG91bGRCZUF1dG9z
aXplZChjb25zdCBUZXh0QXV0b3NpemluZ0NsdXN0ZXJJbmZvKiwgZmxvYXQgYmxvY2tXaWR0aCk7
CisgICAgc3RhdGljIHZvaWQgbWVhc3VyZURlc2NlbmRhbnRUZXh0V2lkdGgoY29uc3QgUmVuZGVy
QmxvY2sqIGNvbnRhaW5lciwgY29uc3QgVGV4dEF1dG9zaXppbmdDbHVzdGVySW5mbyosIGZsb2F0
IG1pblRleHRXaWR0aCwgZmxvYXQmIHRleHRXaWR0aCk7CiAKICAgICAvLyBVc2UgdG8gdHJhdmVy
c2UgdGhlIHRyZWUgb2YgZGVzY2VuZGFudHMsIGV4Y2x1ZGluZyBkZXNjZW5kYW50cyBvZiBjb250
YWluZXJzIChidXQgcmV0dXJuaW5nIHRoZSBjb250YWluZXJzIHRoZW1zZWx2ZXMpLgogICAgIHN0
YXRpYyBSZW5kZXJPYmplY3QqIG5leHRJblByZU9yZGVyU2tpcHBpbmdEZXNjZW5kYW50c09mQ29u
dGFpbmVycyhjb25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3QqIHN0YXlXaXRo
aW4pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>