<?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>182662</bug_id>
          
          <creation_ts>2018-02-09 15:57:41 -0800</creation_ts>
          <short_desc>[RenderTreeBuilder] Move RenderBlock::takeChild mutation to a RenderTreeBuilder</short_desc>
          <delta_ts>2018-02-10 07:45:02 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1398139</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-02-09 15:57:41 -0800</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398140</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-09 15:58:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/37408571&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398144</commentid>
    <comment_count>2</comment_count>
      <attachid>333531</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-02-09 16:14:54 -0800</bug_when>
    <thetext>Created attachment 333531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398146</commentid>
    <comment_count>3</comment_count>
      <attachid>333531</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-02-09 16:16:52 -0800</bug_when>
    <thetext>Comment on attachment 333531
Patch

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

&gt; Source/WebCore/rendering/RenderBlock.cpp:499
&gt; +    return builder.takenChildFromRenderBlock(*this, oldChild);

takeChild

&gt; Source/WebCore/rendering/updating/RenderTreeBuilder.cpp:473
&gt; +RenderPtr&lt;RenderObject&gt; RenderTreeBuilder::takenChildFromRenderBlock(RenderBlock&amp; parent, RenderObject&amp; oldChild)

taken</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398196</commentid>
    <comment_count>4</comment_count>
      <attachid>333549</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-02-09 19:42:53 -0800</bug_when>
    <thetext>Created attachment 333549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398199</commentid>
    <comment_count>5</comment_count>
      <attachid>333551</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-02-09 20:16:51 -0800</bug_when>
    <thetext>Created attachment 333551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398222</commentid>
    <comment_count>6</comment_count>
      <attachid>333551</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-10 06:52:40 -0800</bug_when>
    <thetext>Comment on attachment 333551
Patch

Rejecting attachment 333551 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 333551, &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.webkit.org/results/6446004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398223</commentid>
    <comment_count>7</comment_count>
      <attachid>333556</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-02-10 06:57:53 -0800</bug_when>
    <thetext>Created attachment 333556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398231</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-10 07:44:31 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 333556:

