<?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>130916</bug_id>
          
          <creation_ts>2014-03-28 16:28:41 -0700</creation_ts>
          <short_desc>[CSS Shapes] Simplify RasterShape implementation</short_desc>
          <delta_ts>2014-03-31 13:55:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>
          <dependson>130740</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Muller">giles_joplin</reporter>
          <assigned_to name="Hans Muller">giles_joplin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>995485</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2014-03-28 16:28:41 -0700</bug_when>
    <thetext>The final CSS Shapes level 1 spec (http://dev.w3.org/csswg/css-shapes-1/) does not include shape-inside only allows shape-outside to be specified on floats.  In light of this, the RasterShape class can be substantially simplified.

The support for shape-inside has already been removed, see https://bugs.webkit.org/show_bug.cgi?id=130740

Since only floats can specify shape-outside, the RasterShapeIntervals class need only track the first and last above threshold pixel column (x1 and x2 in the implementation) for each row.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995490</commentid>
    <comment_count>1</comment_count>
      <attachid>228090</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2014-03-28 16:46:05 -0700</bug_when>
    <thetext>Created attachment 228090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995492</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-28 16:47:09 -0700</bug_when>
    <thetext>Attachment 228090 did not pass style-queue:


ERROR: Source/WebCore/rendering/shapes/Shape.cpp:200:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/rendering/shapes/Shape.cpp:200:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 2 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995499</commentid>
    <comment_count>3</comment_count>
      <attachid>228092</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2014-03-28 16:52:58 -0700</bug_when>
    <thetext>Created attachment 228092
Patch

Removed a comment that offended the style checker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995924</commentid>
    <comment_count>4</comment_count>
      <attachid>228092</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-31 11:31:39 -0700</bug_when>
    <thetext>Comment on attachment 228092
Patch

Rejecting attachment 228092 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 228092, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:

Hunk #2 succeeded at 83 with fuzz 1.
1 out of 2 hunks FAILED -- saving rejects to file Source/WebCore/rendering/shapes/RasterShape.h.rej
patching file Source/WebCore/rendering/shapes/Shape.cpp
Hunk #1 succeeded at 195 (offset -2 lines).
Hunk #2 succeeded at 204 (offset -2 lines).
patching file Source/WebCore/rendering/shapes/ShapeInterval.h

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Dean Jackson&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/5748843891130368</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995959</commentid>
    <comment_count>5</comment_count>
      <attachid>228192</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2014-03-31 12:59:15 -0700</bug_when>
    <thetext>Created attachment 228192
Patch

Resync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995968</commentid>
    <comment_count>6</comment_count>
      <attachid>228192</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-31 13:15:01 -0700</bug_when>
    <thetext>Comment on attachment 228192
Patch

Rejecting attachment 228192 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 228192, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.

Full output: http://webkit-queues.appspot.com/results/4773537348845568</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995969</commentid>
    <comment_count>7</comment_count>
      <attachid>228197</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2014-03-31 13:18:34 -0700</bug_when>
    <thetext>Created attachment 228197
Patch

Fixed ChangeLog &quot;reviewed by&quot; entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995978</commentid>
    <comment_count>8</comment_count>
      <attachid>228197</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-31 13:55:38 -0700</bug_when>
    <thetext>Comment on attachment 228197
Patch

Clearing flags on attachment: 228197

Committed r166522: &lt;http://trac.webkit.org/changeset/166522&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995979</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-31 13:55:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228090</attachid>
            <date>2014-03-28 16:46:05 -0700</date>
            <delta_ts>2014-03-28 16:52:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>14523</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmY2ViYThjLi5mNTcyN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTQtMDMtMjggIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBTaGFwZXNdIFNpbXBsaWZ5IFJhc3RlclNoYXBlIGltcGxlbWVudGF0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA5MTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSBvbmx5IGZs
b2F0cyBjYW4gc3BlY2lmeSBzaGFwZS1vdXRzaWRlLCB0aGUgUmFzdGVyU2hhcGVJbnRlcnZhbHMK
KyAgICAgICAgY2xhc3Mgb25seSBuZWVkcyB0byB0cmFjayB0aGUgZmlyc3QgYW5kIGxhc3QgYWJv
dmUgdGhyZXNob2xkIHBpeGVsIGNvbHVtbgorICAgICAgICAoeDEgYW5kIHgyIGluIHRoZSBpbXBs
ZW1lbnRhdGlvbikgZm9yIGVhY2ggcm93LiBSZW1vdmVkIGNvZGUgZm9yIGRlYWxpbmcgd2l0aAor
ICAgICAgICBtdWx0aXBsZSAicnVucyIgcGVyIHJvdyBhcyB3ZWxsIGFzIHNoYXBlLWluc2lkZSBp
bnRlcm5hbHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSBmdW5jdGlvbmFsaXR5IHdh
cyBvbmx5IHJlbW92ZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hh
cGVNYXJnaW5JbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZh
bHM6OmluaXRpYWxpemVCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRl
cnZhbHM6OmJ1aWxkQm91bmRzUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6
Z2V0RXhjbHVkZWRJbnRlcnZhbHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVy
U2hhcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpSYXN0ZXJT
aGFwZUludGVydmFscyk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6
aW50ZXJ2YWxBdCk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6UmFzdGVyU2hhcGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVz
L1NoYXBlSW50ZXJ2YWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OnVuaXRl
KToKKwogMjAxNC0wMy0yNyAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KIAog
ICAgICAgICBbQ1NTUmVnaW9uc10gUmVuYW1lIGluTmFtZWRGbG93IGZsYWcgdG8gaXNOYW1lZEZs
b3dDb250ZW50Tm9kZSBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
UmFzdGVyU2hhcGUuY3BwCmluZGV4IDNhNzJmZDcuLjY4NWNkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCkBAIC03Myw5NiArNzMsNiBA
QCBJbnRTaGFwZUludGVydmFsIE1hcmdpbkludGVydmFsR2VuZXJhdG9yOjppbnRlcnZhbEF0KGlu
dCB5KSBjb25zdAogICAgIHJldHVybiBJbnRTaGFwZUludGVydmFsKG1feDEgLSBkeCwgbV94MiAr
IGR4KTsKIH0KIAotdm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6YXBwZW5kSW50ZXJ2YWwoaW50
IHksIGludCB4MSwgaW50IHgyKQotewotICAgIEFTU0VSVCh4MiA+IHgxICYmIChpbnRlcnZhbHNB
dCh5KS5pc0VtcHR5KCkgfHwgeDEgPiBpbnRlcnZhbHNBdCh5KS5sYXN0KCkueDIoKSkpOwotICAg
IG1fYm91bmRzLnVuaXRlKEludFJlY3QoeDEsIHksIHgyIC0geDEsIDEpKTsKLSAgICBpbnRlcnZh
bHNBdCh5KS5hcHBlbmQoSW50U2hhcGVJbnRlcnZhbCh4MSwgeDIpKTsKLX0KLQotdm9pZCBSYXN0
ZXJTaGFwZUludGVydmFsczo6dW5pdGVNYXJnaW5JbnRlcnZhbChpbnQgeSwgY29uc3QgSW50U2hh
cGVJbnRlcnZhbCYgaW50ZXJ2YWwpCi17Ci0gICAgQVNTRVJUKGludGVydmFsc0F0KHkpLnNpemUo
KSA8PSAxKTsgLy8gRWFjaCBtX2ludGVydmFsTGlzdHMgZW50cnkgaGFzIDAgb3Igb25lIGludGVy
dmFsLgotCi0gICAgaWYgKGludGVydmFsc0F0KHkpLmlzRW1wdHkoKSkKLSAgICAgICAgaW50ZXJ2
YWxzQXQoeSkuYXBwZW5kKGludGVydmFsKTsKLSAgICBlbHNlIHsKLSAgICAgICAgSW50U2hhcGVJ
bnRlcnZhbCYgcmVzdWx0SW50ZXJ2YWwgPSBpbnRlcnZhbHNBdCh5KVswXTsKLSAgICAgICAgcmVz
dWx0SW50ZXJ2YWwuc2V0KHN0ZDo6bWluKHJlc3VsdEludGVydmFsLngxKCksIGludGVydmFsLngx
KCkpLCBzdGQ6Om1heChyZXN1bHRJbnRlcnZhbC54MigpLCBpbnRlcnZhbC54MigpKSk7Ci0gICAg
fQotCi0gICAgbV9ib3VuZHMudW5pdGUoSW50UmVjdChpbnRlcnZhbC54MSgpLCB5LCBpbnRlcnZh
bC53aWR0aCgpLCAxKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBzaGFwZUludGVydmFsc0Nv
bnRhaW4oY29uc3QgSW50U2hhcGVJbnRlcnZhbHMmIGludGVydmFscywgY29uc3QgSW50U2hhcGVJ
bnRlcnZhbCYgaW50ZXJ2YWwpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGludGVy
dmFscy5zaXplKCk7IGkrKykgewotICAgICAgICBpZiAoaW50ZXJ2YWxzW2ldLngxKCkgPiBpbnRl
cnZhbC54MigpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoaW50ZXJ2
YWxzW2ldLmNvbnRhaW5zKGludGVydmFsKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSYXN0ZXJTaGFwZUludGVydmFsczo6
Y29udGFpbnMoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKLXsKLSAgICBpZiAoIWJvdW5kcygp
LmNvbnRhaW5zKHJlY3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjb25zdCBJbnRT
aGFwZUludGVydmFsJiByZWN0SW50ZXJ2YWwgPSBJbnRTaGFwZUludGVydmFsKHJlY3QueCgpLCBy
ZWN0Lm1heFgoKSk7Ci0gICAgZm9yIChpbnQgeSA9IHJlY3QueSgpOyB5IDwgcmVjdC5tYXhZKCk7
IHkrKykgewotICAgICAgICBpZiAoIXNoYXBlSW50ZXJ2YWxzQ29udGFpbihpbnRlcnZhbHNBdCh5
KSwgcmVjdEludGVydmFsKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZFgxVmFsdWVzKGNv
bnN0IEludFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMsIGludCBtaW5JbnRlcnZhbFdpZHRoLCBW
ZWN0b3I8aW50PiYgcmVzdWx0KQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRl
cnZhbHMuc2l6ZSgpOyBpKyspCi0gICAgICAgIGlmIChpbnRlcnZhbHNbaV0ud2lkdGgoKSA+PSBt
aW5JbnRlcnZhbFdpZHRoKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpbnRlcnZhbHNbaV0u
eDEoKSk7Ci19Ci0KLWJvb2wgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmdldEludGVydmFsWDFWYWx1
ZXMoaW50IHkxLCBpbnQgeTIsIGludCBtaW5JbnRlcnZhbFdpZHRoLCBWZWN0b3I8aW50PiYgcmVz
dWx0KSBjb25zdAotewotICAgIEFTU0VSVCh5MSA+PSAwICYmIHkyID4geTEpOwotCi0gICAgZm9y
IChpbnQgeSA9IHkxOyB5IDwgeTI7ICB5KyspIHsKLSAgICAgICAgaWYgKGludGVydmFsc0F0KHkp
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBhcHBl
bmRYMVZhbHVlcyhpbnRlcnZhbHNBdCh5MSksIG1pbkludGVydmFsV2lkdGgsIHJlc3VsdCk7Ci0g
ICAgZm9yIChpbnQgeSA9IHkxICsgMTsgeSA8IHkyOyAgeSsrKSB7Ci0gICAgICAgIGlmIChpbnRl
cnZhbHNBdCh5KSAhPSBpbnRlcnZhbHNBdCh5IC0gMSkpCi0gICAgICAgICAgICBhcHBlbmRYMVZh
bHVlcyhpbnRlcnZhbHNBdCh5KSwgbWluSW50ZXJ2YWxXaWR0aCwgcmVzdWx0KTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6Z2V0RXhj
bHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIEludFNoYXBlSW50ZXJ2YWxzJiByZXN1bHQp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKHkyID49IHkxKTsKLQotICAgIGlmICh5MiA8IGJvdW5kcygp
LnkoKSB8fCB5MSA+PSBib3VuZHMoKS5tYXhZKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHkx
ID0gc3RkOjptYXgoeTEsIGJvdW5kcygpLnkoKSk7Ci0gICAgeTIgPSBzdGQ6Om1pbih5MiwgYm91
bmRzKCkubWF4WSgpKTsKLQotICAgIHJlc3VsdCA9IGludGVydmFsc0F0KHkxKTsKLSAgICBmb3Ig
KGludCB5ID0geTEgKyAxOyB5IDwgeTI7ICB5KyspIHsKLSAgICAgICAgSW50U2hhcGVJbnRlcnZh
bHMgaW50ZXJ2YWxzOwotICAgICAgICBJbnRTaGFwZUludGVydmFsOjp1bml0ZVNoYXBlSW50ZXJ2
YWxzKHJlc3VsdCwgaW50ZXJ2YWxzQXQoeSksIGludGVydmFscyk7Ci0gICAgICAgIHJlc3VsdC5z
d2FwKGludGVydmFscyk7Ci0gICAgfQotfQotCiBQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2
YWxzPiBSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGlu
dCBzaGFwZU1hcmdpbikgY29uc3QKIHsKICAgICBpbnQgbWFyZ2luSW50ZXJ2YWxzU2l6ZSA9IChv
ZmZzZXQoKSA+IHNoYXBlTWFyZ2luKSA/IHNpemUoKSA6IHNpemUoKSAtIG9mZnNldCgpICogMiAr
IHNoYXBlTWFyZ2luICogMjsKQEAgLTE3MCw3ICs4MCw3IEBAIFBhc3NPd25QdHI8UmFzdGVyU2hh
cGVJbnRlcnZhbHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbnRl
cnZhCiAgICAgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3Io
c2hhcGVNYXJnaW4pOwogCiAgICAgZm9yIChpbnQgeSA9IGJvdW5kcygpLnkoKTsgeSA8IGJvdW5k
cygpLm1heFkoKTsgKyt5KSB7Ci0gICAgICAgIGNvbnN0IEludFNoYXBlSW50ZXJ2YWwmIGludGVy
dmFsQXRZID0gbGltaXRJbnRlcnZhbEF0KHkpOworICAgICAgICBjb25zdCBJbnRTaGFwZUludGVy
dmFsJiBpbnRlcnZhbEF0WSA9IGludGVydmFsQXQoeSk7CiAgICAgICAgIGlmIChpbnRlcnZhbEF0
WS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTc5LDMzICs4OSw0NSBA
QCBQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBSYXN0ZXJTaGFwZUludGVydmFsczo6
Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YQogICAgICAgICBpbnQgbWFyZ2luWTEgPSBzdGQ6Om1p
bihtYXhZKCksIHkgKyBzaGFwZU1hcmdpbik7CiAKICAgICAgICAgZm9yIChpbnQgbWFyZ2luWSA9
IHkgLSAxOyBtYXJnaW5ZID49IG1hcmdpblkwOyAtLW1hcmdpblkpIHsKLSAgICAgICAgICAgIGlm
IChtYXJnaW5ZID4gYm91bmRzKCkueSgpICYmIGxpbWl0SW50ZXJ2YWxBdChtYXJnaW5ZKS5jb250
YWlucyhpbnRlcnZhbEF0WSkpCisgICAgICAgICAgICBpZiAobWFyZ2luWSA+IGJvdW5kcygpLnko
KSAmJiBpbnRlcnZhbEF0KG1hcmdpblkpLmNvbnRhaW5zKGludGVydmFsQXRZKSkKICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHJlc3VsdC0+dW5pdGVNYXJnaW5JbnRlcnZhbCht
YXJnaW5ZLCBtYXJnaW5JbnRlcnZhbEdlbmVyYXRvci5pbnRlcnZhbEF0KG1hcmdpblkpKTsKKyAg
ICAgICAgICAgIHJlc3VsdC0+aW50ZXJ2YWxBdChtYXJnaW5ZKS51bml0ZShtYXJnaW5JbnRlcnZh
bEdlbmVyYXRvci5pbnRlcnZhbEF0KG1hcmdpblkpKTsKICAgICAgICAgfQogCi0gICAgICAgIHJl
c3VsdC0+dW5pdGVNYXJnaW5JbnRlcnZhbCh5LCBtYXJnaW5JbnRlcnZhbEdlbmVyYXRvci5pbnRl
cnZhbEF0KHkpKTsKKyAgICAgICAgcmVzdWx0LT5pbnRlcnZhbEF0KHkpLnVuaXRlKG1hcmdpbklu
dGVydmFsR2VuZXJhdG9yLmludGVydmFsQXQoeSkpOwogCiAgICAgICAgIGZvciAoaW50IG1hcmdp
blkgPSB5ICsgMTsgbWFyZ2luWSA8PSBtYXJnaW5ZMTsgKyttYXJnaW5ZKSB7Ci0gICAgICAgICAg
ICBpZiAobWFyZ2luWSA8IGJvdW5kcygpLm1heFkoKSAmJiBsaW1pdEludGVydmFsQXQobWFyZ2lu
WSkuY29udGFpbnMoaW50ZXJ2YWxBdFkpKQorICAgICAgICAgICAgaWYgKG1hcmdpblkgPCBib3Vu
ZHMoKS5tYXhZKCkgJiYgaW50ZXJ2YWxBdChtYXJnaW5ZKS5jb250YWlucyhpbnRlcnZhbEF0WSkp
CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICByZXN1bHQtPnVuaXRlTWFyZ2lu
SW50ZXJ2YWwobWFyZ2luWSwgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IuaW50ZXJ2YWxBdChtYXJn
aW5ZKSk7CisgICAgICAgICAgICByZXN1bHQtPmludGVydmFsQXQobWFyZ2luWSkudW5pdGUobWFy
Z2luSW50ZXJ2YWxHZW5lcmF0b3IuaW50ZXJ2YWxBdChtYXJnaW5ZKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICByZXN1bHQtPmluaXRpYWxpemVCb3VuZHMoKTsKICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2UoKTsKIH0KIAordm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6aW5pdGlhbGl6ZUJv
dW5kcygpCit7CisgICAgbV9ib3VuZHMgPSBJbnRSZWN0KCk7CisgICAgZm9yIChpbnQgeSA9IG1p
blkoKTsgeSA8IG1heFkoKTsgKyt5KSB7CisgICAgICAgIGNvbnN0IEludFNoYXBlSW50ZXJ2YWwm
IGludGVydmFsQXRZID0gaW50ZXJ2YWxBdCh5KTsKKyAgICAgICAgaWYgKGludGVydmFsQXRZLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBtX2JvdW5kcy51bml0ZShJ
bnRSZWN0KGludGVydmFsQXRZLngxKCksIHksIGludGVydmFsQXRZLndpZHRoKCksIDEpKTsKKyAg
ICB9Cit9CisKIHZvaWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmJ1aWxkQm91bmRzUGF0aChQYXRo
JiBwYXRoKSBjb25zdAogewogICAgIGZvciAoaW50IHkgPSBib3VuZHMoKS55KCk7IHkgPCBib3Vu
ZHMoKS5tYXhZKCk7IHkrKykgewotICAgICAgICBpZiAoaW50ZXJ2YWxzQXQoeSkuaXNFbXB0eSgp
KQorICAgICAgICBpZiAoaW50ZXJ2YWxBdCh5KS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBJbnRTaGFwZUludGVydmFsIGV4dGVudCA9IGxpbWl0SW50ZXJ2YWxB
dCh5KTsKKyAgICAgICAgSW50U2hhcGVJbnRlcnZhbCBleHRlbnQgPSBpbnRlcnZhbEF0KHkpOwog
ICAgICAgICBpbnQgZW5kWSA9IHkgKyAxOwogICAgICAgICBmb3IgKDsgZW5kWSA8IGJvdW5kcygp
Lm1heFkoKTsgZW5kWSsrKSB7Ci0gICAgICAgICAgICBpZiAoaW50ZXJ2YWxzQXQoZW5kWSkuaXNF
bXB0eSgpIHx8IGxpbWl0SW50ZXJ2YWxBdChlbmRZKSAhPSBleHRlbnQpCisgICAgICAgICAgICBp
ZiAoaW50ZXJ2YWxBdChlbmRZKS5pc0VtcHR5KCkgfHwgaW50ZXJ2YWxBdChlbmRZKSAhPSBleHRl
bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgcGF0aC5hZGRS
ZWN0KEZsb2F0UmVjdChleHRlbnQueDEoKSwgeSwgZXh0ZW50LndpZHRoKCksIGVuZFkgLSB5KSk7
CkBAIC0yMjcsMjEgKzE0OSwyNiBAQCBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgUmFzdGVy
U2hhcGU6Om1hcmdpbkludGVydmFscygpIGNvbnN0CiAgICAgcmV0dXJuICptX21hcmdpbkludGVy
dmFsczsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZExpbmVTZWdtZW50cyhjb25zdCBJ
bnRTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzLCBTZWdtZW50TGlzdCYgcmVzdWx0KQotewotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRlcnZhbHMuc2l6ZSgpOyBpKyspCi0gICAgICAg
IHJlc3VsdC5hcHBlbmQoTGluZVNlZ21lbnQoaW50ZXJ2YWxzW2ldLngxKCksIGludGVydmFsc1tp
XS54MigpICsgMSkpOwotfQotCiB2b2lkIFJhc3RlclNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFs
cyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVu
dExpc3QmIHJlc3VsdCkgY29uc3QKIHsKICAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYg
aW50ZXJ2YWxzID0gbWFyZ2luSW50ZXJ2YWxzKCk7CiAgICAgaWYgKGludGVydmFscy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEludFNoYXBlSW50ZXJ2YWxzIGV4Y2x1ZGVkSW50
ZXJ2YWxzOwotICAgIGludGVydmFscy5nZXRFeGNsdWRlZEludGVydmFscyhsb2dpY2FsVG9wLCBs
b2dpY2FsVG9wICsgbG9naWNhbEhlaWdodCwgZXhjbHVkZWRJbnRlcnZhbHMpOwotICAgIGFwcGVu
ZExpbmVTZWdtZW50cyhleGNsdWRlZEludGVydmFscywgcmVzdWx0KTsKKyAgICBpbnQgeTEgPSBs
b2dpY2FsVG9wOworICAgIGludCB5MiA9IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0OworICAg
IEFTU0VSVCh5MiA+PSB5MSk7CisgICAgaWYgKHkyIDwgaW50ZXJ2YWxzLmJvdW5kcygpLnkoKSB8
fCB5MSA+PSBpbnRlcnZhbHMuYm91bmRzKCkubWF4WSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICB5MSA9IHN0ZDo6bWF4KHkxLCBpbnRlcnZhbHMuYm91bmRzKCkueSgpKTsKKyAgICB5MiA9IHN0
ZDo6bWluKHkyLCBpbnRlcnZhbHMuYm91bmRzKCkubWF4WSgpKTsKKyAgICBJbnRTaGFwZUludGVy
dmFsIGV4Y2x1ZGVkSW50ZXJ2YWw7CisKKyAgICBmb3IgKGludCB5ID0geTE7IHkgPCB5MjsgIHkr
KykKKyAgICAgICAgZXhjbHVkZWRJbnRlcnZhbC51bml0ZShpbnRlcnZhbHMuaW50ZXJ2YWxBdCh5
KSk7CisKKyAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KGV4Y2x1ZGVkSW50ZXJ2YWwueDEo
KSwgZXhjbHVkZWRJbnRlcnZhbC54MigpICsgMSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNo
YXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKaW5k
ZXggYzdjMjZhOC4uYjIxNzE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9SYXN0ZXJTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvUmFzdGVyU2hhcGUuaApAQCAtNDMsNDggKzQzLDM2IEBAIHB1YmxpYzoKICAgICBSYXN0ZXJT
aGFwZUludGVydmFscyh1bnNpZ25lZCBzaXplLCBpbnQgb2Zmc2V0ID0gMCkKICAgICAgICAgOiBt
X29mZnNldChvZmZzZXQpCiAgICAgewotICAgICAgICBtX2ludGVydmFsTGlzdHMucmVzaXplKHNp
emUpOworICAgICAgICBtX2ludGVydmFscy5yZXNpemUoc2l6ZSk7CiAgICAgfQogCisgICAgdm9p
ZCBpbml0aWFsaXplQm91bmRzKCk7CiAgICAgY29uc3QgSW50UmVjdCYgYm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gbV9ib3VuZHM7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X2JvdW5kcy5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIGFwcGVuZEludGVydmFsKGludCB5LCBpbnQg
eDEsIGludCB4Mik7CiAKLSAgICB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGludCB5MSwgaW50
IHkyLCBJbnRTaGFwZUludGVydmFscyYgcmVzdWx0KSBjb25zdDsKKyAgICBJbnRTaGFwZUludGVy
dmFsJiBpbnRlcnZhbEF0KGludCB5KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHkgKyBtX29mZnNl
dCA+PSAwICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPih5ICsgbV9vZmZzZXQpIDwgbV9pbnRlcnZh
bHMuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1faW50ZXJ2YWxzW3kgKyBtX29mZnNldF07Cisg
ICAgfQogCi0gICAgUGFzc093blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gY29tcHV0ZVNoYXBl
TWFyZ2luSW50ZXJ2YWxzKGludCBzaGFwZU1hcmdpbikgY29uc3Q7CisgICAgY29uc3QgSW50U2hh
cGVJbnRlcnZhbCYgaW50ZXJ2YWxBdChpbnQgeSkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VCh5ICsgbV9vZmZzZXQgPj0gMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oeSArIG1fb2Zmc2V0
KSA8IG1faW50ZXJ2YWxzLnNpemUoKSk7CisgICAgICAgIHJldHVybiBtX2ludGVydmFsc1t5ICsg
bV9vZmZzZXRdOworICAgIH0KIAorICAgIFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+
IGNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyhpbnQgc2hhcGVNYXJnaW4pIGNvbnN0OwogICAg
IHZvaWQgYnVpbGRCb3VuZHNQYXRoKFBhdGgmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBpbnQg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJ2YWxMaXN0cy5zaXplKCk7IH0KKyAgICBpbnQg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJ2YWxzLnNpemUoKTsgfQogICAgIGludCBvZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIGludCBtaW5ZKCkgY29uc3QgeyBy
ZXR1cm4gLW1fb2Zmc2V0OyB9Ci0gICAgaW50IG1heFkoKSBjb25zdCB7IHJldHVybiAtbV9vZmZz
ZXQgKyBtX2ludGVydmFsTGlzdHMuc2l6ZSgpOyB9Ci0KLSAgICBJbnRTaGFwZUludGVydmFscyYg
aW50ZXJ2YWxzQXQoaW50IHkpCi0gICAgewotICAgICAgICBBU1NFUlQoeSArIG1fb2Zmc2V0ID49
IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHkgKyBtX29mZnNldCkgPCBtX2ludGVydmFsTGlz
dHMuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIG1faW50ZXJ2YWxMaXN0c1t5ICsgbV9vZmZzZXRd
OwotICAgIH0KLQotICAgIGNvbnN0IEludFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHNBdChpbnQg
eSkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh5ICsgbV9vZmZzZXQgPj0gMCAmJiBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oeSArIG1fb2Zmc2V0KSA8IG1faW50ZXJ2YWxMaXN0cy5zaXplKCkp
OwotICAgICAgICByZXR1cm4gbV9pbnRlcnZhbExpc3RzW3kgKyBtX29mZnNldF07Ci0gICAgfQot
Ci0gICAgSW50U2hhcGVJbnRlcnZhbCBsaW1pdEludGVydmFsQXQoaW50IHkpIGNvbnN0Ci0gICAg
ewotICAgICAgICBjb25zdCBJbnRTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzID0gaW50ZXJ2YWxz
QXQoeSk7Ci0gICAgICAgIHJldHVybiBpbnRlcnZhbHMuc2l6ZSgpID8gSW50U2hhcGVJbnRlcnZh
bChpbnRlcnZhbHNbMF0ueDEoKSwgaW50ZXJ2YWxzLmxhc3QoKS54MigpKSA6IEludFNoYXBlSW50
ZXJ2YWwoKTsKLSAgICB9CisgICAgaW50IG1heFkoKSBjb25zdCB7IHJldHVybiAtbV9vZmZzZXQg
KyBtX2ludGVydmFscy5zaXplKCk7IH0KIAotICAgIGJvb2wgY29udGFpbnMoY29uc3QgSW50UmVj
dCYpIGNvbnN0OwotICAgIGJvb2wgZ2V0SW50ZXJ2YWxYMVZhbHVlcyhpbnQgbWluWSwgaW50IG1h
eFksIGludCBtaW5JbnRlcnZhbFdpZHRoLCBWZWN0b3I8aW50PiYgcmVzdWx0KSBjb25zdDsKLSAg
ICB2b2lkIHVuaXRlTWFyZ2luSW50ZXJ2YWwoaW50IHksIGNvbnN0IEludFNoYXBlSW50ZXJ2YWwm
KTsKICAgICBJbnRSZWN0IG1fYm91bmRzOwotICAgIFZlY3RvcjxJbnRTaGFwZUludGVydmFscz4g
bV9pbnRlcnZhbExpc3RzOworICAgIFZlY3RvcjxJbnRTaGFwZUludGVydmFsPiBtX2ludGVydmFs
czsKICAgICBpbnQgbV9vZmZzZXQ7CiB9OwogCkBAIC05NSw2ICs4Myw3IEBAIHB1YmxpYzoKICAg
ICAgICAgOiBtX2ludGVydmFscyhpbnRlcnZhbHMpCiAgICAgICAgICwgbV9tYXJnaW5SZWN0U2l6
ZShtYXJnaW5SZWN0U2l6ZSkKICAgICB7CisgICAgICAgIG1faW50ZXJ2YWxzLT5pbml0aWFsaXpl
Qm91bmRzKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNoYXBlTWFyZ2luTG9n
aWNhbEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5
b3V0UmVjdD4obWFyZ2luSW50ZXJ2YWxzKCkuYm91bmRzKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDBmNmRjNDIuLmM5NWFjNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAg
UGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwg
ZmxvYXQgdGhyZXNob2xkLCBjb25zdAogICAgICAgICBpbnQgbWluQnVmZmVyWSA9IHN0ZDo6bWF4
KDAsIG1hcmdpblJlY3QueSgpIC0gaW1hZ2VSZWN0LnkoKSk7CiAgICAgICAgIGludCBtYXhCdWZm
ZXJZID0gc3RkOjptaW4oaW1hZ2VSZWN0LmhlaWdodCgpLCBtYXJnaW5SZWN0Lm1heFkoKSAtIGlt
YWdlUmVjdC55KCkpOwogCi0gICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW1hZ2VS
ZWN0LndpZHRoKCkgKiBpbWFnZVJlY3QuaGVpZ2h0KCkgKiA0KSA9PSBwaXhlbEFycmF5TGVuZ3Ro
KSB7IC8vIHNhbml0eSBjaGVjaworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlt
YWdlUmVjdC53aWR0aCgpICogaW1hZ2VSZWN0LmhlaWdodCgpICogNCkgPT0gcGl4ZWxBcnJheUxl
bmd0aCkgeyAgLy8gc2FuaXR5IGNoZWNrCiAgICAgICAgICAgICBmb3IgKGludCB5ID0gbWluQnVm
ZmVyWTsgeSA8IG1heEJ1ZmZlclk7ICsreSkgewogICAgICAgICAgICAgICAgIGludCBzdGFydFgg
PSAtMTsKICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGltYWdlUmVjdC53aWR0
aCgpOyArK3gsIHBpeGVsQXJyYXlPZmZzZXQgKz0gNCkgewpAQCAtMjA2LDcgKzIwNiw3IEBAIFBh
c3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZs
b2F0IHRocmVzaG9sZCwgY29uc3QKICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0WCA9PSAt
MSAmJiBhbHBoYUFib3ZlVGhyZXNob2xkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFy
dFggPSB4OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0WCAhPSAtMSAmJiAo
IWFscGhhQWJvdmVUaHJlc2hvbGQgfHwgeCA9PSBpbWFnZVJlY3Qud2lkdGgoKSAtIDEpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbHMtPmFwcGVuZEludGVydmFsKHkgKyBpbWFn
ZVJlY3QueSgpLCBzdGFydFggKyBpbWFnZVJlY3QueCgpLCB4ICsgaW1hZ2VSZWN0LngoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbHMtPmludGVydmFsQXQoeSArIGltYWdlUmVj
dC55KCkpLnVuaXRlKEludFNoYXBlSW50ZXJ2YWwoc3RhcnRYICsgaW1hZ2VSZWN0LngoKSwgeCAr
IGltYWdlUmVjdC54KCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0WCA9IC0xOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaAppbmRleCA0NzZmMGNlLi5jM2E2
NWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50
ZXJ2YWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2
YWwuaApAQCAtODUsNiArODUsMTYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU2hhcGVJbnRl
cnZhbDxUPihzdGQ6Om1heDxUPih4MSgpLCBpbnRlcnZhbC54MSgpKSwgc3RkOjptaW48VD4oeDIo
KSwgaW50ZXJ2YWwueDIoKSkpOwogICAgIH0KIAorICAgIHZvaWQgdW5pdGUoY29uc3QgU2hhcGVJ
bnRlcnZhbDxUPiYgaW50ZXJ2YWwpCisgICAgeworICAgICAgICBpZiAoaW50ZXJ2YWwuaXNFbXB0
eSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoaXNFbXB0eSgpKQorICAgICAg
ICAgICAgc2V0KGludGVydmFsLngxKCksIGludGVydmFsLngyKCkpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzZXQoc3RkOjptaW48VD4oeDEoKSwgaW50ZXJ2YWwueDEoKSksIHN0ZDo6bWF4
PFQ+KHgyKCksIGludGVydmFsLngyKCkpKTsKKyAgICB9CisKICAgICB0eXBlZGVmIFZlY3RvcjxT
aGFwZUludGVydmFsPFQ+PiBTaGFwZUludGVydmFsczsKICAgICB0eXBlZGVmIHR5cGVuYW1lIFNo
YXBlSW50ZXJ2YWxzOjpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKICAgICB0eXBlZGVm
IHR5cGVuYW1lIFNoYXBlSW50ZXJ2YWxzOjppdGVyYXRvciBpdGVyYXRvcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228092</attachid>
            <date>2014-03-28 16:52:58 -0700</date>
            <delta_ts>2014-03-31 12:59:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>14506</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmY2ViYThjLi5mNTcyN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTQtMDMtMjggIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBTaGFwZXNdIFNpbXBsaWZ5IFJhc3RlclNoYXBlIGltcGxlbWVudGF0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA5MTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSBvbmx5IGZs
b2F0cyBjYW4gc3BlY2lmeSBzaGFwZS1vdXRzaWRlLCB0aGUgUmFzdGVyU2hhcGVJbnRlcnZhbHMK
KyAgICAgICAgY2xhc3Mgb25seSBuZWVkcyB0byB0cmFjayB0aGUgZmlyc3QgYW5kIGxhc3QgYWJv
dmUgdGhyZXNob2xkIHBpeGVsIGNvbHVtbgorICAgICAgICAoeDEgYW5kIHgyIGluIHRoZSBpbXBs
ZW1lbnRhdGlvbikgZm9yIGVhY2ggcm93LiBSZW1vdmVkIGNvZGUgZm9yIGRlYWxpbmcgd2l0aAor
ICAgICAgICBtdWx0aXBsZSAicnVucyIgcGVyIHJvdyBhcyB3ZWxsIGFzIHNoYXBlLWluc2lkZSBp
bnRlcm5hbHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSBmdW5jdGlvbmFsaXR5IHdh
cyBvbmx5IHJlbW92ZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hh
cGVNYXJnaW5JbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZh
bHM6OmluaXRpYWxpemVCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRl
cnZhbHM6OmJ1aWxkQm91bmRzUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6
Z2V0RXhjbHVkZWRJbnRlcnZhbHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVy
U2hhcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpSYXN0ZXJT
aGFwZUludGVydmFscyk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6
aW50ZXJ2YWxBdCk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6UmFzdGVyU2hhcGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVz
L1NoYXBlSW50ZXJ2YWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OnVuaXRl
KToKKwogMjAxNC0wMy0yNyAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KIAog
ICAgICAgICBbQ1NTUmVnaW9uc10gUmVuYW1lIGluTmFtZWRGbG93IGZsYWcgdG8gaXNOYW1lZEZs
b3dDb250ZW50Tm9kZSBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
UmFzdGVyU2hhcGUuY3BwCmluZGV4IDNhNzJmZDcuLjY4NWNkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCkBAIC03Myw5NiArNzMsNiBA
QCBJbnRTaGFwZUludGVydmFsIE1hcmdpbkludGVydmFsR2VuZXJhdG9yOjppbnRlcnZhbEF0KGlu
dCB5KSBjb25zdAogICAgIHJldHVybiBJbnRTaGFwZUludGVydmFsKG1feDEgLSBkeCwgbV94MiAr
IGR4KTsKIH0KIAotdm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6YXBwZW5kSW50ZXJ2YWwoaW50
IHksIGludCB4MSwgaW50IHgyKQotewotICAgIEFTU0VSVCh4MiA+IHgxICYmIChpbnRlcnZhbHNB
dCh5KS5pc0VtcHR5KCkgfHwgeDEgPiBpbnRlcnZhbHNBdCh5KS5sYXN0KCkueDIoKSkpOwotICAg
IG1fYm91bmRzLnVuaXRlKEludFJlY3QoeDEsIHksIHgyIC0geDEsIDEpKTsKLSAgICBpbnRlcnZh
bHNBdCh5KS5hcHBlbmQoSW50U2hhcGVJbnRlcnZhbCh4MSwgeDIpKTsKLX0KLQotdm9pZCBSYXN0
ZXJTaGFwZUludGVydmFsczo6dW5pdGVNYXJnaW5JbnRlcnZhbChpbnQgeSwgY29uc3QgSW50U2hh
cGVJbnRlcnZhbCYgaW50ZXJ2YWwpCi17Ci0gICAgQVNTRVJUKGludGVydmFsc0F0KHkpLnNpemUo
KSA8PSAxKTsgLy8gRWFjaCBtX2ludGVydmFsTGlzdHMgZW50cnkgaGFzIDAgb3Igb25lIGludGVy
dmFsLgotCi0gICAgaWYgKGludGVydmFsc0F0KHkpLmlzRW1wdHkoKSkKLSAgICAgICAgaW50ZXJ2
YWxzQXQoeSkuYXBwZW5kKGludGVydmFsKTsKLSAgICBlbHNlIHsKLSAgICAgICAgSW50U2hhcGVJ
bnRlcnZhbCYgcmVzdWx0SW50ZXJ2YWwgPSBpbnRlcnZhbHNBdCh5KVswXTsKLSAgICAgICAgcmVz
dWx0SW50ZXJ2YWwuc2V0KHN0ZDo6bWluKHJlc3VsdEludGVydmFsLngxKCksIGludGVydmFsLngx
KCkpLCBzdGQ6Om1heChyZXN1bHRJbnRlcnZhbC54MigpLCBpbnRlcnZhbC54MigpKSk7Ci0gICAg
fQotCi0gICAgbV9ib3VuZHMudW5pdGUoSW50UmVjdChpbnRlcnZhbC54MSgpLCB5LCBpbnRlcnZh
bC53aWR0aCgpLCAxKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBzaGFwZUludGVydmFsc0Nv
bnRhaW4oY29uc3QgSW50U2hhcGVJbnRlcnZhbHMmIGludGVydmFscywgY29uc3QgSW50U2hhcGVJ
bnRlcnZhbCYgaW50ZXJ2YWwpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGludGVy
dmFscy5zaXplKCk7IGkrKykgewotICAgICAgICBpZiAoaW50ZXJ2YWxzW2ldLngxKCkgPiBpbnRl
cnZhbC54MigpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoaW50ZXJ2
YWxzW2ldLmNvbnRhaW5zKGludGVydmFsKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSYXN0ZXJTaGFwZUludGVydmFsczo6
Y29udGFpbnMoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKLXsKLSAgICBpZiAoIWJvdW5kcygp
LmNvbnRhaW5zKHJlY3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjb25zdCBJbnRT
aGFwZUludGVydmFsJiByZWN0SW50ZXJ2YWwgPSBJbnRTaGFwZUludGVydmFsKHJlY3QueCgpLCBy
ZWN0Lm1heFgoKSk7Ci0gICAgZm9yIChpbnQgeSA9IHJlY3QueSgpOyB5IDwgcmVjdC5tYXhZKCk7
IHkrKykgewotICAgICAgICBpZiAoIXNoYXBlSW50ZXJ2YWxzQ29udGFpbihpbnRlcnZhbHNBdCh5
KSwgcmVjdEludGVydmFsKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZFgxVmFsdWVzKGNv
bnN0IEludFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMsIGludCBtaW5JbnRlcnZhbFdpZHRoLCBW
ZWN0b3I8aW50PiYgcmVzdWx0KQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRl
cnZhbHMuc2l6ZSgpOyBpKyspCi0gICAgICAgIGlmIChpbnRlcnZhbHNbaV0ud2lkdGgoKSA+PSBt
aW5JbnRlcnZhbFdpZHRoKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpbnRlcnZhbHNbaV0u
eDEoKSk7Ci19Ci0KLWJvb2wgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmdldEludGVydmFsWDFWYWx1
ZXMoaW50IHkxLCBpbnQgeTIsIGludCBtaW5JbnRlcnZhbFdpZHRoLCBWZWN0b3I8aW50PiYgcmVz
dWx0KSBjb25zdAotewotICAgIEFTU0VSVCh5MSA+PSAwICYmIHkyID4geTEpOwotCi0gICAgZm9y
IChpbnQgeSA9IHkxOyB5IDwgeTI7ICB5KyspIHsKLSAgICAgICAgaWYgKGludGVydmFsc0F0KHkp
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBhcHBl
bmRYMVZhbHVlcyhpbnRlcnZhbHNBdCh5MSksIG1pbkludGVydmFsV2lkdGgsIHJlc3VsdCk7Ci0g
ICAgZm9yIChpbnQgeSA9IHkxICsgMTsgeSA8IHkyOyAgeSsrKSB7Ci0gICAgICAgIGlmIChpbnRl
cnZhbHNBdCh5KSAhPSBpbnRlcnZhbHNBdCh5IC0gMSkpCi0gICAgICAgICAgICBhcHBlbmRYMVZh
bHVlcyhpbnRlcnZhbHNBdCh5KSwgbWluSW50ZXJ2YWxXaWR0aCwgcmVzdWx0KTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6Z2V0RXhj
bHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIEludFNoYXBlSW50ZXJ2YWxzJiByZXN1bHQp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKHkyID49IHkxKTsKLQotICAgIGlmICh5MiA8IGJvdW5kcygp
LnkoKSB8fCB5MSA+PSBib3VuZHMoKS5tYXhZKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHkx
ID0gc3RkOjptYXgoeTEsIGJvdW5kcygpLnkoKSk7Ci0gICAgeTIgPSBzdGQ6Om1pbih5MiwgYm91
bmRzKCkubWF4WSgpKTsKLQotICAgIHJlc3VsdCA9IGludGVydmFsc0F0KHkxKTsKLSAgICBmb3Ig
KGludCB5ID0geTEgKyAxOyB5IDwgeTI7ICB5KyspIHsKLSAgICAgICAgSW50U2hhcGVJbnRlcnZh
bHMgaW50ZXJ2YWxzOwotICAgICAgICBJbnRTaGFwZUludGVydmFsOjp1bml0ZVNoYXBlSW50ZXJ2
YWxzKHJlc3VsdCwgaW50ZXJ2YWxzQXQoeSksIGludGVydmFscyk7Ci0gICAgICAgIHJlc3VsdC5z
d2FwKGludGVydmFscyk7Ci0gICAgfQotfQotCiBQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2
YWxzPiBSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGlu
dCBzaGFwZU1hcmdpbikgY29uc3QKIHsKICAgICBpbnQgbWFyZ2luSW50ZXJ2YWxzU2l6ZSA9IChv
ZmZzZXQoKSA+IHNoYXBlTWFyZ2luKSA/IHNpemUoKSA6IHNpemUoKSAtIG9mZnNldCgpICogMiAr
IHNoYXBlTWFyZ2luICogMjsKQEAgLTE3MCw3ICs4MCw3IEBAIFBhc3NPd25QdHI8UmFzdGVyU2hh
cGVJbnRlcnZhbHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbnRl
cnZhCiAgICAgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3Io
c2hhcGVNYXJnaW4pOwogCiAgICAgZm9yIChpbnQgeSA9IGJvdW5kcygpLnkoKTsgeSA8IGJvdW5k
cygpLm1heFkoKTsgKyt5KSB7Ci0gICAgICAgIGNvbnN0IEludFNoYXBlSW50ZXJ2YWwmIGludGVy
dmFsQXRZID0gbGltaXRJbnRlcnZhbEF0KHkpOworICAgICAgICBjb25zdCBJbnRTaGFwZUludGVy
dmFsJiBpbnRlcnZhbEF0WSA9IGludGVydmFsQXQoeSk7CiAgICAgICAgIGlmIChpbnRlcnZhbEF0
WS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTc5LDMzICs4OSw0NSBA
QCBQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBSYXN0ZXJTaGFwZUludGVydmFsczo6
Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YQogICAgICAgICBpbnQgbWFyZ2luWTEgPSBzdGQ6Om1p
bihtYXhZKCksIHkgKyBzaGFwZU1hcmdpbik7CiAKICAgICAgICAgZm9yIChpbnQgbWFyZ2luWSA9
IHkgLSAxOyBtYXJnaW5ZID49IG1hcmdpblkwOyAtLW1hcmdpblkpIHsKLSAgICAgICAgICAgIGlm
IChtYXJnaW5ZID4gYm91bmRzKCkueSgpICYmIGxpbWl0SW50ZXJ2YWxBdChtYXJnaW5ZKS5jb250
YWlucyhpbnRlcnZhbEF0WSkpCisgICAgICAgICAgICBpZiAobWFyZ2luWSA+IGJvdW5kcygpLnko
KSAmJiBpbnRlcnZhbEF0KG1hcmdpblkpLmNvbnRhaW5zKGludGVydmFsQXRZKSkKICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHJlc3VsdC0+dW5pdGVNYXJnaW5JbnRlcnZhbCht
YXJnaW5ZLCBtYXJnaW5JbnRlcnZhbEdlbmVyYXRvci5pbnRlcnZhbEF0KG1hcmdpblkpKTsKKyAg
ICAgICAgICAgIHJlc3VsdC0+aW50ZXJ2YWxBdChtYXJnaW5ZKS51bml0ZShtYXJnaW5JbnRlcnZh
bEdlbmVyYXRvci5pbnRlcnZhbEF0KG1hcmdpblkpKTsKICAgICAgICAgfQogCi0gICAgICAgIHJl
c3VsdC0+dW5pdGVNYXJnaW5JbnRlcnZhbCh5LCBtYXJnaW5JbnRlcnZhbEdlbmVyYXRvci5pbnRl
cnZhbEF0KHkpKTsKKyAgICAgICAgcmVzdWx0LT5pbnRlcnZhbEF0KHkpLnVuaXRlKG1hcmdpbklu
dGVydmFsR2VuZXJhdG9yLmludGVydmFsQXQoeSkpOwogCiAgICAgICAgIGZvciAoaW50IG1hcmdp
blkgPSB5ICsgMTsgbWFyZ2luWSA8PSBtYXJnaW5ZMTsgKyttYXJnaW5ZKSB7Ci0gICAgICAgICAg
ICBpZiAobWFyZ2luWSA8IGJvdW5kcygpLm1heFkoKSAmJiBsaW1pdEludGVydmFsQXQobWFyZ2lu
WSkuY29udGFpbnMoaW50ZXJ2YWxBdFkpKQorICAgICAgICAgICAgaWYgKG1hcmdpblkgPCBib3Vu
ZHMoKS5tYXhZKCkgJiYgaW50ZXJ2YWxBdChtYXJnaW5ZKS5jb250YWlucyhpbnRlcnZhbEF0WSkp
CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICByZXN1bHQtPnVuaXRlTWFyZ2lu
SW50ZXJ2YWwobWFyZ2luWSwgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IuaW50ZXJ2YWxBdChtYXJn
aW5ZKSk7CisgICAgICAgICAgICByZXN1bHQtPmludGVydmFsQXQobWFyZ2luWSkudW5pdGUobWFy
Z2luSW50ZXJ2YWxHZW5lcmF0b3IuaW50ZXJ2YWxBdChtYXJnaW5ZKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICByZXN1bHQtPmluaXRpYWxpemVCb3VuZHMoKTsKICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2UoKTsKIH0KIAordm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6aW5pdGlhbGl6ZUJv
dW5kcygpCit7CisgICAgbV9ib3VuZHMgPSBJbnRSZWN0KCk7CisgICAgZm9yIChpbnQgeSA9IG1p
blkoKTsgeSA8IG1heFkoKTsgKyt5KSB7CisgICAgICAgIGNvbnN0IEludFNoYXBlSW50ZXJ2YWwm
IGludGVydmFsQXRZID0gaW50ZXJ2YWxBdCh5KTsKKyAgICAgICAgaWYgKGludGVydmFsQXRZLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBtX2JvdW5kcy51bml0ZShJ
bnRSZWN0KGludGVydmFsQXRZLngxKCksIHksIGludGVydmFsQXRZLndpZHRoKCksIDEpKTsKKyAg
ICB9Cit9CisKIHZvaWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmJ1aWxkQm91bmRzUGF0aChQYXRo
JiBwYXRoKSBjb25zdAogewogICAgIGZvciAoaW50IHkgPSBib3VuZHMoKS55KCk7IHkgPCBib3Vu
ZHMoKS5tYXhZKCk7IHkrKykgewotICAgICAgICBpZiAoaW50ZXJ2YWxzQXQoeSkuaXNFbXB0eSgp
KQorICAgICAgICBpZiAoaW50ZXJ2YWxBdCh5KS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBJbnRTaGFwZUludGVydmFsIGV4dGVudCA9IGxpbWl0SW50ZXJ2YWxB
dCh5KTsKKyAgICAgICAgSW50U2hhcGVJbnRlcnZhbCBleHRlbnQgPSBpbnRlcnZhbEF0KHkpOwog
ICAgICAgICBpbnQgZW5kWSA9IHkgKyAxOwogICAgICAgICBmb3IgKDsgZW5kWSA8IGJvdW5kcygp
Lm1heFkoKTsgZW5kWSsrKSB7Ci0gICAgICAgICAgICBpZiAoaW50ZXJ2YWxzQXQoZW5kWSkuaXNF
bXB0eSgpIHx8IGxpbWl0SW50ZXJ2YWxBdChlbmRZKSAhPSBleHRlbnQpCisgICAgICAgICAgICBp
ZiAoaW50ZXJ2YWxBdChlbmRZKS5pc0VtcHR5KCkgfHwgaW50ZXJ2YWxBdChlbmRZKSAhPSBleHRl
bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgcGF0aC5hZGRS
ZWN0KEZsb2F0UmVjdChleHRlbnQueDEoKSwgeSwgZXh0ZW50LndpZHRoKCksIGVuZFkgLSB5KSk7
CkBAIC0yMjcsMjEgKzE0OSwyNiBAQCBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgUmFzdGVy
U2hhcGU6Om1hcmdpbkludGVydmFscygpIGNvbnN0CiAgICAgcmV0dXJuICptX21hcmdpbkludGVy
dmFsczsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZExpbmVTZWdtZW50cyhjb25zdCBJ
bnRTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzLCBTZWdtZW50TGlzdCYgcmVzdWx0KQotewotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRlcnZhbHMuc2l6ZSgpOyBpKyspCi0gICAgICAg
IHJlc3VsdC5hcHBlbmQoTGluZVNlZ21lbnQoaW50ZXJ2YWxzW2ldLngxKCksIGludGVydmFsc1tp
XS54MigpICsgMSkpOwotfQotCiB2b2lkIFJhc3RlclNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFs
cyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVu
dExpc3QmIHJlc3VsdCkgY29uc3QKIHsKICAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYg
aW50ZXJ2YWxzID0gbWFyZ2luSW50ZXJ2YWxzKCk7CiAgICAgaWYgKGludGVydmFscy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEludFNoYXBlSW50ZXJ2YWxzIGV4Y2x1ZGVkSW50
ZXJ2YWxzOwotICAgIGludGVydmFscy5nZXRFeGNsdWRlZEludGVydmFscyhsb2dpY2FsVG9wLCBs
b2dpY2FsVG9wICsgbG9naWNhbEhlaWdodCwgZXhjbHVkZWRJbnRlcnZhbHMpOwotICAgIGFwcGVu
ZExpbmVTZWdtZW50cyhleGNsdWRlZEludGVydmFscywgcmVzdWx0KTsKKyAgICBpbnQgeTEgPSBs
b2dpY2FsVG9wOworICAgIGludCB5MiA9IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0OworICAg
IEFTU0VSVCh5MiA+PSB5MSk7CisgICAgaWYgKHkyIDwgaW50ZXJ2YWxzLmJvdW5kcygpLnkoKSB8
fCB5MSA+PSBpbnRlcnZhbHMuYm91bmRzKCkubWF4WSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICB5MSA9IHN0ZDo6bWF4KHkxLCBpbnRlcnZhbHMuYm91bmRzKCkueSgpKTsKKyAgICB5MiA9IHN0
ZDo6bWluKHkyLCBpbnRlcnZhbHMuYm91bmRzKCkubWF4WSgpKTsKKyAgICBJbnRTaGFwZUludGVy
dmFsIGV4Y2x1ZGVkSW50ZXJ2YWw7CisKKyAgICBmb3IgKGludCB5ID0geTE7IHkgPCB5MjsgIHkr
KykKKyAgICAgICAgZXhjbHVkZWRJbnRlcnZhbC51bml0ZShpbnRlcnZhbHMuaW50ZXJ2YWxBdCh5
KSk7CisKKyAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KGV4Y2x1ZGVkSW50ZXJ2YWwueDEo
KSwgZXhjbHVkZWRJbnRlcnZhbC54MigpICsgMSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNo
YXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKaW5k
ZXggYzdjMjZhOC4uYjIxNzE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9SYXN0ZXJTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvUmFzdGVyU2hhcGUuaApAQCAtNDMsNDggKzQzLDM2IEBAIHB1YmxpYzoKICAgICBSYXN0ZXJT
aGFwZUludGVydmFscyh1bnNpZ25lZCBzaXplLCBpbnQgb2Zmc2V0ID0gMCkKICAgICAgICAgOiBt
X29mZnNldChvZmZzZXQpCiAgICAgewotICAgICAgICBtX2ludGVydmFsTGlzdHMucmVzaXplKHNp
emUpOworICAgICAgICBtX2ludGVydmFscy5yZXNpemUoc2l6ZSk7CiAgICAgfQogCisgICAgdm9p
ZCBpbml0aWFsaXplQm91bmRzKCk7CiAgICAgY29uc3QgSW50UmVjdCYgYm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gbV9ib3VuZHM7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X2JvdW5kcy5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIGFwcGVuZEludGVydmFsKGludCB5LCBpbnQg
eDEsIGludCB4Mik7CiAKLSAgICB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGludCB5MSwgaW50
IHkyLCBJbnRTaGFwZUludGVydmFscyYgcmVzdWx0KSBjb25zdDsKKyAgICBJbnRTaGFwZUludGVy
dmFsJiBpbnRlcnZhbEF0KGludCB5KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHkgKyBtX29mZnNl
dCA+PSAwICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPih5ICsgbV9vZmZzZXQpIDwgbV9pbnRlcnZh
bHMuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1faW50ZXJ2YWxzW3kgKyBtX29mZnNldF07Cisg
ICAgfQogCi0gICAgUGFzc093blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gY29tcHV0ZVNoYXBl
TWFyZ2luSW50ZXJ2YWxzKGludCBzaGFwZU1hcmdpbikgY29uc3Q7CisgICAgY29uc3QgSW50U2hh
cGVJbnRlcnZhbCYgaW50ZXJ2YWxBdChpbnQgeSkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VCh5ICsgbV9vZmZzZXQgPj0gMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oeSArIG1fb2Zmc2V0
KSA8IG1faW50ZXJ2YWxzLnNpemUoKSk7CisgICAgICAgIHJldHVybiBtX2ludGVydmFsc1t5ICsg
bV9vZmZzZXRdOworICAgIH0KIAorICAgIFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+
IGNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyhpbnQgc2hhcGVNYXJnaW4pIGNvbnN0OwogICAg
IHZvaWQgYnVpbGRCb3VuZHNQYXRoKFBhdGgmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBpbnQg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJ2YWxMaXN0cy5zaXplKCk7IH0KKyAgICBpbnQg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJ2YWxzLnNpemUoKTsgfQogICAgIGludCBvZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIGludCBtaW5ZKCkgY29uc3QgeyBy
ZXR1cm4gLW1fb2Zmc2V0OyB9Ci0gICAgaW50IG1heFkoKSBjb25zdCB7IHJldHVybiAtbV9vZmZz
ZXQgKyBtX2ludGVydmFsTGlzdHMuc2l6ZSgpOyB9Ci0KLSAgICBJbnRTaGFwZUludGVydmFscyYg
aW50ZXJ2YWxzQXQoaW50IHkpCi0gICAgewotICAgICAgICBBU1NFUlQoeSArIG1fb2Zmc2V0ID49
IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHkgKyBtX29mZnNldCkgPCBtX2ludGVydmFsTGlz
dHMuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIG1faW50ZXJ2YWxMaXN0c1t5ICsgbV9vZmZzZXRd
OwotICAgIH0KLQotICAgIGNvbnN0IEludFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHNBdChpbnQg
eSkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh5ICsgbV9vZmZzZXQgPj0gMCAmJiBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oeSArIG1fb2Zmc2V0KSA8IG1faW50ZXJ2YWxMaXN0cy5zaXplKCkp
OwotICAgICAgICByZXR1cm4gbV9pbnRlcnZhbExpc3RzW3kgKyBtX29mZnNldF07Ci0gICAgfQot
Ci0gICAgSW50U2hhcGVJbnRlcnZhbCBsaW1pdEludGVydmFsQXQoaW50IHkpIGNvbnN0Ci0gICAg
ewotICAgICAgICBjb25zdCBJbnRTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzID0gaW50ZXJ2YWxz
QXQoeSk7Ci0gICAgICAgIHJldHVybiBpbnRlcnZhbHMuc2l6ZSgpID8gSW50U2hhcGVJbnRlcnZh
bChpbnRlcnZhbHNbMF0ueDEoKSwgaW50ZXJ2YWxzLmxhc3QoKS54MigpKSA6IEludFNoYXBlSW50
ZXJ2YWwoKTsKLSAgICB9CisgICAgaW50IG1heFkoKSBjb25zdCB7IHJldHVybiAtbV9vZmZzZXQg
KyBtX2ludGVydmFscy5zaXplKCk7IH0KIAotICAgIGJvb2wgY29udGFpbnMoY29uc3QgSW50UmVj
dCYpIGNvbnN0OwotICAgIGJvb2wgZ2V0SW50ZXJ2YWxYMVZhbHVlcyhpbnQgbWluWSwgaW50IG1h
eFksIGludCBtaW5JbnRlcnZhbFdpZHRoLCBWZWN0b3I8aW50PiYgcmVzdWx0KSBjb25zdDsKLSAg
ICB2b2lkIHVuaXRlTWFyZ2luSW50ZXJ2YWwoaW50IHksIGNvbnN0IEludFNoYXBlSW50ZXJ2YWwm
KTsKICAgICBJbnRSZWN0IG1fYm91bmRzOwotICAgIFZlY3RvcjxJbnRTaGFwZUludGVydmFscz4g
bV9pbnRlcnZhbExpc3RzOworICAgIFZlY3RvcjxJbnRTaGFwZUludGVydmFsPiBtX2ludGVydmFs
czsKICAgICBpbnQgbV9vZmZzZXQ7CiB9OwogCkBAIC05NSw2ICs4Myw3IEBAIHB1YmxpYzoKICAg
ICAgICAgOiBtX2ludGVydmFscyhpbnRlcnZhbHMpCiAgICAgICAgICwgbV9tYXJnaW5SZWN0U2l6
ZShtYXJnaW5SZWN0U2l6ZSkKICAgICB7CisgICAgICAgIG1faW50ZXJ2YWxzLT5pbml0aWFsaXpl
Qm91bmRzKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNoYXBlTWFyZ2luTG9n
aWNhbEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5
b3V0UmVjdD4obWFyZ2luSW50ZXJ2YWxzKCkuYm91bmRzKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDBmNmRjNDIuLjk5NWQwODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAg
UGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwg
ZmxvYXQgdGhyZXNob2xkLCBjb25zdAogICAgICAgICBpbnQgbWluQnVmZmVyWSA9IHN0ZDo6bWF4
KDAsIG1hcmdpblJlY3QueSgpIC0gaW1hZ2VSZWN0LnkoKSk7CiAgICAgICAgIGludCBtYXhCdWZm
ZXJZID0gc3RkOjptaW4oaW1hZ2VSZWN0LmhlaWdodCgpLCBtYXJnaW5SZWN0Lm1heFkoKSAtIGlt
YWdlUmVjdC55KCkpOwogCi0gICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW1hZ2VS
ZWN0LndpZHRoKCkgKiBpbWFnZVJlY3QuaGVpZ2h0KCkgKiA0KSA9PSBwaXhlbEFycmF5TGVuZ3Ro
KSB7IC8vIHNhbml0eSBjaGVjaworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlt
YWdlUmVjdC53aWR0aCgpICogaW1hZ2VSZWN0LmhlaWdodCgpICogNCkgPT0gcGl4ZWxBcnJheUxl
bmd0aCkgewogICAgICAgICAgICAgZm9yIChpbnQgeSA9IG1pbkJ1ZmZlclk7IHkgPCBtYXhCdWZm
ZXJZOyArK3kpIHsKICAgICAgICAgICAgICAgICBpbnQgc3RhcnRYID0gLTE7CiAgICAgICAgICAg
ICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBpbWFnZVJlY3Qud2lkdGgoKTsgKyt4LCBwaXhlbEFy
cmF5T2Zmc2V0ICs9IDQpIHsKQEAgLTIwNiw3ICsyMDYsNyBAQCBQYXNzT3duUHRyPFNoYXBlPiBT
aGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGNv
bnN0CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydFggPT0gLTEgJiYgYWxwaGFBYm92ZVRo
cmVzaG9sZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRYID0geDsKICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydFggIT0gLTEgJiYgKCFhbHBoYUFib3ZlVGhyZXNo
b2xkIHx8IHggPT0gaW1hZ2VSZWN0LndpZHRoKCkgLSAxKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJ2YWxzLT5hcHBlbmRJbnRlcnZhbCh5ICsgaW1hZ2VSZWN0LnkoKSwgc3RhcnRY
ICsgaW1hZ2VSZWN0LngoKSwgeCArIGltYWdlUmVjdC54KCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJ2YWxzLT5pbnRlcnZhbEF0KHkgKyBpbWFnZVJlY3QueSgpKS51bml0ZShJbnRT
aGFwZUludGVydmFsKHN0YXJ0WCArIGltYWdlUmVjdC54KCksIHggKyBpbWFnZVJlY3QueCgpKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFggPSAtMTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZUludGVydmFsLmgKaW5kZXggNDc2ZjBjZS4uYzNhNjVlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmgKQEAgLTg1LDYgKzg1
LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFNoYXBlSW50ZXJ2YWw8VD4oc3RkOjptYXg8
VD4oeDEoKSwgaW50ZXJ2YWwueDEoKSksIHN0ZDo6bWluPFQ+KHgyKCksIGludGVydmFsLngyKCkp
KTsKICAgICB9CiAKKyAgICB2b2lkIHVuaXRlKGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIGludGVy
dmFsKQorICAgIHsKKyAgICAgICAgaWYgKGludGVydmFsLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgaWYgKGlzRW1wdHkoKSkKKyAgICAgICAgICAgIHNldChpbnRlcnZh
bC54MSgpLCBpbnRlcnZhbC54MigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0KHN0
ZDo6bWluPFQ+KHgxKCksIGludGVydmFsLngxKCkpLCBzdGQ6Om1heDxUPih4MigpLCBpbnRlcnZh
bC54MigpKSk7CisgICAgfQorCiAgICAgdHlwZWRlZiBWZWN0b3I8U2hhcGVJbnRlcnZhbDxUPj4g
U2hhcGVJbnRlcnZhbHM7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBTaGFwZUludGVydmFsczo6Y29u
c3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBTaGFwZUlu
dGVydmFsczo6aXRlcmF0b3IgaXRlcmF0b3I7Cg==
</data>
<flag name="review"
          id="252369"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="252467"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228192</attachid>
            <date>2014-03-31 12:59:15 -0700</date>
            <delta_ts>2014-03-31 13:18:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>14409</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MDg2ZTNkLi42ZGI5M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTQtMDMtMjggIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBTaGFwZXNdIFNpbXBsaWZ5IFJhc3RlclNoYXBlIGltcGxlbWVudGF0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA5MTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSBvbmx5IGZs
b2F0cyBjYW4gc3BlY2lmeSBzaGFwZS1vdXRzaWRlLCB0aGUgUmFzdGVyU2hhcGVJbnRlcnZhbHMK
KyAgICAgICAgY2xhc3Mgb25seSBuZWVkcyB0byB0cmFjayB0aGUgZmlyc3QgYW5kIGxhc3QgYWJv
dmUgdGhyZXNob2xkIHBpeGVsIGNvbHVtbgorICAgICAgICAoeDEgYW5kIHgyIGluIHRoZSBpbXBs
ZW1lbnRhdGlvbikgZm9yIGVhY2ggcm93LiBSZW1vdmVkIGNvZGUgZm9yIGRlYWxpbmcgd2l0aAor
ICAgICAgICBtdWx0aXBsZSAicnVucyIgcGVyIHJvdyBhcyB3ZWxsIGFzIHNoYXBlLWluc2lkZSBp
bnRlcm5hbHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSBmdW5jdGlvbmFsaXR5IHdh
cyBvbmx5IHJlbW92ZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hh
cGVNYXJnaW5JbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZh
bHM6OmluaXRpYWxpemVCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRl
cnZhbHM6OmJ1aWxkQm91bmRzUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6
Z2V0RXhjbHVkZWRJbnRlcnZhbHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVy
U2hhcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpSYXN0ZXJT
aGFwZUludGVydmFscyk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6
aW50ZXJ2YWxBdCk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6UmFzdGVyU2hhcGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVz
L1NoYXBlSW50ZXJ2YWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OnVuaXRl
KToKKwogMjAxNC0wMy0zMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmFkaW8gYnV0dG9ucyBhbmQgY2hlY2tib3hlcyBzaG91bGQgc2hhcmUgY29kZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAppbmRleCBiMGU5
NDAxLi45YzBjZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1Jhc3RlclNoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmNwcApAQCAtNzMsOTYgKzczLDYgQEAgSW50U2hhcGVJbnRlcnZhbCBNYXJnaW5J
bnRlcnZhbEdlbmVyYXRvcjo6aW50ZXJ2YWxBdChpbnQgeSkgY29uc3QKICAgICByZXR1cm4gSW50
U2hhcGVJbnRlcnZhbChtX3gxIC0gZHgsIG1feDIgKyBkeCk7CiB9CiAKLXZvaWQgUmFzdGVyU2hh
cGVJbnRlcnZhbHM6OmFwcGVuZEludGVydmFsKGludCB5LCBpbnQgeDEsIGludCB4MikKLXsKLSAg
ICBBU1NFUlQoeDIgPiB4MSAmJiAoaW50ZXJ2YWxzQXQoeSkuaXNFbXB0eSgpIHx8IHgxID4gaW50
ZXJ2YWxzQXQoeSkubGFzdCgpLngyKCkpKTsKLSAgICBtX2JvdW5kcy51bml0ZShJbnRSZWN0KHgx
LCB5LCB4MiAtIHgxLCAxKSk7Ci0gICAgaW50ZXJ2YWxzQXQoeSkuYXBwZW5kKEludFNoYXBlSW50
ZXJ2YWwoeDEsIHgyKSk7Ci19Ci0KLXZvaWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OnVuaXRlTWFy
Z2luSW50ZXJ2YWwoaW50IHksIGNvbnN0IEludFNoYXBlSW50ZXJ2YWwmIGludGVydmFsKQotewot
ICAgIEFTU0VSVChpbnRlcnZhbHNBdCh5KS5zaXplKCkgPD0gMSk7IC8vIEVhY2ggbV9pbnRlcnZh
bExpc3RzIGVudHJ5IGhhcyAwIG9yIG9uZSBpbnRlcnZhbC4KLQotICAgIGlmIChpbnRlcnZhbHNB
dCh5KS5pc0VtcHR5KCkpCi0gICAgICAgIGludGVydmFsc0F0KHkpLmFwcGVuZChpbnRlcnZhbCk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIEludFNoYXBlSW50ZXJ2YWwmIHJlc3VsdEludGVydmFsID0g
aW50ZXJ2YWxzQXQoeSlbMF07Ci0gICAgICAgIHJlc3VsdEludGVydmFsLnNldChzdGQ6Om1pbihy
ZXN1bHRJbnRlcnZhbC54MSgpLCBpbnRlcnZhbC54MSgpKSwgc3RkOjptYXgocmVzdWx0SW50ZXJ2
YWwueDIoKSwgaW50ZXJ2YWwueDIoKSkpOwotICAgIH0KLQotICAgIG1fYm91bmRzLnVuaXRlKElu
dFJlY3QoaW50ZXJ2YWwueDEoKSwgeSwgaW50ZXJ2YWwud2lkdGgoKSwgMSkpOwotfQotCi1zdGF0
aWMgaW5saW5lIGJvb2wgc2hhcGVJbnRlcnZhbHNDb250YWluKGNvbnN0IEludFNoYXBlSW50ZXJ2
YWxzJiBpbnRlcnZhbHMsIGNvbnN0IEludFNoYXBlSW50ZXJ2YWwmIGludGVydmFsKQotewotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRlcnZhbHMuc2l6ZSgpOyBpKyspIHsKLSAgICAg
ICAgaWYgKGludGVydmFsc1tpXS54MSgpID4gaW50ZXJ2YWwueDIoKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGludGVydmFsc1tpXS5jb250YWlucyhpbnRlcnZhbCkp
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLWJvb2wgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmNvbnRhaW5zKGNvbnN0IEludFJlY3QmIHJl
Y3QpIGNvbnN0Ci17Ci0gICAgaWYgKCFib3VuZHMoKS5jb250YWlucyhyZWN0KSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgY29uc3QgSW50U2hhcGVJbnRlcnZhbCYgcmVjdEludGVydmFs
ID0gSW50U2hhcGVJbnRlcnZhbChyZWN0LngoKSwgcmVjdC5tYXhYKCkpOwotICAgIGZvciAoaW50
IHkgPSByZWN0LnkoKTsgeSA8IHJlY3QubWF4WSgpOyB5KyspIHsKLSAgICAgICAgaWYgKCFzaGFw
ZUludGVydmFsc0NvbnRhaW4oaW50ZXJ2YWxzQXQoeSksIHJlY3RJbnRlcnZhbCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRp
YyBpbmxpbmUgdm9pZCBhcHBlbmRYMVZhbHVlcyhjb25zdCBJbnRTaGFwZUludGVydmFscyYgaW50
ZXJ2YWxzLCBpbnQgbWluSW50ZXJ2YWxXaWR0aCwgVmVjdG9yPGludD4mIHJlc3VsdCkKLXsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW50ZXJ2YWxzLnNpemUoKTsgaSsrKQotICAgICAg
ICBpZiAoaW50ZXJ2YWxzW2ldLndpZHRoKCkgPj0gbWluSW50ZXJ2YWxXaWR0aCkKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoaW50ZXJ2YWxzW2ldLngxKCkpOwotfQotCi1ib29sIFJhc3RlclNo
YXBlSW50ZXJ2YWxzOjpnZXRJbnRlcnZhbFgxVmFsdWVzKGludCB5MSwgaW50IHkyLCBpbnQgbWlu
SW50ZXJ2YWxXaWR0aCwgVmVjdG9yPGludD4mIHJlc3VsdCkgY29uc3QKLXsKLSAgICBBU1NFUlQo
eTEgPj0gMCAmJiB5MiA+IHkxKTsKLQotICAgIGZvciAoaW50IHkgPSB5MTsgeSA8IHkyOyAgeSsr
KSB7Ci0gICAgICAgIGlmIChpbnRlcnZhbHNBdCh5KS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgYXBwZW5kWDFWYWx1ZXMoaW50ZXJ2YWxzQXQoeTEp
LCBtaW5JbnRlcnZhbFdpZHRoLCByZXN1bHQpOwotICAgIGZvciAoaW50IHkgPSB5MSArIDE7IHkg
PCB5MjsgIHkrKykgewotICAgICAgICBpZiAoaW50ZXJ2YWxzQXQoeSkgIT0gaW50ZXJ2YWxzQXQo
eSAtIDEpKQotICAgICAgICAgICAgYXBwZW5kWDFWYWx1ZXMoaW50ZXJ2YWxzQXQoeSksIG1pbklu
dGVydmFsV2lkdGgsIHJlc3VsdCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZv
aWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGludCB5MSwgaW50
IHkyLCBJbnRTaGFwZUludGVydmFscyYgcmVzdWx0KSBjb25zdAotewotICAgIEFTU0VSVCh5MiA+
PSB5MSk7Ci0KLSAgICBpZiAoeTIgPCBib3VuZHMoKS55KCkgfHwgeTEgPj0gYm91bmRzKCkubWF4
WSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICB5MSA9IHN0ZDo6bWF4KHkxLCBib3VuZHMoKS55
KCkpOwotICAgIHkyID0gc3RkOjptaW4oeTIsIGJvdW5kcygpLm1heFkoKSk7Ci0KLSAgICByZXN1
bHQgPSBpbnRlcnZhbHNBdCh5MSk7Ci0gICAgZm9yIChpbnQgeSA9IHkxICsgMTsgeSA8IHkyOyAg
eSsrKSB7Ci0gICAgICAgIEludFNoYXBlSW50ZXJ2YWxzIGludGVydmFsczsKLSAgICAgICAgSW50
U2hhcGVJbnRlcnZhbDo6dW5pdGVTaGFwZUludGVydmFscyhyZXN1bHQsIGludGVydmFsc0F0KHkp
LCBpbnRlcnZhbHMpOwotICAgICAgICByZXN1bHQuc3dhcChpbnRlcnZhbHMpOwotICAgIH0KLX0K
LQogc3RkOjp1bmlxdWVfcHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBSYXN0ZXJTaGFwZUludGVy
dmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBzaGFwZU1hcmdpbikgY29uc3QK
IHsKICAgICBpbnQgbWFyZ2luSW50ZXJ2YWxzU2l6ZSA9IChvZmZzZXQoKSA+IHNoYXBlTWFyZ2lu
KSA/IHNpemUoKSA6IHNpemUoKSAtIG9mZnNldCgpICogMiArIHNoYXBlTWFyZ2luICogMjsKQEAg
LTE3MCw3ICs4MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gUmFz
dGVyU2hhcGVJbnRlcnZhbHM6OmNvbXB1dGVTaGFwZU1hcmdpbkluCiAgICAgTWFyZ2luSW50ZXJ2
YWxHZW5lcmF0b3IgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3Ioc2hhcGVNYXJnaW4pOwogCiAgICAg
Zm9yIChpbnQgeSA9IGJvdW5kcygpLnkoKTsgeSA8IGJvdW5kcygpLm1heFkoKTsgKyt5KSB7Ci0g
ICAgICAgIGNvbnN0IEludFNoYXBlSW50ZXJ2YWwmIGludGVydmFsQXRZID0gbGltaXRJbnRlcnZh
bEF0KHkpOworICAgICAgICBjb25zdCBJbnRTaGFwZUludGVydmFsJiBpbnRlcnZhbEF0WSA9IGlu
dGVydmFsQXQoeSk7CiAgICAgICAgIGlmIChpbnRlcnZhbEF0WS5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIApAQCAtMTc5LDMzICs4OSw0NSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmFz
dGVyU2hhcGVJbnRlcnZhbHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJn
aW5JbgogICAgICAgICBpbnQgbWFyZ2luWTEgPSBzdGQ6Om1pbihtYXhZKCksIHkgKyBzaGFwZU1h
cmdpbik7CiAKICAgICAgICAgZm9yIChpbnQgbWFyZ2luWSA9IHkgLSAxOyBtYXJnaW5ZID49IG1h
cmdpblkwOyAtLW1hcmdpblkpIHsKLSAgICAgICAgICAgIGlmIChtYXJnaW5ZID4gYm91bmRzKCku
eSgpICYmIGxpbWl0SW50ZXJ2YWxBdChtYXJnaW5ZKS5jb250YWlucyhpbnRlcnZhbEF0WSkpCisg
ICAgICAgICAgICBpZiAobWFyZ2luWSA+IGJvdW5kcygpLnkoKSAmJiBpbnRlcnZhbEF0KG1hcmdp
blkpLmNvbnRhaW5zKGludGVydmFsQXRZKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIHJlc3VsdC0+dW5pdGVNYXJnaW5JbnRlcnZhbChtYXJnaW5ZLCBtYXJnaW5JbnRlcnZh
bEdlbmVyYXRvci5pbnRlcnZhbEF0KG1hcmdpblkpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+aW50
ZXJ2YWxBdChtYXJnaW5ZKS51bml0ZShtYXJnaW5JbnRlcnZhbEdlbmVyYXRvci5pbnRlcnZhbEF0
KG1hcmdpblkpKTsKICAgICAgICAgfQogCi0gICAgICAgIHJlc3VsdC0+dW5pdGVNYXJnaW5JbnRl
cnZhbCh5LCBtYXJnaW5JbnRlcnZhbEdlbmVyYXRvci5pbnRlcnZhbEF0KHkpKTsKKyAgICAgICAg
cmVzdWx0LT5pbnRlcnZhbEF0KHkpLnVuaXRlKG1hcmdpbkludGVydmFsR2VuZXJhdG9yLmludGVy
dmFsQXQoeSkpOwogCiAgICAgICAgIGZvciAoaW50IG1hcmdpblkgPSB5ICsgMTsgbWFyZ2luWSA8
PSBtYXJnaW5ZMTsgKyttYXJnaW5ZKSB7Ci0gICAgICAgICAgICBpZiAobWFyZ2luWSA8IGJvdW5k
cygpLm1heFkoKSAmJiBsaW1pdEludGVydmFsQXQobWFyZ2luWSkuY29udGFpbnMoaW50ZXJ2YWxB
dFkpKQorICAgICAgICAgICAgaWYgKG1hcmdpblkgPCBib3VuZHMoKS5tYXhZKCkgJiYgaW50ZXJ2
YWxBdChtYXJnaW5ZKS5jb250YWlucyhpbnRlcnZhbEF0WSkpCiAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICByZXN1bHQtPnVuaXRlTWFyZ2luSW50ZXJ2YWwobWFyZ2luWSwgbWFy
Z2luSW50ZXJ2YWxHZW5lcmF0b3IuaW50ZXJ2YWxBdChtYXJnaW5ZKSk7CisgICAgICAgICAgICBy
ZXN1bHQtPmludGVydmFsQXQobWFyZ2luWSkudW5pdGUobWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3Iu
aW50ZXJ2YWxBdChtYXJnaW5ZKSk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICByZXN1bHQtPmlu
aXRpYWxpemVCb3VuZHMoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIFJhc3RlclNo
YXBlSW50ZXJ2YWxzOjppbml0aWFsaXplQm91bmRzKCkKK3sKKyAgICBtX2JvdW5kcyA9IEludFJl
Y3QoKTsKKyAgICBmb3IgKGludCB5ID0gbWluWSgpOyB5IDwgbWF4WSgpOyArK3kpIHsKKyAgICAg
ICAgY29uc3QgSW50U2hhcGVJbnRlcnZhbCYgaW50ZXJ2YWxBdFkgPSBpbnRlcnZhbEF0KHkpOwor
ICAgICAgICBpZiAoaW50ZXJ2YWxBdFkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIG1fYm91bmRzLnVuaXRlKEludFJlY3QoaW50ZXJ2YWxBdFkueDEoKSwgeSwgaW50
ZXJ2YWxBdFkud2lkdGgoKSwgMSkpOworICAgIH0KK30KKwogdm9pZCBSYXN0ZXJTaGFwZUludGVy
dmFsczo6YnVpbGRCb3VuZHNQYXRoKFBhdGgmIHBhdGgpIGNvbnN0CiB7CiAgICAgZm9yIChpbnQg
eSA9IGJvdW5kcygpLnkoKTsgeSA8IGJvdW5kcygpLm1heFkoKTsgeSsrKSB7Ci0gICAgICAgIGlm
IChpbnRlcnZhbHNBdCh5KS5pc0VtcHR5KCkpCisgICAgICAgIGlmIChpbnRlcnZhbEF0KHkpLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEludFNoYXBlSW50ZXJ2
YWwgZXh0ZW50ID0gbGltaXRJbnRlcnZhbEF0KHkpOworICAgICAgICBJbnRTaGFwZUludGVydmFs
IGV4dGVudCA9IGludGVydmFsQXQoeSk7CiAgICAgICAgIGludCBlbmRZID0geSArIDE7CiAgICAg
ICAgIGZvciAoOyBlbmRZIDwgYm91bmRzKCkubWF4WSgpOyBlbmRZKyspIHsKLSAgICAgICAgICAg
IGlmIChpbnRlcnZhbHNBdChlbmRZKS5pc0VtcHR5KCkgfHwgbGltaXRJbnRlcnZhbEF0KGVuZFkp
ICE9IGV4dGVudCkKKyAgICAgICAgICAgIGlmIChpbnRlcnZhbEF0KGVuZFkpLmlzRW1wdHkoKSB8
fCBpbnRlcnZhbEF0KGVuZFkpICE9IGV4dGVudCkKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBwYXRoLmFkZFJlY3QoRmxvYXRSZWN0KGV4dGVudC54MSgpLCB5LCBl
eHRlbnQud2lkdGgoKSwgZW5kWSAtIHkpKTsKQEAgLTIyNywyMSArMTQ5LDI2IEBAIGNvbnN0IFJh
c3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6bWFyZ2luSW50ZXJ2YWxzKCkgY29uc3QK
ICAgICByZXR1cm4gKm1fbWFyZ2luSW50ZXJ2YWxzOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQg
YXBwZW5kTGluZVNlZ21lbnRzKGNvbnN0IEludFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMsIFNl
Z21lbnRMaXN0JiByZXN1bHQpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGludGVy
dmFscy5zaXplKCk7IGkrKykKLSAgICAgICAgcmVzdWx0LmFwcGVuZChMaW5lU2VnbWVudChpbnRl
cnZhbHNbaV0ueDEoKSwgaW50ZXJ2YWxzW2ldLngyKCkgKyAxKSk7Ci19Ci0KIHZvaWQgUmFzdGVy
U2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYgcmVzdWx0KSBjb25zdAogewogICAgIGNv
bnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMgPSBtYXJnaW5JbnRlcnZhbHMoKTsK
ICAgICBpZiAoaW50ZXJ2YWxzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50
U2hhcGVJbnRlcnZhbHMgZXhjbHVkZWRJbnRlcnZhbHM7Ci0gICAgaW50ZXJ2YWxzLmdldEV4Y2x1
ZGVkSW50ZXJ2YWxzKGxvZ2ljYWxUb3AsIGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0LCBleGNs
dWRlZEludGVydmFscyk7Ci0gICAgYXBwZW5kTGluZVNlZ21lbnRzKGV4Y2x1ZGVkSW50ZXJ2YWxz
LCByZXN1bHQpOworICAgIGludCB5MSA9IGxvZ2ljYWxUb3A7CisgICAgaW50IHkyID0gbG9naWNh
bFRvcCArIGxvZ2ljYWxIZWlnaHQ7CisgICAgQVNTRVJUKHkyID49IHkxKTsKKyAgICBpZiAoeTIg
PCBpbnRlcnZhbHMuYm91bmRzKCkueSgpIHx8IHkxID49IGludGVydmFscy5ib3VuZHMoKS5tYXhZ
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHkxID0gc3RkOjptYXgoeTEsIGludGVydmFscy5i
b3VuZHMoKS55KCkpOworICAgIHkyID0gc3RkOjptaW4oeTIsIGludGVydmFscy5ib3VuZHMoKS5t
YXhZKCkpOworICAgIEludFNoYXBlSW50ZXJ2YWwgZXhjbHVkZWRJbnRlcnZhbDsKKworICAgIGZv
ciAoaW50IHkgPSB5MTsgeSA8IHkyOyAgeSsrKQorICAgICAgICBleGNsdWRlZEludGVydmFsLnVu
aXRlKGludGVydmFscy5pbnRlcnZhbEF0KHkpKTsKKworICAgIHJlc3VsdC5hcHBlbmQoTGluZVNl
Z21lbnQoZXhjbHVkZWRJbnRlcnZhbC54MSgpLCBleGNsdWRlZEludGVydmFsLngyKCkgKyAxKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvUmFzdGVyU2hhcGUuaAppbmRleCBkMDdjY2RjLi43OTZlMDIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCkBAIC00Myw0OCArNDMs
MzYgQEAgcHVibGljOgogICAgIFJhc3RlclNoYXBlSW50ZXJ2YWxzKHVuc2lnbmVkIHNpemUsIGlu
dCBvZmZzZXQgPSAwKQogICAgICAgICA6IG1fb2Zmc2V0KG9mZnNldCkKICAgICB7Ci0gICAgICAg
IG1faW50ZXJ2YWxMaXN0cy5yZXNpemUoc2l6ZSk7CisgICAgICAgIG1faW50ZXJ2YWxzLnJlc2l6
ZShzaXplKTsKICAgICB9CiAKKyAgICB2b2lkIGluaXRpYWxpemVCb3VuZHMoKTsKICAgICBjb25z
dCBJbnRSZWN0JiBib3VuZHMoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kczsgfQogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRzLmlzRW1wdHkoKTsgfQotICAgIHZvaWQg
YXBwZW5kSW50ZXJ2YWwoaW50IHksIGludCB4MSwgaW50IHgyKTsKIAotICAgIHZvaWQgZ2V0RXhj
bHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIEludFNoYXBlSW50ZXJ2YWxzJiByZXN1bHQp
IGNvbnN0OworICAgIEludFNoYXBlSW50ZXJ2YWwmIGludGVydmFsQXQoaW50IHkpCisgICAgewor
ICAgICAgICBBU1NFUlQoeSArIG1fb2Zmc2V0ID49IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHkgKyBtX29mZnNldCkgPCBtX2ludGVydmFscy5zaXplKCkpOworICAgICAgICByZXR1cm4gbV9p
bnRlcnZhbHNbeSArIG1fb2Zmc2V0XTsKKyAgICB9CiAKKyAgICBjb25zdCBJbnRTaGFwZUludGVy
dmFsJiBpbnRlcnZhbEF0KGludCB5KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKHkgKyBt
X29mZnNldCA+PSAwICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPih5ICsgbV9vZmZzZXQpIDwgbV9p
bnRlcnZhbHMuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1faW50ZXJ2YWxzW3kgKyBtX29mZnNl
dF07CisgICAgfQorICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSYXN0ZXJTaGFwZUludGVydmFs
cz4gY29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBzaGFwZU1hcmdpbikgY29uc3Q7Ci0K
ICAgICB2b2lkIGJ1aWxkQm91bmRzUGF0aChQYXRoJikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAg
aW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ludGVydmFsTGlzdHMuc2l6ZSgpOyB9CisgICAg
aW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ludGVydmFscy5zaXplKCk7IH0KICAgICBpbnQg
b2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICBpbnQgbWluWSgpIGNvbnN0
IHsgcmV0dXJuIC1tX29mZnNldDsgfQotICAgIGludCBtYXhZKCkgY29uc3QgeyByZXR1cm4gLW1f
b2Zmc2V0ICsgbV9pbnRlcnZhbExpc3RzLnNpemUoKTsgfQotCi0gICAgSW50U2hhcGVJbnRlcnZh
bHMmIGludGVydmFsc0F0KGludCB5KQotICAgIHsKLSAgICAgICAgQVNTRVJUKHkgKyBtX29mZnNl
dCA+PSAwICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPih5ICsgbV9vZmZzZXQpIDwgbV9pbnRlcnZh
bExpc3RzLnNpemUoKSk7Ci0gICAgICAgIHJldHVybiBtX2ludGVydmFsTGlzdHNbeSArIG1fb2Zm
c2V0XTsKLSAgICB9Ci0KLSAgICBjb25zdCBJbnRTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzQXQo
aW50IHkpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoeSArIG1fb2Zmc2V0ID49IDAgJiYg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHkgKyBtX29mZnNldCkgPCBtX2ludGVydmFsTGlzdHMuc2l6
ZSgpKTsKLSAgICAgICAgcmV0dXJuIG1faW50ZXJ2YWxMaXN0c1t5ICsgbV9vZmZzZXRdOwotICAg
IH0KLQotICAgIEludFNoYXBlSW50ZXJ2YWwgbGltaXRJbnRlcnZhbEF0KGludCB5KSBjb25zdAot
ICAgIHsKLSAgICAgICAgY29uc3QgSW50U2hhcGVJbnRlcnZhbHMmIGludGVydmFscyA9IGludGVy
dmFsc0F0KHkpOwotICAgICAgICByZXR1cm4gaW50ZXJ2YWxzLnNpemUoKSA/IEludFNoYXBlSW50
ZXJ2YWwoaW50ZXJ2YWxzWzBdLngxKCksIGludGVydmFscy5sYXN0KCkueDIoKSkgOiBJbnRTaGFw
ZUludGVydmFsKCk7Ci0gICAgfQorICAgIGludCBtYXhZKCkgY29uc3QgeyByZXR1cm4gLW1fb2Zm
c2V0ICsgbV9pbnRlcnZhbHMuc2l6ZSgpOyB9CiAKLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IElu
dFJlY3QmKSBjb25zdDsKLSAgICBib29sIGdldEludGVydmFsWDFWYWx1ZXMoaW50IG1pblksIGlu
dCBtYXhZLCBpbnQgbWluSW50ZXJ2YWxXaWR0aCwgVmVjdG9yPGludD4mIHJlc3VsdCkgY29uc3Q7
Ci0gICAgdm9pZCB1bml0ZU1hcmdpbkludGVydmFsKGludCB5LCBjb25zdCBJbnRTaGFwZUludGVy
dmFsJik7CiAgICAgSW50UmVjdCBtX2JvdW5kczsKLSAgICBWZWN0b3I8SW50U2hhcGVJbnRlcnZh
bHM+IG1faW50ZXJ2YWxMaXN0czsKKyAgICBWZWN0b3I8SW50U2hhcGVJbnRlcnZhbD4gbV9pbnRl
cnZhbHM7CiAgICAgaW50IG1fb2Zmc2V0OwogfTsKIApAQCAtOTUsNiArODMsNyBAQCBwdWJsaWM6
CiAgICAgICAgIDogbV9pbnRlcnZhbHMoc3RkOjptb3ZlKGludGVydmFscykpCiAgICAgICAgICwg
bV9tYXJnaW5SZWN0U2l6ZShtYXJnaW5SZWN0U2l6ZSkKICAgICB7CisgICAgICAgIG1faW50ZXJ2
YWxzLT5pbml0aWFsaXplQm91bmRzKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0
IHNoYXBlTWFyZ2luTG9naWNhbEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8TGF5b3V0UmVjdD4obWFyZ2luSW50ZXJ2YWxzKCkuYm91bmRzKCkpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IGNkZDg4YTAuLjUx
Y2IzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0x
OTUsNyArMTk1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVy
U2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKICAgICAgICAgaW50IG1pbkJ1
ZmZlclkgPSBzdGQ6Om1heCgwLCBtYXJnaW5SZWN0LnkoKSAtIGltYWdlUmVjdC55KCkpOwogICAg
ICAgICBpbnQgbWF4QnVmZmVyWSA9IHN0ZDo6bWluKGltYWdlUmVjdC5oZWlnaHQoKSwgbWFyZ2lu
UmVjdC5tYXhZKCkgLSBpbWFnZVJlY3QueSgpKTsKIAotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGltYWdlUmVjdC53aWR0aCgpICogaW1hZ2VSZWN0LmhlaWdodCgpICogNCkgPT0g
cGl4ZWxBcnJheUxlbmd0aCkgeyAvLyBzYW5pdHkgY2hlY2sKKyAgICAgICAgaWYgKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpbWFnZVJlY3Qud2lkdGgoKSAqIGltYWdlUmVjdC5oZWlnaHQoKSAqIDQp
ID09IHBpeGVsQXJyYXlMZW5ndGgpIHsKICAgICAgICAgICAgIGZvciAoaW50IHkgPSBtaW5CdWZm
ZXJZOyB5IDwgbWF4QnVmZmVyWTsgKyt5KSB7CiAgICAgICAgICAgICAgICAgaW50IHN0YXJ0WCA9
IC0xOwogICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaW1hZ2VSZWN0LndpZHRo
KCk7ICsreCwgcGl4ZWxBcnJheU9mZnNldCArPSA0KSB7CkBAIC0yMDQsNyArMjA0LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdl
LCBmbG9hdCB0aHJlc2hvbGQsIGMKICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0WCA9PSAt
MSAmJiBhbHBoYUFib3ZlVGhyZXNob2xkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFy
dFggPSB4OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0WCAhPSAtMSAmJiAo
IWFscGhhQWJvdmVUaHJlc2hvbGQgfHwgeCA9PSBpbWFnZVJlY3Qud2lkdGgoKSAtIDEpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbHMtPmFwcGVuZEludGVydmFsKHkgKyBpbWFn
ZVJlY3QueSgpLCBzdGFydFggKyBpbWFnZVJlY3QueCgpLCB4ICsgaW1hZ2VSZWN0LngoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbHMtPmludGVydmFsQXQoeSArIGltYWdlUmVj
dC55KCkpLnVuaXRlKEludFNoYXBlSW50ZXJ2YWwoc3RhcnRYICsgaW1hZ2VSZWN0LngoKSwgeCAr
IGltYWdlUmVjdC54KCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0WCA9IC0xOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaAppbmRleCA0NzZmMGNlLi5jM2E2
NWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50
ZXJ2YWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2
YWwuaApAQCAtODUsNiArODUsMTYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU2hhcGVJbnRl
cnZhbDxUPihzdGQ6Om1heDxUPih4MSgpLCBpbnRlcnZhbC54MSgpKSwgc3RkOjptaW48VD4oeDIo
KSwgaW50ZXJ2YWwueDIoKSkpOwogICAgIH0KIAorICAgIHZvaWQgdW5pdGUoY29uc3QgU2hhcGVJ
bnRlcnZhbDxUPiYgaW50ZXJ2YWwpCisgICAgeworICAgICAgICBpZiAoaW50ZXJ2YWwuaXNFbXB0
eSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoaXNFbXB0eSgpKQorICAgICAg
ICAgICAgc2V0KGludGVydmFsLngxKCksIGludGVydmFsLngyKCkpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzZXQoc3RkOjptaW48VD4oeDEoKSwgaW50ZXJ2YWwueDEoKSksIHN0ZDo6bWF4
PFQ+KHgyKCksIGludGVydmFsLngyKCkpKTsKKyAgICB9CisKICAgICB0eXBlZGVmIFZlY3RvcjxT
aGFwZUludGVydmFsPFQ+PiBTaGFwZUludGVydmFsczsKICAgICB0eXBlZGVmIHR5cGVuYW1lIFNo
YXBlSW50ZXJ2YWxzOjpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKICAgICB0eXBlZGVm
IHR5cGVuYW1lIFNoYXBlSW50ZXJ2YWxzOjppdGVyYXRvciBpdGVyYXRvcjsK
</data>
<flag name="commit-queue"
          id="252480"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228197</attachid>
            <date>2014-03-31 13:18:34 -0700</date>
            <delta_ts>2014-03-31 13:55:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>14407</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MDg2ZTNkLi4yMmZlYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTQtMDMtMjggIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBTaGFwZXNdIFNpbXBsaWZ5IFJhc3RlclNoYXBlIGltcGxlbWVudGF0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA5MTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgU2luY2Ugb25seSBmbG9h
dHMgY2FuIHNwZWNpZnkgc2hhcGUtb3V0c2lkZSwgdGhlIFJhc3RlclNoYXBlSW50ZXJ2YWxzCisg
ICAgICAgIGNsYXNzIG9ubHkgbmVlZHMgdG8gdHJhY2sgdGhlIGZpcnN0IGFuZCBsYXN0IGFib3Zl
IHRocmVzaG9sZCBwaXhlbCBjb2x1bW4KKyAgICAgICAgKHgxIGFuZCB4MiBpbiB0aGUgaW1wbGVt
ZW50YXRpb24pIGZvciBlYWNoIHJvdy4gUmVtb3ZlZCBjb2RlIGZvciBkZWFsaW5nIHdpdGgKKyAg
ICAgICAgbXVsdGlwbGUgInJ1bnMiIHBlciByb3cgYXMgd2VsbCBhcyBzaGFwZS1pbnNpZGUgaW50
ZXJuYWxzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2luY2UgZnVuY3Rpb25hbGl0eSB3YXMg
b25seSByZW1vdmVkLgorCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBl
TWFyZ2luSW50ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxz
Ojppbml0aWFsaXplQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2
YWxzOjpidWlsZEJvdW5kc1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6Omdl
dEV4Y2x1ZGVkSW50ZXJ2YWxzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNo
YXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6UmFzdGVyU2hh
cGVJbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6Omlu
dGVydmFsQXQpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OlJhc3RlclNoYXBlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZUludGVydmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjp1bml0ZSk6
CisKIDIwMTQtMDMtMzEgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJhZGlvIGJ1dHRvbnMgYW5kIGNoZWNrYm94ZXMgc2hvdWxkIHNoYXJlIGNvZGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKaW5kZXggYjBlOTQw
MS4uOWMwY2VkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9S
YXN0ZXJTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0
ZXJTaGFwZS5jcHAKQEAgLTczLDk2ICs3Myw2IEBAIEludFNoYXBlSW50ZXJ2YWwgTWFyZ2luSW50
ZXJ2YWxHZW5lcmF0b3I6OmludGVydmFsQXQoaW50IHkpIGNvbnN0CiAgICAgcmV0dXJuIEludFNo
YXBlSW50ZXJ2YWwobV94MSAtIGR4LCBtX3gyICsgZHgpOwogfQogCi12b2lkIFJhc3RlclNoYXBl
SW50ZXJ2YWxzOjphcHBlbmRJbnRlcnZhbChpbnQgeSwgaW50IHgxLCBpbnQgeDIpCi17Ci0gICAg
QVNTRVJUKHgyID4geDEgJiYgKGludGVydmFsc0F0KHkpLmlzRW1wdHkoKSB8fCB4MSA+IGludGVy
dmFsc0F0KHkpLmxhc3QoKS54MigpKSk7Ci0gICAgbV9ib3VuZHMudW5pdGUoSW50UmVjdCh4MSwg
eSwgeDIgLSB4MSwgMSkpOwotICAgIGludGVydmFsc0F0KHkpLmFwcGVuZChJbnRTaGFwZUludGVy
dmFsKHgxLCB4MikpOwotfQotCi12b2lkIFJhc3RlclNoYXBlSW50ZXJ2YWxzOjp1bml0ZU1hcmdp
bkludGVydmFsKGludCB5LCBjb25zdCBJbnRTaGFwZUludGVydmFsJiBpbnRlcnZhbCkKLXsKLSAg
ICBBU1NFUlQoaW50ZXJ2YWxzQXQoeSkuc2l6ZSgpIDw9IDEpOyAvLyBFYWNoIG1faW50ZXJ2YWxM
aXN0cyBlbnRyeSBoYXMgMCBvciBvbmUgaW50ZXJ2YWwuCi0KLSAgICBpZiAoaW50ZXJ2YWxzQXQo
eSkuaXNFbXB0eSgpKQotICAgICAgICBpbnRlcnZhbHNBdCh5KS5hcHBlbmQoaW50ZXJ2YWwpOwot
ICAgIGVsc2UgewotICAgICAgICBJbnRTaGFwZUludGVydmFsJiByZXN1bHRJbnRlcnZhbCA9IGlu
dGVydmFsc0F0KHkpWzBdOwotICAgICAgICByZXN1bHRJbnRlcnZhbC5zZXQoc3RkOjptaW4ocmVz
dWx0SW50ZXJ2YWwueDEoKSwgaW50ZXJ2YWwueDEoKSksIHN0ZDo6bWF4KHJlc3VsdEludGVydmFs
LngyKCksIGludGVydmFsLngyKCkpKTsKLSAgICB9Ci0KLSAgICBtX2JvdW5kcy51bml0ZShJbnRS
ZWN0KGludGVydmFsLngxKCksIHksIGludGVydmFsLndpZHRoKCksIDEpKTsKLX0KLQotc3RhdGlj
IGlubGluZSBib29sIHNoYXBlSW50ZXJ2YWxzQ29udGFpbihjb25zdCBJbnRTaGFwZUludGVydmFs
cyYgaW50ZXJ2YWxzLCBjb25zdCBJbnRTaGFwZUludGVydmFsJiBpbnRlcnZhbCkKLXsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW50ZXJ2YWxzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAg
IGlmIChpbnRlcnZhbHNbaV0ueDEoKSA+IGludGVydmFsLngyKCkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIGlmIChpbnRlcnZhbHNbaV0uY29udGFpbnMoaW50ZXJ2YWwpKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1ib29sIFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb250YWlucyhjb25zdCBJbnRSZWN0JiByZWN0
KSBjb25zdAotewotICAgIGlmICghYm91bmRzKCkuY29udGFpbnMocmVjdCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGNvbnN0IEludFNoYXBlSW50ZXJ2YWwmIHJlY3RJbnRlcnZhbCA9
IEludFNoYXBlSW50ZXJ2YWwocmVjdC54KCksIHJlY3QubWF4WCgpKTsKLSAgICBmb3IgKGludCB5
ID0gcmVjdC55KCk7IHkgPCByZWN0Lm1heFkoKTsgeSsrKSB7Ci0gICAgICAgIGlmICghc2hhcGVJ
bnRlcnZhbHNDb250YWluKGludGVydmFsc0F0KHkpLCByZWN0SW50ZXJ2YWwpKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMg
aW5saW5lIHZvaWQgYXBwZW5kWDFWYWx1ZXMoY29uc3QgSW50U2hhcGVJbnRlcnZhbHMmIGludGVy
dmFscywgaW50IG1pbkludGVydmFsV2lkdGgsIFZlY3RvcjxpbnQ+JiByZXN1bHQpCi17Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGludGVydmFscy5zaXplKCk7IGkrKykKLSAgICAgICAg
aWYgKGludGVydmFsc1tpXS53aWR0aCgpID49IG1pbkludGVydmFsV2lkdGgpCi0gICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKGludGVydmFsc1tpXS54MSgpKTsKLX0KLQotYm9vbCBSYXN0ZXJTaGFw
ZUludGVydmFsczo6Z2V0SW50ZXJ2YWxYMVZhbHVlcyhpbnQgeTEsIGludCB5MiwgaW50IG1pbklu
dGVydmFsV2lkdGgsIFZlY3RvcjxpbnQ+JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHkx
ID49IDAgJiYgeTIgPiB5MSk7Ci0KLSAgICBmb3IgKGludCB5ID0geTE7IHkgPCB5MjsgIHkrKykg
ewotICAgICAgICBpZiAoaW50ZXJ2YWxzQXQoeSkuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGFwcGVuZFgxVmFsdWVzKGludGVydmFsc0F0KHkxKSwg
bWluSW50ZXJ2YWxXaWR0aCwgcmVzdWx0KTsKLSAgICBmb3IgKGludCB5ID0geTEgKyAxOyB5IDwg
eTI7ICB5KyspIHsKLSAgICAgICAgaWYgKGludGVydmFsc0F0KHkpICE9IGludGVydmFsc0F0KHkg
LSAxKSkKLSAgICAgICAgICAgIGFwcGVuZFgxVmFsdWVzKGludGVydmFsc0F0KHkpLCBtaW5JbnRl
cnZhbFdpZHRoLCByZXN1bHQpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lk
IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpnZXRFeGNsdWRlZEludGVydmFscyhpbnQgeTEsIGludCB5
MiwgSW50U2hhcGVJbnRlcnZhbHMmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBBU1NFUlQoeTIgPj0g
eTEpOwotCi0gICAgaWYgKHkyIDwgYm91bmRzKCkueSgpIHx8IHkxID49IGJvdW5kcygpLm1heFko
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgeTEgPSBzdGQ6Om1heCh5MSwgYm91bmRzKCkueSgp
KTsKLSAgICB5MiA9IHN0ZDo6bWluKHkyLCBib3VuZHMoKS5tYXhZKCkpOwotCi0gICAgcmVzdWx0
ID0gaW50ZXJ2YWxzQXQoeTEpOwotICAgIGZvciAoaW50IHkgPSB5MSArIDE7IHkgPCB5MjsgIHkr
KykgewotICAgICAgICBJbnRTaGFwZUludGVydmFscyBpbnRlcnZhbHM7Ci0gICAgICAgIEludFNo
YXBlSW50ZXJ2YWw6OnVuaXRlU2hhcGVJbnRlcnZhbHMocmVzdWx0LCBpbnRlcnZhbHNBdCh5KSwg
aW50ZXJ2YWxzKTsKLSAgICAgICAgcmVzdWx0LnN3YXAoaW50ZXJ2YWxzKTsKLSAgICB9Ci19Ci0K
IHN0ZDo6dW5pcXVlX3B0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gUmFzdGVyU2hhcGVJbnRlcnZh
bHM6OmNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyhpbnQgc2hhcGVNYXJnaW4pIGNvbnN0CiB7
CiAgICAgaW50IG1hcmdpbkludGVydmFsc1NpemUgPSAob2Zmc2V0KCkgPiBzaGFwZU1hcmdpbikg
PyBzaXplKCkgOiBzaXplKCkgLSBvZmZzZXQoKSAqIDIgKyBzaGFwZU1hcmdpbiAqIDI7CkBAIC0x
NzAsNyArODAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IFJhc3Rl
clNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbgogICAgIE1hcmdpbkludGVydmFs
R2VuZXJhdG9yIG1hcmdpbkludGVydmFsR2VuZXJhdG9yKHNoYXBlTWFyZ2luKTsKIAogICAgIGZv
ciAoaW50IHkgPSBib3VuZHMoKS55KCk7IHkgPCBib3VuZHMoKS5tYXhZKCk7ICsreSkgewotICAg
ICAgICBjb25zdCBJbnRTaGFwZUludGVydmFsJiBpbnRlcnZhbEF0WSA9IGxpbWl0SW50ZXJ2YWxB
dCh5KTsKKyAgICAgICAgY29uc3QgSW50U2hhcGVJbnRlcnZhbCYgaW50ZXJ2YWxBdFkgPSBpbnRl
cnZhbEF0KHkpOwogICAgICAgICBpZiAoaW50ZXJ2YWxBdFkuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgY29udGludWU7CiAKQEAgLTE3OSwzMyArODksNDUgQEAgc3RkOjp1bmlxdWVfcHRyPFJhc3Rl
clNoYXBlSW50ZXJ2YWxzPiBSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2lu
SW4KICAgICAgICAgaW50IG1hcmdpblkxID0gc3RkOjptaW4obWF4WSgpLCB5ICsgc2hhcGVNYXJn
aW4pOwogCiAgICAgICAgIGZvciAoaW50IG1hcmdpblkgPSB5IC0gMTsgbWFyZ2luWSA+PSBtYXJn
aW5ZMDsgLS1tYXJnaW5ZKSB7Ci0gICAgICAgICAgICBpZiAobWFyZ2luWSA+IGJvdW5kcygpLnko
KSAmJiBsaW1pdEludGVydmFsQXQobWFyZ2luWSkuY29udGFpbnMoaW50ZXJ2YWxBdFkpKQorICAg
ICAgICAgICAgaWYgKG1hcmdpblkgPiBib3VuZHMoKS55KCkgJiYgaW50ZXJ2YWxBdChtYXJnaW5Z
KS5jb250YWlucyhpbnRlcnZhbEF0WSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICByZXN1bHQtPnVuaXRlTWFyZ2luSW50ZXJ2YWwobWFyZ2luWSwgbWFyZ2luSW50ZXJ2YWxH
ZW5lcmF0b3IuaW50ZXJ2YWxBdChtYXJnaW5ZKSk7CisgICAgICAgICAgICByZXN1bHQtPmludGVy
dmFsQXQobWFyZ2luWSkudW5pdGUobWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IuaW50ZXJ2YWxBdCht
YXJnaW5ZKSk7CiAgICAgICAgIH0KIAotICAgICAgICByZXN1bHQtPnVuaXRlTWFyZ2luSW50ZXJ2
YWwoeSwgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IuaW50ZXJ2YWxBdCh5KSk7CisgICAgICAgIHJl
c3VsdC0+aW50ZXJ2YWxBdCh5KS51bml0ZShtYXJnaW5JbnRlcnZhbEdlbmVyYXRvci5pbnRlcnZh
bEF0KHkpKTsKIAogICAgICAgICBmb3IgKGludCBtYXJnaW5ZID0geSArIDE7IG1hcmdpblkgPD0g
bWFyZ2luWTE7ICsrbWFyZ2luWSkgewotICAgICAgICAgICAgaWYgKG1hcmdpblkgPCBib3VuZHMo
KS5tYXhZKCkgJiYgbGltaXRJbnRlcnZhbEF0KG1hcmdpblkpLmNvbnRhaW5zKGludGVydmFsQXRZ
KSkKKyAgICAgICAgICAgIGlmIChtYXJnaW5ZIDwgYm91bmRzKCkubWF4WSgpICYmIGludGVydmFs
QXQobWFyZ2luWSkuY29udGFpbnMoaW50ZXJ2YWxBdFkpKQogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgcmVzdWx0LT51bml0ZU1hcmdpbkludGVydmFsKG1hcmdpblksIG1hcmdp
bkludGVydmFsR2VuZXJhdG9yLmludGVydmFsQXQobWFyZ2luWSkpOworICAgICAgICAgICAgcmVz
dWx0LT5pbnRlcnZhbEF0KG1hcmdpblkpLnVuaXRlKG1hcmdpbkludGVydmFsR2VuZXJhdG9yLmlu
dGVydmFsQXQobWFyZ2luWSkpOwogICAgICAgICB9CiAgICAgfQogCisgICAgcmVzdWx0LT5pbml0
aWFsaXplQm91bmRzKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBSYXN0ZXJTaGFw
ZUludGVydmFsczo6aW5pdGlhbGl6ZUJvdW5kcygpCit7CisgICAgbV9ib3VuZHMgPSBJbnRSZWN0
KCk7CisgICAgZm9yIChpbnQgeSA9IG1pblkoKTsgeSA8IG1heFkoKTsgKyt5KSB7CisgICAgICAg
IGNvbnN0IEludFNoYXBlSW50ZXJ2YWwmIGludGVydmFsQXRZID0gaW50ZXJ2YWxBdCh5KTsKKyAg
ICAgICAgaWYgKGludGVydmFsQXRZLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBtX2JvdW5kcy51bml0ZShJbnRSZWN0KGludGVydmFsQXRZLngxKCksIHksIGludGVy
dmFsQXRZLndpZHRoKCksIDEpKTsKKyAgICB9Cit9CisKIHZvaWQgUmFzdGVyU2hhcGVJbnRlcnZh
bHM6OmJ1aWxkQm91bmRzUGF0aChQYXRoJiBwYXRoKSBjb25zdAogewogICAgIGZvciAoaW50IHkg
PSBib3VuZHMoKS55KCk7IHkgPCBib3VuZHMoKS5tYXhZKCk7IHkrKykgewotICAgICAgICBpZiAo
aW50ZXJ2YWxzQXQoeSkuaXNFbXB0eSgpKQorICAgICAgICBpZiAoaW50ZXJ2YWxBdCh5KS5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBJbnRTaGFwZUludGVydmFs
IGV4dGVudCA9IGxpbWl0SW50ZXJ2YWxBdCh5KTsKKyAgICAgICAgSW50U2hhcGVJbnRlcnZhbCBl
eHRlbnQgPSBpbnRlcnZhbEF0KHkpOwogICAgICAgICBpbnQgZW5kWSA9IHkgKyAxOwogICAgICAg
ICBmb3IgKDsgZW5kWSA8IGJvdW5kcygpLm1heFkoKTsgZW5kWSsrKSB7Ci0gICAgICAgICAgICBp
ZiAoaW50ZXJ2YWxzQXQoZW5kWSkuaXNFbXB0eSgpIHx8IGxpbWl0SW50ZXJ2YWxBdChlbmRZKSAh
PSBleHRlbnQpCisgICAgICAgICAgICBpZiAoaW50ZXJ2YWxBdChlbmRZKS5pc0VtcHR5KCkgfHwg
aW50ZXJ2YWxBdChlbmRZKSAhPSBleHRlbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgcGF0aC5hZGRSZWN0KEZsb2F0UmVjdChleHRlbnQueDEoKSwgeSwgZXh0
ZW50LndpZHRoKCksIGVuZFkgLSB5KSk7CkBAIC0yMjcsMjEgKzE0OSwyNiBAQCBjb25zdCBSYXN0
ZXJTaGFwZUludGVydmFscyYgUmFzdGVyU2hhcGU6Om1hcmdpbkludGVydmFscygpIGNvbnN0CiAg
ICAgcmV0dXJuICptX21hcmdpbkludGVydmFsczsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGFw
cGVuZExpbmVTZWdtZW50cyhjb25zdCBJbnRTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzLCBTZWdt
ZW50TGlzdCYgcmVzdWx0KQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRlcnZh
bHMuc2l6ZSgpOyBpKyspCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoTGluZVNlZ21lbnQoaW50ZXJ2
YWxzW2ldLngxKCksIGludGVydmFsc1tpXS54MigpICsgMSkpOwotfQotCiB2b2lkIFJhc3RlclNo
YXBlOjpnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVu
aXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmIHJlc3VsdCkgY29uc3QKIHsKICAgICBjb25z
dCBSYXN0ZXJTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzID0gbWFyZ2luSW50ZXJ2YWxzKCk7CiAg
ICAgaWYgKGludGVydmFscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEludFNo
YXBlSW50ZXJ2YWxzIGV4Y2x1ZGVkSW50ZXJ2YWxzOwotICAgIGludGVydmFscy5nZXRFeGNsdWRl
ZEludGVydmFscyhsb2dpY2FsVG9wLCBsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdodCwgZXhjbHVk
ZWRJbnRlcnZhbHMpOwotICAgIGFwcGVuZExpbmVTZWdtZW50cyhleGNsdWRlZEludGVydmFscywg
cmVzdWx0KTsKKyAgICBpbnQgeTEgPSBsb2dpY2FsVG9wOworICAgIGludCB5MiA9IGxvZ2ljYWxU
b3AgKyBsb2dpY2FsSGVpZ2h0OworICAgIEFTU0VSVCh5MiA+PSB5MSk7CisgICAgaWYgKHkyIDwg
aW50ZXJ2YWxzLmJvdW5kcygpLnkoKSB8fCB5MSA+PSBpbnRlcnZhbHMuYm91bmRzKCkubWF4WSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICB5MSA9IHN0ZDo6bWF4KHkxLCBpbnRlcnZhbHMuYm91
bmRzKCkueSgpKTsKKyAgICB5MiA9IHN0ZDo6bWluKHkyLCBpbnRlcnZhbHMuYm91bmRzKCkubWF4
WSgpKTsKKyAgICBJbnRTaGFwZUludGVydmFsIGV4Y2x1ZGVkSW50ZXJ2YWw7CisKKyAgICBmb3Ig
KGludCB5ID0geTE7IHkgPCB5MjsgIHkrKykKKyAgICAgICAgZXhjbHVkZWRJbnRlcnZhbC51bml0
ZShpbnRlcnZhbHMuaW50ZXJ2YWxBdCh5KSk7CisKKyAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdt
ZW50KGV4Y2x1ZGVkSW50ZXJ2YWwueDEoKSwgZXhjbHVkZWRJbnRlcnZhbC54MigpICsgMSkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1Jhc3RlclNoYXBlLmgKaW5kZXggZDA3Y2NkYy4uNzk2ZTAyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaApAQCAtNDMsNDggKzQzLDM2
IEBAIHB1YmxpYzoKICAgICBSYXN0ZXJTaGFwZUludGVydmFscyh1bnNpZ25lZCBzaXplLCBpbnQg
b2Zmc2V0ID0gMCkKICAgICAgICAgOiBtX29mZnNldChvZmZzZXQpCiAgICAgewotICAgICAgICBt
X2ludGVydmFsTGlzdHMucmVzaXplKHNpemUpOworICAgICAgICBtX2ludGVydmFscy5yZXNpemUo
c2l6ZSk7CiAgICAgfQogCisgICAgdm9pZCBpbml0aWFsaXplQm91bmRzKCk7CiAgICAgY29uc3Qg
SW50UmVjdCYgYm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHM7IH0KICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kcy5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIGFw
cGVuZEludGVydmFsKGludCB5LCBpbnQgeDEsIGludCB4Mik7CiAKLSAgICB2b2lkIGdldEV4Y2x1
ZGVkSW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBJbnRTaGFwZUludGVydmFscyYgcmVzdWx0KSBj
b25zdDsKKyAgICBJbnRTaGFwZUludGVydmFsJiBpbnRlcnZhbEF0KGludCB5KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHkgKyBtX29mZnNldCA+PSAwICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPih5
ICsgbV9vZmZzZXQpIDwgbV9pbnRlcnZhbHMuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1faW50
ZXJ2YWxzW3kgKyBtX29mZnNldF07CisgICAgfQogCisgICAgY29uc3QgSW50U2hhcGVJbnRlcnZh
bCYgaW50ZXJ2YWxBdChpbnQgeSkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh5ICsgbV9v
ZmZzZXQgPj0gMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oeSArIG1fb2Zmc2V0KSA8IG1faW50
ZXJ2YWxzLnNpemUoKSk7CisgICAgICAgIHJldHVybiBtX2ludGVydmFsc1t5ICsgbV9vZmZzZXRd
OworICAgIH0KKyAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+
IGNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyhpbnQgc2hhcGVNYXJnaW4pIGNvbnN0OwotCiAg
ICAgdm9pZCBidWlsZEJvdW5kc1BhdGgoUGF0aCYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGlu
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnZhbExpc3RzLnNpemUoKTsgfQorICAgIGlu
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnZhbHMuc2l6ZSgpOyB9CiAgICAgaW50IG9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgaW50IG1pblkoKSBjb25zdCB7
IHJldHVybiAtbV9vZmZzZXQ7IH0KLSAgICBpbnQgbWF4WSgpIGNvbnN0IHsgcmV0dXJuIC1tX29m
ZnNldCArIG1faW50ZXJ2YWxMaXN0cy5zaXplKCk7IH0KLQotICAgIEludFNoYXBlSW50ZXJ2YWxz
JiBpbnRlcnZhbHNBdChpbnQgeSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh5ICsgbV9vZmZzZXQg
Pj0gMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oeSArIG1fb2Zmc2V0KSA8IG1faW50ZXJ2YWxM
aXN0cy5zaXplKCkpOwotICAgICAgICByZXR1cm4gbV9pbnRlcnZhbExpc3RzW3kgKyBtX29mZnNl
dF07Ci0gICAgfQotCi0gICAgY29uc3QgSW50U2hhcGVJbnRlcnZhbHMmIGludGVydmFsc0F0KGlu
dCB5KSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKHkgKyBtX29mZnNldCA+PSAwICYmIHN0
YXRpY19jYXN0PHVuc2lnbmVkPih5ICsgbV9vZmZzZXQpIDwgbV9pbnRlcnZhbExpc3RzLnNpemUo
KSk7Ci0gICAgICAgIHJldHVybiBtX2ludGVydmFsTGlzdHNbeSArIG1fb2Zmc2V0XTsKLSAgICB9
Ci0KLSAgICBJbnRTaGFwZUludGVydmFsIGxpbWl0SW50ZXJ2YWxBdChpbnQgeSkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIGNvbnN0IEludFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMgPSBpbnRlcnZh
bHNBdCh5KTsKLSAgICAgICAgcmV0dXJuIGludGVydmFscy5zaXplKCkgPyBJbnRTaGFwZUludGVy
dmFsKGludGVydmFsc1swXS54MSgpLCBpbnRlcnZhbHMubGFzdCgpLngyKCkpIDogSW50U2hhcGVJ
bnRlcnZhbCgpOwotICAgIH0KKyAgICBpbnQgbWF4WSgpIGNvbnN0IHsgcmV0dXJuIC1tX29mZnNl
dCArIG1faW50ZXJ2YWxzLnNpemUoKTsgfQogCi0gICAgYm9vbCBjb250YWlucyhjb25zdCBJbnRS
ZWN0JikgY29uc3Q7Ci0gICAgYm9vbCBnZXRJbnRlcnZhbFgxVmFsdWVzKGludCBtaW5ZLCBpbnQg
bWF4WSwgaW50IG1pbkludGVydmFsV2lkdGgsIFZlY3RvcjxpbnQ+JiByZXN1bHQpIGNvbnN0Owot
ICAgIHZvaWQgdW5pdGVNYXJnaW5JbnRlcnZhbChpbnQgeSwgY29uc3QgSW50U2hhcGVJbnRlcnZh
bCYpOwogICAgIEludFJlY3QgbV9ib3VuZHM7Ci0gICAgVmVjdG9yPEludFNoYXBlSW50ZXJ2YWxz
PiBtX2ludGVydmFsTGlzdHM7CisgICAgVmVjdG9yPEludFNoYXBlSW50ZXJ2YWw+IG1faW50ZXJ2
YWxzOwogICAgIGludCBtX29mZnNldDsKIH07CiAKQEAgLTk1LDYgKzgzLDcgQEAgcHVibGljOgog
ICAgICAgICA6IG1faW50ZXJ2YWxzKHN0ZDo6bW92ZShpbnRlcnZhbHMpKQogICAgICAgICAsIG1f
bWFyZ2luUmVjdFNpemUobWFyZ2luUmVjdFNpemUpCiAgICAgeworICAgICAgICBtX2ludGVydmFs
cy0+aW5pdGlhbGl6ZUJvdW5kcygpOwogICAgIH0KIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBz
aGFwZU1hcmdpbkxvZ2ljYWxCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0
YXRpY19jYXN0PExheW91dFJlY3Q+KG1hcmdpbkludGVydmFscygpLmJvdW5kcygpKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCBjZGQ4OGEwLi41MWNi
MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApAQCAtMTk1
LDcgKzE5NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNo
YXBlKEltYWdlKiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAgICAgICAgIGludCBtaW5CdWZm
ZXJZID0gc3RkOjptYXgoMCwgbWFyZ2luUmVjdC55KCkgLSBpbWFnZVJlY3QueSgpKTsKICAgICAg
ICAgaW50IG1heEJ1ZmZlclkgPSBzdGQ6Om1pbihpbWFnZVJlY3QuaGVpZ2h0KCksIG1hcmdpblJl
Y3QubWF4WSgpIC0gaW1hZ2VSZWN0LnkoKSk7CiAKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbWFnZVJlY3Qud2lkdGgoKSAqIGltYWdlUmVjdC5oZWlnaHQoKSAqIDQpID09IHBp
eGVsQXJyYXlMZW5ndGgpIHsgLy8gc2FuaXR5IGNoZWNrCisgICAgICAgIGlmIChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaW1hZ2VSZWN0LndpZHRoKCkgKiBpbWFnZVJlY3QuaGVpZ2h0KCkgKiA0KSA9
PSBwaXhlbEFycmF5TGVuZ3RoKSB7CiAgICAgICAgICAgICBmb3IgKGludCB5ID0gbWluQnVmZmVy
WTsgeSA8IG1heEJ1ZmZlclk7ICsreSkgewogICAgICAgICAgICAgICAgIGludCBzdGFydFggPSAt
MTsKICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGltYWdlUmVjdC53aWR0aCgp
OyArK3gsIHBpeGVsQXJyYXlPZmZzZXQgKz0gNCkgewpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwg
ZmxvYXQgdGhyZXNob2xkLCBjCiAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydFggPT0gLTEg
JiYgYWxwaGFBYm92ZVRocmVzaG9sZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRY
ID0geDsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydFggIT0gLTEgJiYgKCFh
bHBoYUFib3ZlVGhyZXNob2xkIHx8IHggPT0gaW1hZ2VSZWN0LndpZHRoKCkgLSAxKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWxzLT5hcHBlbmRJbnRlcnZhbCh5ICsgaW1hZ2VS
ZWN0LnkoKSwgc3RhcnRYICsgaW1hZ2VSZWN0LngoKSwgeCArIGltYWdlUmVjdC54KCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWxzLT5pbnRlcnZhbEF0KHkgKyBpbWFnZVJlY3Qu
eSgpKS51bml0ZShJbnRTaGFwZUludGVydmFsKHN0YXJ0WCArIGltYWdlUmVjdC54KCksIHggKyBp
bWFnZVJlY3QueCgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFggPSAtMTsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmgKaW5kZXggNDc2ZjBjZS4uYzNhNjVl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVy
dmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFs
LmgKQEAgLTg1LDYgKzg1LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFNoYXBlSW50ZXJ2
YWw8VD4oc3RkOjptYXg8VD4oeDEoKSwgaW50ZXJ2YWwueDEoKSksIHN0ZDo6bWluPFQ+KHgyKCks
IGludGVydmFsLngyKCkpKTsKICAgICB9CiAKKyAgICB2b2lkIHVuaXRlKGNvbnN0IFNoYXBlSW50
ZXJ2YWw8VD4mIGludGVydmFsKQorICAgIHsKKyAgICAgICAgaWYgKGludGVydmFsLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHNldChpbnRlcnZhbC54MSgpLCBpbnRlcnZhbC54MigpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgc2V0KHN0ZDo6bWluPFQ+KHgxKCksIGludGVydmFsLngxKCkpLCBzdGQ6Om1heDxU
Pih4MigpLCBpbnRlcnZhbC54MigpKSk7CisgICAgfQorCiAgICAgdHlwZWRlZiBWZWN0b3I8U2hh
cGVJbnRlcnZhbDxUPj4gU2hhcGVJbnRlcnZhbHM7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBTaGFw
ZUludGVydmFsczo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAgICAgdHlwZWRlZiB0
eXBlbmFtZSBTaGFwZUludGVydmFsczo6aXRlcmF0b3IgaXRlcmF0b3I7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>