imported/w3c/web-platform-tests/fetch/api/redirect/redirect-to-dataurl.html bug 182270 (author: youennf@gmail.com)
imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.https.html bug 182396 (author: youennf@gmail.com)
http/tests/xmlhttprequest/redirect-cross-origin-tripmine.html bug 179840 (authors: ap@webkit.org and rniwa@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398232</commentid>
    <comment_count>9</comment_count>
      <attachid>333556</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-10 07:45:01 -0800</bug_when>
    <thetext>Comment on attachment 333556
Patch

Clearing flags on attachment: 333556

Committed r228365: &lt;https://trac.webkit.org/changeset/228365&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398233</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-10 07:45:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333531</attachid>
            <date>2018-02-09 16:14:54 -0800</date>
            <delta_ts>2018-02-09 19:42:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182662-20180209161453.patch</filename>
            <type>text/plain</type>
            <size>20181</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJlNDkyMTEwODJhMjI2
Mjk5ZDVlMjM0OTkyMTFmYzQwODkwMmIzNi4uNjRjMGRlNDI5ODUyNjdhYmU2ZGYyMTE3YTRkMGRi
YTI5YWU0OWExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE4LTAyLTA5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1JlbmRlclRyZWVCdWlsZGVy
XSBNb3ZlIFJlbmRlckJsb2NrOjp0YWtlQ2hpbGQgbXV0YXRpb24gdG8gYSBSZW5kZXJUcmVlQnVp
bGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgy
NjYyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzQwODU3MT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0
eS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6dGFrZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbkRyb3BB
bm9ueW1vdXNCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjYW5NZXJnZUNvbnRp
Z3VvdXNBbm9ueW1vdXNCbG9ja3MpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Om1vdmVBbGxDaGlsZHJl
bkluY2x1ZGluZ0Zsb2F0c1RvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjp0YWtlbkNoaWxkRnJvbVJlbmRl
ckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5Ecm9wQW5vbnltb3VzQmxvY2spOgorICAgICAgICAo
V2ViQ29yZTo6Y2FuTWVyZ2VDb250aWd1b3VzQW5vbnltb3VzQmxvY2tzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpCbG9jazo6dGFrZUNoaWxkKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oOgorCiAyMDE4LTAyLTA5
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1JlbmRlclRyZWVC
dWlsZGVyXSBJbnRyb2R1Y2UgUmVuZGVyVHJlZUJ1aWxkZXIgdG8gd2lsbEJlRGVzdG9yeWVkL3Jl
bW92ZUZyb21QYXJlbnRBbmREZXN0cm95CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAppbmRleCBmYjkxOThlYjhmN2U4MGVhN2ZhNzgyYzU0YzAwYTE1MzQ0MDlhYzI4Li40
NDZjZGVkMDBlYzI0MTdmMTM5ODYyMTBkMTgxZGJkMDVlY2M1NTE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTQ4Miw0MiArNDgyLDYgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6ZGVsZXRlTGluZXMoKQogICAgICAgICBjYWNoZS0+ZGVmZXJSZWNvbXB1dGVJc0ln
bm9yZWQoZWxlbWVudCgpKTsKIH0KIAotc3RhdGljIGJvb2wgY2FuRHJvcEFub255bW91c0Jsb2Nr
KGNvbnN0IFJlbmRlckJsb2NrJiBhbm9ueW1vdXNCbG9jaykKLXsKLSAgICBpZiAoYW5vbnltb3Vz
QmxvY2suYmVpbmdEZXN0cm95ZWQoKSB8fCBhbm9ueW1vdXNCbG9jay5jb250aW51YXRpb24oKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhbm9ueW1vdXNCbG9jay5pc1J1YnlSdW4o
KSB8fCBhbm9ueW1vdXNCbG9jay5pc1J1YnlCYXNlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgY2FuTWVyZ2VDb250aWd1b3VzQW5v
bnltb3VzQmxvY2tzKFJlbmRlck9iamVjdCYgb2xkQ2hpbGQsIFJlbmRlck9iamVjdCogcHJldmlv
dXMsIFJlbmRlck9iamVjdCogbmV4dCkKLXsKLSAgICBBU1NFUlQoIW9sZENoaWxkLnJlbmRlclRy
ZWVCZWluZ0Rlc3Ryb3llZCgpKTsKLQotICAgIGlmIChvbGRDaGlsZC5pc0lubGluZSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaXM8UmVuZGVyQm94TW9kZWxPYmplY3Q+KG9s
ZENoaWxkKSAmJiBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4ob2xkQ2hpbGQpLmNvbnRp
bnVhdGlvbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAocHJldmlvdXMpIHsK
LSAgICAgICAgaWYgKCFwcmV2aW91cy0+aXNBbm9ueW1vdXNCbG9jaygpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBSZW5kZXJCbG9jayYgcHJldmlvdXNBbm9ueW1vdXNCbG9j
ayA9IGRvd25jYXN0PFJlbmRlckJsb2NrPigqcHJldmlvdXMpOwotICAgICAgICBpZiAoIWNhbkRy
b3BBbm9ueW1vdXNCbG9jayhwcmV2aW91c0Fub255bW91c0Jsb2NrKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKG5leHQpIHsKLSAgICAgICAgaWYgKCFuZXh0LT5p
c0Fub255bW91c0Jsb2NrKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIFJl
bmRlckJsb2NrJiBuZXh0QW5vbnltb3VzQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm5l
eHQpOwotICAgICAgICBpZiAoIWNhbkRyb3BBbm9ueW1vdXNCbG9jayhuZXh0QW5vbnltb3VzQmxv
Y2spKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQogdm9pZCBSZW5kZXJCbG9jazo6ZHJvcEFub255bW91c0JveENoaWxkKFJlbmRlclRyZWVC
dWlsZGVyJiBidWlsZGVyLCBSZW5kZXJCbG9jayYgY2hpbGQpCiB7CiAgICAgc2V0TmVlZHNMYXlv
dXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CkBAIC01MzIsOTEgKzQ5Niw3IEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmRyb3BBbm9ueW1vdXNCb3hDaGlsZChSZW5kZXJUcmVlQnVpbGRlciYgYnVpbGRlciwg
UmVuZGVyQmxvY2smCiAKIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IFJlbmRlckJsb2NrOjp0YWtl
Q2hpbGQoUmVuZGVyVHJlZUJ1aWxkZXImIGJ1aWxkZXIsIFJlbmRlck9iamVjdCYgb2xkQ2hpbGQp
CiB7Ci0gICAgLy8gTm8gbmVlZCB0byB3YXN0ZSB0aW1lIGluIG1lcmdpbmcgb3IgcmVtb3Zpbmcg
ZW1wdHkgYW5vbnltb3VzIGJsb2Nrcy4KLSAgICAvLyBXZSBjYW4ganVzdCBiYWlsIG91dCBpZiBv
dXIgZG9jdW1lbnQgaXMgZ2V0dGluZyBkZXN0cm95ZWQuCi0gICAgaWYgKHJlbmRlclRyZWVCZWlu
Z0Rlc3Ryb3llZCgpKQotICAgICAgICByZXR1cm4gUmVuZGVyQm94Ojp0YWtlQ2hpbGQoYnVpbGRl
ciwgb2xkQ2hpbGQpOwotCi0gICAgLy8gSWYgdGhpcyBjaGlsZCBpcyBhIGJsb2NrLCBhbmQgaWYg
b3VyIHByZXZpb3VzIGFuZCBuZXh0IHNpYmxpbmdzIGFyZSBib3RoIGFub255bW91cyBibG9ja3MK
LSAgICAvLyB3aXRoIGlubGluZSBjb250ZW50LCB0aGVuIHdlIGNhbiBmb2xkIHRoZSBpbmxpbmUg
Y29udGVudCBiYWNrIHRvZ2V0aGVyLgotICAgIFJlbmRlck9iamVjdCogcHJldiA9IG9sZENoaWxk
LnByZXZpb3VzU2libGluZygpOwotICAgIFJlbmRlck9iamVjdCogbmV4dCA9IG9sZENoaWxkLm5l
eHRTaWJsaW5nKCk7Ci0gICAgYm9vbCBjYW5NZXJnZUFub255bW91c0Jsb2NrcyA9IGNhbk1lcmdl
Q29udGlndW91c0Fub255bW91c0Jsb2NrcyhvbGRDaGlsZCwgcHJldiwgbmV4dCk7Ci0gICAgaWYg
KGNhbk1lcmdlQW5vbnltb3VzQmxvY2tzICYmIHByZXYgJiYgbmV4dCkgewotICAgICAgICBwcmV2
LT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKLSAgICAgICAgUmVuZGVyQmxv
Y2smIG5leHRCbG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2NrPigqbmV4dCk7Ci0gICAgICAgIFJl
bmRlckJsb2NrJiBwcmV2QmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKnByZXYpOwotICAg
ICAgIAotICAgICAgICBpZiAocHJldi0+Y2hpbGRyZW5JbmxpbmUoKSAhPSBuZXh0LT5jaGlsZHJl
bklubGluZSgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJCbG9jayYgaW5saW5lQ2hpbGRyZW5CbG9j
ayA9IHByZXYtPmNoaWxkcmVuSW5saW5lKCkgPyBwcmV2QmxvY2sgOiBuZXh0QmxvY2s7Ci0gICAg
ICAgICAgICBSZW5kZXJCbG9jayYgYmxvY2tDaGlsZHJlbkJsb2NrID0gcHJldi0+Y2hpbGRyZW5J
bmxpbmUoKSA/IG5leHRCbG9jayA6IHByZXZCbG9jazsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgLy8gUGxhY2UgdGhlIGlubGluZSBjaGlsZHJlbiBibG9jayBpbnNpZGUgb2YgdGhlIGJsb2Nr
IGNoaWxkcmVuIGJsb2NrIGluc3RlYWQgb2YgZGVsZXRpbmcgaXQuCi0gICAgICAgICAgICAvLyBJ
biBvcmRlciB0byByZXVzZSBpdCwgd2UgaGF2ZSB0byByZXNldCBpdCB0byBqdXN0IGJlIGEgZ2Vu
ZXJpYyBhbm9ueW1vdXMgYmxvY2suICBNYWtlIHN1cmUKLSAgICAgICAgICAgIC8vIHRvIGNsZWFy
IG91dCBpbmhlcml0ZWQgY29sdW1uIHByb3BlcnRpZXMgYnkganVzdCBtYWtpbmcgYSBuZXcgc3R5
bGUsIGFuZCB0byBhbHNvIGNsZWFyIHRoZQotICAgICAgICAgICAgLy8gY29sdW1uIHNwYW4gZmxh
ZyBpZiBpdCBpcyBzZXQuCi0gICAgICAgICAgICBBU1NFUlQoIWlubGluZUNoaWxkcmVuQmxvY2su
Y29udGludWF0aW9uKCkpOwotICAgICAgICAgICAgLy8gQ2FjaGUgdGhpcyB2YWx1ZSBhcyBpdCBt
aWdodCBnZXQgY2hhbmdlZCBpbiBzZXRTdHlsZSgpIGNhbGwuCi0gICAgICAgICAgICBpbmxpbmVD
aGlsZHJlbkJsb2NrLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KHN0eWxlKCksIEJMT0NLKSk7Ci0gICAgICAgICAgICBhdXRvIGJsb2NrVG9Nb3Zl
ID0gdGFrZUNoaWxkSW50ZXJuYWwoaW5saW5lQ2hpbGRyZW5CbG9jayk7Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIC8vIE5vdyBqdXN0IHB1dCB0aGUgaW5saW5lQ2hpbGRyZW5CbG9jayBpbnNp
ZGUgdGhlIGJsb2NrQ2hpbGRyZW5CbG9jay4KLSAgICAgICAgICAgIFJlbmRlck9iamVjdCogYmVm
b3JlQ2hpbGQgPSBwcmV2ID09ICZpbmxpbmVDaGlsZHJlbkJsb2NrID8gYmxvY2tDaGlsZHJlbkJs
b2NrLmZpcnN0Q2hpbGQoKSA6IG51bGxwdHI7Ci0gICAgICAgICAgICBibG9ja0NoaWxkcmVuQmxv
Y2suaW5zZXJ0Q2hpbGRJbnRlcm5hbChXVEZNb3ZlKGJsb2NrVG9Nb3ZlKSwgYmVmb3JlQ2hpbGQp
OwotICAgICAgICAgICAgbmV4dC0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIGlubGluZUNoaWxkcmVuQmxvY2sgZ290IHJl
cGFyZW50ZWQgdG8gYmxvY2tDaGlsZHJlbkJsb2NrLCBzbyBpdCBpcyBubyBsb25nZXIgYSBjaGls
ZAotICAgICAgICAgICAgLy8gb2YgInRoaXMiLiB3ZSBudWxsIG91dCBwcmV2IG9yIG5leHQgc28g
dGhhdCBpcyBub3QgdXNlZCBsYXRlciBpbiB0aGUgZnVuY3Rpb24uCi0gICAgICAgICAgICBpZiAo
JmlubGluZUNoaWxkcmVuQmxvY2sgPT0gJnByZXZCbG9jaykKLSAgICAgICAgICAgICAgICBwcmV2
ID0gbnVsbHB0cjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBuZXh0ID0gbnVs
bHB0cjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFRha2UgYWxsIHRoZSBjaGls
ZHJlbiBvdXQgb2YgdGhlIHxuZXh0fCBibG9jayBhbmQgcHV0IHRoZW0gaW4KLSAgICAgICAgICAg
IC8vIHRoZSB8cHJldnwgYmxvY2suCi0gICAgICAgICAgICBuZXh0QmxvY2subW92ZUFsbENoaWxk
cmVuSW5jbHVkaW5nRmxvYXRzVG8oYnVpbGRlciwgcHJldkJsb2NrLCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Tm9ybWFsaXplQWZ0ZXJJbnNlcnRpb246Ok5vKTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgLy8gRGVsZXRlIHRoZSBub3ctZW1wdHkgYmxvY2sncyBsaW5lcyBhbmQgbnVrZSBpdC4K
LSAgICAgICAgICAgIG5leHRCbG9jay5kZWxldGVMaW5lcygpOwotICAgICAgICAgICAgbmV4dEJs
b2NrLnJlbW92ZUZyb21QYXJlbnRBbmREZXN0cm95KGJ1aWxkZXIpOwotICAgICAgICAgICAgbmV4
dCA9IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpbnZhbGlkYXRlTGluZUxheW91
dFBhdGgoKTsKLQotICAgIGF1dG8gdGFrZW5DaGlsZCA9IFJlbmRlckJveDo6dGFrZUNoaWxkKGJ1
aWxkZXIsIG9sZENoaWxkKTsKLQotICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSBwcmV2ID8gcHJl
diA6IG5leHQ7Ci0gICAgaWYgKGNhbk1lcmdlQW5vbnltb3VzQmxvY2tzICYmIGNoaWxkICYmICFj
aGlsZC0+cHJldmlvdXNTaWJsaW5nKCkgJiYgIWNoaWxkLT5uZXh0U2libGluZygpICYmIGNhbkRy
b3BBbm9ueW1vdXNCbG9ja0NoaWxkKCkpIHsKLSAgICAgICAgLy8gVGhlIHJlbW92YWwgaGFzIGtu
b2NrZWQgdXMgZG93biB0byBjb250YWluaW5nIG9ubHkgYSBzaW5nbGUgYW5vbnltb3VzCi0gICAg
ICAgIC8vIGJveC4gV2UgY2FuIHB1bGwgdGhlIGNvbnRlbnQgcmlnaHQgYmFjayB1cCBpbnRvIG91
ciBib3guCi0gICAgICAgIGRyb3BBbm9ueW1vdXNCb3hDaGlsZChidWlsZGVyLCBkb3duY2FzdDxS
ZW5kZXJCbG9jaz4oKmNoaWxkKSk7Ci0gICAgfSBlbHNlIGlmICgoKHByZXYgJiYgcHJldi0+aXNB
bm9ueW1vdXNCbG9jaygpKSB8fCAobmV4dCAmJiBuZXh0LT5pc0Fub255bW91c0Jsb2NrKCkpKSAm
JiBjYW5Ecm9wQW5vbnltb3VzQmxvY2tDaGlsZCgpKSB7Ci0gICAgICAgIC8vIEl0J3MgcG9zc2li
bGUgdGhhdCB0aGUgcmVtb3ZhbCBoYXMga25vY2tlZCB1cyBkb3duIHRvIGEgc2luZ2xlIGFub255
bW91cwotICAgICAgICAvLyBibG9jayB3aXRoIGZsb2F0aW5nIHNpYmxpbmdzLgotICAgICAgICBS
ZW5kZXJCbG9jayYgYW5vbkJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KChwcmV2ICYmIHBy
ZXYtPmlzQW5vbnltb3VzQmxvY2soKSkgPyAqcHJldiA6ICpuZXh0KTsKLSAgICAgICAgaWYgKGNh
bkRyb3BBbm9ueW1vdXNCbG9jayhhbm9uQmxvY2spKSB7Ci0gICAgICAgICAgICBib29sIGRyb3BB
bm9ueW1vdXNCbG9jayA9IHRydWU7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHNpYmxpbmcgOiBj
aGlsZHJlbk9mVHlwZTxSZW5kZXJPYmplY3Q+KCp0aGlzKSkgewotICAgICAgICAgICAgICAgIGlm
ICgmc2libGluZyA9PSAmYW5vbkJsb2NrKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICBpZiAoIXNpYmxpbmcuaXNGbG9hdGluZygpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGRyb3BBbm9ueW1vdXNCbG9jayA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoZHJvcEFub255bW91c0Jsb2NrKQotICAgICAgICAgICAgICAgIGRyb3BBbm9ueW1vdXNCb3hD
aGlsZChidWlsZGVyLCBhbm9uQmxvY2spOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFm
aXJzdENoaWxkKCkpIHsKLSAgICAgICAgLy8gSWYgdGhpcyB3YXMgb3VyIGxhc3QgY2hpbGQgYmUg
c3VyZSB0byBjbGVhciBvdXQgb3VyIGxpbmUgYm94ZXMuCi0gICAgICAgIGlmIChjaGlsZHJlbklu
bGluZSgpKQotICAgICAgICAgICAgZGVsZXRlTGluZXMoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRh
a2VuQ2hpbGQ7CisgICAgcmV0dXJuIGJ1aWxkZXIudGFrZW5DaGlsZEZyb21SZW5kZXJCbG9jaygq
dGhpcywgb2xkQ2hpbGQpOwogfQogCiBib29sIFJlbmRlckJsb2NrOjpjaGlsZHJlblByZXZlbnRT
ZWxmQ29sbGFwc2luZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CmluZGV4IGMzZjU0NTljMGQ2M2ZjYWI2NjhmMmMwNzEyYTY0NmM4NmFlM2Y1YzIuLjg2Mzk2Yzky
YTQzMDliZGVkOWJiYzVlNzk2NDczYmNmMDVkMWE4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCkBAIC0zOTcsNiArMzk3LDggQEAgcHVibGljOgogICAgIExheW91dFJl
Y3QgcGFpbnRSZWN0VG9DbGlwT3V0RnJvbUJvcmRlcihjb25zdCBMYXlvdXRSZWN0Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBhZGRDaGlsZElnbm9yaW5nQ29udGludWF0aW9uKFJlbmRlclRyZWVCdWls
ZGVyJiwgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVm
b3JlQ2hpbGQpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBpc0lubGluZSgpICYmIGlzUmVwbGFjZWQoKTsgfQorICAg
IC8vIEZJWE1FLUJMT0NLRkxPVzogUmVtb3ZlIHZpcnR1YWxpemFpb24gd2hlbiBhbGwgY2FsbGVy
cyBoYXZlIG1vdmVkIHRvIFJlbmRlckJsb2NrRmxvdworICAgIHZpcnR1YWwgdm9pZCBtb3ZlQWxs
Q2hpbGRyZW5JbmNsdWRpbmdGbG9hdHNUbyhSZW5kZXJUcmVlQnVpbGRlciYgYnVpbGRlciwgUmVu
ZGVyQmxvY2smIHRvQmxvY2ssIFJlbmRlckJveE1vZGVsT2JqZWN0OjpOb3JtYWxpemVBZnRlcklu
c2VydGlvbiBub3JtYWxpemVBZnRlckluc2VydGlvbikgeyBtb3ZlQWxsQ2hpbGRyZW5UbyhidWls
ZGVyLCAmdG9CbG9jaywgbm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pOyB9CiAKIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQ2hpbGRyZW4oKTsKQEAgLTQzNCw5ICs0
MzYsNiBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgLy8gRklYTUUtQkxPQ0tGTE9XOiBSZW1vdmUgdmlydHVhbGl6YWlvbiB3
aGVuIGFsbCBjYWxsZXJzIGhhdmUgbW92ZWQgdG8gUmVuZGVyQmxvY2tGbG93Ci0gICAgdmlydHVh
bCB2b2lkIG1vdmVBbGxDaGlsZHJlbkluY2x1ZGluZ0Zsb2F0c1RvKFJlbmRlclRyZWVCdWlsZGVy
JiBidWlsZGVyLCBSZW5kZXJCbG9jayYgdG9CbG9jaywgUmVuZGVyQm94TW9kZWxPYmplY3Q6Ok5v
cm1hbGl6ZUFmdGVySW5zZXJ0aW9uIG5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uKSB7IG1vdmVBbGxD
aGlsZHJlblRvKGJ1aWxkZXIsICZ0b0Jsb2NrLCBub3JtYWxpemVBZnRlckluc2VydGlvbik7IH0K
LQogICAgIGJvb2wgaXNTZWxmQ29sbGFwc2luZ0Jsb2NrKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBib29sIGNoaWxkcmVuUHJldmVudFNlbGZDb2xsYXBzaW5nKCkgY29uc3Q7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKaW5kZXggNTIwNzhi
OTYyNjU1ZjE3NzIwMWFlMDI5NmYyZTY5MzUwNGJjYTE5Yy4uNWU3YmMwNWQzM2YyYmYwNDQ5ZjZj
NDNhNzc4M2M2ZDQzYTMzOTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuaApAQCAtNDY0LDcgKzQ2NCw4IEBAIHByb3RlY3RlZDoKICAgICAvLyBDYWxsZWQg
dG8gbGF5IG91dCB0aGUgbGVnZW5kIGZvciBhIGZpZWxkc2V0IG9yIHRoZSBydWJ5IHRleHQgb2Yg
YSBydWJ5IHJ1bi4gQWxzbyB1c2VkIGJ5IG11bHRpLWNvbHVtbiBsYXlvdXQgdG8gaGFuZGxlCiAg
ICAgLy8gdGhlIGZsb3cgdGhyZWFkIGNoaWxkLgogICAgIHZvaWQgbGF5b3V0RXhjbHVkZWRDaGls
ZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4pIG92ZXJyaWRlOwotICAgIAorICAgIHZvaWQgbW92
ZUFsbENoaWxkcmVuSW5jbHVkaW5nRmxvYXRzVG8oUmVuZGVyVHJlZUJ1aWxkZXImLCBSZW5kZXJC
bG9jayYgdG9CbG9jaywgUmVuZGVyQm94TW9kZWxPYmplY3Q6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0
aW9uKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICBib29sIHJlY29tcHV0ZUxvZ2ljYWxXaWR0
aEFuZENvbHVtbldpZHRoKCk7CiAgICAgTGF5b3V0VW5pdCBjb2x1bW5HYXAoKSBjb25zdDsKQEAg
LTQ3Niw3ICs0NzcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRJbmxpbmVDaGlsZHJlbihQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRG
bG9hdHMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sIHByZXNlcnZlUGhhc2Ug
PSBmYWxzZSkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIG1vdmVBbGxDaGlsZHJlbkluY2x1ZGluZ0Zs
b2F0c1RvKFJlbmRlclRyZWVCdWlsZGVyJiwgUmVuZGVyQmxvY2smIHRvQmxvY2ssIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpOb3JtYWxpemVBZnRlckluc2VydGlvbikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCByZXBhaW50T3ZlcmhhbmdpbmdGbG9hdHMoYm9vbCBwYWludEFsbERlc2NlbmRhbnRzKSBmaW5h
bDsKICAgICB2b2lkIGNsaXBPdXRGbG9hdGluZ09iamVjdHMoUmVuZGVyQmxvY2smLCBjb25zdCBQ
YWludEluZm8qLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFNpemUmKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRl
clRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlci5jcHAKaW5kZXggMTAyNGNkOWYxZmFkYWJkNTFiODM5ZjVkMjkxYWY2ZjU2
MjBjMzUxNi4uODUxYjQ1YmQzYTljOWQ4ZmRmMTY3NGUxMTM4N2EwMzYyZTdhYmU2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1
aWxkZXIuY3BwCkBAIC00NzAsNiArNDcwLDExIEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6Omlu
c2VydENoaWxkVG9SZW5kZXJNYXRoTUxGZW5jZWQoUmVuZGVyTWF0aE1MRmVuY2VkJiBwYXJlCiAg
ICAgbWF0aE1MQnVpbGRlcigpLmluc2VydENoaWxkKHBhcmVudCwgV1RGTW92ZShjaGlsZCksIGJl
Zm9yZUNoaWxkKTsKIH0KIAorUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gUmVuZGVyVHJlZUJ1aWxk
ZXI6OnRha2VuQ2hpbGRGcm9tUmVuZGVyQmxvY2soUmVuZGVyQmxvY2smIHBhcmVudCwgUmVuZGVy
T2JqZWN0JiBvbGRDaGlsZCkKK3sKKyAgICByZXR1cm4gYmxvY2tCdWlsZGVyKCkudGFrZUNoaWxk
KHBhcmVudCwgb2xkQ2hpbGQpOworfQorCiB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjp1cGRhdGVB
ZnRlckRlc2NlbmRhbnRzKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogewogICAgIGlmIChpczxS
ZW5kZXJCbG9jaz4ocmVuZGVyZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuaAppbmRleCAwMDUzNjA0YWIwNWZjYTdjOWYx
MTkzMjNkNGNhODcyZmVkNzQ1NzM5Li5lNWNlMjgyYWU0MTE3N2I0MTgwMDM3NTc3MzNhZDcyNTQ4
ZjZlNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZUJ1aWxkZXIuaApAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBp
bnNlcnRDaGlsZFRvUmVuZGVyVGFibGVSb3coUmVuZGVyVGFibGVSb3cmIHBhcmVudCwgUmVuZGVy
UHRyPFJlbmRlck9iamVjdD4gY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSBudWxs
cHRyKTsKICAgICB2b2lkIGluc2VydENoaWxkVG9SZW5kZXJNYXRoTUxGZW5jZWQoUmVuZGVyTWF0
aE1MRmVuY2VkJiBwYXJlbnQsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkID0gbnVsbHB0cik7CiAKKyAgICBSZW5kZXJQdHI8UmVuZGVyT2Jq
ZWN0PiB0YWtlbkNoaWxkRnJvbVJlbmRlckJsb2NrKFJlbmRlckJsb2NrJiBwYXJlbnQsIFJlbmRl
ck9iamVjdCYgb2xkQ2hpbGQpOworCiAgICAgYm9vbCBjaGlsZFJlcXVpcmVzVGFibGUoY29uc3Qg
UmVuZGVyRWxlbWVudCYgcGFyZW50LCBjb25zdCBSZW5kZXJPYmplY3QmIGNoaWxkKTsKICAgICB2
b2lkIG1ha2VDaGlsZHJlbk5vbklubGluZShSZW5kZXJCbG9jayYgcGFyZW50LCBSZW5kZXJPYmpl
Y3QqIGluc2VydGlvblBvaW50ID0gbnVsbHB0cik7CiAgICAgUmVuZGVyT2JqZWN0KiBzcGxpdEFu
b255bW91c0JveGVzQXJvdW5kQ2hpbGQoUmVuZGVyQm94JiBwYXJlbnQsIFJlbmRlck9iamVjdCog
YmVmb3JlQ2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwCmluZGV4IDc2Y2FjZjAxN2JmZGFm
NDVmODFhZmQ0ODk5MmZmYWE2ZWJlMDdkZDIuLjUwOGU2ZjZhZDA4MmIxZTc3MmQ1OTdlMjgzMDU2
NjE2ZGYxNDQyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAKQEAgLTM1LDYgKzM1LDQyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGJvb2wgY2FuRHJvcEFub255bW91c0Js
b2NrKGNvbnN0IFJlbmRlckJsb2NrJiBhbm9ueW1vdXNCbG9jaykKK3sKKyAgICBpZiAoYW5vbnlt
b3VzQmxvY2suYmVpbmdEZXN0cm95ZWQoKSB8fCBhbm9ueW1vdXNCbG9jay5jb250aW51YXRpb24o
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhbm9ueW1vdXNCbG9jay5pc1J1YnlS
dW4oKSB8fCBhbm9ueW1vdXNCbG9jay5pc1J1YnlCYXNlKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY2FuTWVyZ2VDb250aWd1b3Vz
QW5vbnltb3VzQmxvY2tzKFJlbmRlck9iamVjdCYgb2xkQ2hpbGQsIFJlbmRlck9iamVjdCogcHJl
dmlvdXMsIFJlbmRlck9iamVjdCogbmV4dCkKK3sKKyAgICBBU1NFUlQoIW9sZENoaWxkLnJlbmRl
clRyZWVCZWluZ0Rlc3Ryb3llZCgpKTsKKworICAgIGlmIChvbGRDaGlsZC5pc0lubGluZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaXM8UmVuZGVyQm94TW9kZWxPYmplY3Q+
KG9sZENoaWxkKSAmJiBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4ob2xkQ2hpbGQpLmNv
bnRpbnVhdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAocHJldmlvdXMp
IHsKKyAgICAgICAgaWYgKCFwcmV2aW91cy0+aXNBbm9ueW1vdXNCbG9jaygpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBSZW5kZXJCbG9jayYgcHJldmlvdXNBbm9ueW1vdXNC
bG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2NrPigqcHJldmlvdXMpOworICAgICAgICBpZiAoIWNh
bkRyb3BBbm9ueW1vdXNCbG9jayhwcmV2aW91c0Fub255bW91c0Jsb2NrKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG5leHQpIHsKKyAgICAgICAgaWYgKCFuZXh0
LT5pc0Fub255bW91c0Jsb2NrKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IFJlbmRlckJsb2NrJiBuZXh0QW5vbnltb3VzQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4o
Km5leHQpOworICAgICAgICBpZiAoIWNhbkRyb3BBbm9ueW1vdXNCbG9jayhuZXh0QW5vbnltb3Vz
QmxvY2spKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogc3RhdGljIFJlbmRlckJsb2NrKiBjb250aW51YXRpb25CZWZvcmUoUmVuZGVyQmxv
Y2smIHBhcmVudCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKIHsKICAgICBpZiAoYmVmb3Jl
Q2hpbGQgJiYgYmVmb3JlQ2hpbGQtPnBhcmVudCgpID09ICZwYXJlbnQpCkBAIC0yMjgsNCArMjY0
LDkzIEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OkJsb2NrOjpyZW1vdmVMZWZ0b3ZlckFub255
bW91c0Jsb2NrKFJlbmRlckJsb2NrJiBhbm9ueW1vCiAgICAgLy8gYW5vbnltb3VzQmxvY2sgaXMg
ZGVhZCBoZXJlLgogfQogCitSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBSZW5kZXJUcmVlQnVpbGRl
cjo6QmxvY2s6OnRha2VDaGlsZChSZW5kZXJCbG9jayYgcGFyZW50LCBSZW5kZXJPYmplY3QmIG9s
ZENoaWxkKQoreworICAgIC8vIE5vIG5lZWQgdG8gd2FzdGUgdGltZSBpbiBtZXJnaW5nIG9yIHJl
bW92aW5nIGVtcHR5IGFub255bW91cyBibG9ja3MuCisgICAgLy8gV2UgY2FuIGp1c3QgYmFpbCBv
dXQgaWYgb3VyIGRvY3VtZW50IGlzIGdldHRpbmcgZGVzdHJveWVkLgorICAgIGlmIChwYXJlbnQu
cmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpCisgICAgICAgIHJldHVybiBwYXJlbnQuUmVuZGVy
Qm94Ojp0YWtlQ2hpbGQobV9idWlsZGVyLCBvbGRDaGlsZCk7CisKKyAgICAvLyBJZiB0aGlzIGNo
aWxkIGlzIGEgYmxvY2ssIGFuZCBpZiBvdXIgcHJldmlvdXMgYW5kIG5leHQgc2libGluZ3MgYXJl
IGJvdGggYW5vbnltb3VzIGJsb2NrcworICAgIC8vIHdpdGggaW5saW5lIGNvbnRlbnQsIHRoZW4g
d2UgY2FuIGZvbGQgdGhlIGlubGluZSBjb250ZW50IGJhY2sgdG9nZXRoZXIuCisgICAgUmVuZGVy
T2JqZWN0KiBwcmV2ID0gb2xkQ2hpbGQucHJldmlvdXNTaWJsaW5nKCk7CisgICAgUmVuZGVyT2Jq
ZWN0KiBuZXh0ID0gb2xkQ2hpbGQubmV4dFNpYmxpbmcoKTsKKyAgICBib29sIGNhbk1lcmdlQW5v
bnltb3VzQmxvY2tzID0gY2FuTWVyZ2VDb250aWd1b3VzQW5vbnltb3VzQmxvY2tzKG9sZENoaWxk
LCBwcmV2LCBuZXh0KTsKKyAgICBpZiAoY2FuTWVyZ2VBbm9ueW1vdXNCbG9ja3MgJiYgcHJldiAm
JiBuZXh0KSB7CisgICAgICAgIHByZXYtPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2Fs
YygpOworICAgICAgICBSZW5kZXJCbG9jayYgbmV4dEJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxv
Y2s+KCpuZXh0KTsKKyAgICAgICAgUmVuZGVyQmxvY2smIHByZXZCbG9jayA9IGRvd25jYXN0PFJl
bmRlckJsb2NrPigqcHJldik7CisKKyAgICAgICAgaWYgKHByZXYtPmNoaWxkcmVuSW5saW5lKCkg
IT0gbmV4dC0+Y2hpbGRyZW5JbmxpbmUoKSkgeworICAgICAgICAgICAgUmVuZGVyQmxvY2smIGlu
bGluZUNoaWxkcmVuQmxvY2sgPSBwcmV2LT5jaGlsZHJlbklubGluZSgpID8gcHJldkJsb2NrIDog
bmV4dEJsb2NrOworICAgICAgICAgICAgUmVuZGVyQmxvY2smIGJsb2NrQ2hpbGRyZW5CbG9jayA9
IHByZXYtPmNoaWxkcmVuSW5saW5lKCkgPyBuZXh0QmxvY2sgOiBwcmV2QmxvY2s7CisKKyAgICAg
ICAgICAgIC8vIFBsYWNlIHRoZSBpbmxpbmUgY2hpbGRyZW4gYmxvY2sgaW5zaWRlIG9mIHRoZSBi
bG9jayBjaGlsZHJlbiBibG9jayBpbnN0ZWFkIG9mIGRlbGV0aW5nIGl0LgorICAgICAgICAgICAg
Ly8gSW4gb3JkZXIgdG8gcmV1c2UgaXQsIHdlIGhhdmUgdG8gcmVzZXQgaXQgdG8ganVzdCBiZSBh
IGdlbmVyaWMgYW5vbnltb3VzIGJsb2NrLiBNYWtlIHN1cmUKKyAgICAgICAgICAgIC8vIHRvIGNs
ZWFyIG91dCBpbmhlcml0ZWQgY29sdW1uIHByb3BlcnRpZXMgYnkganVzdCBtYWtpbmcgYSBuZXcg
c3R5bGUsIGFuZCB0byBhbHNvIGNsZWFyIHRoZQorICAgICAgICAgICAgLy8gY29sdW1uIHNwYW4g
ZmxhZyBpZiBpdCBpcyBzZXQuCisgICAgICAgICAgICBBU1NFUlQoIWlubGluZUNoaWxkcmVuQmxv
Y2suY29udGludWF0aW9uKCkpOworICAgICAgICAgICAgLy8gQ2FjaGUgdGhpcyB2YWx1ZSBhcyBp
dCBtaWdodCBnZXQgY2hhbmdlZCBpbiBzZXRTdHlsZSgpIGNhbGwuCisgICAgICAgICAgICBpbmxp
bmVDaGlsZHJlbkJsb2NrLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KHBhcmVudC5zdHlsZSgpLCBCTE9DSykpOworICAgICAgICAgICAgYXV0byBi
bG9ja1RvTW92ZSA9IHBhcmVudC50YWtlQ2hpbGRJbnRlcm5hbChpbmxpbmVDaGlsZHJlbkJsb2Nr
KTsKKworICAgICAgICAgICAgLy8gTm93IGp1c3QgcHV0IHRoZSBpbmxpbmVDaGlsZHJlbkJsb2Nr
IGluc2lkZSB0aGUgYmxvY2tDaGlsZHJlbkJsb2NrLgorICAgICAgICAgICAgUmVuZGVyT2JqZWN0
KiBiZWZvcmVDaGlsZCA9IHByZXYgPT0gJmlubGluZUNoaWxkcmVuQmxvY2sgPyBibG9ja0NoaWxk
cmVuQmxvY2suZmlyc3RDaGlsZCgpIDogbnVsbHB0cjsKKyAgICAgICAgICAgIGJsb2NrQ2hpbGRy
ZW5CbG9jay5pbnNlcnRDaGlsZEludGVybmFsKFdURk1vdmUoYmxvY2tUb01vdmUpLCBiZWZvcmVD
aGlsZCk7CisgICAgICAgICAgICBuZXh0LT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNh
bGMoKTsKKworICAgICAgICAgICAgLy8gaW5saW5lQ2hpbGRyZW5CbG9jayBnb3QgcmVwYXJlbnRl
ZCB0byBibG9ja0NoaWxkcmVuQmxvY2ssIHNvIGl0IGlzIG5vIGxvbmdlciBhIGNoaWxkCisgICAg
ICAgICAgICAvLyBvZiAidGhpcyIuIHdlIG51bGwgb3V0IHByZXYgb3IgbmV4dCBzbyB0aGF0IGlz
IG5vdCB1c2VkIGxhdGVyIGluIHRoZSBmdW5jdGlvbi4KKyAgICAgICAgICAgIGlmICgmaW5saW5l
Q2hpbGRyZW5CbG9jayA9PSAmcHJldkJsb2NrKQorICAgICAgICAgICAgICAgIHByZXYgPSBudWxs
cHRyOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5leHQgPSBudWxscHRyOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gVGFrZSBhbGwgdGhlIGNoaWxkcmVuIG91
dCBvZiB0aGUgfG5leHR8IGJsb2NrIGFuZCBwdXQgdGhlbSBpbgorICAgICAgICAgICAgLy8gdGhl
IHxwcmV2fCBibG9jay4KKyAgICAgICAgICAgIG5leHRCbG9jay5tb3ZlQWxsQ2hpbGRyZW5JbmNs
dWRpbmdGbG9hdHNUbyhtX2J1aWxkZXIsIHByZXZCbG9jaywgUmVuZGVyQm94TW9kZWxPYmplY3Q6
Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpObyk7CisKKyAgICAgICAgICAgIC8vIERlbGV0ZSB0
aGUgbm93LWVtcHR5IGJsb2NrJ3MgbGluZXMgYW5kIG51a2UgaXQuCisgICAgICAgICAgICBuZXh0
QmxvY2suZGVsZXRlTGluZXMoKTsKKyAgICAgICAgICAgIG5leHRCbG9jay5yZW1vdmVGcm9tUGFy
ZW50QW5kRGVzdHJveShtX2J1aWxkZXIpOworICAgICAgICAgICAgbmV4dCA9IG51bGxwdHI7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBwYXJlbnQuaW52YWxpZGF0ZUxpbmVMYXlvdXRQYXRoKCk7
CisKKyAgICBhdXRvIHRha2VuQ2hpbGQgPSBwYXJlbnQuUmVuZGVyQm94Ojp0YWtlQ2hpbGQobV9i
dWlsZGVyLCBvbGRDaGlsZCk7CisKKyAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gcHJldiA/IHBy
ZXYgOiBuZXh0OworICAgIGlmIChjYW5NZXJnZUFub255bW91c0Jsb2NrcyAmJiBjaGlsZCAmJiAh
Y2hpbGQtPnByZXZpb3VzU2libGluZygpICYmICFjaGlsZC0+bmV4dFNpYmxpbmcoKSAmJiBwYXJl
bnQuY2FuRHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSkgeworICAgICAgICAvLyBUaGUgcmVtb3Zh
bCBoYXMga25vY2tlZCB1cyBkb3duIHRvIGNvbnRhaW5pbmcgb25seSBhIHNpbmdsZSBhbm9ueW1v
dXMKKyAgICAgICAgLy8gYm94LiBXZSBjYW4gcHVsbCB0aGUgY29udGVudCByaWdodCBiYWNrIHVw
IGludG8gb3VyIGJveC4KKyAgICAgICAgcGFyZW50LmRyb3BBbm9ueW1vdXNCb3hDaGlsZChtX2J1
aWxkZXIsIGRvd25jYXN0PFJlbmRlckJsb2NrPigqY2hpbGQpKTsKKyAgICB9IGVsc2UgaWYgKCgo
cHJldiAmJiBwcmV2LT5pc0Fub255bW91c0Jsb2NrKCkpIHx8IChuZXh0ICYmIG5leHQtPmlzQW5v
bnltb3VzQmxvY2soKSkpICYmIHBhcmVudC5jYW5Ecm9wQW5vbnltb3VzQmxvY2tDaGlsZCgpKSB7
CisgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcmVtb3ZhbCBoYXMga25vY2tlZCB1
cyBkb3duIHRvIGEgc2luZ2xlIGFub255bW91cworICAgICAgICAvLyBibG9jayB3aXRoIGZsb2F0
aW5nIHNpYmxpbmdzLgorICAgICAgICBSZW5kZXJCbG9jayYgYW5vbkJsb2NrID0gZG93bmNhc3Q8
UmVuZGVyQmxvY2s+KChwcmV2ICYmIHByZXYtPmlzQW5vbnltb3VzQmxvY2soKSkgPyAqcHJldiA6
ICpuZXh0KTsKKyAgICAgICAgaWYgKGNhbkRyb3BBbm9ueW1vdXNCbG9jayhhbm9uQmxvY2spKSB7
CisgICAgICAgICAgICBib29sIGRyb3BBbm9ueW1vdXNCbG9jayA9IHRydWU7CisgICAgICAgICAg
ICBmb3IgKGF1dG8mIHNpYmxpbmcgOiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJPYmplY3Q+KHBhcmVu
dCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoJnNpYmxpbmcgPT0gJmFub25CbG9jaykKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKCFzaWJsaW5nLmlz
RmxvYXRpbmcoKSkgeworICAgICAgICAgICAgICAgICAgICBkcm9wQW5vbnltb3VzQmxvY2sgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRyb3BBbm9ueW1vdXNCbG9jaykKKyAgICAgICAg
ICAgICAgICBwYXJlbnQuZHJvcEFub255bW91c0JveENoaWxkKG1fYnVpbGRlciwgYW5vbkJsb2Nr
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghcGFyZW50LmZpcnN0Q2hpbGQoKSkgewor
ICAgICAgICAvLyBJZiB0aGlzIHdhcyBvdXIgbGFzdCBjaGlsZCBiZSBzdXJlIHRvIGNsZWFyIG91
dCBvdXIgbGluZSBib3hlcy4KKyAgICAgICAgaWYgKHBhcmVudC5jaGlsZHJlbklubGluZSgpKQor
ICAgICAgICAgICAgcGFyZW50LmRlbGV0ZUxpbmVzKCk7CisgICAgfQorICAgIHJldHVybiB0YWtl
bkNoaWxkOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suaAppbmRleCBmYzRhZDcwZGY2YzljMDlj
MGI2YThlNzIyZTljMjg0YTdmYjNhMjRkLi43NThhYzdjOTJmNzI3M2JhOGU2MzM5YmYzODg2MTAz
NmJiYzQwNTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckJsb2NrLmgKQEAgLTM2LDYgKzM2LDggQEAgcHVibGlj
OgogICAgIHZvaWQgaW5zZXJ0Q2hpbGQoUmVuZGVyQmxvY2smIHBhcmVudCwgUmVuZGVyUHRyPFJl
bmRlck9iamVjdD4gY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOwogICAgIHZvaWQg
aW5zZXJ0Q2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihSZW5kZXJCbG9jayYgcGFyZW50LCBSZW5k
ZXJQdHI8UmVuZGVyT2JqZWN0PiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CiAK
KyAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiB0YWtlQ2hpbGQoUmVuZGVyQmxvY2smIHBhcmVu
dCwgUmVuZGVyT2JqZWN0JiBvbGRDaGlsZCk7CisKICAgICB2b2lkIGNoaWxkQmVjYW1lTm9uSW5s
aW5lKFJlbmRlckJsb2NrJiBwYXJlbnQsIFJlbmRlckVsZW1lbnQmIGNoaWxkKTsKIAogcHJpdmF0
ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333549</attachid>
            <date>2018-02-09 19:42:53 -0800</date>
            <delta_ts>2018-02-09 20:16:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182662-20180209194252.patch</filename>
            <type>text/plain</type>
            <size>20073</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ0NTgwNTZhYTlmNzVm
Mzc0YmE2ZTYxMGM1ZDEzNjI3MDliNTViMC4uNjYyNDc4ZGJkNTFiMzJlODQyMGQ0MmRmMTM5Mjhk
NjU3YmE1ZmFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE4LTAyLTA5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1JlbmRlclRyZWVCdWlsZGVy
XSBNb3ZlIFJlbmRlckJsb2NrOjp0YWtlQ2hpbGQgbXV0YXRpb24gdG8gYSBSZW5kZXJUcmVlQnVp
bGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgy
NjYyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzQwODU3MT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0
eS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6dGFrZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbkRyb3BB
bm9ueW1vdXNCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjYW5NZXJnZUNvbnRp
Z3VvdXNBbm9ueW1vdXNCbG9ja3MpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Om1vdmVBbGxDaGlsZHJl
bkluY2x1ZGluZ0Zsb2F0c1RvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjp0YWtlbkNoaWxkRnJvbVJlbmRl
ckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5Ecm9wQW5vbnltb3VzQmxvY2spOgorICAgICAgICAo
V2ViQ29yZTo6Y2FuTWVyZ2VDb250aWd1b3VzQW5vbnltb3VzQmxvY2tzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpCbG9jazo6dGFrZUNoaWxkKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oOgorCiAyMDE4LTAyLTA5
ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBJbWFnZUJpdG1hcFJl
bmRlcmluZ0NvbnRleHQgc2hvdWxkIGJlIFJ1bnRpbWUgZ3VhcmRlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZmI5MTk4ZWI4ZjdlODBlYTdmYTc4MmM1NGMw
MGExNTM0NDA5YWMyOC4uNDQ2Y2RlZDAwZWMyNDE3ZjEzOTg2MjEwZDE4MWRiZDA1ZWNjNTUxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC00ODIsNDIgKzQ4
Miw2IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmRlbGV0ZUxpbmVzKCkKICAgICAgICAgY2FjaGUtPmRl
ZmVyUmVjb21wdXRlSXNJZ25vcmVkKGVsZW1lbnQoKSk7CiB9CiAKLXN0YXRpYyBib29sIGNhbkRy
b3BBbm9ueW1vdXNCbG9jayhjb25zdCBSZW5kZXJCbG9jayYgYW5vbnltb3VzQmxvY2spCi17Ci0g
ICAgaWYgKGFub255bW91c0Jsb2NrLmJlaW5nRGVzdHJveWVkKCkgfHwgYW5vbnltb3VzQmxvY2su
Y29udGludWF0aW9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYW5vbnltb3Vz
QmxvY2suaXNSdWJ5UnVuKCkgfHwgYW5vbnltb3VzQmxvY2suaXNSdWJ5QmFzZSgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIGNhbk1l
cmdlQ29udGlndW91c0Fub255bW91c0Jsb2NrcyhSZW5kZXJPYmplY3QmIG9sZENoaWxkLCBSZW5k
ZXJPYmplY3QqIHByZXZpb3VzLCBSZW5kZXJPYmplY3QqIG5leHQpCi17Ci0gICAgQVNTRVJUKCFv
bGRDaGlsZC5yZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQoKSk7Ci0KLSAgICBpZiAob2xkQ2hpbGQu
aXNJbmxpbmUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGlzPFJlbmRlckJv
eE1vZGVsT2JqZWN0PihvbGRDaGlsZCkgJiYgZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+
KG9sZENoaWxkKS5jb250aW51YXRpb24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKHByZXZpb3VzKSB7Ci0gICAgICAgIGlmICghcHJldmlvdXMtPmlzQW5vbnltb3VzQmxvY2so
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgUmVuZGVyQmxvY2smIHByZXZp
b3VzQW5vbnltb3VzQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKnByZXZpb3VzKTsKLSAg
ICAgICAgaWYgKCFjYW5Ecm9wQW5vbnltb3VzQmxvY2socHJldmlvdXNBbm9ueW1vdXNCbG9jaykp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChuZXh0KSB7Ci0gICAg
ICAgIGlmICghbmV4dC0+aXNBbm9ueW1vdXNCbG9jaygpKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBSZW5kZXJCbG9jayYgbmV4dEFub255bW91c0Jsb2NrID0gZG93bmNhc3Q8
UmVuZGVyQmxvY2s+KCpuZXh0KTsKLSAgICAgICAgaWYgKCFjYW5Ecm9wQW5vbnltb3VzQmxvY2so
bmV4dEFub255bW91c0Jsb2NrKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgUmVuZGVyQmxvY2s6OmRyb3BBbm9ueW1vdXNCb3hD
aGlsZChSZW5kZXJUcmVlQnVpbGRlciYgYnVpbGRlciwgUmVuZGVyQmxvY2smIGNoaWxkKQogewog
ICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwpAQCAtNTMyLDkxICs0OTYs
NyBAQCB2b2lkIFJlbmRlckJsb2NrOjpkcm9wQW5vbnltb3VzQm94Q2hpbGQoUmVuZGVyVHJlZUJ1
aWxkZXImIGJ1aWxkZXIsIFJlbmRlckJsb2NrJgogCiBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBS
ZW5kZXJCbG9jazo6dGFrZUNoaWxkKFJlbmRlclRyZWVCdWlsZGVyJiBidWlsZGVyLCBSZW5kZXJP
YmplY3QmIG9sZENoaWxkKQogewotICAgIC8vIE5vIG5lZWQgdG8gd2FzdGUgdGltZSBpbiBtZXJn
aW5nIG9yIHJlbW92aW5nIGVtcHR5IGFub255bW91cyBibG9ja3MuCi0gICAgLy8gV2UgY2FuIGp1
c3QgYmFpbCBvdXQgaWYgb3VyIGRvY3VtZW50IGlzIGdldHRpbmcgZGVzdHJveWVkLgotICAgIGlm
IChyZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQoKSkKLSAgICAgICAgcmV0dXJuIFJlbmRlckJveDo6
dGFrZUNoaWxkKGJ1aWxkZXIsIG9sZENoaWxkKTsKLQotICAgIC8vIElmIHRoaXMgY2hpbGQgaXMg
YSBibG9jaywgYW5kIGlmIG91ciBwcmV2aW91cyBhbmQgbmV4dCBzaWJsaW5ncyBhcmUgYm90aCBh
bm9ueW1vdXMgYmxvY2tzCi0gICAgLy8gd2l0aCBpbmxpbmUgY29udGVudCwgdGhlbiB3ZSBjYW4g
Zm9sZCB0aGUgaW5saW5lIGNvbnRlbnQgYmFjayB0b2dldGhlci4KLSAgICBSZW5kZXJPYmplY3Qq
IHByZXYgPSBvbGRDaGlsZC5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICBSZW5kZXJPYmplY3QqIG5l
eHQgPSBvbGRDaGlsZC5uZXh0U2libGluZygpOwotICAgIGJvb2wgY2FuTWVyZ2VBbm9ueW1vdXNC
bG9ja3MgPSBjYW5NZXJnZUNvbnRpZ3VvdXNBbm9ueW1vdXNCbG9ja3Mob2xkQ2hpbGQsIHByZXYs
IG5leHQpOwotICAgIGlmIChjYW5NZXJnZUFub255bW91c0Jsb2NrcyAmJiBwcmV2ICYmIG5leHQp
IHsKLSAgICAgICAgcHJldi0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7Ci0g
ICAgICAgIFJlbmRlckJsb2NrJiBuZXh0QmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm5l
eHQpOwotICAgICAgICBSZW5kZXJCbG9jayYgcHJldkJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxv
Y2s+KCpwcmV2KTsKLSAgICAgICAKLSAgICAgICAgaWYgKHByZXYtPmNoaWxkcmVuSW5saW5lKCkg
IT0gbmV4dC0+Y2hpbGRyZW5JbmxpbmUoKSkgewotICAgICAgICAgICAgUmVuZGVyQmxvY2smIGlu
bGluZUNoaWxkcmVuQmxvY2sgPSBwcmV2LT5jaGlsZHJlbklubGluZSgpID8gcHJldkJsb2NrIDog
bmV4dEJsb2NrOwotICAgICAgICAgICAgUmVuZGVyQmxvY2smIGJsb2NrQ2hpbGRyZW5CbG9jayA9
IHByZXYtPmNoaWxkcmVuSW5saW5lKCkgPyBuZXh0QmxvY2sgOiBwcmV2QmxvY2s7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIC8vIFBsYWNlIHRoZSBpbmxpbmUgY2hpbGRyZW4gYmxvY2sgaW5z
aWRlIG9mIHRoZSBibG9jayBjaGlsZHJlbiBibG9jayBpbnN0ZWFkIG9mIGRlbGV0aW5nIGl0Lgot
ICAgICAgICAgICAgLy8gSW4gb3JkZXIgdG8gcmV1c2UgaXQsIHdlIGhhdmUgdG8gcmVzZXQgaXQg
dG8ganVzdCBiZSBhIGdlbmVyaWMgYW5vbnltb3VzIGJsb2NrLiAgTWFrZSBzdXJlCi0gICAgICAg
ICAgICAvLyB0byBjbGVhciBvdXQgaW5oZXJpdGVkIGNvbHVtbiBwcm9wZXJ0aWVzIGJ5IGp1c3Qg
bWFraW5nIGEgbmV3IHN0eWxlLCBhbmQgdG8gYWxzbyBjbGVhciB0aGUKLSAgICAgICAgICAgIC8v
IGNvbHVtbiBzcGFuIGZsYWcgaWYgaXQgaXMgc2V0LgotICAgICAgICAgICAgQVNTRVJUKCFpbmxp
bmVDaGlsZHJlbkJsb2NrLmNvbnRpbnVhdGlvbigpKTsKLSAgICAgICAgICAgIC8vIENhY2hlIHRo
aXMgdmFsdWUgYXMgaXQgbWlnaHQgZ2V0IGNoYW5nZWQgaW4gc2V0U3R5bGUoKSBjYWxsLgotICAg
ICAgICAgICAgaW5saW5lQ2hpbGRyZW5CbG9jay5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRl
QW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBCTE9DSykpOwotICAgICAgICAgICAg
YXV0byBibG9ja1RvTW92ZSA9IHRha2VDaGlsZEludGVybmFsKGlubGluZUNoaWxkcmVuQmxvY2sp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBOb3cganVzdCBwdXQgdGhlIGlubGluZUNo
aWxkcmVuQmxvY2sgaW5zaWRlIHRoZSBibG9ja0NoaWxkcmVuQmxvY2suCi0gICAgICAgICAgICBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gcHJldiA9PSAmaW5saW5lQ2hpbGRyZW5CbG9jayA/
IGJsb2NrQ2hpbGRyZW5CbG9jay5maXJzdENoaWxkKCkgOiBudWxscHRyOwotICAgICAgICAgICAg
YmxvY2tDaGlsZHJlbkJsb2NrLmluc2VydENoaWxkSW50ZXJuYWwoV1RGTW92ZShibG9ja1RvTW92
ZSksIGJlZm9yZUNoaWxkKTsKLSAgICAgICAgICAgIG5leHQtPnNldE5lZWRzTGF5b3V0QW5kUHJl
ZldpZHRoc1JlY2FsYygpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBpbmxpbmVDaGls
ZHJlbkJsb2NrIGdvdCByZXBhcmVudGVkIHRvIGJsb2NrQ2hpbGRyZW5CbG9jaywgc28gaXQgaXMg
bm8gbG9uZ2VyIGEgY2hpbGQKLSAgICAgICAgICAgIC8vIG9mICJ0aGlzIi4gd2UgbnVsbCBvdXQg
cHJldiBvciBuZXh0IHNvIHRoYXQgaXMgbm90IHVzZWQgbGF0ZXIgaW4gdGhlIGZ1bmN0aW9uLgot
ICAgICAgICAgICAgaWYgKCZpbmxpbmVDaGlsZHJlbkJsb2NrID09ICZwcmV2QmxvY2spCi0gICAg
ICAgICAgICAgICAgcHJldiA9IG51bGxwdHI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgbmV4dCA9IG51bGxwdHI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBU
YWtlIGFsbCB0aGUgY2hpbGRyZW4gb3V0IG9mIHRoZSB8bmV4dHwgYmxvY2sgYW5kIHB1dCB0aGVt
IGluCi0gICAgICAgICAgICAvLyB0aGUgfHByZXZ8IGJsb2NrLgotICAgICAgICAgICAgbmV4dEJs
b2NrLm1vdmVBbGxDaGlsZHJlbkluY2x1ZGluZ0Zsb2F0c1RvKGJ1aWxkZXIsIHByZXZCbG9jaywg
UmVuZGVyQm94TW9kZWxPYmplY3Q6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpObyk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgbm93LWVtcHR5IGJsb2NrJ3MgbGlu
ZXMgYW5kIG51a2UgaXQuCi0gICAgICAgICAgICBuZXh0QmxvY2suZGVsZXRlTGluZXMoKTsKLSAg
ICAgICAgICAgIG5leHRCbG9jay5yZW1vdmVGcm9tUGFyZW50QW5kRGVzdHJveShidWlsZGVyKTsK
LSAgICAgICAgICAgIG5leHQgPSBudWxscHRyOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaW52
YWxpZGF0ZUxpbmVMYXlvdXRQYXRoKCk7Ci0KLSAgICBhdXRvIHRha2VuQ2hpbGQgPSBSZW5kZXJC
b3g6OnRha2VDaGlsZChidWlsZGVyLCBvbGRDaGlsZCk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIGNo
aWxkID0gcHJldiA/IHByZXYgOiBuZXh0OwotICAgIGlmIChjYW5NZXJnZUFub255bW91c0Jsb2Nr
cyAmJiBjaGlsZCAmJiAhY2hpbGQtPnByZXZpb3VzU2libGluZygpICYmICFjaGlsZC0+bmV4dFNp
YmxpbmcoKSAmJiBjYW5Ecm9wQW5vbnltb3VzQmxvY2tDaGlsZCgpKSB7Ci0gICAgICAgIC8vIFRo
ZSByZW1vdmFsIGhhcyBrbm9ja2VkIHVzIGRvd24gdG8gY29udGFpbmluZyBvbmx5IGEgc2luZ2xl
IGFub255bW91cwotICAgICAgICAvLyBib3guIFdlIGNhbiBwdWxsIHRoZSBjb250ZW50IHJpZ2h0
IGJhY2sgdXAgaW50byBvdXIgYm94LgotICAgICAgICBkcm9wQW5vbnltb3VzQm94Q2hpbGQoYnVp
bGRlciwgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpjaGlsZCkpOwotICAgIH0gZWxzZSBpZiAoKChw
cmV2ICYmIHByZXYtPmlzQW5vbnltb3VzQmxvY2soKSkgfHwgKG5leHQgJiYgbmV4dC0+aXNBbm9u
eW1vdXNCbG9jaygpKSkgJiYgY2FuRHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSkgewotICAgICAg
ICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHJlbW92YWwgaGFzIGtub2NrZWQgdXMgZG93biB0
byBhIHNpbmdsZSBhbm9ueW1vdXMKLSAgICAgICAgLy8gYmxvY2sgd2l0aCBmbG9hdGluZyBzaWJs
aW5ncy4KLSAgICAgICAgUmVuZGVyQmxvY2smIGFub25CbG9jayA9IGRvd25jYXN0PFJlbmRlckJs
b2NrPigocHJldiAmJiBwcmV2LT5pc0Fub255bW91c0Jsb2NrKCkpID8gKnByZXYgOiAqbmV4dCk7
Ci0gICAgICAgIGlmIChjYW5Ecm9wQW5vbnltb3VzQmxvY2soYW5vbkJsb2NrKSkgewotICAgICAg
ICAgICAgYm9vbCBkcm9wQW5vbnltb3VzQmxvY2sgPSB0cnVlOwotICAgICAgICAgICAgZm9yIChh
dXRvJiBzaWJsaW5nIDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyT2JqZWN0PigqdGhpcykpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoJnNpYmxpbmcgPT0gJmFub25CbG9jaykKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKCFzaWJsaW5nLmlzRmxvYXRpbmco
KSkgewotICAgICAgICAgICAgICAgICAgICBkcm9wQW5vbnltb3VzQmxvY2sgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKGRyb3BBbm9ueW1vdXNCbG9jaykKLSAgICAgICAgICAgICAgICBk
cm9wQW5vbnltb3VzQm94Q2hpbGQoYnVpbGRlciwgYW5vbkJsb2NrKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIGlmICghZmlyc3RDaGlsZCgpKSB7Ci0gICAgICAgIC8vIElmIHRoaXMgd2FzIG91
ciBsYXN0IGNoaWxkIGJlIHN1cmUgdG8gY2xlYXIgb3V0IG91ciBsaW5lIGJveGVzLgotICAgICAg
ICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkKLSAgICAgICAgICAgIGRlbGV0ZUxpbmVzKCk7Ci0gICAg
fQotICAgIHJldHVybiB0YWtlbkNoaWxkOworICAgIHJldHVybiBidWlsZGVyLnRha2VuQ2hpbGRG
cm9tUmVuZGVyQmxvY2soKnRoaXMsIG9sZENoaWxkKTsKIH0KIAogYm9vbCBSZW5kZXJCbG9jazo6
Y2hpbGRyZW5QcmV2ZW50U2VsZkNvbGxhcHNpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaAppbmRleCBjM2Y1NDU5YzBkNjNmY2FiNjY4ZjJjMDcxMmE2NDZjODZh
ZTNmNWMyLi44NjM5NmM5MmE0MzA5YmRlZDliYmM1ZTc5NjQ3M2JjZjA1ZDFhODNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMzk3LDYgKzM5Nyw4IEBAIHB1Ymxp
YzoKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdFRvQ2xpcE91dEZyb21Cb3JkZXIoY29uc3QgTGF5
b3V0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlv
bihSZW5kZXJUcmVlQnVpbGRlciYsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IG5ld0NoaWxkLCBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKSBvdmVycmlkZTsKICAgICBib29sIGlzSW5saW5lQmxv
Y2tPcklubGluZVRhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaXNJbmxpbmUoKSAmJiBpc1Jl
cGxhY2VkKCk7IH0KKyAgICAvLyBGSVhNRS1CTE9DS0ZMT1c6IFJlbW92ZSB2aXJ0dWFsaXphaW9u
IHdoZW4gYWxsIGNhbGxlcnMgaGF2ZSBtb3ZlZCB0byBSZW5kZXJCbG9ja0Zsb3cKKyAgICB2aXJ0
dWFsIHZvaWQgbW92ZUFsbENoaWxkcmVuSW5jbHVkaW5nRmxvYXRzVG8oUmVuZGVyVHJlZUJ1aWxk
ZXImIGJ1aWxkZXIsIFJlbmRlckJsb2NrJiB0b0Jsb2NrLCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
Tm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24gbm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pIHsgbW92ZUFs
bENoaWxkcmVuVG8oYnVpbGRlciwgJnRvQmxvY2ssIG5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uKTsg
fQogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkcmVu
KCk7CkBAIC00MzQsOSArNDM2LDYgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIC8vIEZJWE1FLUJMT0NLRkxPVzogUmVtb3Zl
IHZpcnR1YWxpemFpb24gd2hlbiBhbGwgY2FsbGVycyBoYXZlIG1vdmVkIHRvIFJlbmRlckJsb2Nr
RmxvdwotICAgIHZpcnR1YWwgdm9pZCBtb3ZlQWxsQ2hpbGRyZW5JbmNsdWRpbmdGbG9hdHNUbyhS
ZW5kZXJUcmVlQnVpbGRlciYgYnVpbGRlciwgUmVuZGVyQmxvY2smIHRvQmxvY2ssIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpOb3JtYWxpemVBZnRlckluc2VydGlvbiBub3JtYWxpemVBZnRlckluc2Vy
dGlvbikgeyBtb3ZlQWxsQ2hpbGRyZW5UbyhidWlsZGVyLCAmdG9CbG9jaywgbm9ybWFsaXplQWZ0
ZXJJbnNlcnRpb24pOyB9Ci0KICAgICBib29sIGlzU2VsZkNvbGxhcHNpbmdCbG9jaygpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZHJlblByZXZlbnRTZWxmQ29sbGFwc2lu
ZygpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5oCmluZGV4IDUyMDc4Yjk2MjY1NWYxNzcyMDFhZTAyOTZmMmU2OTM1MDRiY2ExOWMuLjVlN2Jj
MDVkMzNmMmJmMDQ0OWY2YzQzYTc3ODNjNmQ0M2EzMzkzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKQEAgLTQ2NCw3ICs0NjQsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgLy8gQ2FsbGVkIHRvIGxheSBvdXQgdGhlIGxlZ2VuZCBmb3IgYSBmaWVsZHNldCBvciB0
aGUgcnVieSB0ZXh0IG9mIGEgcnVieSBydW4uIEFsc28gdXNlZCBieSBtdWx0aS1jb2x1bW4gbGF5
b3V0IHRvIGhhbmRsZQogICAgIC8vIHRoZSBmbG93IHRocmVhZCBjaGlsZC4KICAgICB2b2lkIGxh
eW91dEV4Y2x1ZGVkQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuKSBvdmVycmlkZTsKLSAg
ICAKKyAgICB2b2lkIG1vdmVBbGxDaGlsZHJlbkluY2x1ZGluZ0Zsb2F0c1RvKFJlbmRlclRyZWVC
dWlsZGVyJiwgUmVuZGVyQmxvY2smIHRvQmxvY2ssIFJlbmRlckJveE1vZGVsT2JqZWN0OjpOb3Jt
YWxpemVBZnRlckluc2VydGlvbikgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAgYm9vbCByZWNv
bXB1dGVMb2dpY2FsV2lkdGhBbmRDb2x1bW5XaWR0aCgpOwogICAgIExheW91dFVuaXQgY29sdW1u
R2FwKCkgY29uc3Q7CkBAIC00NzYsNyArNDc3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50
SW5saW5lQ2hpbGRyZW4oUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHBhaW50RmxvYXRzKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgYm9v
bCBwcmVzZXJ2ZVBoYXNlID0gZmFsc2UpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBtb3ZlQWxsQ2hp
bGRyZW5JbmNsdWRpbmdGbG9hdHNUbyhSZW5kZXJUcmVlQnVpbGRlciYsIFJlbmRlckJsb2NrJiB0
b0Jsb2NrLCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Tm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVwYWludE92ZXJoYW5naW5nRmxvYXRzKGJvb2wgcGFpbnRBbGxE
ZXNjZW5kYW50cykgZmluYWw7CiAgICAgdm9pZCBjbGlwT3V0RmxvYXRpbmdPYmplY3RzKFJlbmRl
ckJsb2NrJiwgY29uc3QgUGFpbnRJbmZvKiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlv
dXRTaXplJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGI1ZmFmZGRmNjBmYjFjN2M1
MTM4YmRiZDM2NjgyYzFmMmY3M2Y0YjUuLjNjODkyMzMyYjlmNGI2ZGQzZjJmNjEzMzU5YjY5NmZl
YzQ4NzUyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcApAQCAtNDg1LDYgKzQ4NSwxMSBAQCBSZW5kZXJQdHI8
UmVuZGVyT2JqZWN0PiBSZW5kZXJUcmVlQnVpbGRlcjo6dGFrZUNoaWxkRnJvbVJlbmRlclJ1YnlS
dW4oUmVuZGVyUnVieQogICAgIHJldHVybiBydWJ5QnVpbGRlcigpLnRha2VDaGlsZChwYXJlbnQs
IGNoaWxkKTsKIH0KIAorUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gUmVuZGVyVHJlZUJ1aWxkZXI6
OnRha2VuQ2hpbGRGcm9tUmVuZGVyQmxvY2soUmVuZGVyQmxvY2smIHBhcmVudCwgUmVuZGVyT2Jq
ZWN0JiBvbGRDaGlsZCkKK3sKKyAgICByZXR1cm4gYmxvY2tCdWlsZGVyKCkudGFrZUNoaWxkKHBh
cmVudCwgb2xkQ2hpbGQpOworfQorCiB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjp1cGRhdGVBZnRl
ckRlc2NlbmRhbnRzKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogewogICAgIGlmIChpczxSZW5k
ZXJCbG9jaz4ocmVuZGVyZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuaAppbmRleCBlMTE5NjY0Y2EzNDIxNGU4NTViZThj
MDgyOWY5NTkyZTY4NGVjZjM5Li4yMGRmZGRiNWJkOGIxNDUzYWE4NjU0NjU0YjU4ODRmMTQ3NjZk
ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXIuaApAQCAtNzYsNiArNzYsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyUHRy
PFJlbmRlck9iamVjdD4gdGFrZUNoaWxkRnJvbVJlbmRlclJ1YnlBc0lubGluZShSZW5kZXJSdWJ5
QXNJbmxpbmUmIHBhcmVudCwgUmVuZGVyT2JqZWN0JiBjaGlsZCk7CiAgICAgUmVuZGVyUHRyPFJl
bmRlck9iamVjdD4gdGFrZUNoaWxkRnJvbVJlbmRlclJ1YnlBc0Jsb2NrKFJlbmRlclJ1YnlBc0Js
b2NrJiBwYXJlbnQsIFJlbmRlck9iamVjdCYgY2hpbGQpOwogICAgIFJlbmRlclB0cjxSZW5kZXJP
YmplY3Q+IHRha2VDaGlsZEZyb21SZW5kZXJSdWJ5UnVuKFJlbmRlclJ1YnlSdW4mIHBhcmVudCwg
UmVuZGVyT2JqZWN0JiBjaGlsZCk7CisgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gdGFrZW5D
aGlsZEZyb21SZW5kZXJCbG9jayhSZW5kZXJCbG9jayYgcGFyZW50LCBSZW5kZXJPYmplY3QmIG9s
ZENoaWxkKTsKIAogICAgIGJvb2wgY2hpbGRSZXF1aXJlc1RhYmxlKGNvbnN0IFJlbmRlckVsZW1l
bnQmIHBhcmVudCwgY29uc3QgUmVuZGVyT2JqZWN0JiBjaGlsZCk7CiAgICAgdm9pZCBtYWtlQ2hp
bGRyZW5Ob25JbmxpbmUoUmVuZGVyQmxvY2smIHBhcmVudCwgUmVuZGVyT2JqZWN0KiBpbnNlcnRp
b25Qb2ludCA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwCmluZGV4IDc2Y2FjZjAx
N2JmZGFmNDVmODFhZmQ0ODk5MmZmYWE2ZWJlMDdkZDIuLjUwOGU2ZjZhZDA4MmIxZTc3MmQ1OTdl
MjgzMDU2NjE2ZGYxNDQyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAKQEAgLTM1LDYgKzM1
LDQyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGJvb2wgY2FuRHJvcEFub255
bW91c0Jsb2NrKGNvbnN0IFJlbmRlckJsb2NrJiBhbm9ueW1vdXNCbG9jaykKK3sKKyAgICBpZiAo
YW5vbnltb3VzQmxvY2suYmVpbmdEZXN0cm95ZWQoKSB8fCBhbm9ueW1vdXNCbG9jay5jb250aW51
YXRpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhbm9ueW1vdXNCbG9jay5p
c1J1YnlSdW4oKSB8fCBhbm9ueW1vdXNCbG9jay5pc1J1YnlCYXNlKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY2FuTWVyZ2VDb250
aWd1b3VzQW5vbnltb3VzQmxvY2tzKFJlbmRlck9iamVjdCYgb2xkQ2hpbGQsIFJlbmRlck9iamVj
dCogcHJldmlvdXMsIFJlbmRlck9iamVjdCogbmV4dCkKK3sKKyAgICBBU1NFUlQoIW9sZENoaWxk
LnJlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgpKTsKKworICAgIGlmIChvbGRDaGlsZC5pc0lubGlu
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaXM8UmVuZGVyQm94TW9kZWxP
YmplY3Q+KG9sZENoaWxkKSAmJiBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4ob2xkQ2hp
bGQpLmNvbnRpbnVhdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAocHJl
dmlvdXMpIHsKKyAgICAgICAgaWYgKCFwcmV2aW91cy0+aXNBbm9ueW1vdXNCbG9jaygpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBSZW5kZXJCbG9jayYgcHJldmlvdXNBbm9u
eW1vdXNCbG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2NrPigqcHJldmlvdXMpOworICAgICAgICBp
ZiAoIWNhbkRyb3BBbm9ueW1vdXNCbG9jayhwcmV2aW91c0Fub255bW91c0Jsb2NrKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG5leHQpIHsKKyAgICAgICAgaWYg
KCFuZXh0LT5pc0Fub255bW91c0Jsb2NrKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIFJlbmRlckJsb2NrJiBuZXh0QW5vbnltb3VzQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJC
bG9jaz4oKm5leHQpOworICAgICAgICBpZiAoIWNhbkRyb3BBbm9ueW1vdXNCbG9jayhuZXh0QW5v
bnltb3VzQmxvY2spKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogc3RhdGljIFJlbmRlckJsb2NrKiBjb250aW51YXRpb25CZWZvcmUoUmVu
ZGVyQmxvY2smIHBhcmVudCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKIHsKICAgICBpZiAo
YmVmb3JlQ2hpbGQgJiYgYmVmb3JlQ2hpbGQtPnBhcmVudCgpID09ICZwYXJlbnQpCkBAIC0yMjgs
NCArMjY0LDkzIEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OkJsb2NrOjpyZW1vdmVMZWZ0b3Zl
ckFub255bW91c0Jsb2NrKFJlbmRlckJsb2NrJiBhbm9ueW1vCiAgICAgLy8gYW5vbnltb3VzQmxv
Y2sgaXMgZGVhZCBoZXJlLgogfQogCitSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBSZW5kZXJUcmVl
QnVpbGRlcjo6QmxvY2s6OnRha2VDaGlsZChSZW5kZXJCbG9jayYgcGFyZW50LCBSZW5kZXJPYmpl
Y3QmIG9sZENoaWxkKQoreworICAgIC8vIE5vIG5lZWQgdG8gd2FzdGUgdGltZSBpbiBtZXJnaW5n
IG9yIHJlbW92aW5nIGVtcHR5IGFub255bW91cyBibG9ja3MuCisgICAgLy8gV2UgY2FuIGp1c3Qg
YmFpbCBvdXQgaWYgb3VyIGRvY3VtZW50IGlzIGdldHRpbmcgZGVzdHJveWVkLgorICAgIGlmIChw
YXJlbnQucmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpCisgICAgICAgIHJldHVybiBwYXJlbnQu
UmVuZGVyQm94Ojp0YWtlQ2hpbGQobV9idWlsZGVyLCBvbGRDaGlsZCk7CisKKyAgICAvLyBJZiB0
aGlzIGNoaWxkIGlzIGEgYmxvY2ssIGFuZCBpZiBvdXIgcHJldmlvdXMgYW5kIG5leHQgc2libGlu
Z3MgYXJlIGJvdGggYW5vbnltb3VzIGJsb2NrcworICAgIC8vIHdpdGggaW5saW5lIGNvbnRlbnQs
IHRoZW4gd2UgY2FuIGZvbGQgdGhlIGlubGluZSBjb250ZW50IGJhY2sgdG9nZXRoZXIuCisgICAg
UmVuZGVyT2JqZWN0KiBwcmV2ID0gb2xkQ2hpbGQucHJldmlvdXNTaWJsaW5nKCk7CisgICAgUmVu
ZGVyT2JqZWN0KiBuZXh0ID0gb2xkQ2hpbGQubmV4dFNpYmxpbmcoKTsKKyAgICBib29sIGNhbk1l
cmdlQW5vbnltb3VzQmxvY2tzID0gY2FuTWVyZ2VDb250aWd1b3VzQW5vbnltb3VzQmxvY2tzKG9s
ZENoaWxkLCBwcmV2LCBuZXh0KTsKKyAgICBpZiAoY2FuTWVyZ2VBbm9ueW1vdXNCbG9ja3MgJiYg
cHJldiAmJiBuZXh0KSB7CisgICAgICAgIHByZXYtPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRo
c1JlY2FsYygpOworICAgICAgICBSZW5kZXJCbG9jayYgbmV4dEJsb2NrID0gZG93bmNhc3Q8UmVu
ZGVyQmxvY2s+KCpuZXh0KTsKKyAgICAgICAgUmVuZGVyQmxvY2smIHByZXZCbG9jayA9IGRvd25j
YXN0PFJlbmRlckJsb2NrPigqcHJldik7CisKKyAgICAgICAgaWYgKHByZXYtPmNoaWxkcmVuSW5s
aW5lKCkgIT0gbmV4dC0+Y2hpbGRyZW5JbmxpbmUoKSkgeworICAgICAgICAgICAgUmVuZGVyQmxv
Y2smIGlubGluZUNoaWxkcmVuQmxvY2sgPSBwcmV2LT5jaGlsZHJlbklubGluZSgpID8gcHJldkJs
b2NrIDogbmV4dEJsb2NrOworICAgICAgICAgICAgUmVuZGVyQmxvY2smIGJsb2NrQ2hpbGRyZW5C
bG9jayA9IHByZXYtPmNoaWxkcmVuSW5saW5lKCkgPyBuZXh0QmxvY2sgOiBwcmV2QmxvY2s7CisK
KyAgICAgICAgICAgIC8vIFBsYWNlIHRoZSBpbmxpbmUgY2hpbGRyZW4gYmxvY2sgaW5zaWRlIG9m
IHRoZSBibG9jayBjaGlsZHJlbiBibG9jayBpbnN0ZWFkIG9mIGRlbGV0aW5nIGl0LgorICAgICAg
ICAgICAgLy8gSW4gb3JkZXIgdG8gcmV1c2UgaXQsIHdlIGhhdmUgdG8gcmVzZXQgaXQgdG8ganVz
dCBiZSBhIGdlbmVyaWMgYW5vbnltb3VzIGJsb2NrLiBNYWtlIHN1cmUKKyAgICAgICAgICAgIC8v
IHRvIGNsZWFyIG91dCBpbmhlcml0ZWQgY29sdW1uIHByb3BlcnRpZXMgYnkganVzdCBtYWtpbmcg
YSBuZXcgc3R5bGUsIGFuZCB0byBhbHNvIGNsZWFyIHRoZQorICAgICAgICAgICAgLy8gY29sdW1u
IHNwYW4gZmxhZyBpZiBpdCBpcyBzZXQuCisgICAgICAgICAgICBBU1NFUlQoIWlubGluZUNoaWxk
cmVuQmxvY2suY29udGludWF0aW9uKCkpOworICAgICAgICAgICAgLy8gQ2FjaGUgdGhpcyB2YWx1
ZSBhcyBpdCBtaWdodCBnZXQgY2hhbmdlZCBpbiBzZXRTdHlsZSgpIGNhbGwuCisgICAgICAgICAg
ICBpbmxpbmVDaGlsZHJlbkJsb2NrLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1v
dXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC5zdHlsZSgpLCBCTE9DSykpOworICAgICAgICAgICAg
YXV0byBibG9ja1RvTW92ZSA9IHBhcmVudC50YWtlQ2hpbGRJbnRlcm5hbChpbmxpbmVDaGlsZHJl
bkJsb2NrKTsKKworICAgICAgICAgICAgLy8gTm93IGp1c3QgcHV0IHRoZSBpbmxpbmVDaGlsZHJl
bkJsb2NrIGluc2lkZSB0aGUgYmxvY2tDaGlsZHJlbkJsb2NrLgorICAgICAgICAgICAgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZCA9IHByZXYgPT0gJmlubGluZUNoaWxkcmVuQmxvY2sgPyBibG9j
a0NoaWxkcmVuQmxvY2suZmlyc3RDaGlsZCgpIDogbnVsbHB0cjsKKyAgICAgICAgICAgIGJsb2Nr
Q2hpbGRyZW5CbG9jay5pbnNlcnRDaGlsZEludGVybmFsKFdURk1vdmUoYmxvY2tUb01vdmUpLCBi
ZWZvcmVDaGlsZCk7CisgICAgICAgICAgICBuZXh0LT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0
aHNSZWNhbGMoKTsKKworICAgICAgICAgICAgLy8gaW5saW5lQ2hpbGRyZW5CbG9jayBnb3QgcmVw
YXJlbnRlZCB0byBibG9ja0NoaWxkcmVuQmxvY2ssIHNvIGl0IGlzIG5vIGxvbmdlciBhIGNoaWxk
CisgICAgICAgICAgICAvLyBvZiAidGhpcyIuIHdlIG51bGwgb3V0IHByZXYgb3IgbmV4dCBzbyB0
aGF0IGlzIG5vdCB1c2VkIGxhdGVyIGluIHRoZSBmdW5jdGlvbi4KKyAgICAgICAgICAgIGlmICgm
aW5saW5lQ2hpbGRyZW5CbG9jayA9PSAmcHJldkJsb2NrKQorICAgICAgICAgICAgICAgIHByZXYg
PSBudWxscHRyOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5leHQgPSBudWxs
cHRyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gVGFrZSBhbGwgdGhlIGNoaWxk
cmVuIG91dCBvZiB0aGUgfG5leHR8IGJsb2NrIGFuZCBwdXQgdGhlbSBpbgorICAgICAgICAgICAg
Ly8gdGhlIHxwcmV2fCBibG9jay4KKyAgICAgICAgICAgIG5leHRCbG9jay5tb3ZlQWxsQ2hpbGRy
ZW5JbmNsdWRpbmdGbG9hdHNUbyhtX2J1aWxkZXIsIHByZXZCbG9jaywgUmVuZGVyQm94TW9kZWxP
YmplY3Q6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpObyk7CisKKyAgICAgICAgICAgIC8vIERl
bGV0ZSB0aGUgbm93LWVtcHR5IGJsb2NrJ3MgbGluZXMgYW5kIG51a2UgaXQuCisgICAgICAgICAg
ICBuZXh0QmxvY2suZGVsZXRlTGluZXMoKTsKKyAgICAgICAgICAgIG5leHRCbG9jay5yZW1vdmVG
cm9tUGFyZW50QW5kRGVzdHJveShtX2J1aWxkZXIpOworICAgICAgICAgICAgbmV4dCA9IG51bGxw
dHI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwYXJlbnQuaW52YWxpZGF0ZUxpbmVMYXlvdXRQ
YXRoKCk7CisKKyAgICBhdXRvIHRha2VuQ2hpbGQgPSBwYXJlbnQuUmVuZGVyQm94Ojp0YWtlQ2hp
bGQobV9idWlsZGVyLCBvbGRDaGlsZCk7CisKKyAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gcHJl
diA/IHByZXYgOiBuZXh0OworICAgIGlmIChjYW5NZXJnZUFub255bW91c0Jsb2NrcyAmJiBjaGls
ZCAmJiAhY2hpbGQtPnByZXZpb3VzU2libGluZygpICYmICFjaGlsZC0+bmV4dFNpYmxpbmcoKSAm
JiBwYXJlbnQuY2FuRHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSkgeworICAgICAgICAvLyBUaGUg
cmVtb3ZhbCBoYXMga25vY2tlZCB1cyBkb3duIHRvIGNvbnRhaW5pbmcgb25seSBhIHNpbmdsZSBh
bm9ueW1vdXMKKyAgICAgICAgLy8gYm94LiBXZSBjYW4gcHVsbCB0aGUgY29udGVudCByaWdodCBi
YWNrIHVwIGludG8gb3VyIGJveC4KKyAgICAgICAgcGFyZW50LmRyb3BBbm9ueW1vdXNCb3hDaGls
ZChtX2J1aWxkZXIsIGRvd25jYXN0PFJlbmRlckJsb2NrPigqY2hpbGQpKTsKKyAgICB9IGVsc2Ug
aWYgKCgocHJldiAmJiBwcmV2LT5pc0Fub255bW91c0Jsb2NrKCkpIHx8IChuZXh0ICYmIG5leHQt
PmlzQW5vbnltb3VzQmxvY2soKSkpICYmIHBhcmVudC5jYW5Ecm9wQW5vbnltb3VzQmxvY2tDaGls
ZCgpKSB7CisgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcmVtb3ZhbCBoYXMga25v
Y2tlZCB1cyBkb3duIHRvIGEgc2luZ2xlIGFub255bW91cworICAgICAgICAvLyBibG9jayB3aXRo
IGZsb2F0aW5nIHNpYmxpbmdzLgorICAgICAgICBSZW5kZXJCbG9jayYgYW5vbkJsb2NrID0gZG93
bmNhc3Q8UmVuZGVyQmxvY2s+KChwcmV2ICYmIHByZXYtPmlzQW5vbnltb3VzQmxvY2soKSkgPyAq
cHJldiA6ICpuZXh0KTsKKyAgICAgICAgaWYgKGNhbkRyb3BBbm9ueW1vdXNCbG9jayhhbm9uQmxv
Y2spKSB7CisgICAgICAgICAgICBib29sIGRyb3BBbm9ueW1vdXNCbG9jayA9IHRydWU7CisgICAg
ICAgICAgICBmb3IgKGF1dG8mIHNpYmxpbmcgOiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJPYmplY3Q+
KHBhcmVudCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoJnNpYmxpbmcgPT0gJmFub25CbG9jaykK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKCFzaWJs
aW5nLmlzRmxvYXRpbmcoKSkgeworICAgICAgICAgICAgICAgICAgICBkcm9wQW5vbnltb3VzQmxv
Y2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRyb3BBbm9ueW1vdXNCbG9jaykKKyAg
ICAgICAgICAgICAgICBwYXJlbnQuZHJvcEFub255bW91c0JveENoaWxkKG1fYnVpbGRlciwgYW5v
bkJsb2NrKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghcGFyZW50LmZpcnN0Q2hpbGQo
KSkgeworICAgICAgICAvLyBJZiB0aGlzIHdhcyBvdXIgbGFzdCBjaGlsZCBiZSBzdXJlIHRvIGNs
ZWFyIG91dCBvdXIgbGluZSBib3hlcy4KKyAgICAgICAgaWYgKHBhcmVudC5jaGlsZHJlbklubGlu
ZSgpKQorICAgICAgICAgICAgcGFyZW50LmRlbGV0ZUxpbmVzKCk7CisgICAgfQorICAgIHJldHVy
biB0YWtlbkNoaWxkOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suaAppbmRleCBmYzRhZDcwZGY2
YzljMDljMGI2YThlNzIyZTljMjg0YTdmYjNhMjRkLi43NThhYzdjOTJmNzI3M2JhOGU2MzM5YmYz
ODg2MTAzNmJiYzQwNTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckJsb2NrLmgKQEAgLTM2LDYgKzM2LDggQEAg
cHVibGljOgogICAgIHZvaWQgaW5zZXJ0Q2hpbGQoUmVuZGVyQmxvY2smIHBhcmVudCwgUmVuZGVy
UHRyPFJlbmRlck9iamVjdD4gY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOwogICAg
IHZvaWQgaW5zZXJ0Q2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihSZW5kZXJCbG9jayYgcGFyZW50
LCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGls
ZCk7CiAKKyAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiB0YWtlQ2hpbGQoUmVuZGVyQmxvY2sm
IHBhcmVudCwgUmVuZGVyT2JqZWN0JiBvbGRDaGlsZCk7CisKICAgICB2b2lkIGNoaWxkQmVjYW1l
Tm9uSW5saW5lKFJlbmRlckJsb2NrJiBwYXJlbnQsIFJlbmRlckVsZW1lbnQmIGNoaWxkKTsKIAog
cHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333551</attachid>
            <date>2018-02-09 20:16:51 -0800</date>
            <delta_ts>2018-02-10 06:57:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182662-20180209201650.patch</filename>
            <type>text/plain</type>
            <size>20070</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ0NTgwNTZhYTlmNzVm
Mzc0YmE2ZTYxMGM1ZDEzNjI3MDliNTViMC4uNjYyNDc4ZGJkNTFiMzJlODQyMGQ0MmRmMTM5Mjhk
NjU3YmE1ZmFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE4LTAyLTA5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1JlbmRlclRyZWVCdWlsZGVy
XSBNb3ZlIFJlbmRlckJsb2NrOjp0YWtlQ2hpbGQgbXV0YXRpb24gdG8gYSBSZW5kZXJUcmVlQnVp
bGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgy
NjYyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzQwODU3MT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0
eS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6dGFrZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbkRyb3BB
bm9ueW1vdXNCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjYW5NZXJnZUNvbnRp
Z3VvdXNBbm9ueW1vdXNCbG9ja3MpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Om1vdmVBbGxDaGlsZHJl
bkluY2x1ZGluZ0Zsb2F0c1RvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjp0YWtlbkNoaWxkRnJvbVJlbmRl
ckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5Ecm9wQW5vbnltb3VzQmxvY2spOgorICAgICAgICAo
V2ViQ29yZTo6Y2FuTWVyZ2VDb250aWd1b3VzQW5vbnltb3VzQmxvY2tzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpCbG9jazo6dGFrZUNoaWxkKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oOgorCiAyMDE4LTAyLTA5
ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBJbWFnZUJpdG1hcFJl
bmRlcmluZ0NvbnRleHQgc2hvdWxkIGJlIFJ1bnRpbWUgZ3VhcmRlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZmI5MTk4ZWI4ZjdlODBlYTdmYTc4MmM1NGMw
MGExNTM0NDA5YWMyOC4uMjQ1M2U0ZTM4ODViNjg5ZmY4OThiODk3YzlkYjI3ZDRmMWM1NzBlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC00ODIsNDIgKzQ4
Miw2IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmRlbGV0ZUxpbmVzKCkKICAgICAgICAgY2FjaGUtPmRl
ZmVyUmVjb21wdXRlSXNJZ25vcmVkKGVsZW1lbnQoKSk7CiB9CiAKLXN0YXRpYyBib29sIGNhbkRy
b3BBbm9ueW1vdXNCbG9jayhjb25zdCBSZW5kZXJCbG9jayYgYW5vbnltb3VzQmxvY2spCi17Ci0g
ICAgaWYgKGFub255bW91c0Jsb2NrLmJlaW5nRGVzdHJveWVkKCkgfHwgYW5vbnltb3VzQmxvY2su
Y29udGludWF0aW9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYW5vbnltb3Vz
QmxvY2suaXNSdWJ5UnVuKCkgfHwgYW5vbnltb3VzQmxvY2suaXNSdWJ5QmFzZSgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIGNhbk1l
cmdlQ29udGlndW91c0Fub255bW91c0Jsb2NrcyhSZW5kZXJPYmplY3QmIG9sZENoaWxkLCBSZW5k
ZXJPYmplY3QqIHByZXZpb3VzLCBSZW5kZXJPYmplY3QqIG5leHQpCi17Ci0gICAgQVNTRVJUKCFv
bGRDaGlsZC5yZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQoKSk7Ci0KLSAgICBpZiAob2xkQ2hpbGQu
aXNJbmxpbmUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGlzPFJlbmRlckJv
eE1vZGVsT2JqZWN0PihvbGRDaGlsZCkgJiYgZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+
KG9sZENoaWxkKS5jb250aW51YXRpb24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKHByZXZpb3VzKSB7Ci0gICAgICAgIGlmICghcHJldmlvdXMtPmlzQW5vbnltb3VzQmxvY2so
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgUmVuZGVyQmxvY2smIHByZXZp
b3VzQW5vbnltb3VzQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKnByZXZpb3VzKTsKLSAg
ICAgICAgaWYgKCFjYW5Ecm9wQW5vbnltb3VzQmxvY2socHJldmlvdXNBbm9ueW1vdXNCbG9jaykp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChuZXh0KSB7Ci0gICAg
ICAgIGlmICghbmV4dC0+aXNBbm9ueW1vdXNCbG9jaygpKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBSZW5kZXJCbG9jayYgbmV4dEFub255bW91c0Jsb2NrID0gZG93bmNhc3Q8
UmVuZGVyQmxvY2s+KCpuZXh0KTsKLSAgICAgICAgaWYgKCFjYW5Ecm9wQW5vbnltb3VzQmxvY2so
bmV4dEFub255bW91c0Jsb2NrKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgUmVuZGVyQmxvY2s6OmRyb3BBbm9ueW1vdXNCb3hD
aGlsZChSZW5kZXJUcmVlQnVpbGRlciYgYnVpbGRlciwgUmVuZGVyQmxvY2smIGNoaWxkKQogewog
ICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwpAQCAtNTMyLDkxICs0OTYs
NyBAQCB2b2lkIFJlbmRlckJsb2NrOjpkcm9wQW5vbnltb3VzQm94Q2hpbGQoUmVuZGVyVHJlZUJ1
aWxkZXImIGJ1aWxkZXIsIFJlbmRlckJsb2NrJgogCiBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBS
ZW5kZXJCbG9jazo6dGFrZUNoaWxkKFJlbmRlclRyZWVCdWlsZGVyJiBidWlsZGVyLCBSZW5kZXJP
YmplY3QmIG9sZENoaWxkKQogewotICAgIC8vIE5vIG5lZWQgdG8gd2FzdGUgdGltZSBpbiBtZXJn
aW5nIG9yIHJlbW92aW5nIGVtcHR5IGFub255bW91cyBibG9ja3MuCi0gICAgLy8gV2UgY2FuIGp1
c3QgYmFpbCBvdXQgaWYgb3VyIGRvY3VtZW50IGlzIGdldHRpbmcgZGVzdHJveWVkLgotICAgIGlm
IChyZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQoKSkKLSAgICAgICAgcmV0dXJuIFJlbmRlckJveDo6
dGFrZUNoaWxkKGJ1aWxkZXIsIG9sZENoaWxkKTsKLQotICAgIC8vIElmIHRoaXMgY2hpbGQgaXMg
YSBibG9jaywgYW5kIGlmIG91ciBwcmV2aW91cyBhbmQgbmV4dCBzaWJsaW5ncyBhcmUgYm90aCBh
bm9ueW1vdXMgYmxvY2tzCi0gICAgLy8gd2l0aCBpbmxpbmUgY29udGVudCwgdGhlbiB3ZSBjYW4g
Zm9sZCB0aGUgaW5saW5lIGNvbnRlbnQgYmFjayB0b2dldGhlci4KLSAgICBSZW5kZXJPYmplY3Qq
IHByZXYgPSBvbGRDaGlsZC5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICBSZW5kZXJPYmplY3QqIG5l
eHQgPSBvbGRDaGlsZC5uZXh0U2libGluZygpOwotICAgIGJvb2wgY2FuTWVyZ2VBbm9ueW1vdXNC
bG9ja3MgPSBjYW5NZXJnZUNvbnRpZ3VvdXNBbm9ueW1vdXNCbG9ja3Mob2xkQ2hpbGQsIHByZXYs
IG5leHQpOwotICAgIGlmIChjYW5NZXJnZUFub255bW91c0Jsb2NrcyAmJiBwcmV2ICYmIG5leHQp
IHsKLSAgICAgICAgcHJldi0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7Ci0g
ICAgICAgIFJlbmRlckJsb2NrJiBuZXh0QmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm5l
eHQpOwotICAgICAgICBSZW5kZXJCbG9jayYgcHJldkJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxv
Y2s+KCpwcmV2KTsKLSAgICAgICAKLSAgICAgICAgaWYgKHByZXYtPmNoaWxkcmVuSW5saW5lKCkg
IT0gbmV4dC0+Y2hpbGRyZW5JbmxpbmUoKSkgewotICAgICAgICAgICAgUmVuZGVyQmxvY2smIGlu
bGluZUNoaWxkcmVuQmxvY2sgPSBwcmV2LT5jaGlsZHJlbklubGluZSgpID8gcHJldkJsb2NrIDog
bmV4dEJsb2NrOwotICAgICAgICAgICAgUmVuZGVyQmxvY2smIGJsb2NrQ2hpbGRyZW5CbG9jayA9
IHByZXYtPmNoaWxkcmVuSW5saW5lKCkgPyBuZXh0QmxvY2sgOiBwcmV2QmxvY2s7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIC8vIFBsYWNlIHRoZSBpbmxpbmUgY2hpbGRyZW4gYmxvY2sgaW5z
aWRlIG9mIHRoZSBibG9jayBjaGlsZHJlbiBibG9jayBpbnN0ZWFkIG9mIGRlbGV0aW5nIGl0Lgot
ICAgICAgICAgICAgLy8gSW4gb3JkZXIgdG8gcmV1c2UgaXQsIHdlIGhhdmUgdG8gcmVzZXQgaXQg
dG8ganVzdCBiZSBhIGdlbmVyaWMgYW5vbnltb3VzIGJsb2NrLiAgTWFrZSBzdXJlCi0gICAgICAg
ICAgICAvLyB0byBjbGVhciBvdXQgaW5oZXJpdGVkIGNvbHVtbiBwcm9wZXJ0aWVzIGJ5IGp1c3Qg
bWFraW5nIGEgbmV3IHN0eWxlLCBhbmQgdG8gYWxzbyBjbGVhciB0aGUKLSAgICAgICAgICAgIC8v
IGNvbHVtbiBzcGFuIGZsYWcgaWYgaXQgaXMgc2V0LgotICAgICAgICAgICAgQVNTRVJUKCFpbmxp
bmVDaGlsZHJlbkJsb2NrLmNvbnRpbnVhdGlvbigpKTsKLSAgICAgICAgICAgIC8vIENhY2hlIHRo
aXMgdmFsdWUgYXMgaXQgbWlnaHQgZ2V0IGNoYW5nZWQgaW4gc2V0U3R5bGUoKSBjYWxsLgotICAg
ICAgICAgICAgaW5saW5lQ2hpbGRyZW5CbG9jay5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRl
QW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBCTE9DSykpOwotICAgICAgICAgICAg
YXV0byBibG9ja1RvTW92ZSA9IHRha2VDaGlsZEludGVybmFsKGlubGluZUNoaWxkcmVuQmxvY2sp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBOb3cganVzdCBwdXQgdGhlIGlubGluZUNo
aWxkcmVuQmxvY2sgaW5zaWRlIHRoZSBibG9ja0NoaWxkcmVuQmxvY2suCi0gICAgICAgICAgICBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gcHJldiA9PSAmaW5saW5lQ2hpbGRyZW5CbG9jayA/
IGJsb2NrQ2hpbGRyZW5CbG9jay5maXJzdENoaWxkKCkgOiBudWxscHRyOwotICAgICAgICAgICAg
YmxvY2tDaGlsZHJlbkJsb2NrLmluc2VydENoaWxkSW50ZXJuYWwoV1RGTW92ZShibG9ja1RvTW92
ZSksIGJlZm9yZUNoaWxkKTsKLSAgICAgICAgICAgIG5leHQtPnNldE5lZWRzTGF5b3V0QW5kUHJl
ZldpZHRoc1JlY2FsYygpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBpbmxpbmVDaGls
ZHJlbkJsb2NrIGdvdCByZXBhcmVudGVkIHRvIGJsb2NrQ2hpbGRyZW5CbG9jaywgc28gaXQgaXMg
bm8gbG9uZ2VyIGEgY2hpbGQKLSAgICAgICAgICAgIC8vIG9mICJ0aGlzIi4gd2UgbnVsbCBvdXQg
cHJldiBvciBuZXh0IHNvIHRoYXQgaXMgbm90IHVzZWQgbGF0ZXIgaW4gdGhlIGZ1bmN0aW9uLgot
ICAgICAgICAgICAgaWYgKCZpbmxpbmVDaGlsZHJlbkJsb2NrID09ICZwcmV2QmxvY2spCi0gICAg
ICAgICAgICAgICAgcHJldiA9IG51bGxwdHI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgbmV4dCA9IG51bGxwdHI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBU
YWtlIGFsbCB0aGUgY2hpbGRyZW4gb3V0IG9mIHRoZSB8bmV4dHwgYmxvY2sgYW5kIHB1dCB0aGVt
IGluCi0gICAgICAgICAgICAvLyB0aGUgfHByZXZ8IGJsb2NrLgotICAgICAgICAgICAgbmV4dEJs
b2NrLm1vdmVBbGxDaGlsZHJlbkluY2x1ZGluZ0Zsb2F0c1RvKGJ1aWxkZXIsIHByZXZCbG9jaywg
UmVuZGVyQm94TW9kZWxPYmplY3Q6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpObyk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgbm93LWVtcHR5IGJsb2NrJ3MgbGlu
ZXMgYW5kIG51a2UgaXQuCi0gICAgICAgICAgICBuZXh0QmxvY2suZGVsZXRlTGluZXMoKTsKLSAg
ICAgICAgICAgIG5leHRCbG9jay5yZW1vdmVGcm9tUGFyZW50QW5kRGVzdHJveShidWlsZGVyKTsK
LSAgICAgICAgICAgIG5leHQgPSBudWxscHRyOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaW52
YWxpZGF0ZUxpbmVMYXlvdXRQYXRoKCk7Ci0KLSAgICBhdXRvIHRha2VuQ2hpbGQgPSBSZW5kZXJC
b3g6OnRha2VDaGlsZChidWlsZGVyLCBvbGRDaGlsZCk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIGNo
aWxkID0gcHJldiA/IHByZXYgOiBuZXh0OwotICAgIGlmIChjYW5NZXJnZUFub255bW91c0Jsb2Nr
cyAmJiBjaGlsZCAmJiAhY2hpbGQtPnByZXZpb3VzU2libGluZygpICYmICFjaGlsZC0+bmV4dFNp
YmxpbmcoKSAmJiBjYW5Ecm9wQW5vbnltb3VzQmxvY2tDaGlsZCgpKSB7Ci0gICAgICAgIC8vIFRo
ZSByZW1vdmFsIGhhcyBrbm9ja2VkIHVzIGRvd24gdG8gY29udGFpbmluZyBvbmx5IGEgc2luZ2xl
IGFub255bW91cwotICAgICAgICAvLyBib3guIFdlIGNhbiBwdWxsIHRoZSBjb250ZW50IHJpZ2h0
IGJhY2sgdXAgaW50byBvdXIgYm94LgotICAgICAgICBkcm9wQW5vbnltb3VzQm94Q2hpbGQoYnVp
bGRlciwgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpjaGlsZCkpOwotICAgIH0gZWxzZSBpZiAoKChw
cmV2ICYmIHByZXYtPmlzQW5vbnltb3VzQmxvY2soKSkgfHwgKG5leHQgJiYgbmV4dC0+aXNBbm9u
eW1vdXNCbG9jaygpKSkgJiYgY2FuRHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSkgewotICAgICAg
ICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHJlbW92YWwgaGFzIGtub2NrZWQgdXMgZG93biB0
byBhIHNpbmdsZSBhbm9ueW1vdXMKLSAgICAgICAgLy8gYmxvY2sgd2l0aCBmbG9hdGluZyBzaWJs
aW5ncy4KLSAgICAgICAgUmVuZGVyQmxvY2smIGFub25CbG9jayA9IGRvd25jYXN0PFJlbmRlckJs
b2NrPigocHJldiAmJiBwcmV2LT5pc0Fub255bW91c0Jsb2NrKCkpID8gKnByZXYgOiAqbmV4dCk7
Ci0gICAgICAgIGlmIChjYW5Ecm9wQW5vbnltb3VzQmxvY2soYW5vbkJsb2NrKSkgewotICAgICAg
ICAgICAgYm9vbCBkcm9wQW5vbnltb3VzQmxvY2sgPSB0cnVlOwotICAgICAgICAgICAgZm9yIChh
dXRvJiBzaWJsaW5nIDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyT2JqZWN0PigqdGhpcykpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoJnNpYmxpbmcgPT0gJmFub25CbG9jaykKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKCFzaWJsaW5nLmlzRmxvYXRpbmco
KSkgewotICAgICAgICAgICAgICAgICAgICBkcm9wQW5vbnltb3VzQmxvY2sgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKGRyb3BBbm9ueW1vdXNCbG9jaykKLSAgICAgICAgICAgICAgICBk
cm9wQW5vbnltb3VzQm94Q2hpbGQoYnVpbGRlciwgYW5vbkJsb2NrKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIGlmICghZmlyc3RDaGlsZCgpKSB7Ci0gICAgICAgIC8vIElmIHRoaXMgd2FzIG91
ciBsYXN0IGNoaWxkIGJlIHN1cmUgdG8gY2xlYXIgb3V0IG91ciBsaW5lIGJveGVzLgotICAgICAg
ICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkKLSAgICAgICAgICAgIGRlbGV0ZUxpbmVzKCk7Ci0gICAg
fQotICAgIHJldHVybiB0YWtlbkNoaWxkOworICAgIHJldHVybiBidWlsZGVyLnRha2VDaGlsZEZy
b21SZW5kZXJCbG9jaygqdGhpcywgb2xkQ2hpbGQpOwogfQogCiBib29sIFJlbmRlckJsb2NrOjpj
aGlsZHJlblByZXZlbnRTZWxmQ29sbGFwc2luZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCmluZGV4IGMzZjU0NTljMGQ2M2ZjYWI2NjhmMmMwNzEyYTY0NmM4NmFl
M2Y1YzIuLjg2Mzk2YzkyYTQzMDliZGVkOWJiYzVlNzk2NDczYmNmMDVkMWE4M2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0zOTcsNiArMzk3LDggQEAgcHVibGlj
OgogICAgIExheW91dFJlY3QgcGFpbnRSZWN0VG9DbGlwT3V0RnJvbUJvcmRlcihjb25zdCBMYXlv
dXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRDaGlsZElnbm9yaW5nQ29udGludWF0aW9u
KFJlbmRlclRyZWVCdWlsZGVyJiwgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gbmV3Q2hpbGQsIFJl
bmRlck9iamVjdCogYmVmb3JlQ2hpbGQpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNJbmxpbmVCbG9j
a09ySW5saW5lVGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc0lubGluZSgpICYmIGlzUmVw
bGFjZWQoKTsgfQorICAgIC8vIEZJWE1FLUJMT0NLRkxPVzogUmVtb3ZlIHZpcnR1YWxpemFpb24g
d2hlbiBhbGwgY2FsbGVycyBoYXZlIG1vdmVkIHRvIFJlbmRlckJsb2NrRmxvdworICAgIHZpcnR1
YWwgdm9pZCBtb3ZlQWxsQ2hpbGRyZW5JbmNsdWRpbmdGbG9hdHNUbyhSZW5kZXJUcmVlQnVpbGRl
ciYgYnVpbGRlciwgUmVuZGVyQmxvY2smIHRvQmxvY2ssIFJlbmRlckJveE1vZGVsT2JqZWN0OjpO
b3JtYWxpemVBZnRlckluc2VydGlvbiBub3JtYWxpemVBZnRlckluc2VydGlvbikgeyBtb3ZlQWxs
Q2hpbGRyZW5UbyhidWlsZGVyLCAmdG9CbG9jaywgbm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pOyB9
CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQ2hpbGRyZW4o
KTsKQEAgLTQzNCw5ICs0MzYsNiBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgLy8gRklYTUUtQkxPQ0tGTE9XOiBSZW1vdmUg
dmlydHVhbGl6YWlvbiB3aGVuIGFsbCBjYWxsZXJzIGhhdmUgbW92ZWQgdG8gUmVuZGVyQmxvY2tG
bG93Ci0gICAgdmlydHVhbCB2b2lkIG1vdmVBbGxDaGlsZHJlbkluY2x1ZGluZ0Zsb2F0c1RvKFJl
bmRlclRyZWVCdWlsZGVyJiBidWlsZGVyLCBSZW5kZXJCbG9jayYgdG9CbG9jaywgUmVuZGVyQm94
TW9kZWxPYmplY3Q6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uIG5vcm1hbGl6ZUFmdGVySW5zZXJ0
aW9uKSB7IG1vdmVBbGxDaGlsZHJlblRvKGJ1aWxkZXIsICZ0b0Jsb2NrLCBub3JtYWxpemVBZnRl
ckluc2VydGlvbik7IH0KLQogICAgIGJvb2wgaXNTZWxmQ29sbGFwc2luZ0Jsb2NrKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkcmVuUHJldmVudFNlbGZDb2xsYXBzaW5n
KCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmgKaW5kZXggNTIwNzhiOTYyNjU1ZjE3NzIwMWFlMDI5NmYyZTY5MzUwNGJjYTE5Yy4uNWU3YmMw
NWQzM2YyYmYwNDQ5ZjZjNDNhNzc4M2M2ZDQzYTMzOTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtNDY0LDcgKzQ2NCw4IEBAIHByb3RlY3RlZDoK
ICAgICAvLyBDYWxsZWQgdG8gbGF5IG91dCB0aGUgbGVnZW5kIGZvciBhIGZpZWxkc2V0IG9yIHRo
ZSBydWJ5IHRleHQgb2YgYSBydWJ5IHJ1bi4gQWxzbyB1c2VkIGJ5IG11bHRpLWNvbHVtbiBsYXlv
dXQgdG8gaGFuZGxlCiAgICAgLy8gdGhlIGZsb3cgdGhyZWFkIGNoaWxkLgogICAgIHZvaWQgbGF5
b3V0RXhjbHVkZWRDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4pIG92ZXJyaWRlOwotICAg
IAorICAgIHZvaWQgbW92ZUFsbENoaWxkcmVuSW5jbHVkaW5nRmxvYXRzVG8oUmVuZGVyVHJlZUJ1
aWxkZXImLCBSZW5kZXJCbG9jayYgdG9CbG9jaywgUmVuZGVyQm94TW9kZWxPYmplY3Q6Ok5vcm1h
bGl6ZUFmdGVySW5zZXJ0aW9uKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICBib29sIHJlY29t
cHV0ZUxvZ2ljYWxXaWR0aEFuZENvbHVtbldpZHRoKCk7CiAgICAgTGF5b3V0VW5pdCBjb2x1bW5H
YXAoKSBjb25zdDsKQEAgLTQ3Niw3ICs0NzcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRJ
bmxpbmVDaGlsZHJlbihQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgcGFpbnRGbG9hdHMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29s
IHByZXNlcnZlUGhhc2UgPSBmYWxzZSkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIG1vdmVBbGxDaGls
ZHJlbkluY2x1ZGluZ0Zsb2F0c1RvKFJlbmRlclRyZWVCdWlsZGVyJiwgUmVuZGVyQmxvY2smIHRv
QmxvY2ssIFJlbmRlckJveE1vZGVsT2JqZWN0OjpOb3JtYWxpemVBZnRlckluc2VydGlvbikgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZXBhaW50T3ZlcmhhbmdpbmdGbG9hdHMoYm9vbCBwYWludEFsbERl
c2NlbmRhbnRzKSBmaW5hbDsKICAgICB2b2lkIGNsaXBPdXRGbG9hdGluZ09iamVjdHMoUmVuZGVy
QmxvY2smLCBjb25zdCBQYWludEluZm8qLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91
dFNpemUmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKaW5kZXggYjVmYWZkZGY2MGZiMWM3YzUx
MzhiZGJkMzY2ODJjMWYyZjczZjRiNS4uYWRhZjYzM2FlNGJkMjU5M2RmNDNiNGEwNTVlMDU4Y2Vm
MDkyYzY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCkBAIC00ODUsNiArNDg1LDExIEBAIFJlbmRlclB0cjxS
ZW5kZXJPYmplY3Q+IFJlbmRlclRyZWVCdWlsZGVyOjp0YWtlQ2hpbGRGcm9tUmVuZGVyUnVieVJ1
bihSZW5kZXJSdWJ5CiAgICAgcmV0dXJuIHJ1YnlCdWlsZGVyKCkudGFrZUNoaWxkKHBhcmVudCwg
Y2hpbGQpOwogfQogCitSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBSZW5kZXJUcmVlQnVpbGRlcjo6
dGFrZUNoaWxkRnJvbVJlbmRlckJsb2NrKFJlbmRlckJsb2NrJiBwYXJlbnQsIFJlbmRlck9iamVj
dCYgb2xkQ2hpbGQpCit7CisgICAgcmV0dXJuIGJsb2NrQnVpbGRlcigpLnRha2VDaGlsZChwYXJl
bnQsIG9sZENoaWxkKTsKK30KKwogdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6dXBkYXRlQWZ0ZXJE
ZXNjZW5kYW50cyhSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKIHsKICAgICBpZiAoaXM8UmVuZGVy
QmxvY2s+KHJlbmRlcmVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmgKaW5kZXggZTExOTY2NGNhMzQyMTRlODU1YmU4YzA4
MjlmOTU5MmU2ODRlY2YzOS4uZGViNGQ3YWU3NDlmY2IwMzAxZGE1NzQ3NmRkZDU3ZTZkOTg4Y2M0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRl
clRyZWVCdWlsZGVyLmgKQEAgLTc2LDYgKzc2LDcgQEAgcHVibGljOgogICAgIFJlbmRlclB0cjxS
ZW5kZXJPYmplY3Q+IHRha2VDaGlsZEZyb21SZW5kZXJSdWJ5QXNJbmxpbmUoUmVuZGVyUnVieUFz
SW5saW5lJiBwYXJlbnQsIFJlbmRlck9iamVjdCYgY2hpbGQpOwogICAgIFJlbmRlclB0cjxSZW5k
ZXJPYmplY3Q+IHRha2VDaGlsZEZyb21SZW5kZXJSdWJ5QXNCbG9jayhSZW5kZXJSdWJ5QXNCbG9j
ayYgcGFyZW50LCBSZW5kZXJPYmplY3QmIGNoaWxkKTsKICAgICBSZW5kZXJQdHI8UmVuZGVyT2Jq
ZWN0PiB0YWtlQ2hpbGRGcm9tUmVuZGVyUnVieVJ1bihSZW5kZXJSdWJ5UnVuJiBwYXJlbnQsIFJl
bmRlck9iamVjdCYgY2hpbGQpOworICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IHRha2VDaGls
ZEZyb21SZW5kZXJCbG9jayhSZW5kZXJCbG9jayYgcGFyZW50LCBSZW5kZXJPYmplY3QmIG9sZENo
aWxkKTsKIAogICAgIGJvb2wgY2hpbGRSZXF1aXJlc1RhYmxlKGNvbnN0IFJlbmRlckVsZW1lbnQm
IHBhcmVudCwgY29uc3QgUmVuZGVyT2JqZWN0JiBjaGlsZCk7CiAgICAgdm9pZCBtYWtlQ2hpbGRy
ZW5Ob25JbmxpbmUoUmVuZGVyQmxvY2smIHBhcmVudCwgUmVuZGVyT2JqZWN0KiBpbnNlcnRpb25Q
b2ludCA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwCmluZGV4IDc2Y2FjZjAxN2Jm
ZGFmNDVmODFhZmQ0ODk5MmZmYWE2ZWJlMDdkZDIuLjUwOGU2ZjZhZDA4MmIxZTc3MmQ1OTdlMjgz
MDU2NjE2ZGYxNDQyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAKQEAgLTM1LDYgKzM1LDQy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGJvb2wgY2FuRHJvcEFub255bW91
c0Jsb2NrKGNvbnN0IFJlbmRlckJsb2NrJiBhbm9ueW1vdXNCbG9jaykKK3sKKyAgICBpZiAoYW5v
bnltb3VzQmxvY2suYmVpbmdEZXN0cm95ZWQoKSB8fCBhbm9ueW1vdXNCbG9jay5jb250aW51YXRp
b24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhbm9ueW1vdXNCbG9jay5pc1J1
YnlSdW4oKSB8fCBhbm9ueW1vdXNCbG9jay5pc1J1YnlCYXNlKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY2FuTWVyZ2VDb250aWd1
b3VzQW5vbnltb3VzQmxvY2tzKFJlbmRlck9iamVjdCYgb2xkQ2hpbGQsIFJlbmRlck9iamVjdCog
cHJldmlvdXMsIFJlbmRlck9iamVjdCogbmV4dCkKK3sKKyAgICBBU1NFUlQoIW9sZENoaWxkLnJl
bmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgpKTsKKworICAgIGlmIChvbGRDaGlsZC5pc0lubGluZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaXM8UmVuZGVyQm94TW9kZWxPYmpl
Y3Q+KG9sZENoaWxkKSAmJiBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4ob2xkQ2hpbGQp
LmNvbnRpbnVhdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAocHJldmlv
dXMpIHsKKyAgICAgICAgaWYgKCFwcmV2aW91cy0+aXNBbm9ueW1vdXNCbG9jaygpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBSZW5kZXJCbG9jayYgcHJldmlvdXNBbm9ueW1v
dXNCbG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2NrPigqcHJldmlvdXMpOworICAgICAgICBpZiAo
IWNhbkRyb3BBbm9ueW1vdXNCbG9jayhwcmV2aW91c0Fub255bW91c0Jsb2NrKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG5leHQpIHsKKyAgICAgICAgaWYgKCFu
ZXh0LT5pc0Fub255bW91c0Jsb2NrKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIFJlbmRlckJsb2NrJiBuZXh0QW5vbnltb3VzQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9j
az4oKm5leHQpOworICAgICAgICBpZiAoIWNhbkRyb3BBbm9ueW1vdXNCbG9jayhuZXh0QW5vbnlt
b3VzQmxvY2spKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogc3RhdGljIFJlbmRlckJsb2NrKiBjb250aW51YXRpb25CZWZvcmUoUmVuZGVy
QmxvY2smIHBhcmVudCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKIHsKICAgICBpZiAoYmVm
b3JlQ2hpbGQgJiYgYmVmb3JlQ2hpbGQtPnBhcmVudCgpID09ICZwYXJlbnQpCkBAIC0yMjgsNCAr
MjY0LDkzIEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OkJsb2NrOjpyZW1vdmVMZWZ0b3ZlckFu
b255bW91c0Jsb2NrKFJlbmRlckJsb2NrJiBhbm9ueW1vCiAgICAgLy8gYW5vbnltb3VzQmxvY2sg
aXMgZGVhZCBoZXJlLgogfQogCitSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBSZW5kZXJUcmVlQnVp
bGRlcjo6QmxvY2s6OnRha2VDaGlsZChSZW5kZXJCbG9jayYgcGFyZW50LCBSZW5kZXJPYmplY3Qm
IG9sZENoaWxkKQoreworICAgIC8vIE5vIG5lZWQgdG8gd2FzdGUgdGltZSBpbiBtZXJnaW5nIG9y
IHJlbW92aW5nIGVtcHR5IGFub255bW91cyBibG9ja3MuCisgICAgLy8gV2UgY2FuIGp1c3QgYmFp
bCBvdXQgaWYgb3VyIGRvY3VtZW50IGlzIGdldHRpbmcgZGVzdHJveWVkLgorICAgIGlmIChwYXJl
bnQucmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpCisgICAgICAgIHJldHVybiBwYXJlbnQuUmVu
ZGVyQm94Ojp0YWtlQ2hpbGQobV9idWlsZGVyLCBvbGRDaGlsZCk7CisKKyAgICAvLyBJZiB0aGlz
IGNoaWxkIGlzIGEgYmxvY2ssIGFuZCBpZiBvdXIgcHJldmlvdXMgYW5kIG5leHQgc2libGluZ3Mg
YXJlIGJvdGggYW5vbnltb3VzIGJsb2NrcworICAgIC8vIHdpdGggaW5saW5lIGNvbnRlbnQsIHRo
ZW4gd2UgY2FuIGZvbGQgdGhlIGlubGluZSBjb250ZW50IGJhY2sgdG9nZXRoZXIuCisgICAgUmVu
ZGVyT2JqZWN0KiBwcmV2ID0gb2xkQ2hpbGQucHJldmlvdXNTaWJsaW5nKCk7CisgICAgUmVuZGVy
T2JqZWN0KiBuZXh0ID0gb2xkQ2hpbGQubmV4dFNpYmxpbmcoKTsKKyAgICBib29sIGNhbk1lcmdl
QW5vbnltb3VzQmxvY2tzID0gY2FuTWVyZ2VDb250aWd1b3VzQW5vbnltb3VzQmxvY2tzKG9sZENo
aWxkLCBwcmV2LCBuZXh0KTsKKyAgICBpZiAoY2FuTWVyZ2VBbm9ueW1vdXNCbG9ja3MgJiYgcHJl
diAmJiBuZXh0KSB7CisgICAgICAgIHByZXYtPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1Jl
Y2FsYygpOworICAgICAgICBSZW5kZXJCbG9jayYgbmV4dEJsb2NrID0gZG93bmNhc3Q8UmVuZGVy
QmxvY2s+KCpuZXh0KTsKKyAgICAgICAgUmVuZGVyQmxvY2smIHByZXZCbG9jayA9IGRvd25jYXN0
PFJlbmRlckJsb2NrPigqcHJldik7CisKKyAgICAgICAgaWYgKHByZXYtPmNoaWxkcmVuSW5saW5l
KCkgIT0gbmV4dC0+Y2hpbGRyZW5JbmxpbmUoKSkgeworICAgICAgICAgICAgUmVuZGVyQmxvY2sm
IGlubGluZUNoaWxkcmVuQmxvY2sgPSBwcmV2LT5jaGlsZHJlbklubGluZSgpID8gcHJldkJsb2Nr
IDogbmV4dEJsb2NrOworICAgICAgICAgICAgUmVuZGVyQmxvY2smIGJsb2NrQ2hpbGRyZW5CbG9j
ayA9IHByZXYtPmNoaWxkcmVuSW5saW5lKCkgPyBuZXh0QmxvY2sgOiBwcmV2QmxvY2s7CisKKyAg
ICAgICAgICAgIC8vIFBsYWNlIHRoZSBpbmxpbmUgY2hpbGRyZW4gYmxvY2sgaW5zaWRlIG9mIHRo
ZSBibG9jayBjaGlsZHJlbiBibG9jayBpbnN0ZWFkIG9mIGRlbGV0aW5nIGl0LgorICAgICAgICAg
ICAgLy8gSW4gb3JkZXIgdG8gcmV1c2UgaXQsIHdlIGhhdmUgdG8gcmVzZXQgaXQgdG8ganVzdCBi
ZSBhIGdlbmVyaWMgYW5vbnltb3VzIGJsb2NrLiBNYWtlIHN1cmUKKyAgICAgICAgICAgIC8vIHRv
IGNsZWFyIG91dCBpbmhlcml0ZWQgY29sdW1uIHByb3BlcnRpZXMgYnkganVzdCBtYWtpbmcgYSBu
ZXcgc3R5bGUsIGFuZCB0byBhbHNvIGNsZWFyIHRoZQorICAgICAgICAgICAgLy8gY29sdW1uIHNw
YW4gZmxhZyBpZiBpdCBpcyBzZXQuCisgICAgICAgICAgICBBU1NFUlQoIWlubGluZUNoaWxkcmVu
QmxvY2suY29udGludWF0aW9uKCkpOworICAgICAgICAgICAgLy8gQ2FjaGUgdGhpcyB2YWx1ZSBh
cyBpdCBtaWdodCBnZXQgY2hhbmdlZCBpbiBzZXRTdHlsZSgpIGNhbGwuCisgICAgICAgICAgICBp
bmxpbmVDaGlsZHJlbkJsb2NrLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNT
dHlsZVdpdGhEaXNwbGF5KHBhcmVudC5zdHlsZSgpLCBCTE9DSykpOworICAgICAgICAgICAgYXV0
byBibG9ja1RvTW92ZSA9IHBhcmVudC50YWtlQ2hpbGRJbnRlcm5hbChpbmxpbmVDaGlsZHJlbkJs
b2NrKTsKKworICAgICAgICAgICAgLy8gTm93IGp1c3QgcHV0IHRoZSBpbmxpbmVDaGlsZHJlbkJs
b2NrIGluc2lkZSB0aGUgYmxvY2tDaGlsZHJlbkJsb2NrLgorICAgICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVDaGlsZCA9IHByZXYgPT0gJmlubGluZUNoaWxkcmVuQmxvY2sgPyBibG9ja0No
aWxkcmVuQmxvY2suZmlyc3RDaGlsZCgpIDogbnVsbHB0cjsKKyAgICAgICAgICAgIGJsb2NrQ2hp
bGRyZW5CbG9jay5pbnNlcnRDaGlsZEludGVybmFsKFdURk1vdmUoYmxvY2tUb01vdmUpLCBiZWZv
cmVDaGlsZCk7CisgICAgICAgICAgICBuZXh0LT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNS
ZWNhbGMoKTsKKworICAgICAgICAgICAgLy8gaW5saW5lQ2hpbGRyZW5CbG9jayBnb3QgcmVwYXJl
bnRlZCB0byBibG9ja0NoaWxkcmVuQmxvY2ssIHNvIGl0IGlzIG5vIGxvbmdlciBhIGNoaWxkCisg
ICAgICAgICAgICAvLyBvZiAidGhpcyIuIHdlIG51bGwgb3V0IHByZXYgb3IgbmV4dCBzbyB0aGF0
IGlzIG5vdCB1c2VkIGxhdGVyIGluIHRoZSBmdW5jdGlvbi4KKyAgICAgICAgICAgIGlmICgmaW5s
aW5lQ2hpbGRyZW5CbG9jayA9PSAmcHJldkJsb2NrKQorICAgICAgICAgICAgICAgIHByZXYgPSBu
dWxscHRyOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5leHQgPSBudWxscHRy
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gVGFrZSBhbGwgdGhlIGNoaWxkcmVu
IG91dCBvZiB0aGUgfG5leHR8IGJsb2NrIGFuZCBwdXQgdGhlbSBpbgorICAgICAgICAgICAgLy8g
dGhlIHxwcmV2fCBibG9jay4KKyAgICAgICAgICAgIG5leHRCbG9jay5tb3ZlQWxsQ2hpbGRyZW5J
bmNsdWRpbmdGbG9hdHNUbyhtX2J1aWxkZXIsIHByZXZCbG9jaywgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6Ok5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uOjpObyk7CisKKyAgICAgICAgICAgIC8vIERlbGV0
ZSB0aGUgbm93LWVtcHR5IGJsb2NrJ3MgbGluZXMgYW5kIG51a2UgaXQuCisgICAgICAgICAgICBu
ZXh0QmxvY2suZGVsZXRlTGluZXMoKTsKKyAgICAgICAgICAgIG5leHRCbG9jay5yZW1vdmVGcm9t
UGFyZW50QW5kRGVzdHJveShtX2J1aWxkZXIpOworICAgICAgICAgICAgbmV4dCA9IG51bGxwdHI7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwYXJlbnQuaW52YWxpZGF0ZUxpbmVMYXlvdXRQYXRo
KCk7CisKKyAgICBhdXRvIHRha2VuQ2hpbGQgPSBwYXJlbnQuUmVuZGVyQm94Ojp0YWtlQ2hpbGQo
bV9idWlsZGVyLCBvbGRDaGlsZCk7CisKKyAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gcHJldiA/
IHByZXYgOiBuZXh0OworICAgIGlmIChjYW5NZXJnZUFub255bW91c0Jsb2NrcyAmJiBjaGlsZCAm
JiAhY2hpbGQtPnByZXZpb3VzU2libGluZygpICYmICFjaGlsZC0+bmV4dFNpYmxpbmcoKSAmJiBw
YXJlbnQuY2FuRHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSkgeworICAgICAgICAvLyBUaGUgcmVt
b3ZhbCBoYXMga25vY2tlZCB1cyBkb3duIHRvIGNvbnRhaW5pbmcgb25seSBhIHNpbmdsZSBhbm9u
eW1vdXMKKyAgICAgICAgLy8gYm94LiBXZSBjYW4gcHVsbCB0aGUgY29udGVudCByaWdodCBiYWNr
IHVwIGludG8gb3VyIGJveC4KKyAgICAgICAgcGFyZW50LmRyb3BBbm9ueW1vdXNCb3hDaGlsZCht
X2J1aWxkZXIsIGRvd25jYXN0PFJlbmRlckJsb2NrPigqY2hpbGQpKTsKKyAgICB9IGVsc2UgaWYg
KCgocHJldiAmJiBwcmV2LT5pc0Fub255bW91c0Jsb2NrKCkpIHx8IChuZXh0ICYmIG5leHQtPmlz
QW5vbnltb3VzQmxvY2soKSkpICYmIHBhcmVudC5jYW5Ecm9wQW5vbnltb3VzQmxvY2tDaGlsZCgp
KSB7CisgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcmVtb3ZhbCBoYXMga25vY2tl
ZCB1cyBkb3duIHRvIGEgc2luZ2xlIGFub255bW91cworICAgICAgICAvLyBibG9jayB3aXRoIGZs
b2F0aW5nIHNpYmxpbmdzLgorICAgICAgICBSZW5kZXJCbG9jayYgYW5vbkJsb2NrID0gZG93bmNh
c3Q8UmVuZGVyQmxvY2s+KChwcmV2ICYmIHByZXYtPmlzQW5vbnltb3VzQmxvY2soKSkgPyAqcHJl
diA6ICpuZXh0KTsKKyAgICAgICAgaWYgKGNhbkRyb3BBbm9ueW1vdXNCbG9jayhhbm9uQmxvY2sp
KSB7CisgICAgICAgICAgICBib29sIGRyb3BBbm9ueW1vdXNCbG9jayA9IHRydWU7CisgICAgICAg
ICAgICBmb3IgKGF1dG8mIHNpYmxpbmcgOiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJPYmplY3Q+KHBh
cmVudCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoJnNpYmxpbmcgPT0gJmFub25CbG9jaykKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKCFzaWJsaW5n
LmlzRmxvYXRpbmcoKSkgeworICAgICAgICAgICAgICAgICAgICBkcm9wQW5vbnltb3VzQmxvY2sg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRyb3BBbm9ueW1vdXNCbG9jaykKKyAgICAg
ICAgICAgICAgICBwYXJlbnQuZHJvcEFub255bW91c0JveENoaWxkKG1fYnVpbGRlciwgYW5vbkJs
b2NrKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghcGFyZW50LmZpcnN0Q2hpbGQoKSkg
eworICAgICAgICAvLyBJZiB0aGlzIHdhcyBvdXIgbGFzdCBjaGlsZCBiZSBzdXJlIHRvIGNsZWFy
IG91dCBvdXIgbGluZSBib3hlcy4KKyAgICAgICAgaWYgKHBhcmVudC5jaGlsZHJlbklubGluZSgp
KQorICAgICAgICAgICAgcGFyZW50LmRlbGV0ZUxpbmVzKCk7CisgICAgfQorICAgIHJldHVybiB0
YWtlbkNoaWxkOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suaAppbmRleCBmYzRhZDcwZGY2Yzlj
MDljMGI2YThlNzIyZTljMjg0YTdmYjNhMjRkLi43NThhYzdjOTJmNzI3M2JhOGU2MzM5YmYzODg2
MTAzNmJiYzQwNTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckJsb2NrLmgKQEAgLTM2LDYgKzM2LDggQEAgcHVi
bGljOgogICAgIHZvaWQgaW5zZXJ0Q2hpbGQoUmVuZGVyQmxvY2smIHBhcmVudCwgUmVuZGVyUHRy
PFJlbmRlck9iamVjdD4gY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOwogICAgIHZv
aWQgaW5zZXJ0Q2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihSZW5kZXJCbG9jayYgcGFyZW50LCBS
ZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7
CiAKKyAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiB0YWtlQ2hpbGQoUmVuZGVyQmxvY2smIHBh
cmVudCwgUmVuZGVyT2JqZWN0JiBvbGRDaGlsZCk7CisKICAgICB2b2lkIGNoaWxkQmVjYW1lTm9u
SW5saW5lKFJlbmRlckJsb2NrJiBwYXJlbnQsIFJlbmRlckVsZW1lbnQmIGNoaWxkKTsKIAogcHJp
dmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333556</attachid>
            <date>2018-02-10 06:57:53 -0800</date>
            <delta_ts>2018-02-10 07:45:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182662-20180210065753.patch</filename>
            <type>text/plain</type>
            <size>20068</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ0NTgwNTZhYTlmNzVm
Mzc0YmE2ZTYxMGM1ZDEzNjI3MDliNTViMC4uMTdmMjg3YTllZGYyMjA2MzRjNmRhYzI1MjI2NmIx
YTc3ZjFkZmY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE4LTAyLTA5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1JlbmRlclRyZWVCdWlsZGVy
XSBNb3ZlIFJlbmRlckJsb2NrOjp0YWtlQ2hpbGQgbXV0YXRpb24gdG8gYSBSZW5kZXJUcmVlQnVp
bGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgy
NjYyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzQwODU3MT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHku
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OnRha2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpjYW5Ecm9wQW5v
bnltb3VzQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2FuTWVyZ2VDb250aWd1
b3VzQW5vbnltb3VzQmxvY2tzKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjptb3ZlQWxsQ2hpbGRyZW5J
bmNsdWRpbmdGbG9hdHNUbyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5o
OgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6dGFrZW5DaGlsZEZyb21SZW5kZXJC
bG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y2FuRHJvcEFub255bW91c0Jsb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OmNhbk1lcmdlQ29udGlndW91c0Fub255bW91c0Jsb2Nrcyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6QmxvY2s6OnRha2VDaGlsZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suaDoKKwogMjAxOC0wMi0wOSAg
RGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgSW1hZ2VCaXRtYXBSZW5k
ZXJpbmdDb250ZXh0IHNob3VsZCBiZSBSdW50aW1lIGd1YXJkZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGZiOTE5OGViOGY3ZTgwZWE3ZmE3ODJjNTRjMDBh
MTUzNDQwOWFjMjguLjI0NTNlNGUzODg1YjY4OWZmODk4Yjg5N2M5ZGIyN2Q0ZjFjNTcwZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNDgyLDQyICs0ODIs
NiBAQCB2b2lkIFJlbmRlckJsb2NrOjpkZWxldGVMaW5lcygpCiAgICAgICAgIGNhY2hlLT5kZWZl
clJlY29tcHV0ZUlzSWdub3JlZChlbGVtZW50KCkpOwogfQogCi1zdGF0aWMgYm9vbCBjYW5Ecm9w
QW5vbnltb3VzQmxvY2soY29uc3QgUmVuZGVyQmxvY2smIGFub255bW91c0Jsb2NrKQotewotICAg
IGlmIChhbm9ueW1vdXNCbG9jay5iZWluZ0Rlc3Ryb3llZCgpIHx8IGFub255bW91c0Jsb2NrLmNv
bnRpbnVhdGlvbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFub255bW91c0Js
b2NrLmlzUnVieVJ1bigpIHx8IGFub255bW91c0Jsb2NrLmlzUnVieUJhc2UoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBjYW5NZXJn
ZUNvbnRpZ3VvdXNBbm9ueW1vdXNCbG9ja3MoUmVuZGVyT2JqZWN0JiBvbGRDaGlsZCwgUmVuZGVy
T2JqZWN0KiBwcmV2aW91cywgUmVuZGVyT2JqZWN0KiBuZXh0KQotewotICAgIEFTU0VSVCghb2xk
Q2hpbGQucmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpOwotCi0gICAgaWYgKG9sZENoaWxkLmlz
SW5saW5lKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChpczxSZW5kZXJCb3hN
b2RlbE9iamVjdD4ob2xkQ2hpbGQpICYmIGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0Pihv
bGRDaGlsZCkuY29udGludWF0aW9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlm
IChwcmV2aW91cykgewotICAgICAgICBpZiAoIXByZXZpb3VzLT5pc0Fub255bW91c0Jsb2NrKCkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIFJlbmRlckJsb2NrJiBwcmV2aW91
c0Fub255bW91c0Jsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpwcmV2aW91cyk7Ci0gICAg
ICAgIGlmICghY2FuRHJvcEFub255bW91c0Jsb2NrKHByZXZpb3VzQW5vbnltb3VzQmxvY2spKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAobmV4dCkgewotICAgICAg
ICBpZiAoIW5leHQtPmlzQW5vbnltb3VzQmxvY2soKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgUmVuZGVyQmxvY2smIG5leHRBbm9ueW1vdXNCbG9jayA9IGRvd25jYXN0PFJl
bmRlckJsb2NrPigqbmV4dCk7Ci0gICAgICAgIGlmICghY2FuRHJvcEFub255bW91c0Jsb2NrKG5l
eHRBbm9ueW1vdXNCbG9jaykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IHJldHVybiB0cnVlOwotfQotCiB2b2lkIFJlbmRlckJsb2NrOjpkcm9wQW5vbnltb3VzQm94Q2hp
bGQoUmVuZGVyVHJlZUJ1aWxkZXImIGJ1aWxkZXIsIFJlbmRlckJsb2NrJiBjaGlsZCkKIHsKICAg
ICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKQEAgLTUzMiw5MSArNDk2LDcg
QEAgdm9pZCBSZW5kZXJCbG9jazo6ZHJvcEFub255bW91c0JveENoaWxkKFJlbmRlclRyZWVCdWls
ZGVyJiBidWlsZGVyLCBSZW5kZXJCbG9jayYKIAogUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gUmVu
ZGVyQmxvY2s6OnRha2VDaGlsZChSZW5kZXJUcmVlQnVpbGRlciYgYnVpbGRlciwgUmVuZGVyT2Jq
ZWN0JiBvbGRDaGlsZCkKIHsKLSAgICAvLyBObyBuZWVkIHRvIHdhc3RlIHRpbWUgaW4gbWVyZ2lu
ZyBvciByZW1vdmluZyBlbXB0eSBhbm9ueW1vdXMgYmxvY2tzLgotICAgIC8vIFdlIGNhbiBqdXN0
IGJhaWwgb3V0IGlmIG91ciBkb2N1bWVudCBpcyBnZXR0aW5nIGRlc3Ryb3llZC4KLSAgICBpZiAo
cmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpCi0gICAgICAgIHJldHVybiBSZW5kZXJCb3g6OnRh
a2VDaGlsZChidWlsZGVyLCBvbGRDaGlsZCk7Ci0KLSAgICAvLyBJZiB0aGlzIGNoaWxkIGlzIGEg
YmxvY2ssIGFuZCBpZiBvdXIgcHJldmlvdXMgYW5kIG5leHQgc2libGluZ3MgYXJlIGJvdGggYW5v
bnltb3VzIGJsb2NrcwotICAgIC8vIHdpdGggaW5saW5lIGNvbnRlbnQsIHRoZW4gd2UgY2FuIGZv
bGQgdGhlIGlubGluZSBjb250ZW50IGJhY2sgdG9nZXRoZXIuCi0gICAgUmVuZGVyT2JqZWN0KiBw
cmV2ID0gb2xkQ2hpbGQucHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgUmVuZGVyT2JqZWN0KiBuZXh0
ID0gb2xkQ2hpbGQubmV4dFNpYmxpbmcoKTsKLSAgICBib29sIGNhbk1lcmdlQW5vbnltb3VzQmxv
Y2tzID0gY2FuTWVyZ2VDb250aWd1b3VzQW5vbnltb3VzQmxvY2tzKG9sZENoaWxkLCBwcmV2LCBu
ZXh0KTsKLSAgICBpZiAoY2FuTWVyZ2VBbm9ueW1vdXNCbG9ja3MgJiYgcHJldiAmJiBuZXh0KSB7
Ci0gICAgICAgIHByZXYtPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwotICAg
ICAgICBSZW5kZXJCbG9jayYgbmV4dEJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpuZXh0
KTsKLSAgICAgICAgUmVuZGVyQmxvY2smIHByZXZCbG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2Nr
PigqcHJldik7Ci0gICAgICAgCi0gICAgICAgIGlmIChwcmV2LT5jaGlsZHJlbklubGluZSgpICE9
IG5leHQtPmNoaWxkcmVuSW5saW5lKCkpIHsKLSAgICAgICAgICAgIFJlbmRlckJsb2NrJiBpbmxp
bmVDaGlsZHJlbkJsb2NrID0gcHJldi0+Y2hpbGRyZW5JbmxpbmUoKSA/IHByZXZCbG9jayA6IG5l
eHRCbG9jazsKLSAgICAgICAgICAgIFJlbmRlckJsb2NrJiBibG9ja0NoaWxkcmVuQmxvY2sgPSBw
cmV2LT5jaGlsZHJlbklubGluZSgpID8gbmV4dEJsb2NrIDogcHJldkJsb2NrOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICAvLyBQbGFjZSB0aGUgaW5saW5lIGNoaWxkcmVuIGJsb2NrIGluc2lk
ZSBvZiB0aGUgYmxvY2sgY2hpbGRyZW4gYmxvY2sgaW5zdGVhZCBvZiBkZWxldGluZyBpdC4KLSAg
ICAgICAgICAgIC8vIEluIG9yZGVyIHRvIHJldXNlIGl0LCB3ZSBoYXZlIHRvIHJlc2V0IGl0IHRv
IGp1c3QgYmUgYSBnZW5lcmljIGFub255bW91cyBibG9jay4gIE1ha2Ugc3VyZQotICAgICAgICAg
ICAgLy8gdG8gY2xlYXIgb3V0IGluaGVyaXRlZCBjb2x1bW4gcHJvcGVydGllcyBieSBqdXN0IG1h
a2luZyBhIG5ldyBzdHlsZSwgYW5kIHRvIGFsc28gY2xlYXIgdGhlCi0gICAgICAgICAgICAvLyBj
b2x1bW4gc3BhbiBmbGFnIGlmIGl0IGlzIHNldC4KLSAgICAgICAgICAgIEFTU0VSVCghaW5saW5l
Q2hpbGRyZW5CbG9jay5jb250aW51YXRpb24oKSk7Ci0gICAgICAgICAgICAvLyBDYWNoZSB0aGlz
IHZhbHVlIGFzIGl0IG1pZ2h0IGdldCBjaGFuZ2VkIGluIHNldFN0eWxlKCkgY2FsbC4KLSAgICAg
ICAgICAgIGlubGluZUNoaWxkcmVuQmxvY2suc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZUFu
b255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgQkxPQ0spKTsKLSAgICAgICAgICAgIGF1
dG8gYmxvY2tUb01vdmUgPSB0YWtlQ2hpbGRJbnRlcm5hbChpbmxpbmVDaGlsZHJlbkJsb2NrKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gTm93IGp1c3QgcHV0IHRoZSBpbmxpbmVDaGls
ZHJlbkJsb2NrIGluc2lkZSB0aGUgYmxvY2tDaGlsZHJlbkJsb2NrLgotICAgICAgICAgICAgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IHByZXYgPT0gJmlubGluZUNoaWxkcmVuQmxvY2sgPyBi
bG9ja0NoaWxkcmVuQmxvY2suZmlyc3RDaGlsZCgpIDogbnVsbHB0cjsKLSAgICAgICAgICAgIGJs
b2NrQ2hpbGRyZW5CbG9jay5pbnNlcnRDaGlsZEludGVybmFsKFdURk1vdmUoYmxvY2tUb01vdmUp
LCBiZWZvcmVDaGlsZCk7Ci0gICAgICAgICAgICBuZXh0LT5zZXROZWVkc0xheW91dEFuZFByZWZX
aWR0aHNSZWNhbGMoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gaW5saW5lQ2hpbGRy
ZW5CbG9jayBnb3QgcmVwYXJlbnRlZCB0byBibG9ja0NoaWxkcmVuQmxvY2ssIHNvIGl0IGlzIG5v
IGxvbmdlciBhIGNoaWxkCi0gICAgICAgICAgICAvLyBvZiAidGhpcyIuIHdlIG51bGwgb3V0IHBy
ZXYgb3IgbmV4dCBzbyB0aGF0IGlzIG5vdCB1c2VkIGxhdGVyIGluIHRoZSBmdW5jdGlvbi4KLSAg
ICAgICAgICAgIGlmICgmaW5saW5lQ2hpbGRyZW5CbG9jayA9PSAmcHJldkJsb2NrKQotICAgICAg
ICAgICAgICAgIHByZXYgPSBudWxscHRyOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIG5leHQgPSBudWxscHRyOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gVGFr
ZSBhbGwgdGhlIGNoaWxkcmVuIG91dCBvZiB0aGUgfG5leHR8IGJsb2NrIGFuZCBwdXQgdGhlbSBp
bgotICAgICAgICAgICAgLy8gdGhlIHxwcmV2fCBibG9jay4KLSAgICAgICAgICAgIG5leHRCbG9j
ay5tb3ZlQWxsQ2hpbGRyZW5JbmNsdWRpbmdGbG9hdHNUbyhidWlsZGVyLCBwcmV2QmxvY2ssIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpOb3JtYWxpemVBZnRlckluc2VydGlvbjo6Tm8pOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICAvLyBEZWxldGUgdGhlIG5vdy1lbXB0eSBibG9jaydzIGxpbmVz
IGFuZCBudWtlIGl0LgotICAgICAgICAgICAgbmV4dEJsb2NrLmRlbGV0ZUxpbmVzKCk7Ci0gICAg
ICAgICAgICBuZXh0QmxvY2sucmVtb3ZlRnJvbVBhcmVudEFuZERlc3Ryb3koYnVpbGRlcik7Ci0g
ICAgICAgICAgICBuZXh0ID0gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGludmFs
aWRhdGVMaW5lTGF5b3V0UGF0aCgpOwotCi0gICAgYXV0byB0YWtlbkNoaWxkID0gUmVuZGVyQm94
Ojp0YWtlQ2hpbGQoYnVpbGRlciwgb2xkQ2hpbGQpOwotCi0gICAgUmVuZGVyT2JqZWN0KiBjaGls
ZCA9IHByZXYgPyBwcmV2IDogbmV4dDsKLSAgICBpZiAoY2FuTWVyZ2VBbm9ueW1vdXNCbG9ja3Mg
JiYgY2hpbGQgJiYgIWNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSAmJiAhY2hpbGQtPm5leHRTaWJs
aW5nKCkgJiYgY2FuRHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSkgewotICAgICAgICAvLyBUaGUg
cmVtb3ZhbCBoYXMga25vY2tlZCB1cyBkb3duIHRvIGNvbnRhaW5pbmcgb25seSBhIHNpbmdsZSBh
bm9ueW1vdXMKLSAgICAgICAgLy8gYm94LiBXZSBjYW4gcHVsbCB0aGUgY29udGVudCByaWdodCBi
YWNrIHVwIGludG8gb3VyIGJveC4KLSAgICAgICAgZHJvcEFub255bW91c0JveENoaWxkKGJ1aWxk
ZXIsIGRvd25jYXN0PFJlbmRlckJsb2NrPigqY2hpbGQpKTsKLSAgICB9IGVsc2UgaWYgKCgocHJl
diAmJiBwcmV2LT5pc0Fub255bW91c0Jsb2NrKCkpIHx8IChuZXh0ICYmIG5leHQtPmlzQW5vbnlt
b3VzQmxvY2soKSkpICYmIGNhbkRyb3BBbm9ueW1vdXNCbG9ja0NoaWxkKCkpIHsKLSAgICAgICAg
Ly8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSByZW1vdmFsIGhhcyBrbm9ja2VkIHVzIGRvd24gdG8g
YSBzaW5nbGUgYW5vbnltb3VzCi0gICAgICAgIC8vIGJsb2NrIHdpdGggZmxvYXRpbmcgc2libGlu
Z3MuCi0gICAgICAgIFJlbmRlckJsb2NrJiBhbm9uQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9j
az4oKHByZXYgJiYgcHJldi0+aXNBbm9ueW1vdXNCbG9jaygpKSA/ICpwcmV2IDogKm5leHQpOwot
ICAgICAgICBpZiAoY2FuRHJvcEFub255bW91c0Jsb2NrKGFub25CbG9jaykpIHsKLSAgICAgICAg
ICAgIGJvb2wgZHJvcEFub255bW91c0Jsb2NrID0gdHJ1ZTsKLSAgICAgICAgICAgIGZvciAoYXV0
byYgc2libGluZyA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlck9iamVjdD4oKnRoaXMpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCZzaWJsaW5nID09ICZhbm9uQmxvY2spCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmICghc2libGluZy5pc0Zsb2F0aW5nKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgZHJvcEFub255bW91c0Jsb2NrID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGlmIChkcm9wQW5vbnltb3VzQmxvY2spCi0gICAgICAgICAgICAgICAgZHJv
cEFub255bW91c0JveENoaWxkKGJ1aWxkZXIsIGFub25CbG9jayk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBpZiAoIWZpcnN0Q2hpbGQoKSkgewotICAgICAgICAvLyBJZiB0aGlzIHdhcyBvdXIg
bGFzdCBjaGlsZCBiZSBzdXJlIHRvIGNsZWFyIG91dCBvdXIgbGluZSBib3hlcy4KLSAgICAgICAg
aWYgKGNoaWxkcmVuSW5saW5lKCkpCi0gICAgICAgICAgICBkZWxldGVMaW5lcygpOwotICAgIH0K
LSAgICByZXR1cm4gdGFrZW5DaGlsZDsKKyAgICByZXR1cm4gYnVpbGRlci50YWtlQ2hpbGRGcm9t
UmVuZGVyQmxvY2soKnRoaXMsIG9sZENoaWxkKTsKIH0KIAogYm9vbCBSZW5kZXJCbG9jazo6Y2hp
bGRyZW5QcmV2ZW50U2VsZkNvbGxhcHNpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaAppbmRleCBjM2Y1NDU5YzBkNjNmY2FiNjY4ZjJjMDcxMmE2NDZjODZhZTNm
NWMyLi44NjM5NmM5MmE0MzA5YmRlZDliYmM1ZTc5NjQ3M2JjZjA1ZDFhODNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMzk3LDYgKzM5Nyw4IEBAIHB1YmxpYzoK
ICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdFRvQ2xpcE91dEZyb21Cb3JkZXIoY29uc3QgTGF5b3V0
UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihS
ZW5kZXJUcmVlQnVpbGRlciYsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IG5ld0NoaWxkLCBSZW5k
ZXJPYmplY3QqIGJlZm9yZUNoaWxkKSBvdmVycmlkZTsKICAgICBib29sIGlzSW5saW5lQmxvY2tP
cklubGluZVRhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaXNJbmxpbmUoKSAmJiBpc1JlcGxh
Y2VkKCk7IH0KKyAgICAvLyBGSVhNRS1CTE9DS0ZMT1c6IFJlbW92ZSB2aXJ0dWFsaXphaW9uIHdo
ZW4gYWxsIGNhbGxlcnMgaGF2ZSBtb3ZlZCB0byBSZW5kZXJCbG9ja0Zsb3cKKyAgICB2aXJ0dWFs
IHZvaWQgbW92ZUFsbENoaWxkcmVuSW5jbHVkaW5nRmxvYXRzVG8oUmVuZGVyVHJlZUJ1aWxkZXIm
IGJ1aWxkZXIsIFJlbmRlckJsb2NrJiB0b0Jsb2NrLCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Tm9y
bWFsaXplQWZ0ZXJJbnNlcnRpb24gbm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pIHsgbW92ZUFsbENo
aWxkcmVuVG8oYnVpbGRlciwgJnRvQmxvY2ssIG5vcm1hbGl6ZUFmdGVySW5zZXJ0aW9uKTsgfQog
CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKCk7
CkBAIC00MzQsOSArNDM2LDYgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIC8vIEZJWE1FLUJMT0NLRkxPVzogUmVtb3ZlIHZp
cnR1YWxpemFpb24gd2hlbiBhbGwgY2FsbGVycyBoYXZlIG1vdmVkIHRvIFJlbmRlckJsb2NrRmxv
dwotICAgIHZpcnR1YWwgdm9pZCBtb3ZlQWxsQ2hpbGRyZW5JbmNsdWRpbmdGbG9hdHNUbyhSZW5k
ZXJUcmVlQnVpbGRlciYgYnVpbGRlciwgUmVuZGVyQmxvY2smIHRvQmxvY2ssIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpOb3JtYWxpemVBZnRlckluc2VydGlvbiBub3JtYWxpemVBZnRlckluc2VydGlv
bikgeyBtb3ZlQWxsQ2hpbGRyZW5UbyhidWlsZGVyLCAmdG9CbG9jaywgbm9ybWFsaXplQWZ0ZXJJ
bnNlcnRpb24pOyB9Ci0KICAgICBib29sIGlzU2VsZkNvbGxhcHNpbmdCbG9jaygpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZHJlblByZXZlbnRTZWxmQ29sbGFwc2luZygp
IGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5o
CmluZGV4IDUyMDc4Yjk2MjY1NWYxNzcyMDFhZTAyOTZmMmU2OTM1MDRiY2ExOWMuLjVlN2JjMDVk
MzNmMmJmMDQ0OWY2YzQzYTc3ODNjNmQ0M2EzMzkzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKQEAgLTQ2NCw3ICs0NjQsOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgLy8gQ2FsbGVkIHRvIGxheSBvdXQgdGhlIGxlZ2VuZCBmb3IgYSBmaWVsZHNldCBvciB0aGUg
cnVieSB0ZXh0IG9mIGEgcnVieSBydW4uIEFsc28gdXNlZCBieSBtdWx0aS1jb2x1bW4gbGF5b3V0
IHRvIGhhbmRsZQogICAgIC8vIHRoZSBmbG93IHRocmVhZCBjaGlsZC4KICAgICB2b2lkIGxheW91
dEV4Y2x1ZGVkQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuKSBvdmVycmlkZTsKLSAgICAK
KyAgICB2b2lkIG1vdmVBbGxDaGlsZHJlbkluY2x1ZGluZ0Zsb2F0c1RvKFJlbmRlclRyZWVCdWls
ZGVyJiwgUmVuZGVyQmxvY2smIHRvQmxvY2ssIFJlbmRlckJveE1vZGVsT2JqZWN0OjpOb3JtYWxp
emVBZnRlckluc2VydGlvbikgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAgYm9vbCByZWNvbXB1
dGVMb2dpY2FsV2lkdGhBbmRDb2x1bW5XaWR0aCgpOwogICAgIExheW91dFVuaXQgY29sdW1uR2Fw
KCkgY29uc3Q7CkBAIC00NzYsNyArNDc3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50SW5s
aW5lQ2hpbGRyZW4oUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHBhaW50RmxvYXRzKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCBw
cmVzZXJ2ZVBoYXNlID0gZmFsc2UpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBtb3ZlQWxsQ2hpbGRy
ZW5JbmNsdWRpbmdGbG9hdHNUbyhSZW5kZXJUcmVlQnVpbGRlciYsIFJlbmRlckJsb2NrJiB0b0Js
b2NrLCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Tm9ybWFsaXplQWZ0ZXJJbnNlcnRpb24pIG92ZXJy
aWRlOwogICAgIHZvaWQgcmVwYWludE92ZXJoYW5naW5nRmxvYXRzKGJvb2wgcGFpbnRBbGxEZXNj
ZW5kYW50cykgZmluYWw7CiAgICAgdm9pZCBjbGlwT3V0RmxvYXRpbmdPYmplY3RzKFJlbmRlckJs
b2NrJiwgY29uc3QgUGFpbnRJbmZvKiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRT
aXplJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGI1ZmFmZGRmNjBmYjFjN2M1MTM4
YmRiZDM2NjgyYzFmMmY3M2Y0YjUuLmFkYWY2MzNhZTRiZDI1OTNkZjQzYjRhMDU1ZTA1OGNlZjA5
MmM2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyLmNwcApAQCAtNDg1LDYgKzQ4NSwxMSBAQCBSZW5kZXJQdHI8UmVu
ZGVyT2JqZWN0PiBSZW5kZXJUcmVlQnVpbGRlcjo6dGFrZUNoaWxkRnJvbVJlbmRlclJ1YnlSdW4o
UmVuZGVyUnVieQogICAgIHJldHVybiBydWJ5QnVpbGRlcigpLnRha2VDaGlsZChwYXJlbnQsIGNo
aWxkKTsKIH0KIAorUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gUmVuZGVyVHJlZUJ1aWxkZXI6OnRh
a2VDaGlsZEZyb21SZW5kZXJCbG9jayhSZW5kZXJCbG9jayYgcGFyZW50LCBSZW5kZXJPYmplY3Qm
IG9sZENoaWxkKQoreworICAgIHJldHVybiBibG9ja0J1aWxkZXIoKS50YWtlQ2hpbGQocGFyZW50
LCBvbGRDaGlsZCk7Cit9CisKIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OnVwZGF0ZUFmdGVyRGVz
Y2VuZGFudHMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiB7CiAgICAgaWYgKGlzPFJlbmRlckJs
b2NrPihyZW5kZXJlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlci5oCmluZGV4IGUxMTk2NjRjYTM0MjE0ZTg1NWJlOGMwODI5
Zjk1OTJlNjg0ZWNmMzkuLmRlYjRkN2FlNzQ5ZmNiMDMwMWRhNTc0NzZkZGQ1N2U2ZDk4OGNjNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlQnVpbGRlci5oCkBAIC03Niw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJQdHI8UmVu
ZGVyT2JqZWN0PiB0YWtlQ2hpbGRGcm9tUmVuZGVyUnVieUFzSW5saW5lKFJlbmRlclJ1YnlBc0lu
bGluZSYgcGFyZW50LCBSZW5kZXJPYmplY3QmIGNoaWxkKTsKICAgICBSZW5kZXJQdHI8UmVuZGVy
T2JqZWN0PiB0YWtlQ2hpbGRGcm9tUmVuZGVyUnVieUFzQmxvY2soUmVuZGVyUnVieUFzQmxvY2sm
IHBhcmVudCwgUmVuZGVyT2JqZWN0JiBjaGlsZCk7CiAgICAgUmVuZGVyUHRyPFJlbmRlck9iamVj
dD4gdGFrZUNoaWxkRnJvbVJlbmRlclJ1YnlSdW4oUmVuZGVyUnVieVJ1biYgcGFyZW50LCBSZW5k
ZXJPYmplY3QmIGNoaWxkKTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiB0YWtlQ2hpbGRG
cm9tUmVuZGVyQmxvY2soUmVuZGVyQmxvY2smIHBhcmVudCwgUmVuZGVyT2JqZWN0JiBvbGRDaGls
ZCk7CiAKICAgICBib29sIGNoaWxkUmVxdWlyZXNUYWJsZShjb25zdCBSZW5kZXJFbGVtZW50JiBw
YXJlbnQsIGNvbnN0IFJlbmRlck9iamVjdCYgY2hpbGQpOwogICAgIHZvaWQgbWFrZUNoaWxkcmVu
Tm9uSW5saW5lKFJlbmRlckJsb2NrJiBwYXJlbnQsIFJlbmRlck9iamVjdCogaW5zZXJ0aW9uUG9p
bnQgPSBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckJsb2NrLmNwcAppbmRleCA3NmNhY2YwMTdiZmRh
ZjQ1ZjgxYWZkNDg5OTJmZmFhNmViZTA3ZGQyLi41MDhlNmY2YWQwODJiMWU3NzJkNTk3ZTI4MzA1
NjYxNmRmMTQ0MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwCkBAIC0zNSw2ICszNSw0MiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBib29sIGNhbkRyb3BBbm9ueW1vdXNC
bG9jayhjb25zdCBSZW5kZXJCbG9jayYgYW5vbnltb3VzQmxvY2spCit7CisgICAgaWYgKGFub255
bW91c0Jsb2NrLmJlaW5nRGVzdHJveWVkKCkgfHwgYW5vbnltb3VzQmxvY2suY29udGludWF0aW9u
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYW5vbnltb3VzQmxvY2suaXNSdWJ5
UnVuKCkgfHwgYW5vbnltb3VzQmxvY2suaXNSdWJ5QmFzZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGNhbk1lcmdlQ29udGlndW91
c0Fub255bW91c0Jsb2NrcyhSZW5kZXJPYmplY3QmIG9sZENoaWxkLCBSZW5kZXJPYmplY3QqIHBy
ZXZpb3VzLCBSZW5kZXJPYmplY3QqIG5leHQpCit7CisgICAgQVNTRVJUKCFvbGRDaGlsZC5yZW5k
ZXJUcmVlQmVpbmdEZXN0cm95ZWQoKSk7CisKKyAgICBpZiAob2xkQ2hpbGQuaXNJbmxpbmUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzPFJlbmRlckJveE1vZGVsT2JqZWN0
PihvbGRDaGlsZCkgJiYgZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KG9sZENoaWxkKS5j
b250aW51YXRpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHByZXZpb3Vz
KSB7CisgICAgICAgIGlmICghcHJldmlvdXMtPmlzQW5vbnltb3VzQmxvY2soKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgUmVuZGVyQmxvY2smIHByZXZpb3VzQW5vbnltb3Vz
QmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKnByZXZpb3VzKTsKKyAgICAgICAgaWYgKCFj
YW5Ecm9wQW5vbnltb3VzQmxvY2socHJldmlvdXNBbm9ueW1vdXNCbG9jaykpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChuZXh0KSB7CisgICAgICAgIGlmICghbmV4
dC0+aXNBbm9ueW1vdXNCbG9jaygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBSZW5kZXJCbG9jayYgbmV4dEFub255bW91c0Jsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+
KCpuZXh0KTsKKyAgICAgICAgaWYgKCFjYW5Ecm9wQW5vbnltb3VzQmxvY2sobmV4dEFub255bW91
c0Jsb2NrKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIHN0YXRpYyBSZW5kZXJCbG9jayogY29udGludWF0aW9uQmVmb3JlKFJlbmRlckJs
b2NrJiBwYXJlbnQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiB7CiAgICAgaWYgKGJlZm9y
ZUNoaWxkICYmIGJlZm9yZUNoaWxkLT5wYXJlbnQoKSA9PSAmcGFyZW50KQpAQCAtMjI4LDQgKzI2
NCw5MyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpCbG9jazo6cmVtb3ZlTGVmdG92ZXJBbm9u
eW1vdXNCbG9jayhSZW5kZXJCbG9jayYgYW5vbnltbwogICAgIC8vIGFub255bW91c0Jsb2NrIGlz
IGRlYWQgaGVyZS4KIH0KIAorUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gUmVuZGVyVHJlZUJ1aWxk
ZXI6OkJsb2NrOjp0YWtlQ2hpbGQoUmVuZGVyQmxvY2smIHBhcmVudCwgUmVuZGVyT2JqZWN0JiBv
bGRDaGlsZCkKK3sKKyAgICAvLyBObyBuZWVkIHRvIHdhc3RlIHRpbWUgaW4gbWVyZ2luZyBvciBy
ZW1vdmluZyBlbXB0eSBhbm9ueW1vdXMgYmxvY2tzLgorICAgIC8vIFdlIGNhbiBqdXN0IGJhaWwg
b3V0IGlmIG91ciBkb2N1bWVudCBpcyBnZXR0aW5nIGRlc3Ryb3llZC4KKyAgICBpZiAocGFyZW50
LnJlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgpKQorICAgICAgICByZXR1cm4gcGFyZW50LlJlbmRl
ckJveDo6dGFrZUNoaWxkKG1fYnVpbGRlciwgb2xkQ2hpbGQpOworCisgICAgLy8gSWYgdGhpcyBj
aGlsZCBpcyBhIGJsb2NrLCBhbmQgaWYgb3VyIHByZXZpb3VzIGFuZCBuZXh0IHNpYmxpbmdzIGFy
ZSBib3RoIGFub255bW91cyBibG9ja3MKKyAgICAvLyB3aXRoIGlubGluZSBjb250ZW50LCB0aGVu
IHdlIGNhbiBmb2xkIHRoZSBpbmxpbmUgY29udGVudCBiYWNrIHRvZ2V0aGVyLgorICAgIFJlbmRl
ck9iamVjdCogcHJldiA9IG9sZENoaWxkLnByZXZpb3VzU2libGluZygpOworICAgIFJlbmRlck9i
amVjdCogbmV4dCA9IG9sZENoaWxkLm5leHRTaWJsaW5nKCk7CisgICAgYm9vbCBjYW5NZXJnZUFu
b255bW91c0Jsb2NrcyA9IGNhbk1lcmdlQ29udGlndW91c0Fub255bW91c0Jsb2NrcyhvbGRDaGls
ZCwgcHJldiwgbmV4dCk7CisgICAgaWYgKGNhbk1lcmdlQW5vbnltb3VzQmxvY2tzICYmIHByZXYg
JiYgbmV4dCkgeworICAgICAgICBwcmV2LT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNh
bGMoKTsKKyAgICAgICAgUmVuZGVyQmxvY2smIG5leHRCbG9jayA9IGRvd25jYXN0PFJlbmRlckJs
b2NrPigqbmV4dCk7CisgICAgICAgIFJlbmRlckJsb2NrJiBwcmV2QmxvY2sgPSBkb3duY2FzdDxS
ZW5kZXJCbG9jaz4oKnByZXYpOworCisgICAgICAgIGlmIChwcmV2LT5jaGlsZHJlbklubGluZSgp
ICE9IG5leHQtPmNoaWxkcmVuSW5saW5lKCkpIHsKKyAgICAgICAgICAgIFJlbmRlckJsb2NrJiBp
bmxpbmVDaGlsZHJlbkJsb2NrID0gcHJldi0+Y2hpbGRyZW5JbmxpbmUoKSA/IHByZXZCbG9jayA6
IG5leHRCbG9jazsKKyAgICAgICAgICAgIFJlbmRlckJsb2NrJiBibG9ja0NoaWxkcmVuQmxvY2sg
PSBwcmV2LT5jaGlsZHJlbklubGluZSgpID8gbmV4dEJsb2NrIDogcHJldkJsb2NrOworCisgICAg
ICAgICAgICAvLyBQbGFjZSB0aGUgaW5saW5lIGNoaWxkcmVuIGJsb2NrIGluc2lkZSBvZiB0aGUg
YmxvY2sgY2hpbGRyZW4gYmxvY2sgaW5zdGVhZCBvZiBkZWxldGluZyBpdC4KKyAgICAgICAgICAg
IC8vIEluIG9yZGVyIHRvIHJldXNlIGl0LCB3ZSBoYXZlIHRvIHJlc2V0IGl0IHRvIGp1c3QgYmUg
YSBnZW5lcmljIGFub255bW91cyBibG9jay4gTWFrZSBzdXJlCisgICAgICAgICAgICAvLyB0byBj
bGVhciBvdXQgaW5oZXJpdGVkIGNvbHVtbiBwcm9wZXJ0aWVzIGJ5IGp1c3QgbWFraW5nIGEgbmV3
IHN0eWxlLCBhbmQgdG8gYWxzbyBjbGVhciB0aGUKKyAgICAgICAgICAgIC8vIGNvbHVtbiBzcGFu
IGZsYWcgaWYgaXQgaXMgc2V0LgorICAgICAgICAgICAgQVNTRVJUKCFpbmxpbmVDaGlsZHJlbkJs
b2NrLmNvbnRpbnVhdGlvbigpKTsKKyAgICAgICAgICAgIC8vIENhY2hlIHRoaXMgdmFsdWUgYXMg
aXQgbWlnaHQgZ2V0IGNoYW5nZWQgaW4gc2V0U3R5bGUoKSBjYWxsLgorICAgICAgICAgICAgaW5s
aW5lQ2hpbGRyZW5CbG9jay5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5
bGVXaXRoRGlzcGxheShwYXJlbnQuc3R5bGUoKSwgQkxPQ0spKTsKKyAgICAgICAgICAgIGF1dG8g
YmxvY2tUb01vdmUgPSBwYXJlbnQudGFrZUNoaWxkSW50ZXJuYWwoaW5saW5lQ2hpbGRyZW5CbG9j
ayk7CisKKyAgICAgICAgICAgIC8vIE5vdyBqdXN0IHB1dCB0aGUgaW5saW5lQ2hpbGRyZW5CbG9j
ayBpbnNpZGUgdGhlIGJsb2NrQ2hpbGRyZW5CbG9jay4KKyAgICAgICAgICAgIFJlbmRlck9iamVj
dCogYmVmb3JlQ2hpbGQgPSBwcmV2ID09ICZpbmxpbmVDaGlsZHJlbkJsb2NrID8gYmxvY2tDaGls
ZHJlbkJsb2NrLmZpcnN0Q2hpbGQoKSA6IG51bGxwdHI7CisgICAgICAgICAgICBibG9ja0NoaWxk
cmVuQmxvY2suaW5zZXJ0Q2hpbGRJbnRlcm5hbChXVEZNb3ZlKGJsb2NrVG9Nb3ZlKSwgYmVmb3Jl
Q2hpbGQpOworICAgICAgICAgICAgbmV4dC0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVj
YWxjKCk7CisKKyAgICAgICAgICAgIC8vIGlubGluZUNoaWxkcmVuQmxvY2sgZ290IHJlcGFyZW50
ZWQgdG8gYmxvY2tDaGlsZHJlbkJsb2NrLCBzbyBpdCBpcyBubyBsb25nZXIgYSBjaGlsZAorICAg
ICAgICAgICAgLy8gb2YgInRoaXMiLiB3ZSBudWxsIG91dCBwcmV2IG9yIG5leHQgc28gdGhhdCBp
cyBub3QgdXNlZCBsYXRlciBpbiB0aGUgZnVuY3Rpb24uCisgICAgICAgICAgICBpZiAoJmlubGlu
ZUNoaWxkcmVuQmxvY2sgPT0gJnByZXZCbG9jaykKKyAgICAgICAgICAgICAgICBwcmV2ID0gbnVs
bHB0cjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXh0ID0gbnVsbHB0cjsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRha2UgYWxsIHRoZSBjaGlsZHJlbiBv
dXQgb2YgdGhlIHxuZXh0fCBibG9jayBhbmQgcHV0IHRoZW0gaW4KKyAgICAgICAgICAgIC8vIHRo
ZSB8cHJldnwgYmxvY2suCisgICAgICAgICAgICBuZXh0QmxvY2subW92ZUFsbENoaWxkcmVuSW5j
bHVkaW5nRmxvYXRzVG8obV9idWlsZGVyLCBwcmV2QmxvY2ssIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpOb3JtYWxpemVBZnRlckluc2VydGlvbjo6Tm8pOworCisgICAgICAgICAgICAvLyBEZWxldGUg
dGhlIG5vdy1lbXB0eSBibG9jaydzIGxpbmVzIGFuZCBudWtlIGl0LgorICAgICAgICAgICAgbmV4
dEJsb2NrLmRlbGV0ZUxpbmVzKCk7CisgICAgICAgICAgICBuZXh0QmxvY2sucmVtb3ZlRnJvbVBh
cmVudEFuZERlc3Ryb3kobV9idWlsZGVyKTsKKyAgICAgICAgICAgIG5leHQgPSBudWxscHRyOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcGFyZW50LmludmFsaWRhdGVMaW5lTGF5b3V0UGF0aCgp
OworCisgICAgYXV0byB0YWtlbkNoaWxkID0gcGFyZW50LlJlbmRlckJveDo6dGFrZUNoaWxkKG1f
YnVpbGRlciwgb2xkQ2hpbGQpOworCisgICAgUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHByZXYgPyBw
cmV2IDogbmV4dDsKKyAgICBpZiAoY2FuTWVyZ2VBbm9ueW1vdXNCbG9ja3MgJiYgY2hpbGQgJiYg
IWNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSAmJiAhY2hpbGQtPm5leHRTaWJsaW5nKCkgJiYgcGFy
ZW50LmNhbkRyb3BBbm9ueW1vdXNCbG9ja0NoaWxkKCkpIHsKKyAgICAgICAgLy8gVGhlIHJlbW92
YWwgaGFzIGtub2NrZWQgdXMgZG93biB0byBjb250YWluaW5nIG9ubHkgYSBzaW5nbGUgYW5vbnlt
b3VzCisgICAgICAgIC8vIGJveC4gV2UgY2FuIHB1bGwgdGhlIGNvbnRlbnQgcmlnaHQgYmFjayB1
cCBpbnRvIG91ciBib3guCisgICAgICAgIHBhcmVudC5kcm9wQW5vbnltb3VzQm94Q2hpbGQobV9i
dWlsZGVyLCBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKmNoaWxkKSk7CisgICAgfSBlbHNlIGlmICgo
KHByZXYgJiYgcHJldi0+aXNBbm9ueW1vdXNCbG9jaygpKSB8fCAobmV4dCAmJiBuZXh0LT5pc0Fu
b255bW91c0Jsb2NrKCkpKSAmJiBwYXJlbnQuY2FuRHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSkg
eworICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHJlbW92YWwgaGFzIGtub2NrZWQg
dXMgZG93biB0byBhIHNpbmdsZSBhbm9ueW1vdXMKKyAgICAgICAgLy8gYmxvY2sgd2l0aCBmbG9h
dGluZyBzaWJsaW5ncy4KKyAgICAgICAgUmVuZGVyQmxvY2smIGFub25CbG9jayA9IGRvd25jYXN0
PFJlbmRlckJsb2NrPigocHJldiAmJiBwcmV2LT5pc0Fub255bW91c0Jsb2NrKCkpID8gKnByZXYg
OiAqbmV4dCk7CisgICAgICAgIGlmIChjYW5Ecm9wQW5vbnltb3VzQmxvY2soYW5vbkJsb2NrKSkg
eworICAgICAgICAgICAgYm9vbCBkcm9wQW5vbnltb3VzQmxvY2sgPSB0cnVlOworICAgICAgICAg
ICAgZm9yIChhdXRvJiBzaWJsaW5nIDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyT2JqZWN0PihwYXJl
bnQpKSB7CisgICAgICAgICAgICAgICAgaWYgKCZzaWJsaW5nID09ICZhbm9uQmxvY2spCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGlmICghc2libGluZy5p
c0Zsb2F0aW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZHJvcEFub255bW91c0Jsb2NrID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkcm9wQW5vbnltb3VzQmxvY2spCisgICAgICAg
ICAgICAgICAgcGFyZW50LmRyb3BBbm9ueW1vdXNCb3hDaGlsZChtX2J1aWxkZXIsIGFub25CbG9j
ayk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXBhcmVudC5maXJzdENoaWxkKCkpIHsK
KyAgICAgICAgLy8gSWYgdGhpcyB3YXMgb3VyIGxhc3QgY2hpbGQgYmUgc3VyZSB0byBjbGVhciBv
dXQgb3VyIGxpbmUgYm94ZXMuCisgICAgICAgIGlmIChwYXJlbnQuY2hpbGRyZW5JbmxpbmUoKSkK
KyAgICAgICAgICAgIHBhcmVudC5kZWxldGVMaW5lcygpOworICAgIH0KKyAgICByZXR1cm4gdGFr
ZW5DaGlsZDsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckJsb2NrLmgKaW5kZXggZmM0YWQ3MGRmNmM5YzA5
YzBiNmE4ZTcyMmU5YzI4NGE3ZmIzYTI0ZC4uNzU4YWM3YzkyZjcyNzNiYThlNjMzOWJmMzg4NjEw
MzZiYmM0MDU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oCkBAIC0zNiw2ICszNiw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGluc2VydENoaWxkKFJlbmRlckJsb2NrJiBwYXJlbnQsIFJlbmRlclB0cjxS
ZW5kZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKTsKICAgICB2b2lk
IGluc2VydENoaWxkSWdub3JpbmdDb250aW51YXRpb24oUmVuZGVyQmxvY2smIHBhcmVudCwgUmVu
ZGVyUHRyPFJlbmRlck9iamVjdD4gY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOwog
CisgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gdGFrZUNoaWxkKFJlbmRlckJsb2NrJiBwYXJl
bnQsIFJlbmRlck9iamVjdCYgb2xkQ2hpbGQpOworCiAgICAgdm9pZCBjaGlsZEJlY2FtZU5vbklu
bGluZShSZW5kZXJCbG9jayYgcGFyZW50LCBSZW5kZXJFbGVtZW50JiBjaGlsZCk7CiAKIHByaXZh
dGU6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>