<?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>124390</bug_id>
          
          <creation_ts>2013-11-14 18:19:13 -0800</creation_ts>
          <short_desc>Web Inspector: DOM.performSearch should accept a list of context nodes</short_desc>
          <delta_ts>2013-11-15 14:06:06 -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>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Alexandru Chiculita">achicu</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>rakuco</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>950920</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-11-14 18:19:13 -0800</bug_when>
    <thetext>DOM.performSearch is currently searching through all the documents in a frame tree. However, the new inspector needs to search just through the current open document.

Add a new parameter that can limit the search just to the current frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950921</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-11-14 18:19:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/15476369&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950926</commentid>
    <comment_count>2</comment_count>
      <attachid>217004</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-11-14 18:30:42 -0800</bug_when>
    <thetext>Created attachment 217004
Patch V1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951123</commentid>
    <comment_count>3</comment_count>
      <attachid>217004</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-11-15 10:55:27 -0800</bug_when>
    <thetext>Comment on attachment 217004
Patch V1

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

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:888
&gt;      // 2) There is no need to push all search results to the front-end at a time, pushing next / previous result
&gt;      //    is sufficient.

You can remove this comment. It is not true anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951176</commentid>
    <comment_count>4</comment_count>
      <attachid>217076</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-11-15 13:33:28 -0800</bug_when>
    <thetext>Created attachment 217076
Patch for landing

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951198</commentid>
    <comment_count>5</comment_count>
      <attachid>217076</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-15 14:06:01 -0800</bug_when>
    <thetext>Comment on attachment 217076
Patch for landing

Clearing flags on attachment: 217076

Committed r159357: &lt;http://trac.webkit.org/changeset/159357&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951199</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-15 14:06:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217004</attachid>
            <date>2013-11-14 18:30:42 -0800</date>
            <delta_ts>2013-11-15 13:33:28 -0800</delta_ts>
            <desc>Patch V1</desc>
            <filename>bug124390.v1.patch</filename>
            <type>text/plain</type>
            <size>52777</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ZmQxYTQxLi4wYjE0ZWRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTMtMTEt
MTQgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IERPTS5wZXJmb3JtU2VhcmNoIHNob3VsZCBhY2NlcHQgYSBsaXN0IG9mIGNv
bnRleHQgbm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNDM5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIG5ldyBpbnNwZWN0b3ItcHJvdG9jb2wgdGVzdHMgdG8gY2hlY2sgZm9yIHRoZSBE
T00ucGVyZm9ybVNlYXJjaCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgQWxzbywgcG9ydGVkIGFu
IGV4aXN0aW5nIHRlc3QgZnJvbSB0aGUgb2xkICJpbnNwZWN0b3IiIGZvcm1hdC4KKworICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9JbnNwZWN0b3JET01M
aXN0ZW5lci5qczogQWRkZWQgYm9pbGVycGxhdGUgY29kZSB0aGF0CisgICAgICAgIGNhbiBiZSB1
c2VkIHRvIHRyYWNrIG5vZGUgaWRzIGFuZCBjbGFzcyBuYW1lcy4KKyAgICAgICAgKGNyZWF0ZURP
TUxpc3RlbmVyLmNyZWF0ZU5vZGVBdHRyaWJ1dGVzTWFwKToKKyAgICAgICAgKGNyZWF0ZURPTUxp
c3RlbmVyLmNvbGxlY3ROb2RlKToKKyAgICAgICAgKGNyZWF0ZURPTUxpc3RlbmVyLm9uU2V0Q2hp
bGROb2Rlcyk6CisgICAgICAgIChjcmVhdGVET01MaXN0ZW5lci5vbkNoaWxkTm9kZVJlbW92ZWQp
OgorICAgICAgICAoY3JlYXRlRE9NTGlzdGVuZXIub25DaGlsZE5vZGVJbnNlcnRlZCk6CisgICAg
ICAgIChjcmVhdGVET01MaXN0ZW5lci5yZXR1cm4uZ2V0Tm9kZUJ5SWQpOgorICAgICAgICAoY3Jl
YXRlRE9NTGlzdGVuZXIucmV0dXJuLmdldE5vZGVJZGVudGlmaWVyKToKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvSW5zcGVjdG9yVGVzdC5qczoKKyAg
ICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoTWVzc2FnZUFzeW5jKTogQWRkZWQg
YSB3YXkgdG8gY2F0Y2ggYWxsIHRoZSBtZXNzYWdlcyByZWNlaXZlZCBpbiB0aGUgaW5zcGVjdG9y
LgorICAgICAgICBJdCBpcyB1c2VmdWwgZm9yIGRlYnVnZ2luZyB0aGUgdGVzdCBmaWxlLgorICAg
ICAgICAoSW5zcGVjdG9yVGVzdC5hZGRFdmVudExpc3RlbmVyKTogSGVscGVyIG1ldGhvZCB0byBy
ZWdpc3RlciBtdWx0aXBsZSBoYW5kbGVycyBmb3IgdGhlIHNhbWUgZXZlbnQuCisgICAgICAgICog
aW5zcGVjdG9yLXByb3RvY29sL2RvbS9kb20tc2VhcmNoLWNyYXNoLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2RvbS9kb20tc2VhcmNoLWNyYXNoLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9kb20vZG9tLXNlYXJjaC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9kb20vZG9t
LXNlYXJjaC13aXRoLWNvbnRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3ItcHJvdG9jb2wvZG9tL2RvbS1zZWFyY2gtd2l0aC1jb250ZXh0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9kb20vZG9tLXNlYXJjaC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3Jlc291cmNlcy9kb20tc2VhcmNoLWNy
YXNoLWlmcmFtZS5odG1sOiBDbG9uZWQgZnJvbSBpbnNwZWN0b3IvZG9tL3Jlc291cmNlcy9kb20t
c2VhcmNoLWNyYXNoLWlmcmFtZS5odG1sCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2Rv
bS9yZXNvdXJjZXMvZG9tLXNlYXJjaC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5z
cGVjdG9yLXByb3RvY29sL2RvbS9yZXNvdXJjZXMvZG9tLXNlYXJjaC1xdWVyaWVzLmpzOiBBZGRl
ZC4KKwogMjAxMy0xMS0xMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgZmFzdC9pbWFnZXMvcGRmLWFzLWltYWdlLWNyb3AtYm94Lmh0bWwgdG8g
dGhlIHBpbGUgb2YgdGlueS1jb2xvci1taXNtYXRjaCB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9JbnNwZWN0b3JE
T01MaXN0ZW5lci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29s
L3Jlc291cmNlcy9JbnNwZWN0b3JET01MaXN0ZW5lci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40NGViMjE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcmVzb3VyY2VzL0luc3BlY3RvckRPTUxpc3RlbmVy
LmpzCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5
c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0
aW9uIGNyZWF0ZURPTUxpc3RlbmVyKCkKK3sKKyAgICB2YXIgbm9kZXNCeUlkID0ge307CisKKyAg
ICBJbnNwZWN0b3JUZXN0LmFkZEV2ZW50TGlzdGVuZXIoIkRPTS5zZXRDaGlsZE5vZGVzIiwgb25T
ZXRDaGlsZE5vZGVzKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFkZEV2ZW50TGlzdGVuZXIoIkRPTS5j
aGlsZE5vZGVSZW1vdmVkIiwgb25DaGlsZE5vZGVSZW1vdmVkKTsKKyAgICBJbnNwZWN0b3JUZXN0
LmFkZEV2ZW50TGlzdGVuZXIoIkRPTS5jaGlsZE5vZGVJbnNlcnRlZCIsIG9uQ2hpbGROb2RlSW5z
ZXJ0ZWQpOworCisgICAgZnVuY3Rpb24gY3JlYXRlTm9kZUF0dHJpYnV0ZXNNYXAoYXR0cmlidXRl
cykKKyAgICB7CisgICAgICAgIHZhciBhdHRyaWJ1dGVzTWFwID0ge307CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkgKz0gMikKKyAgICAgICAgICAgIGF0
dHJpYnV0ZXNNYXBbYXR0cmlidXRlc1tpXV0gPSBhdHRyaWJ1dGVzW2kgKyAxXTsKKyAgICAgICAg
cmV0dXJuIGF0dHJpYnV0ZXNNYXA7CisgICAgfQorCisgICAgZnVuY3Rpb24gY29sbGVjdE5vZGUo
bm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxKQorICAgICAgICAg
ICAgbm9kZS5hdHRyaWJ1dGVzID0gY3JlYXRlTm9kZUF0dHJpYnV0ZXNNYXAobm9kZS5hdHRyaWJ1
dGVzKTsKKyAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pCisgICAgICAgICAgICBub2RlLmNoaWxk
cmVuLmZvckVhY2goY29sbGVjdE5vZGUpOworICAgICAgICBub2Rlc0J5SWRbbm9kZS5ub2RlSWRd
ID0gbm9kZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBub2RlVG9TdHJpbmcobm9kZSkKKyAgICB7
CisgICAgICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSkgeworICAgICAgICBjYXNlIDE6CisgICAg
ICAgICAgICB2YXIgbmFtZSA9IG5vZGUubG9jYWxOYW1lOworICAgICAgICAgICAgaWYgKG5vZGUu
YXR0cmlidXRlcy5pZCkKKyAgICAgICAgICAgICAgICBuYW1lICs9ICIjIiArIG5vZGUuYXR0cmli
dXRlcy5pZDsKKyAgICAgICAgICAgIGlmIChub2RlLmF0dHJpYnV0ZXNbImNsYXNzIl0pCisgICAg
ICAgICAgICAgICAgbmFtZSArPSBub2RlLmF0dHJpYnV0ZXNbImNsYXNzIl0uc3BsaXQoIiAiKS5t
YXAoZnVuY3Rpb24oY2xhc3NOYW1lKSB7IHJldHVybiAiLiIgKyBjbGFzc05hbWU7IH0pLmpvaW4o
IiIpOworICAgICAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAg
ICAgIHJldHVybiAiPHRleHQgbm9kZSAiICsgSlNPTi5zdHJpbmdpZnkobm9kZS5ub2RlVmFsdWUp
ICsgIj4iOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuICI8bm9kZVR5cGUg
IiArIG5vZGUubm9kZVR5cGUgKyAiPiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlv
biBvblNldENoaWxkTm9kZXMocmVzcG9uc2UpCisgICAgeworICAgICAgICByZXNwb25zZS5wYXJh
bXMubm9kZXMuZm9yRWFjaChjb2xsZWN0Tm9kZSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gb25D
aGlsZE5vZGVSZW1vdmVkKHJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgZGVsZXRlIG5vZGVzQnlJ
ZFtyZXNwb25zZS5wYXJhbXMubm9kZUlkXTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvbkNoaWxk
Tm9kZUluc2VydGVkKHJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgY29sbGVjdE5vZGUocmVzcG9u
c2UucGFyYW1zLm5vZGUpOworICAgIH0KKworICAgIHJldHVybiB7CisgICAgICAgIGdldE5vZGVC
eUlkOiBmdW5jdGlvbihpZCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5vZGVzQnlJ
ZFtpZF07CisgICAgICAgIH0sCisKKyAgICAgICAgZ2V0Tm9kZUlkZW50aWZpZXI6IGZ1bmN0aW9u
KG5vZGVJZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFub2RlSWQpCisgICAgICAgICAg
ICAgICAgcmV0dXJuICI8aW52YWxpZCBub2RlIGlkPiI7CisgICAgICAgICAgICB2YXIgbm9kZSA9
IG5vZGVzQnlJZFtub2RlSWRdOworICAgICAgICAgICAgcmV0dXJuIG5vZGUgPyBub2RlVG9TdHJp
bmcobm9kZSkgOiAiPHVua25vd24gbm9kZT4iOworICAgICAgICB9LAorCisgICAgICAgIGNvbGxl
Y3ROb2RlOiBjb2xsZWN0Tm9kZQorICAgIH07Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvSW5zcGVjdG9yVGVzdC5qcyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9JbnNw
ZWN0b3JUZXN0LmpzCmluZGV4IDhlMGZiNmUuLjNiZWVkNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9JbnNwZWN0b3JUZXN0
LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291
cmNlcy9JbnNwZWN0b3JUZXN0LmpzCkBAIC02MiwxMCArNjIsMzggQEAgSW5zcGVjdG9yRnJvbnRl
bmRBUEkuZGlzcGF0Y2hNZXNzYWdlQXN5bmMgPSBmdW5jdGlvbihtZXNzYWdlT2JqZWN0KQogICAg
ICAgICB2YXIgZXZlbnRIYW5kbGVyID0gSW5zcGVjdG9yVGVzdC5ldmVudEhhbmRsZXJbZXZlbnRO
YW1lXTsKICAgICAgICAgaWYgKGV2ZW50SGFuZGxlcikKICAgICAgICAgICAgIGV2ZW50SGFuZGxl
cihtZXNzYWdlT2JqZWN0KTsKKyAgICAgICAgZWxzZSBpZiAoSW5zcGVjdG9yVGVzdC5kZWZhdWx0
RXZlbnRIYW5kbGVyKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kZWZhdWx0RXZlbnRIYW5k
bGVyKG1lc3NhZ2VPYmplY3QpOwogICAgIH0KIH0KIAogLyoqCisqIFJlZ2lzdGVycyBhbiBldmVu
dCBoYW5kbGVyIGZvciBtZXNzYWdlcyBjb21pbmcgZnJvbSB0aGUgSW5zcGVjdG9yQmFja2VuZC4K
KyogSWYgbXVsdGlwbGUgY2FsbGJhY2tzIGFyZSByZWdpc3RlcmVkIGZvciB0aGUgc2FtZSBldmVu
dCwgaXQgd2lsbCBjaGFpbiB0aGUgZXhlY3V0aW9uLgorKiBAcGFyYW0ge3N0cmluZ30gZXZlbnQg
bmFtZQorKiBAcGFyYW0ge2Z1bmN0aW9ufSBoYW5kbGVyIHRvIGJlIGV4ZWN1dGVkCisqIEBwYXJh
bSB7Ym9vbGVhbn0gZXhlY3V0ZSB0aGUgaGFuZGxlciBiZWZvcmUgYWxsIG90aGVyIGhhbmRsZXJz
CisqLworSW5zcGVjdG9yVGVzdC5hZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnROYW1l
LCBjYWxsYmFjaywgY2FwdHVyZSkKK3sKKyAgICBpZiAoIUluc3BlY3RvclRlc3QuZXZlbnRIYW5k
bGVyW2V2ZW50TmFtZV0pIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmVudEhhbmRsZXJbZXZl
bnROYW1lXSA9IGNhbGxiYWNrOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHZhciBmaXJz
dEhhbmRsZXIgPSBJbnNwZWN0b3JUZXN0LmV2ZW50SGFuZGxlcltldmVudE5hbWVdOworICAgIHZh
ciBzZWNvbmRIYW5kbGVyID0gY2FsbGJhY2s7CisgICAgaWYgKGNhcHR1cmUpIHsKKyAgICAgICAg
Ly8gU3dhcCBmaXJzdEhhbmRsZXIgd2l0aCB0aGUgbmV3IGNhbGxiYWNrLCBzbyB0aGF0IHdlIGV4
ZWN1dGUgdGhlIGNhbGxiYWNrIGZpcnN0LgorICAgICAgICBbZmlyc3RIYW5kbGVyLCBzZWNvbmRI
YW5kbGVyXSA9IFtzZWNvbmRIYW5kbGVyLCBmaXJzdEhhbmRsZXJdOworICAgIH0KKyAgICBJbnNw
ZWN0b3JUZXN0LmV2ZW50SGFuZGxlcltldmVudE5hbWVdID0gZnVuY3Rpb24obWVzc2FnZU9iamVj
dCkKKyAgICB7CisgICAgICAgIGZpcnN0SGFuZGxlcihtZXNzYWdlT2JqZWN0KTsKKyAgICAgICAg
c2Vjb25kSGFuZGxlcihtZXNzYWdlT2JqZWN0KTsKKyAgICB9OworfQorCisvKioKICogTG9ncyBt
ZXNzYWdlIHRvIGRvY3VtZW50LgogKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZQogKi8KQEAgLTE2
Myw3ICsxOTEsNyBAQCBJbnNwZWN0b3JUZXN0LmltcG9ydEluc3BlY3RvclNjcmlwdHMgPSBmdW5j
dGlvbigpCiAgICAgICAgIEluc3BlY3RvclRlc3QuaW1wb3J0U2NyaXB0KCIuLi8uLi8uLi8uLi8u
Li9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS8iICsgaW5zcGVjdG9yU2NyaXB0
c1tpXSArICIuanMiKTsKIAogICAgIC8vIFRoZSBpbml0aWFsaXphdGlvbiBzaG91bGQgYmUgaW4g
c3luYyB3aXRoIFdlYkluc3BlY3Rvci5sb2FkZWQgaW4gTWFpbi5qcy4KLSAgICAvLyBGSVhNRTog
QXMgc29vbiBhcyB3ZSBjYW4gc3VwcG9ydCBhbGwgdGhlIG9ic2VydmVycyBhbmQgbWFuYWdlcnMg
d2Ugc2hvdWxkIHJlbW92ZSBVSSByZWxhdGVkIHRhc2tzIAorICAgIC8vIEZJWE1FOiBBcyBzb29u
IGFzIHdlIGNhbiBzdXBwb3J0IGFsbCB0aGUgb2JzZXJ2ZXJzIGFuZCBtYW5hZ2VycyB3ZSBzaG91
bGQgcmVtb3ZlIFVJIHJlbGF0ZWQgdGFza3MKICAgICAvLyBmcm9tIFdlYkluc3BlY3Rvci5sb2Fk
ZWQsIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgZnJvbSB0aGUgTGF5b3V0VGVzdHMuCiAKICAgICBJ
bnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyUGFnZURpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rvci5Q
YWdlT2JzZXJ2ZXIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29s
L2RvbS9kb20tc2VhcmNoLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci1wcm90b2NvbC9kb20vZG9tLXNlYXJjaC1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYzMWUxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20vZG9tLXNlYXJjaC1jcmFzaC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw1IEBACitUZXN0cyB0aGF0IGVsZW1lbnRzIHBhbmVsIHNlYXJjaCBpcyBu
b3QgY3Jhc2hpbmcgb24gZG9jdW1lbnRFbGVtZW50LWxlc3MgY2FzZXMuCisKKworUEFTUzogVGVz
dCBwYXNzZXMgaWYgaXQgZG9lc24ndCBjcmFzaC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2RvbS9kb20tc2VhcmNoLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2RvbS1zZWFyY2gtY3Jhc2guaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWE5MjVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9kb20tc2VhcmNoLWNyYXNoLmh0bWwKQEAg
LTAsMCArMSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9w
cm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJET00uZ2V0RG9jdW1lbnQiLCB7fSwgb25H
b3REb2N1bWVudCk7CisKKyAgICBmdW5jdGlvbiBvbkdvdERvY3VtZW50KG1lc3NhZ2UpIHsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja0ZvckVycm9yKG1lc3NhZ2UpOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJET00ucGVyZm9ybVNlYXJjaCIsIHtxdWVyeTogIkZvb0Jh
ciJ9LCBvblNlYXJjaENvbXBsZXRlZCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gb25TZWFyY2hD
b21wbGV0ZWQobWVzc2FnZSkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tGb3JF
cnJvcihtZXNzYWdlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBU1M6IFRlc3QgcGFz
c2VzIGlmIGl0IGRvZXNuJ3QgY3Jhc2guIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3Rz
IHRoYXQgZWxlbWVudHMgcGFuZWwgc2VhcmNoIGlzIG5vdCBjcmFzaGluZyBvbiBkb2N1bWVudEVs
ZW1lbnQtbGVzcyBjYXNlcy48L3A+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2RvbS1zZWFyY2gt
Y3Jhc2gtaWZyYW1lLmh0bWwiIG9ubG9hZD0icnVuVGVzdCgpIj48L2lmcmFtZT4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20v
ZG9tLXNlYXJjaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wv
ZG9tL2RvbS1zZWFyY2gtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjQwMWViZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3It
cHJvdG9jb2wvZG9tL2RvbS1zZWFyY2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTggQEAKK1Rl
c3RpbmcgRE9NLnBlcmZvcm1TZWFyY2ggd2l0aCBubyBwYXJlbnQgbm9kZSBpZHMuCisKKworPT09
IFF1ZXJ5OiAiYm9keSIgPT09CitDb3VudDogMgorYm9keS5tYWluLWZyYW1lCitib2R5Lmluc2lk
ZS1pZnJhbWUKKz09PSBRdWVyeTogIjxib2R5IiA9PT0KK0NvdW50OiAyCitib2R5Lm1haW4tZnJh
bWUKK2JvZHkuaW5zaWRlLWlmcmFtZQorPT09IFF1ZXJ5OiAiYm9keT4iID09PQorQ291bnQ6IDIK
K2JvZHkubWFpbi1mcmFtZQorYm9keS5pbnNpZGUtaWZyYW1lCis9PT0gUXVlcnk6ICI8Ym9keT4i
ID09PQorQ291bnQ6IDIKK2JvZHkubWFpbi1mcmFtZQorYm9keS5pbnNpZGUtaWZyYW1lCis9PT0g
UXVlcnk6ICJvbmxvYWQiID09PQorQ291bnQ6IDEKK2JvZHkubWFpbi1mcmFtZQorPT09IFF1ZXJ5
OiAicnVuVGVzdCgpIiA9PT0KK0NvdW50OiAxCitib2R5Lm1haW4tZnJhbWUKKz09PSBRdWVyeTog
IlwicnVuVGVzdCgpIiA9PT0KK0NvdW50OiAxCitib2R5Lm1haW4tZnJhbWUKKz09PSBRdWVyeTog
IlwicnVuVGVzdCgpXCIiID09PQorQ291bnQ6IDEKK2JvZHkubWFpbi1mcmFtZQorPT09IFF1ZXJ5
OiAicnVuVGVzdCgpXCIiID09PQorQ291bnQ6IDEKK2JvZHkubWFpbi1mcmFtZQorPT09IFF1ZXJ5
OiAiLmJvZHktaW5zaWRlLWlmcmFtZSIgPT09CitDb3VudDogMAorPT09IFF1ZXJ5OiAiKiIgPT09
CitDb3VudDogMTIKK2h0bWwKK2hlYWQKK3NjcmlwdAorc2NyaXB0Citib2R5Lm1haW4tZnJhbWUK
K3AKK2lmcmFtZQoraHRtbC5pbnNpZGUtaWZyYW1lCitoZWFkLmluc2lkZS1pZnJhbWUKK2JvZHku
aW5zaWRlLWlmcmFtZQorZGl2LmJhc2UxLmluc2lkZS1pZnJhbWUKK3AuaW5zaWRlLWlmcmFtZQor
PT09IFF1ZXJ5OiAiL2h0bWwvYm9keSIgPT09CitDb3VudDogMgorYm9keS5tYWluLWZyYW1lCiti
b2R5Lmluc2lkZS1pZnJhbWUKKz09PSBRdWVyeTogIi9odG1sL2JvZHkvQG9ubG9hZCIgPT09CitD
b3VudDogMQorYm9keS5tYWluLWZyYW1lCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci1wcm90b2NvbC9kb20vZG9tLXNlYXJjaC13aXRoLWNvbnRleHQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9kb20tc2VhcmNoLXdpdGgtY29udGV4
dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTllNDQz
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20v
ZG9tLXNlYXJjaC13aXRoLWNvbnRleHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1Rl
c3RpbmcgRE9NLnBlcmZvcm1TZWFyY2ggd2l0aCBwYXJlbnQgbm9kZSBpZHMuCisKKworPT09IFF1
ZXJ5OiAicCIgaW4gW10gPT09CitDb3VudDogMAorPT09IFF1ZXJ5OiAicCIgaW4gWy5iYXNlMV0g
PT09CitDb3VudDogMQorcC5iYXNlMS5tYWluLWZyYW1lCis9PT0gUXVlcnk6ICJwIiBpbiBbLmJh
c2UyXSA9PT0KK0NvdW50OiAxCitwLmJhc2UyLm1haW4tZnJhbWUKKz09PSBRdWVyeTogInAiIGlu
IFsuYmFzZTEsIC5iYXNlMl0gPT09CitDb3VudDogMgorcC5iYXNlMS5tYWluLWZyYW1lCitwLmJh
c2UyLm1haW4tZnJhbWUKKz09PSBRdWVyeTogInAiIGluIFtpZnJhbWVdID09PQorQ291bnQ6IDEK
K3AuaW5zaWRlLWlmcmFtZQorPT09IFF1ZXJ5OiAiLy9wIiBpbiBbLmJhc2UxXSA9PT0KK0NvdW50
OiAxCitwLmJhc2UxLm1haW4tZnJhbWUKKz09PSBRdWVyeTogIi8vZGl2IiBpbiBbLmJhc2UxXSA9
PT0KK0NvdW50OiAxCitkaXYuYmFzZTEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yLXByb3RvY29sL2RvbS9kb20tc2VhcmNoLXdpdGgtY29udGV4dC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9kb20tc2VhcmNoLXdpdGgtY29udGV4dC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlZDgzMjkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2RvbS1zZWFyY2gtd2l0aC1j
b250ZXh0Lmh0bWwKQEAgLTAsMCArMSwxMjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci1wcm90
b2NvbC9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgLy8gQ3JlYXRlIGEgRE9NIGxpc3RlbmVyIHRvIGNvbnZlcnQg
bm9kZUlkcyB0byB0YWcgbmFtZXMuCisgICAgSW5zcGVjdG9yVGVzdC5pbXBvcnRTY3JpcHQoIklu
c3BlY3RvckRPTUxpc3RlbmVyLmpzIik7CisgICAgdmFyIGRvbSA9IGNyZWF0ZURPTUxpc3RlbmVy
KCk7CisKKyAgICAvLyBDYWNoaW5nIHRoZSBvdXRwdXQgdG8gYXZvaWQgc2VhcmNoaW5nIHRocm91
Z2ggdGhlIGxvZy4KKyAgICB2YXIgb3V0cHV0ID0gW107CisgICAgdmFyIGRvY3VtZW50SWQ7Cisg
ICAgdmFyIGRvbVNlYXJjaFF1ZXJpZXMgPSBbCisgICAgICAgIHsKKyAgICAgICAgICAgIHF1ZXJ5
OiAicCIsCisgICAgICAgICAgICBub2RlczogW10KKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgcXVlcnk6ICJwIiwKKyAgICAgICAgICAgIG5vZGVzOiBbIi5iYXNlMSJdCisgICAg
ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHF1ZXJ5OiAicCIsCisgICAgICAgICAgICBu
b2RlczogWyIuYmFzZTIiXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBxdWVy
eTogInAiLAorICAgICAgICAgICAgbm9kZXM6IFsiLmJhc2UxIiwgIi5iYXNlMiJdCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHF1ZXJ5OiAicCIsCisgICAgICAgICAgICBub2Rl
czogWyJpZnJhbWUiXQorICAgICAgICB9LAorCisgICAgICAgIC8vIFhQYXRoIHNob3VsZCByZXR1
cm4ganVzdCB0aGUgY2hpbGRyZW4gb2YgdGhlIHNlbGVjdGVkIG5vZGVzLgorICAgICAgICB7Cisg
ICAgICAgICAgICBxdWVyeTogIi8vcCIsCisgICAgICAgICAgICBub2RlczogWyIuYmFzZTEiXQor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBxdWVyeTogIi8vZGl2IiwKKyAgICAg
ICAgICAgIG5vZGVzOiBbIi5iYXNlMSJdCisgICAgICAgIH0KKyAgICBdOworCisgICAgSW5zcGVj
dG9yVGVzdC5zZW5kQ29tbWFuZCgiRE9NLmdldERvY3VtZW50Iiwge30sIG9uR290RG9jdW1lbnQp
OworCisgICAgZnVuY3Rpb24gb25Hb3REb2N1bWVudChtZXNzYWdlKSB7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuY2hlY2tGb3JFcnJvcihtZXNzYWdlKTsKKyAgICAgICAgZG9tLmNvbGxlY3ROb2Rl
KG1lc3NhZ2UucmVzdWx0LnJvb3QpOworICAgICAgICBkb2N1bWVudElkID0gbWVzc2FnZS5yZXN1
bHQucm9vdC5ub2RlSWQ7CisgICAgICAgIHBlcmZvcm1TZWFyY2hlcyhkb21TZWFyY2hRdWVyaWVz
LCB0ZXN0RmluaXNoZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBlcmZvcm1TZWFyY2hlcyhs
aXN0LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIG5leHQoKSB7CisgICAgICAg
ICAgICBpZiAobGlzdC5sZW5ndGgpCisgICAgICAgICAgICAgICAgc2VhcmNoKGxpc3Quc2hpZnQo
KSwgbmV4dCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsK
KyAgICAgICAgfQorICAgICAgICBuZXh0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2VhcmNo
KHF1ZXJ5RGF0YSwgY2FsbGJhY2spCisgICAgeworICAgICAgICByZXNvbHZlU2VsZWN0b3JzKHF1
ZXJ5RGF0YS5ub2RlcywgZnVuY3Rpb24obm9kZUlkcykgeworICAgICAgICAgICAgb3V0cHV0LnB1
c2goIj09PSBRdWVyeTogIiArIEpTT04uc3RyaW5naWZ5KHF1ZXJ5RGF0YS5xdWVyeSkgKyAiIGlu
IFsiICsgcXVlcnlEYXRhLm5vZGVzLmpvaW4oIiwgIikgKyAiXSA9PT0iKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQoIkRPTS5wZXJmb3JtU2VhcmNoIiwge3F1ZXJ5OiBx
dWVyeURhdGEucXVlcnksIG5vZGVJZHM6IG5vZGVJZHN9LCBmdW5jdGlvbihtZXNzYWdlKSB7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja0ZvckVycm9yKG1lc3NhZ2UpOworICAg
ICAgICAgICAgICAgIHByaW50U2VhcmNoUmVzdWx0cyhtZXNzYWdlLnJlc3VsdCwgY2FsbGJhY2sp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJl
c29sdmVTZWxlY3RvcnMobm9kZXMsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dHMgPSBuZXcgQXJyYXkobm9kZXMubGVuZ3RoKTsKKyAgICAgICAgdmFyIHJlbWFpbmluZyA9IG5v
ZGVzLmxlbmd0aDsKKyAgICAgICAgaWYgKCFyZW1haW5pbmcpCisgICAgICAgICAgICByZXR1cm4g
Y2FsbGJhY2socmVzdWx0cyk7CisgICAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oc2VsZWN0
b3IsIGluZGV4KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJET00u
cXVlcnlTZWxlY3RvciIsIHtub2RlSWQ6IGRvY3VtZW50SWQsIHNlbGVjdG9yOiBzZWxlY3Rvcn0s
IGZ1bmN0aW9uKG1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNr
Rm9yRXJyb3IobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0c1tpbmRleF0gPSBtZXNz
YWdlLnJlc3VsdC5ub2RlSWQ7CisgICAgICAgICAgICAgICAgaWYgKC0tcmVtYWluaW5nIDw9IDAp
CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdHMpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHByaW50U2VhcmNoUmVzdWx0cyhy
ZXN1bHRzLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG91dHB1dC5wdXNoKCJDb3VudDogIiAr
IHJlc3VsdHMucmVzdWx0Q291bnQpOworICAgICAgICBpZiAoIXJlc3VsdHMucmVzdWx0Q291bnQp
CisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKKworICAgICAgICB2YXIgb3B0aW9ucyA9
IHsic2VhcmNoSWQiOiByZXN1bHRzLnNlYXJjaElkLCAiZnJvbUluZGV4IjogMCwgInRvSW5kZXgi
OiByZXN1bHRzLnJlc3VsdENvdW50fTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFu
ZCgiRE9NLmdldFNlYXJjaFJlc3VsdHMiLCBvcHRpb25zLCBmdW5jdGlvbihtZXNzYWdlKSB7Cisg
ICAgICAgICAgICBmb3IgKHZhciBub2RlSWQgb2YgbWVzc2FnZS5yZXN1bHQubm9kZUlkcykKKyAg
ICAgICAgICAgICAgICBvdXRwdXQucHVzaChkb20uZ2V0Tm9kZUlkZW50aWZpZXIobm9kZUlkKSk7
CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiB0ZXN0RmluaXNoZWQoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2cob3V0
cHV0LmpvaW4oIlxuIikpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwor
ICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiIGNs
YXNzPSJtYWluLWZyYW1lIj4KKyAgICA8cD5UZXN0aW5nIERPTS5wZXJmb3JtU2VhcmNoIHdpdGgg
cGFyZW50IG5vZGUgaWRzLjwvcD4KKworICAgIDxkaXYgY2xhc3M9ImJhc2UxIj4KKyAgICAgICAg
PHAgY2xhc3M9ImJhc2UxIG1haW4tZnJhbWUiPjwvcD4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYg
Y2xhc3M9ImJhc2UyIj4KKyAgICAgICAgPHAgY2xhc3M9ImJhc2UyIG1haW4tZnJhbWUiPjwvcD4K
KyAgICA8L2Rpdj4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvZG9tLXNlYXJjaC1pZnJh
bWUuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2RvbS1zZWFyY2guaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci1wcm90b2NvbC9kb20vZG9tLXNlYXJjaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjViMGNmZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2RvbS1zZWFyY2guaHRtbApAQCAtMCwwICsxLDcxIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4v
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIC8vIExvYWRp
bmcgdGhlIHF1ZXJpZXMgZnJvbSBleHRlcm5hbCBmaWxlIHRvIGF2b2lkIGhhdmluZyB0aGVtIHNo
b3cgdXAgaW4gdGhlIHJlc3VsdHMuCisgICAgSW5zcGVjdG9yVGVzdC5pbXBvcnRTY3JpcHQoIi4u
Ly4uLy4uLy4uL2luc3BlY3Rvci1wcm90b2NvbC9kb20vcmVzb3VyY2VzL2RvbS1zZWFyY2gtcXVl
cmllcy5qcyIpOworCisgICAgLy8gQ3JlYXRlIGEgRE9NIGxpc3RlbmVyIHRvIGNvbnZlcnQgbm9k
ZUlkcyB0byB0YWcgbmFtZXMuCisgICAgSW5zcGVjdG9yVGVzdC5pbXBvcnRTY3JpcHQoIkluc3Bl
Y3RvckRPTUxpc3RlbmVyLmpzIik7CisgICAgdmFyIGRvbSA9IGNyZWF0ZURPTUxpc3RlbmVyKCk7
CisKKyAgICAvLyBDYWNoaW5nIHRoZSBvdXRwdXQgdG8gYXZvaWQgc2VhcmNoaW5nIHRocm91Z2gg
dGhlIGxvZy4KKyAgICB2YXIgb3V0cHV0ID0gW107CisKKyAgICBJbnNwZWN0b3JUZXN0LnNlbmRD
b21tYW5kKCJET00uZ2V0RG9jdW1lbnQiLCB7fSwgb25Hb3REb2N1bWVudCk7CisKKyAgICBmdW5j
dGlvbiBvbkdvdERvY3VtZW50KG1lc3NhZ2UpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVj
a0ZvckVycm9yKG1lc3NhZ2UpOworICAgICAgICBkb20uY29sbGVjdE5vZGUobWVzc2FnZS5yZXN1
bHQucm9vdCk7CisgICAgICAgIHBlcmZvcm1TZWFyY2hlcyhkb21TZWFyY2hRdWVyaWVzLCB0ZXN0
RmluaXNoZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBlcmZvcm1TZWFyY2hlcyhsaXN0LCBj
YWxsYmFjaykKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIG5leHQoKSB7CisgICAgICAgICAgICBp
ZiAobGlzdC5sZW5ndGgpCisgICAgICAgICAgICAgICAgc2VhcmNoKGxpc3Quc2hpZnQoKSwgbmV4
dCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAg
ICAgfQorICAgICAgICBuZXh0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2VhcmNoKHF1ZXJ5
LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG91dHB1dC5wdXNoKCI9PT0gUXVlcnk6ICIgKyBK
U09OLnN0cmluZ2lmeShxdWVyeSkgKyAiID09PSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnNl
bmRDb21tYW5kKCJET00ucGVyZm9ybVNlYXJjaCIsIHtxdWVyeTogcXVlcnl9LCBmdW5jdGlvbiht
ZXNzYWdlKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrRm9yRXJyb3IobWVzc2Fn
ZSk7CisgICAgICAgICAgICBwcmludFNlYXJjaFJlc3VsdHMobWVzc2FnZS5yZXN1bHQsIGNhbGxi
YWNrKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJpbnRTZWFyY2hSZXN1
bHRzKHJlc3VsdHMsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgb3V0cHV0LnB1c2goIkNvdW50
OiAiICsgcmVzdWx0cy5yZXN1bHRDb3VudCk7CisgICAgICAgIGlmICghcmVzdWx0cy5yZXN1bHRD
b3VudCkKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOworCisgICAgICAgIHZhciBvcHRp
b25zID0geyJzZWFyY2hJZCI6IHJlc3VsdHMuc2VhcmNoSWQsICJmcm9tSW5kZXgiOiAwLCAidG9J
bmRleCI6IHJlc3VsdHMucmVzdWx0Q291bnR9OworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRD
b21tYW5kKCJET00uZ2V0U2VhcmNoUmVzdWx0cyIsIG9wdGlvbnMsIGZ1bmN0aW9uIG9uUmVzdWx0
c1JlY2VpdmVkKG1lc3NhZ2UpIHsKKyAgICAgICAgICAgIGZvciAodmFyIG5vZGVJZCBvZiBtZXNz
YWdlLnJlc3VsdC5ub2RlSWRzKQorICAgICAgICAgICAgICAgIG91dHB1dC5wdXNoKGRvbS5nZXRO
b2RlSWRlbnRpZmllcihub2RlSWQpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAg
IH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RGaW5pc2hlZCgpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZyhvdXRwdXQuam9pbigiXG4iKSk7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSIgY2xhc3M9Im1haW4tZnJhbWUiPgorICAgIDxwPlRlc3Rpbmcg
RE9NLnBlcmZvcm1TZWFyY2ggd2l0aCBubyBwYXJlbnQgbm9kZSBpZHMuPC9wPgorICAgIDxpZnJh
bWUgc3JjPSJyZXNvdXJjZXMvZG9tLXNlYXJjaC1pZnJhbWUuaHRtbCI+PC9pZnJhbWU+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wv
ZG9tL3Jlc291cmNlcy9kb20tc2VhcmNoLWNyYXNoLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2RvbS9yZXNvdXJjZXMvZG9tLXNlYXJjaC1jcmFzaC1pZnJhbWUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2Y3MWRlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9yZXNvdXJjZXMv
ZG9tLXNlYXJjaC1jcmFzaC1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxzY3JpcHQ+Citk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3ItcHJvdG9jb2wvZG9tL3Jlc291cmNlcy9kb20tc2VhcmNoLWlmcmFtZS5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9yZXNvdXJjZXMvZG9tLXNlYXJjaC1pZnJh
bWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjAzYzc2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9yZXNvdXJj
ZXMvZG9tLXNlYXJjaC1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sIGNsYXNzPSJp
bnNpZGUtaWZyYW1lIj4KKyAgICA8aGVhZCBjbGFzcz0iaW5zaWRlLWlmcmFtZSI+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IGNsYXNzPSJpbnNpZGUtaWZyYW1lIj4KKyAgICAgICAgPGRpdiBjbGFz
cz0iYmFzZTEgaW5zaWRlLWlmcmFtZSI+CisgICAgICAgICAgICA8cCBjbGFzcz0iaW5zaWRlLWlm
cmFtZSI+PC9wPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXBy
b3RvY29sL2RvbS9yZXNvdXJjZXMvZG9tLXNlYXJjaC1xdWVyaWVzLmpzIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2RvbS9yZXNvdXJjZXMvZG9tLXNlYXJjaC1xdWVyaWVzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxY2YzNWUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3Jlc291cmNlcy9kb20tc2Vh
cmNoLXF1ZXJpZXMuanMKQEAgLTAsMCArMSwyNSBAQAorLy8gSGF2aW5nIHRoZSBxdWVyaWVzIGlu
IGFuIGV4dGVybmFsIGZpbGUsIHNvIHRoYXQgRE9NIHNlYXJjaCB3aWxsIG5vdCBmaW5kIHRoZSBz
Y3JpcHQgd2hlbiBzZWFyY2hpbmcgZm9yIHZhbHVlcy4KKwordmFyIGRvbVNlYXJjaFF1ZXJpZXMg
PSBbCisgICAgImJvZHkiLAorICAgICI8Ym9keSIsCisgICAgImJvZHk+IiwKKyAgICAiPGJvZHk+
IiwKKworICAgIC8vIEF0dHJpYnV0ZSBuYW1lcworICAgICJvbmxvYWQiLAorCisgICAgLy8gQXR0
cmlidXRlIHZhbHVlcworICAgICJydW5UZXN0KCkiLAorICAgICJcInJ1blRlc3QoKSIsCisgICAg
IlwicnVuVGVzdCgpXCIiLAorICAgICJydW5UZXN0KClcIiIsCisKKyAgICAvLyBDU1Mgc2VsZWN0
b3JzCisgICAgIi5ib2R5LWluc2lkZS1pZnJhbWUiLAorICAgICIqIiwKKworICAgIC8vIFhQYXRo
IHF1ZXJ5CisgICAgIi9odG1sL2JvZHkiLAorICAgICIvaHRtbC9ib2R5L0BvbmxvYWQiLAorXTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGRmOGI3
YjcuLjczMWYzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNTY3LDYgKzE1NjcsNyBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCiAgICAgaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JO
b2RlRmluZGVyLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclBy
b2ZpbGVyQWdlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGNiZDg3MC4uNGUzNTAxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTExLTE0ICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNo
aWN1QGFkb2JlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBET00ucGVyZm9ybVNlYXJj
aCBzaG91bGQgYWNjZXB0IGEgbGlzdCBvZiBjb250ZXh0IG5vZGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzOTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHRyYWN0ZWQgdGhlIGNvZGUgaW4gSW5z
cGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2ggaW50byBpdHMgb3duIGhlbHBlciBjbGFzcwor
ICAgICAgICBjYWxsZWQgSW5zcGVjdG9yTm9kZUZpbmRlci4gQWxzbyBhZGRlZCBhIG5ldyBhcnJh
eSBwYXJhbWV0ZXIgY2FsbGVkICJub2RlSWRzIgorICAgICAgICB0aGF0IGNhbiBiZSB1c2VkIHRv
IGxpbWl0IHRoZSBzZWFyY2ggcmVzdWx0cyB0byBqdXN0IHBhcnRpYWwgc3VidHJlZXMuCisKKyAg
ICAgICAgVGVzdHM6IGluc3BlY3Rvci1wcm90b2NvbC9kb20vZG9tLXNlYXJjaC1jcmFzaC5odG1s
CisgICAgICAgICAgICAgICBpbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2RvbS1zZWFyY2gtd2l0aC1j
b250ZXh0Lmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci1wcm90b2NvbC9kb20vZG9tLXNl
YXJjaC5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6
CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFsbElu
T25lLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2gpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JOb2RlRmluZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzdHJpcENo
YXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTm9kZUZpbmRlcjo6SW5zcGVj
dG9yTm9kZUZpbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOb2RlRmluZGVyOjpw
ZXJmb3JtU2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5vZGVGaW5kZXI6OnNl
YXJjaFVzaW5nRE9NVHJlZVRyYXZlcnNhbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JO
b2RlRmluZGVyOjptYXRjaGVzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck5vZGVGaW5kZXI6Om1hdGNoZXNFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck5vZGVGaW5kZXI6OnNlYXJjaFVzaW5nWFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yTm9kZUZpbmRlcjo6c2VhcmNoVXNpbmdDU1NTZWxlY3RvcnMpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTm9kZUZpbmRlcjo6cmVzdWx0cyk6CisKIDIwMTMtMTEtMTEgIERhdmlkIEh5YXR0ICA8
aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgUmVuZGVyQmxvY2tSYXJlRGF0YSBiZSBp
biBhIGhhc2h0YWJsZSBpbnN0ZWFkIG9mIGJlaW5nIGEgbWVtYmVyIHZhcmlhYmxlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggYjFkYjkyOS4uNDVlYjljNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zODE1LDYgKzM4MTUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBcCisJU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVGaW5kZXIuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qCmluZGV4IDU0MTZiYzEuLmY0ZTI5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTc3NjQsNiArMTc3NjQs
MTQgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rvck92ZXJsYXkuY3BwIj4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0yMDg1Nyw2ICsy
MDg2NSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JNZW1vcnlBZ2VudC5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rvck5vZGVGaW5kZXIuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JPdmVybGF5LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yUGFnZUFnZW50LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGYxMzQwMGYuLmJjZjliZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRl
cnMKQEAgLTQ4NDUsNiArNDg0NSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNw
ZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JET01Ob2RlQWdlbnQuY3BwIj4KKyAgICAgIDxGaWx0ZXI+
aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCI+CiAgICAgICA8
RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTI0MzIsNiAr
MTI0MzUsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
ck1lbW9yeUFnZW50LmgiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JOb2RlRmluZGVyLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8
L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JPdmVybGF5LmgiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA3YjgyMzgwLi5iMzlmYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjE0LDYgKzE2MTQsOCBAQAog
CQk1MDNEMENBQjE0QjVCMDg3MDBGMzJGNTggLyogQ3VzdG9tRmlsdGVyUmVuZGVyZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwM0QwQ0E4MTRCNUIw
ODcwMEYzMkY1OCAvKiBDdXN0b21GaWx0ZXJSZW5kZXJlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKCk7IH07IH07CiAJCTUwM0QwQ0FDMTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21G
aWx0ZXJQcm9ncmFtQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MDNEMENBOTE0QjVCMDg3MDBGMzJGNTcgLyogQ3VzdG9tRmlsdGVyUHJvZ3Jh
bUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUwM0QwQ0FFMTRCNUIwQkEwMEYzMkY1NyAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwM0QwQ0FE
MTRCNUIwQkEwMEYzMkY1NyAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQk1MDRBQUNDRDE4MzQ0NTU5MDBFM0Q5QkMg
LyogSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MDRBQUNDQjE4MzQ0NTU5MDBFM0Q5QkMgLyogSW5zcGVjdG9yTm9k
ZUZpbmRlci5jcHAgKi87IH07CisJCTUwNEFBQ0NFMTgzNDQ1NTkwMEUzRDlCQyAvKiBJbnNwZWN0
b3JOb2RlRmluZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MDRBQUNDQzE4MzQ0NTU5MDBFM0Q5QkMgLyogSW5zcGVjdG9yTm9kZUZpbmRlci5oICov
OyB9OwogCQk1MDgxRTNDMzNDRTU4MEMxNkVGOEI0OEIgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwODFF
M0RGM0NGQzgwQzE2RUY4QjQ4QiAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwICovOyB9Owog
CQk1MDgxRTNFMDNDRkY4MEMxNkVGOEI0OEIgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDgxRTNFMTNEMDI4
MEMxNkVGOEI0OEIgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTA4Q0NBNEYxM0NGMTA2QjAwMzE1MUYz
IC8qIFJlbmRlckZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFk
LmggKi87IH07CkBAIC04Mjk2LDYgKzgyOTgsOCBAQAogCQk1MDNEMENBODE0QjVCMDg3MDBGMzJG
NTggLyogQ3VzdG9tRmlsdGVyUmVuZGVyZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQ3VzdG9tRmlsdGVyUmVuZGVyZXIuaDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVy
UmVuZGVyZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTAzRDBDQTkxNEI1QjA4
NzAwRjMyRjU3IC8qIEN1c3RvbUZpbHRlclByb2dyYW1DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudC5oOyBwYXRoID0gZmls
dGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUwM0QwQ0FEMTRCNUIwQkEwMEYzMkY1NyAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dy
YW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3R5bGVDdXN0b21GaWx0ZXJQ
cm9ncmFtLmg7IHBhdGggPSBzdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTA0QUFDQ0IxODM0NDU1OTAwRTNEOUJDIC8qIEluc3Bl
Y3Rvck5vZGVGaW5kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5zcGVjdG9yTm9kZUZpbmRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUw
NEFBQ0NDMTgzNDQ1NTkwMEUzRDlCQyAvKiBJbnNwZWN0b3JOb2RlRmluZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvck5vZGVGaW5kZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTA4MUUzREYzQ0ZDODBDMTZFRjhCNDhCIC8qIENhY2hlZFJl
c291cmNlUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTA4MUUzRTEzRDAyODBDMTZFRjhCNDhCIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBS
ZW5kZXJGbG93VGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
ckZsb3dUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0Mzg4LDYgKzE0
MzkyLDggQEAKIAkJCQk3QTI0NTg3QTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdl
bnQuaCAqLywKIAkJCQlGM0Q0QzQ3NjEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5jcHAgKi8sCiAJCQkJRjNENEM0NzcxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQuaCAqLywKKwkJCQk1MDRBQUNDQjE4MzQ0NTU5MDBFM0Q5QkMg
LyogSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAgKi8sCisJCQkJNTA0QUFDQ0MxODM0NDU1OTAwRTNE
OUJDIC8qIEluc3BlY3Rvck5vZGVGaW5kZXIuaCAqLywKIAkJCQk3QTc0RUNCODEwMTgzOUE1MDBC
RjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCAqLywKIAkJCQk3QTc0RUNCOTEw
MTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggKi8sCiAJCQkJMjI3
Nzc3NUYxMzQ1REVBOTAwOEVBNDU1IC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovLApA
QCAtMjMzMDksNiArMjMzMTUsNyBAQAogCQkJCUE5RDI0ODA3MEQ3NTdFN0QwMEZERjk1OSAvKiBK
U0RPTU1pbWVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUQyNDgwOTBENzU3RTdEMDBGREY5
NTkgLyogSlNET01NaW1lVHlwZUFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkNDQTlFMzE1
RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MDRBQUNDRTE4MzQ0NTU5MDBFM0Q5QkMgLyogSW5zcGVjdG9yTm9kZUZpbmRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDRTUzRTAwQThEMTg4MTAwMjI5NDdEIC8qIEpTRE9NUGFy
c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTlBQzNGMzE4MjREQzc5MDAzNDk0MjYgLyogQ3J5
cHRvQWxnb3JpdGhtU0hBMzg0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGQjkxMzkyQTE2QUU0RkMw
MDAxRkU2ODIgLyogSlNET01QYXRoLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NjEyLDYgKzI3NjE5
LDcgQEAKIAkJCQk1MTFFRjJDQTE3RjBGRDM1MDBFNEZBMTYgLyogSlNJREJUcmFuc2FjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUQxNjhFNzEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCNzg0MjAxNjM5Q0JC
RTAwMDdCNjkyIC8qIFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTA0QUFDQ0QxODM0NDU1OTAwRTNEOUJDIC8qIEluc3BlY3Rvck5vZGVGaW5kZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDFEMTY4RUQxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtl
clRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMzREE2NDBEMDA2Q0Q2MDBFRjZGMjYg
LyogU2ltcGxlRm9udERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTYzRTg4RjcxMThBMzlE
MjAwRUQ5MjMxIC8qIFNpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggOGQ5NDE0OS4uMTk5MjM5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMTg0OSw3ICsx
ODQ5LDggQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJwZXJmb3Jt
U2VhcmNoIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJxdWVyeSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6
ICJQbGFpbiB0ZXh0IG9yIHF1ZXJ5IHNlbGVjdG9yIG9yIFhQYXRoIHNlYXJjaCBxdWVyeS4iIH0K
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJxdWVyeSIsICJ0eXBlIjogInN0cmluZyIs
ICJkZXNjcmlwdGlvbiI6ICJQbGFpbiB0ZXh0IG9yIHF1ZXJ5IHNlbGVjdG9yIG9yIFhQYXRoIHNl
YXJjaCBxdWVyeS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkcyIs
ICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJOb2RlSWQiIH0sICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZHMgb2Ygbm9kZXMgdG8gdXNlIGFzIHN0YXJ0aW5n
IHBvaW50cyBmb3IgdGhlIHNlYXJjaC4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAg
ICAgICAgICJyZXR1cm5zIjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlYXJj
aElkIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBzZWFyY2ggc2Vz
c2lvbiBpZGVudGlmaWVyLiIgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWxsSW5PbmUuY3BwCmluZGV4IDE2YjVlMmQuLjY2MjMzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcApAQCAtNjAsNiArNjAsNyBAQAog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3Rvck1lbW9yeUFnZW50LmNw
cCIKKyNpbmNsdWRlICJJbnNwZWN0b3JOb2RlRmluZGVyLmNwcCIKICNpbmNsdWRlICJJbnNwZWN0
b3JPdmVybGF5LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIgogI2luY2x1
ZGUgIkluc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggODVkNzkzYS4uMzFlMTNlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC03MSw2
ICs3MSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JIaXN0b3J5LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yTm9kZUZpbmRlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdl
bnRzLmgiCkBAIC04MCw3ICs4MSw2IEBACiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2lu
Y2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgotI2luY2x1ZGUgIk5vZGVUcmF2
ZXJzYWwuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclN0eWxlLmgiCkBAIC05Niw3ICs5Niw2IEBACiAjaW5jbHVkZSAiaHRtbGVk
aXRpbmcuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgot
I2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAt
ODgxLDEyOCArODgwLDQ5IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVu
ZXJzKE5vZGUqIG5vZGUsIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4mCiAgICAgfQogfQogCi12
b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBTdHJpbmcqIHNlYXJjaElkLCBpbnQqIHJl
c3VsdENvdW50KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJjaChFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwg
Y29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5Piogbm9kZUlkcywgU3RyaW5nKiBzZWFyY2hJZCwg
aW50KiByZXN1bHRDb3VudCkKIHsKICAgICAvLyBGSVhNRTogRmV3IHRoaW5ncyBhcmUgbWlzc2lu
ZyBoZXJlOgogICAgIC8vIDEpIFNlYXJjaCB3b3JrcyB3aXRoIG5vZGUgZ3JhbnVsYXJpdHkgLSBu
dW1iZXIgb2YgbWF0Y2hlcyB3aXRoaW4gbm9kZSBpcyBub3QgY2FsY3VsYXRlZC4KICAgICAvLyAy
KSBUaGVyZSBpcyBubyBuZWVkIHRvIHB1c2ggYWxsIHNlYXJjaCByZXN1bHRzIHRvIHRoZSBmcm9u
dC1lbmQgYXQgYSB0aW1lLCBwdXNoaW5nIG5leHQgLyBwcmV2aW91cyByZXN1bHQKICAgICAvLyAg
ICBpcyBzdWZmaWNpZW50LgogCi0gICAgdW5zaWduZWQgcXVlcnlMZW5ndGggPSB3aGl0ZXNwYWNl
VHJpbW1lZFF1ZXJ5Lmxlbmd0aCgpOwotICAgIGJvb2wgc3RhcnRUYWdGb3VuZCA9ICF3aGl0ZXNw
YWNlVHJpbW1lZFF1ZXJ5LmZpbmQoJzwnKTsKLSAgICBib29sIGVuZFRhZ0ZvdW5kID0gd2hpdGVz
cGFjZVRyaW1tZWRRdWVyeS5yZXZlcnNlRmluZCgnPicpICsgMSA9PSBxdWVyeUxlbmd0aDsKLSAg
ICBib29sIHN0YXJ0UXVvdGVGb3VuZCA9ICF3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LmZpbmQoJyIn
KTsKLSAgICBib29sIGVuZFF1b3RlRm91bmQgPSB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LnJldmVy
c2VGaW5kKCciJykgKyAxID09IHF1ZXJ5TGVuZ3RoOwotICAgIGJvb2wgZXhhY3RBdHRyaWJ1dGVN
YXRjaCA9IHN0YXJ0UXVvdGVGb3VuZCAmJiBlbmRRdW90ZUZvdW5kOwotCi0gICAgU3RyaW5nIHRh
Z05hbWVRdWVyeSA9IHdoaXRlc3BhY2VUcmltbWVkUXVlcnk7Ci0gICAgU3RyaW5nIGF0dHJpYnV0
ZVF1ZXJ5ID0gd2hpdGVzcGFjZVRyaW1tZWRRdWVyeTsKLSAgICBpZiAoc3RhcnRUYWdGb3VuZCkK
LSAgICAgICAgdGFnTmFtZVF1ZXJ5ID0gdGFnTmFtZVF1ZXJ5LnJpZ2h0KHRhZ05hbWVRdWVyeS5s
ZW5ndGgoKSAtIDEpOwotICAgIGlmIChlbmRUYWdGb3VuZCkKLSAgICAgICAgdGFnTmFtZVF1ZXJ5
ID0gdGFnTmFtZVF1ZXJ5LmxlZnQodGFnTmFtZVF1ZXJ5Lmxlbmd0aCgpIC0gMSk7Ci0gICAgaWYg
KHN0YXJ0UXVvdGVGb3VuZCkKLSAgICAgICAgYXR0cmlidXRlUXVlcnkgPSBhdHRyaWJ1dGVRdWVy
eS5yaWdodChhdHRyaWJ1dGVRdWVyeS5sZW5ndGgoKSAtIDEpOwotICAgIGlmIChlbmRRdW90ZUZv
dW5kKQotICAgICAgICBhdHRyaWJ1dGVRdWVyeSA9IGF0dHJpYnV0ZVF1ZXJ5LmxlZnQoYXR0cmli
dXRlUXVlcnkubGVuZ3RoKCkgLSAxKTsKLQotICAgIFZlY3RvcjxEb2N1bWVudCo+IGRvY3MgPSBk
b2N1bWVudHMoKTsKLSAgICBMaXN0SGFzaFNldDxOb2RlKj4gcmVzdWx0Q29sbGVjdG9yOwotCi0g
ICAgZm9yIChWZWN0b3I8RG9jdW1lbnQqPjo6aXRlcmF0b3IgaXQgPSBkb2NzLmJlZ2luKCk7IGl0
ICE9IGRvY3MuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gKml0
OwotICAgICAgICBOb2RlKiBub2RlID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAg
ICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBJbnNwZWN0b3JOb2Rl
RmluZGVyIGZpbmRlcih3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KTsKIAotICAgICAgICAvLyBNYW51
YWwgcGxhaW4gdGV4dCBzZWFyY2guCi0gICAgICAgIHdoaWxlICgobm9kZSA9IE5vZGVUcmF2ZXJz
YWw6Om5leHQobm9kZSwgZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpKSkpIHsKLSAgICAgICAg
ICAgIHN3aXRjaCAobm9kZS0+bm9kZVR5cGUoKSkgewotICAgICAgICAgICAgY2FzZSBOb2RlOjpU
RVhUX05PREU6Ci0gICAgICAgICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAg
ICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOiB7Ci0gICAgICAgICAgICAgICAgU3Ry
aW5nIHRleHQgPSBub2RlLT5ub2RlVmFsdWUoKTsKLSAgICAgICAgICAgICAgICBpZiAodGV4dC5m
aW5kSWdub3JpbmdDYXNlKHdoaXRlc3BhY2VUcmltbWVkUXVlcnkpICE9IG5vdEZvdW5kKQotICAg
ICAgICAgICAgICAgICAgICByZXN1bHRDb2xsZWN0b3IuYWRkKG5vZGUpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBOb2RlOjpFTEVNRU5U
X05PREU6IHsKLSAgICAgICAgICAgICAgICBpZiAoKCFzdGFydFRhZ0ZvdW5kICYmICFlbmRUYWdG
b3VuZCAmJiAobm9kZS0+bm9kZU5hbWUoKS5maW5kSWdub3JpbmdDYXNlKHRhZ05hbWVRdWVyeSkg
IT0gbm90Rm91bmQpKQotICAgICAgICAgICAgICAgICAgICB8fCAoc3RhcnRUYWdGb3VuZCAmJiBl
bmRUYWdGb3VuZCAmJiBlcXVhbElnbm9yaW5nQ2FzZShub2RlLT5ub2RlTmFtZSgpLCB0YWdOYW1l
UXVlcnkpKQotICAgICAgICAgICAgICAgICAgICB8fCAoc3RhcnRUYWdGb3VuZCAmJiAhZW5kVGFn
Rm91bmQgJiYgbm9kZS0+bm9kZU5hbWUoKS5zdGFydHNXaXRoKHRhZ05hbWVRdWVyeSwgZmFsc2Up
KQotICAgICAgICAgICAgICAgICAgICB8fCAoIXN0YXJ0VGFnRm91bmQgJiYgZW5kVGFnRm91bmQg
JiYgbm9kZS0+bm9kZU5hbWUoKS5lbmRzV2l0aCh0YWdOYW1lUXVlcnksIGZhbHNlKSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0Q29sbGVjdG9yLmFkZChub2RlKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIEdv
IHRocm91Z2ggYWxsIGF0dHJpYnV0ZXMgYW5kIHNlcmlhbGl6ZSB0aGVtLgotICAgICAgICAgICAg
ICAgIGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCi0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtQXR0cnMgPSBlbGVtZW50LT5h
dHRyaWJ1dGVDb3VudCgpOwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1BdHRyczsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEFkZCBhdHRyaWJ1dGUg
cGFpcgotICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA9IGVs
ZW1lbnQtPmF0dHJpYnV0ZUF0KGkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRl
LmxvY2FsTmFtZSgpLmZpbmQod2hpdGVzcGFjZVRyaW1tZWRRdWVyeSkgIT0gbm90Rm91bmQpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdENvbGxlY3Rvci5hZGQobm9kZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgZm91bmRQb3NpdGlvbiA9IGF0dHJpYnV0ZS52YWx1ZSgpLmZp
bmQoYXR0cmlidXRlUXVlcnkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRQb3NpdGlv
biAhPSBub3RGb3VuZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFleGFjdEF0dHJp
YnV0ZU1hdGNoIHx8ICghZm91bmRQb3NpdGlvbiAmJiBhdHRyaWJ1dGUudmFsdWUoKS5sZW5ndGgo
KSA9PSBhdHRyaWJ1dGVRdWVyeS5sZW5ndGgoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHRDb2xsZWN0b3IuYWRkKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgIGlmIChu
b2RlSWRzKSB7CisgICAgICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIG5vZGVJZHNS
ZWYgPSAqbm9kZUlkczsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5vZGVJZHNS
ZWYtPmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
bm9kZVZhbHVlID0gbm9kZUlkc1JlZi0+Z2V0KGkpOworICAgICAgICAgICAgaWYgKCFub2RlVmFs
dWUpIHsKKyAgICAgICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW52YWxpZCBub2RlSWRzIGl0
ZW0uIjsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaW50IG5vZGVJ
ZCA9IDA7CisgICAgICAgICAgICBpZiAoIW5vZGVWYWx1ZS0+YXNOdW1iZXIoJm5vZGVJZCkpIHsK
KyAgICAgICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW52YWxpZCBub2RlSWRzIGl0ZW0gdHlw
ZS4gRXhwZWN0aW5nIGludGVnZXIgdHlwZXMuIjsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBYUGF0aCBldmFsdWF0aW9uCi0g
ICAgICAgIGZvciAoVmVjdG9yPERvY3VtZW50Kj46Oml0ZXJhdG9yIGl0ID0gZG9jcy5iZWdpbigp
OyBpdCAhPSBkb2NzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSAqaXQ7Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAg
IFJlZlB0cjxYUGF0aFJlc3VsdD4gcmVzdWx0ID0gZG9jdW1lbnQtPmV2YWx1YXRlKHdoaXRlc3Bh
Y2VUcmltbWVkUXVlcnksIGRvY3VtZW50LCAwLCBYUGF0aFJlc3VsdDo6T1JERVJFRF9OT0RFX1NO
QVBTSE9UX1RZUEUsIDAsIGVjKTsKLSAgICAgICAgICAgIGlmIChlYyB8fCAhcmVzdWx0KQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUg
PSByZXN1bHQtPnNuYXBzaG90TGVuZ3RoKGVjKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQg
bG9uZyBpID0gMDsgIWVjICYmIGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICBOb2Rl
KiBub2RlID0gcmVzdWx0LT5zbmFwc2hvdEl0ZW0oaSwgZWMpOwotICAgICAgICAgICAgICAgIGlm
IChlYykKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+aXNBdHRyaWJ1dGVOb2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIG5vZGUgPSB0b0F0
dHIobm9kZSktPm93bmVyRWxlbWVudCgpOwotICAgICAgICAgICAgICAgIHJlc3VsdENvbGxlY3Rv
ci5hZGQobm9kZSk7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0
cmluZywgbm9kZUlkKTsKKyAgICAgICAgICAgIGlmICghbm9kZSkgeworICAgICAgICAgICAgICAg
IC8vIGFzc2VydE5vZGUgc2hvdWxkIGhhdmUgZmlsbGVkIHRoZSBlcnJvclN0cmluZyBmb3IgdXMu
CisgICAgICAgICAgICAgICAgQVNTRVJUKGVycm9yU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5kZXIucGVyZm9y
bVNlYXJjaChub2RlKTsKICAgICAgICAgfQotCi0gICAgICAgIC8vIFNlbGVjdG9yIGV2YWx1YXRp
b24KLSAgICAgICAgZm9yIChWZWN0b3I8RG9jdW1lbnQqPjo6aXRlcmF0b3IgaXQgPSBkb2NzLmJl
Z2luKCk7IGl0ICE9IGRvY3MuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgICAgIERvY3VtZW50KiBk
b2N1bWVudCA9ICppdDsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAg
ICAgICAgUmVmUHRyPE5vZGVMaXN0PiBub2RlTGlzdCA9IGRvY3VtZW50LT5xdWVyeVNlbGVjdG9y
QWxsKHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIGVjKTsKLSAgICAgICAgICAgIGlmIChlYyB8fCAh
bm9kZUxpc3QpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHVuc2ln
bmVkIHNpemUgPSBub2RlTGlzdC0+bGVuZ3RoKCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgICAgIHJlc3VsdENvbGxlY3Rvci5h
ZGQobm9kZUxpc3QtPml0ZW0oaSkpOwotICAgICAgICB9CisgICAgfSBlbHNlIGlmIChtX2RvY3Vt
ZW50KSB7CisgICAgICAgIC8vIFRoZXJlJ3Mgbm8gbmVlZCB0byBpdGVyYXRlIHRoZSBmcmFtZXMg
dHJlZSBiZWNhdXNlCisgICAgICAgIC8vIHRoZSBzZWFyY2ggaGVscGVyIHdpbGwgZ28gaW5zaWRl
IHRoZSBmcmFtZSBvd25lciBlbGVtZW50cy4KKyAgICAgICAgZmluZGVyLnBlcmZvcm1TZWFyY2go
bV9kb2N1bWVudC5nZXQoKSk7CiAgICAgfQogCiAgICAgKnNlYXJjaElkID0gSWRlbnRpZmllcnNG
YWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCk7Ci0gICAgU2VhcmNoUmVzdWx0czo6aXRlcmF0b3Ig
cmVzdWx0c0l0ID0gbV9zZWFyY2hSZXN1bHRzLmFkZCgqc2VhcmNoSWQsIFZlY3RvcjxSZWZQdHI8
Tm9kZT4+KCkpLml0ZXJhdG9yOwogCi0gICAgZm9yIChMaXN0SGFzaFNldDxOb2RlKj46Oml0ZXJh
dG9yIGl0ID0gcmVzdWx0Q29sbGVjdG9yLmJlZ2luKCk7IGl0ICE9IHJlc3VsdENvbGxlY3Rvci5l
bmQoKTsgKytpdCkKLSAgICAgICAgcmVzdWx0c0l0LT52YWx1ZS5hcHBlbmQoKml0KTsKKyAgICBh
dXRvJiByZXN1bHRzVmVjdG9yID0gbV9zZWFyY2hSZXN1bHRzLmFkZCgqc2VhcmNoSWQsIFZlY3Rv
cjxSZWZQdHI8Tm9kZT4+KCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBmb3IgKGF1dG8gaXRlcmF0
b3IgPSBmaW5kZXIucmVzdWx0cygpLmJlZ2luKCk7IGl0ZXJhdG9yICE9IGZpbmRlci5yZXN1bHRz
KCkuZW5kKCk7ICsraXRlcmF0b3IpCisgICAgICAgIHJlc3VsdHNWZWN0b3IuYXBwZW5kKCppdGVy
YXRvcik7CiAKLSAgICAqcmVzdWx0Q291bnQgPSByZXN1bHRzSXQtPnZhbHVlLnNpemUoKTsKKyAg
ICAqcmVzdWx0Q291bnQgPSByZXN1bHRzVmVjdG9yLnNpemUoKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+JiBub2RlSWRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCAzZjgzM2FjLi45MTUyZTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtNDEsNyArNDEs
NiBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KLSNpbmNs
dWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtMTMyLDcgKzEz
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3V0ZXJIVE1MKEVycm9yU3RyaW5n
KiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBvdXRlckhUTUwpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHZh
bHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3Ry
aW5nKiwgaW50IG5vZGVJZCwgY29uc3QgV1RGOjpTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+PiYgbGlz
dGVuZXJzQXJyYXkpOwotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBTdHJpbmcqIHNlYXJjaElk
LCBpbnQqIHJlc3VsdENvdW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgY29uc3QgUmVm
UHRyPEluc3BlY3RvckFycmF5Piogbm9kZUlkcywgU3RyaW5nKiBzZWFyY2hJZCwgaW50KiByZXN1
bHRDb3VudCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJk
U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQpOwogICAg
IHZpcnR1YWwgdm9pZCByZXNvbHZlTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0
IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiYgcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JOb2RlRmluZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JOb2RlRmluZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTEw
YzI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck5vZGVGaW5kZXIuY3BwCkBAIC0wLDAgKzEsMTc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFkb2JlIFN5c3RlbXMgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEpvc2VwaCBQZWNvcmFybworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JOb2RlRmluZGVyLmgiCisKKyNpbmNsdWRlICJBdHRyLmgiCisjaW5jbHVkZSAiQXR0cmli
dXRlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5j
bHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNp
bmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiWFBhdGhSZXN1bHQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgU3RyaW5nIHN0cmlwQ2hhcmFjdGVycyhTdHJpbmcg
c3RyaW5nLCBjb25zdCBjaGFyIHN0YXJ0Q2hhcmFjdGVyLCBjb25zdCBjaGFyIGVuZENoYXJhY3Rl
ciwgYm9vbCYgc3RhcnRDaGFyRm91bmQsIGJvb2wmIGVuZENoYXJGb3VuZCkKK3sKKyAgICBzdGFy
dENoYXJGb3VuZCA9IHN0cmluZy5zdGFydHNXaXRoKHN0YXJ0Q2hhcmFjdGVyKTsKKyAgICBlbmRD
aGFyRm91bmQgPSBzdHJpbmcuZW5kc1dpdGgoZW5kQ2hhcmFjdGVyKTsKKworICAgIHVuc2lnbmVk
IHN0YXJ0ID0gc3RhcnRDaGFyRm91bmQgPyAxIDogMDsKKyAgICB1bnNpZ25lZCBlbmQgPSBzdHJp
bmcubGVuZ3RoKCkgLSAoZW5kQ2hhckZvdW5kID8gMSA6IDApOworICAgIHJldHVybiBzdHJpbmcu
c3Vic3RyaW5nKHN0YXJ0LCBlbmQgLSBzdGFydCk7Cit9CisKK0luc3BlY3Rvck5vZGVGaW5kZXI6
Okluc3BlY3Rvck5vZGVGaW5kZXIoU3RyaW5nIHdoaXRlc3BhY2VUcmltbWVkUXVlcnkpCisgICAg
OiBtX3doaXRlc3BhY2VUcmltbWVkUXVlcnkod2hpdGVzcGFjZVRyaW1tZWRRdWVyeSkKK3sKKyAg
ICBtX3RhZ05hbWVRdWVyeSA9IHN0cmlwQ2hhcmFjdGVycyh3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5
LCAnPCcsICc+JywgbV9zdGFydFRhZ0ZvdW5kLCBtX2VuZFRhZ0ZvdW5kKTsKKworICAgIGJvb2wg
c3RhcnRRdW90ZUZvdW5kLCBlbmRRdW90ZUZvdW5kOworICAgIG1fYXR0cmlidXRlUXVlcnkgPSBz
dHJpcENoYXJhY3RlcnMod2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgJyInLCAnIicsIHN0YXJ0UXVv
dGVGb3VuZCwgZW5kUXVvdGVGb3VuZCk7CisgICAgbV9leGFjdEF0dHJpYnV0ZU1hdGNoID0gc3Rh
cnRRdW90ZUZvdW5kICYmIGVuZFF1b3RlRm91bmQ7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTm9kZUZp
bmRlcjo6cGVyZm9ybVNlYXJjaChOb2RlKiBwYXJlbnROb2RlKQoreworICAgIHNlYXJjaFVzaW5n
WFBhdGgocGFyZW50Tm9kZSk7CisgICAgc2VhcmNoVXNpbmdDU1NTZWxlY3RvcnMocGFyZW50Tm9k
ZSk7CisKKyAgICAvLyBLZWVwIHRoZSBET00gdHJlZSB0cmF2ZXJzYWwgbGFzdC4gVGhpcyB3YXkg
aWZyYW1lIGNvbnRlbnQgd2lsbCBjb21lIGFmdGVyIHRoZWlyIHBhcmVudHMuCisgICAgc2VhcmNo
VXNpbmdET01UcmVlVHJhdmVyc2FsKHBhcmVudE5vZGUpOworfQorCit2b2lkIEluc3BlY3Rvck5v
ZGVGaW5kZXI6OnNlYXJjaFVzaW5nRE9NVHJlZVRyYXZlcnNhbChOb2RlKiBwYXJlbnROb2RlKQor
eworICAgIC8vIE1hbnVhbCBwbGFpbiB0ZXh0IHNlYXJjaC4KKyAgICBmb3IgKGF1dG8gbm9kZSA9
IHBhcmVudE5vZGU7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUsIHBhcmVu
dE5vZGUpKSB7CisgICAgICAgIHN3aXRjaCAobm9kZS0+bm9kZVR5cGUoKSkgeworICAgICAgICBj
YXNlIE5vZGU6OlRFWFRfTk9ERToKKyAgICAgICAgY2FzZSBOb2RlOjpDT01NRU5UX05PREU6Cisg
ICAgICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOiB7CisgICAgICAgICAgICBpZiAo
bm9kZS0+bm9kZVZhbHVlKCkuZmluZElnbm9yaW5nQ2FzZShtX3doaXRlc3BhY2VUcmltbWVkUXVl
cnkpICE9IG5vdEZvdW5kKQorICAgICAgICAgICAgICAgIG1fcmVzdWx0cy5hZGQobm9kZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIE5vZGU6OkVMRU1FTlRf
Tk9ERTogeworICAgICAgICAgICAgaWYgKG1hdGNoZXNFbGVtZW50KCp0b0VsZW1lbnQobm9kZSkp
KQorICAgICAgICAgICAgICAgIG1fcmVzdWx0cy5hZGQobm9kZSk7CisKKyAgICAgICAgICAgIC8v
IFNlYXJjaCBpbnNpZGUgZnJhbWUgZWxlbWVudHMuCisgICAgICAgICAgICBpZiAobm9kZS0+aXNG
cmFtZU93bmVyRWxlbWVudCgpKSB7CisgICAgICAgICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBmcmFtZU93bmVyID0gdG9IVE1MRnJhbWVPd25lckVsZW1lbnQobm9kZSk7CisgICAgICAg
ICAgICAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lT3duZXItPmNvbnRlbnREb2N1
bWVudCgpKQorICAgICAgICAgICAgICAgICAgICBwZXJmb3JtU2VhcmNoKGRvY3VtZW50KTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCitib29sIElu
c3BlY3Rvck5vZGVGaW5kZXI6Om1hdGNoZXNBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRy
aWJ1dGUpCit7CisgICAgaWYgKGF0dHJpYnV0ZS5sb2NhbE5hbWUoKS5maW5kKG1fd2hpdGVzcGFj
ZVRyaW1tZWRRdWVyeSkgIT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBtX2V4YWN0QXR0cmlidXRlTWF0Y2ggPyBhdHRyaWJ1dGUudmFsdWUoKSA9PSBtX2F0dHJp
YnV0ZVF1ZXJ5IDogYXR0cmlidXRlLnZhbHVlKCkuZmluZChtX2F0dHJpYnV0ZVF1ZXJ5KSAhPSBu
b3RGb3VuZDsKK30KKworYm9vbCBJbnNwZWN0b3JOb2RlRmluZGVyOjptYXRjaGVzRWxlbWVudChj
b25zdCBFbGVtZW50JiBlbGVtZW50KQoreworICAgIFN0cmluZyBub2RlTmFtZSA9IGVsZW1lbnQu
bm9kZU5hbWUoKTsKKyAgICBpZiAoKCFtX3N0YXJ0VGFnRm91bmQgJiYgIW1fZW5kVGFnRm91bmQg
JiYgKG5vZGVOYW1lLmZpbmRJZ25vcmluZ0Nhc2UobV90YWdOYW1lUXVlcnkpICE9IG5vdEZvdW5k
KSkKKyAgICAgICAgfHwgKG1fc3RhcnRUYWdGb3VuZCAmJiBtX2VuZFRhZ0ZvdW5kICYmIGVxdWFs
SWdub3JpbmdDYXNlKG5vZGVOYW1lLCBtX3RhZ05hbWVRdWVyeSkpCisgICAgICAgIHx8IChtX3N0
YXJ0VGFnRm91bmQgJiYgIW1fZW5kVGFnRm91bmQgJiYgbm9kZU5hbWUuc3RhcnRzV2l0aChtX3Rh
Z05hbWVRdWVyeSwgZmFsc2UpKQorICAgICAgICB8fCAoIW1fc3RhcnRUYWdGb3VuZCAmJiBtX2Vu
ZFRhZ0ZvdW5kICYmIG5vZGVOYW1lLmVuZHNXaXRoKG1fdGFnTmFtZVF1ZXJ5LCBmYWxzZSkpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVkIG51bUF0dHJzID0gZWxlbWVu
dC5hdHRyaWJ1dGVDb3VudCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BdHRy
czsgKytpKSB7CisgICAgICAgIGlmIChtYXRjaGVzQXR0cmlidXRlKGVsZW1lbnQuYXR0cmlidXRl
QXQoaSkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIEluc3BlY3Rvck5vZGVGaW5kZXI6OnNlYXJjaFVzaW5nWFBhdGgoTm9k
ZSogcGFyZW50Tm9kZSkKK3sKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQdHI8
WFBhdGhSZXN1bHQ+IHJlc3VsdCA9IHBhcmVudE5vZGUtPmRvY3VtZW50KCkuZXZhbHVhdGUobV93
aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBwYXJlbnROb2RlLCAwLCBYUGF0aFJlc3VsdDo6T1JERVJF
RF9OT0RFX1NOQVBTSE9UX1RZUEUsIDAsIGVjKTsKKyAgICBpZiAoZWMgfHwgIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgbG9uZyBzaXplID0gcmVzdWx0LT5zbmFwc2hv
dExlbmd0aChlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHVu
c2lnbmVkIGxvbmcgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgTm9kZSogbm9kZSA9
IHJlc3VsdC0+c25hcHNob3RJdGVtKGksIGVjKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGlmIChub2RlLT5pc0F0dHJpYnV0ZU5vZGUoKSkKKyAgICAg
ICAgICAgIG5vZGUgPSB0b0F0dHIobm9kZSktPm93bmVyRWxlbWVudCgpOworCisgICAgICAgIC8v
IFhQYXRoIGNhbiBnZXQgb3V0IG9mIHRoZSBjb250ZXh0IG5vZGUgdGhhdCB3ZSBwYXNzIGFzIHRo
ZSBzdGFydGluZyBwb2ludCB0byBldmFsdWF0ZSwgc28gd2UgbmVlZCB0byBmaWx0ZXIgZm9yIGp1
c3QgdGhlIG5vZGVzIHdlIGNhcmUgYWJvdXQuCisgICAgICAgIGlmIChub2RlID09IHBhcmVudE5v
ZGUgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2YocGFyZW50Tm9kZSkpCisgICAgICAgICAgICBtX3Jl
c3VsdHMuYWRkKG5vZGUpOworICAgIH0KK30KKwordm9pZCBJbnNwZWN0b3JOb2RlRmluZGVyOjpz
ZWFyY2hVc2luZ0NTU1NlbGVjdG9ycyhOb2RlKiBwYXJlbnROb2RlKQoreworICAgIGlmICghcGFy
ZW50Tm9kZS0+aXNDb250YWluZXJOb2RlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIFJlZlB0cjxOb2RlTGlzdD4gbm9kZUxpc3QgPSB0b0NvbnRh
aW5lck5vZGUocGFyZW50Tm9kZSktPnF1ZXJ5U2VsZWN0b3JBbGwobV93aGl0ZXNwYWNlVHJpbW1l
ZFF1ZXJ5LCBlYyk7CisgICAgaWYgKGVjIHx8ICFub2RlTGlzdCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgdW5zaWduZWQgc2l6ZSA9IG5vZGVMaXN0LT5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBtX3Jlc3VsdHMuYWRkKG5vZGVMaXN0
LT5pdGVtKGkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVGaW5kZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOTQxMjUzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEluc3BlY3Rvck5vZGVGaW5kZXJfaAorI2RlZmluZSBJbnNwZWN0b3JOb2RlRmluZGVy
X2gKKworI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF0dHJpYnV0ZTsKK2Ns
YXNzIEVsZW1lbnQ7CitjbGFzcyBOb2RlOworCitjbGFzcyBJbnNwZWN0b3JOb2RlRmluZGVyIHsK
K3B1YmxpYzoKKyAgICBJbnNwZWN0b3JOb2RlRmluZGVyKFN0cmluZyB3aGl0ZXNwYWNlVHJpbW1l
ZFF1ZXJ5KTsKKyAgICB2b2lkIHBlcmZvcm1TZWFyY2goTm9kZSopOworICAgIGNvbnN0IExpc3RI
YXNoU2V0PE5vZGUqPiYgcmVzdWx0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0czsgfQorCitw
cml2YXRlOgorICAgIGJvb2wgbWF0Y2hlc0F0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKTsKKyAg
ICBib29sIG1hdGNoZXNFbGVtZW50KGNvbnN0IEVsZW1lbnQmKTsKKworICAgIHZvaWQgc2VhcmNo
VXNpbmdET01UcmVlVHJhdmVyc2FsKE5vZGUqKTsKKyAgICB2b2lkIHNlYXJjaFVzaW5nWFBhdGgo
Tm9kZSopOworICAgIHZvaWQgc2VhcmNoVXNpbmdDU1NTZWxlY3RvcnMoTm9kZSopOworCisgICAg
Ym9vbCBtX3N0YXJ0VGFnRm91bmQ7CisgICAgYm9vbCBtX2VuZFRhZ0ZvdW5kOworICAgIGJvb2wg
bV9leGFjdEF0dHJpYnV0ZU1hdGNoOworCisgICAgU3RyaW5nIG1fd2hpdGVzcGFjZVRyaW1tZWRR
dWVyeTsKKyAgICBTdHJpbmcgbV90YWdOYW1lUXVlcnk7CisgICAgU3RyaW5nIG1fYXR0cmlidXRl
UXVlcnk7CisKKyAgICBMaXN0SGFzaFNldDxOb2RlKj4gbV9yZXN1bHRzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSW5zcGVjdG9yTm9kZUZpbmRlcl9oCg==
</data>
<flag name="review"
          id="240065"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217076</attachid>
            <date>2013-11-15 13:33:28 -0800</date>
            <delta_ts>2013-11-15 14:06:00 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug124390.v2.patch</filename>
            <type>text/plain</type>
            <size>52874</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0OWEyY2JmLi5mOTcxYWE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTMtMTEt
MTQgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IERPTS5wZXJmb3JtU2VhcmNoIHNob3VsZCBhY2NlcHQgYSBsaXN0IG9mIGNv
bnRleHQgbm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNDM5MAorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAg
ICAgICBBZGRlZCBuZXcgaW5zcGVjdG9yLXByb3RvY29sIHRlc3RzIHRvIGNoZWNrIGZvciB0aGUg
RE9NLnBlcmZvcm1TZWFyY2ggaW1wbGVtZW50YXRpb24uCisgICAgICAgIEFsc28sIHBvcnRlZCBh
biBleGlzdGluZyB0ZXN0IGZyb20gdGhlIG9sZCAiaW5zcGVjdG9yIiBmb3JtYXQuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvSW5zcGVjdG9yRE9N
TGlzdGVuZXIuanM6IEFkZGVkIGJvaWxlcnBsYXRlIGNvZGUgdGhhdAorICAgICAgICBjYW4gYmUg
dXNlZCB0byB0cmFjayBub2RlIGlkcyBhbmQgY2xhc3MgbmFtZXMuCisgICAgICAgIChjcmVhdGVE
T01MaXN0ZW5lci5jcmVhdGVOb2RlQXR0cmlidXRlc01hcCk6CisgICAgICAgIChjcmVhdGVET01M
aXN0ZW5lci5jb2xsZWN0Tm9kZSk6CisgICAgICAgIChjcmVhdGVET01MaXN0ZW5lci5vblNldENo
aWxkTm9kZXMpOgorICAgICAgICAoY3JlYXRlRE9NTGlzdGVuZXIub25DaGlsZE5vZGVSZW1vdmVk
KToKKyAgICAgICAgKGNyZWF0ZURPTUxpc3RlbmVyLm9uQ2hpbGROb2RlSW5zZXJ0ZWQpOgorICAg
ICAgICAoY3JlYXRlRE9NTGlzdGVuZXIucmV0dXJuLmdldE5vZGVCeUlkKToKKyAgICAgICAgKGNy
ZWF0ZURPTUxpc3RlbmVyLnJldHVybi5nZXROb2RlSWRlbnRpZmllcik6CisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcmVzb3VyY2VzL0luc3BlY3RvclRlc3QuanM6Cisg
ICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaE1lc3NhZ2VBc3luYyk6IEFkZGVk
IGEgd2F5IHRvIGNhdGNoIGFsbCB0aGUgbWVzc2FnZXMgcmVjZWl2ZWQgaW4gdGhlIGluc3BlY3Rv
ci4KKyAgICAgICAgSXQgaXMgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgdGhlIHRlc3QgZmlsZS4KKyAg
ICAgICAgKEluc3BlY3RvclRlc3QuYWRkRXZlbnRMaXN0ZW5lcik6IEhlbHBlciBtZXRob2QgdG8g
cmVnaXN0ZXIgbXVsdGlwbGUgaGFuZGxlcnMgZm9yIHRoZSBzYW1lIGV2ZW50LgorICAgICAgICAq
IGluc3BlY3Rvci1wcm90b2NvbC9kb20vZG9tLXNlYXJjaC1jcmFzaC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9kb20vZG9tLXNlYXJjaC1jcmFzaC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2RvbS1zZWFyY2gt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2Rv
bS1zZWFyY2gtd2l0aC1jb250ZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5z
cGVjdG9yLXByb3RvY29sL2RvbS9kb20tc2VhcmNoLXdpdGgtY29udGV4dC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2RvbS1zZWFyY2guaHRtbDogQWRkZWQu
CisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2RvbS9yZXNvdXJjZXMvZG9tLXNlYXJjaC1j
cmFzaC1pZnJhbWUuaHRtbDogQ2xvbmVkIGZyb20gaW5zcGVjdG9yL2RvbS9yZXNvdXJjZXMvZG9t
LXNlYXJjaC1jcmFzaC1pZnJhbWUuaHRtbAorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9k
b20vcmVzb3VyY2VzL2RvbS1zZWFyY2gtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci1wcm90b2NvbC9kb20vcmVzb3VyY2VzL2RvbS1zZWFyY2gtcXVlcmllcy5qczogQWRk
ZWQuCisKIDIwMTMtMTEtMTUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTGF5b3V0IFRlc3QgZmFzdC9kb20vR2VvbG9jYXRpb24vbm90aW1lci1hZnRl
ci11bmxvYWQuaHRtbCBpcyBmbGFreSBhbmQgY3Jhc2h5IG9uIE1hYyBXSzIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9JbnNw
ZWN0b3JET01MaXN0ZW5lci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXBy
b3RvY29sL3Jlc291cmNlcy9JbnNwZWN0b3JET01MaXN0ZW5lci5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi40NGViMjE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcmVzb3VyY2VzL0luc3BlY3RvckRPTUxp
c3RlbmVyLmpzCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisK
K2Z1bmN0aW9uIGNyZWF0ZURPTUxpc3RlbmVyKCkKK3sKKyAgICB2YXIgbm9kZXNCeUlkID0ge307
CisKKyAgICBJbnNwZWN0b3JUZXN0LmFkZEV2ZW50TGlzdGVuZXIoIkRPTS5zZXRDaGlsZE5vZGVz
Iiwgb25TZXRDaGlsZE5vZGVzKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFkZEV2ZW50TGlzdGVuZXIo
IkRPTS5jaGlsZE5vZGVSZW1vdmVkIiwgb25DaGlsZE5vZGVSZW1vdmVkKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmFkZEV2ZW50TGlzdGVuZXIoIkRPTS5jaGlsZE5vZGVJbnNlcnRlZCIsIG9uQ2hpbGRO
b2RlSW5zZXJ0ZWQpOworCisgICAgZnVuY3Rpb24gY3JlYXRlTm9kZUF0dHJpYnV0ZXNNYXAoYXR0
cmlidXRlcykKKyAgICB7CisgICAgICAgIHZhciBhdHRyaWJ1dGVzTWFwID0ge307CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkgKz0gMikKKyAgICAgICAg
ICAgIGF0dHJpYnV0ZXNNYXBbYXR0cmlidXRlc1tpXV0gPSBhdHRyaWJ1dGVzW2kgKyAxXTsKKyAg
ICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNNYXA7CisgICAgfQorCisgICAgZnVuY3Rpb24gY29sbGVj
dE5vZGUobm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxKQorICAg
ICAgICAgICAgbm9kZS5hdHRyaWJ1dGVzID0gY3JlYXRlTm9kZUF0dHJpYnV0ZXNNYXAobm9kZS5h
dHRyaWJ1dGVzKTsKKyAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pCisgICAgICAgICAgICBub2Rl
LmNoaWxkcmVuLmZvckVhY2goY29sbGVjdE5vZGUpOworICAgICAgICBub2Rlc0J5SWRbbm9kZS5u
b2RlSWRdID0gbm9kZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBub2RlVG9TdHJpbmcobm9kZSkK
KyAgICB7CisgICAgICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSkgeworICAgICAgICBjYXNlIDE6
CisgICAgICAgICAgICB2YXIgbmFtZSA9IG5vZGUubG9jYWxOYW1lOworICAgICAgICAgICAgaWYg
KG5vZGUuYXR0cmlidXRlcy5pZCkKKyAgICAgICAgICAgICAgICBuYW1lICs9ICIjIiArIG5vZGUu
YXR0cmlidXRlcy5pZDsKKyAgICAgICAgICAgIGlmIChub2RlLmF0dHJpYnV0ZXNbImNsYXNzIl0p
CisgICAgICAgICAgICAgICAgbmFtZSArPSBub2RlLmF0dHJpYnV0ZXNbImNsYXNzIl0uc3BsaXQo
IiAiKS5tYXAoZnVuY3Rpb24oY2xhc3NOYW1lKSB7IHJldHVybiAiLiIgKyBjbGFzc05hbWU7IH0p
LmpvaW4oIiIpOworICAgICAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgIGNhc2UgMzoKKyAg
ICAgICAgICAgIHJldHVybiAiPHRleHQgbm9kZSAiICsgSlNPTi5zdHJpbmdpZnkobm9kZS5ub2Rl
VmFsdWUpICsgIj4iOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuICI8bm9k
ZVR5cGUgIiArIG5vZGUubm9kZVR5cGUgKyAiPiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBm
dW5jdGlvbiBvblNldENoaWxkTm9kZXMocmVzcG9uc2UpCisgICAgeworICAgICAgICByZXNwb25z
ZS5wYXJhbXMubm9kZXMuZm9yRWFjaChjb2xsZWN0Tm9kZSk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gb25DaGlsZE5vZGVSZW1vdmVkKHJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgZGVsZXRlIG5v
ZGVzQnlJZFtyZXNwb25zZS5wYXJhbXMubm9kZUlkXTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBv
bkNoaWxkTm9kZUluc2VydGVkKHJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgY29sbGVjdE5vZGUo
cmVzcG9uc2UucGFyYW1zLm5vZGUpOworICAgIH0KKworICAgIHJldHVybiB7CisgICAgICAgIGdl
dE5vZGVCeUlkOiBmdW5jdGlvbihpZCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5v
ZGVzQnlJZFtpZF07CisgICAgICAgIH0sCisKKyAgICAgICAgZ2V0Tm9kZUlkZW50aWZpZXI6IGZ1
bmN0aW9uKG5vZGVJZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFub2RlSWQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuICI8aW52YWxpZCBub2RlIGlkPiI7CisgICAgICAgICAgICB2YXIg
bm9kZSA9IG5vZGVzQnlJZFtub2RlSWRdOworICAgICAgICAgICAgcmV0dXJuIG5vZGUgPyBub2Rl
VG9TdHJpbmcobm9kZSkgOiAiPHVua25vd24gbm9kZT4iOworICAgICAgICB9LAorCisgICAgICAg
IGNvbGxlY3ROb2RlOiBjb2xsZWN0Tm9kZQorICAgIH07Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvSW5zcGVjdG9yVGVz
dC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNl
cy9JbnNwZWN0b3JUZXN0LmpzCmluZGV4IDhlMGZiNmUuLjNiZWVkNjQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9JbnNwZWN0
b3JUZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29s
L3Jlc291cmNlcy9JbnNwZWN0b3JUZXN0LmpzCkBAIC02MiwxMCArNjIsMzggQEAgSW5zcGVjdG9y
RnJvbnRlbmRBUEkuZGlzcGF0Y2hNZXNzYWdlQXN5bmMgPSBmdW5jdGlvbihtZXNzYWdlT2JqZWN0
KQogICAgICAgICB2YXIgZXZlbnRIYW5kbGVyID0gSW5zcGVjdG9yVGVzdC5ldmVudEhhbmRsZXJb
ZXZlbnROYW1lXTsKICAgICAgICAgaWYgKGV2ZW50SGFuZGxlcikKICAgICAgICAgICAgIGV2ZW50
SGFuZGxlcihtZXNzYWdlT2JqZWN0KTsKKyAgICAgICAgZWxzZSBpZiAoSW5zcGVjdG9yVGVzdC5k
ZWZhdWx0RXZlbnRIYW5kbGVyKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kZWZhdWx0RXZl
bnRIYW5kbGVyKG1lc3NhZ2VPYmplY3QpOwogICAgIH0KIH0KIAogLyoqCisqIFJlZ2lzdGVycyBh
biBldmVudCBoYW5kbGVyIGZvciBtZXNzYWdlcyBjb21pbmcgZnJvbSB0aGUgSW5zcGVjdG9yQmFj
a2VuZC4KKyogSWYgbXVsdGlwbGUgY2FsbGJhY2tzIGFyZSByZWdpc3RlcmVkIGZvciB0aGUgc2Ft
ZSBldmVudCwgaXQgd2lsbCBjaGFpbiB0aGUgZXhlY3V0aW9uLgorKiBAcGFyYW0ge3N0cmluZ30g
ZXZlbnQgbmFtZQorKiBAcGFyYW0ge2Z1bmN0aW9ufSBoYW5kbGVyIHRvIGJlIGV4ZWN1dGVkCisq
IEBwYXJhbSB7Ym9vbGVhbn0gZXhlY3V0ZSB0aGUgaGFuZGxlciBiZWZvcmUgYWxsIG90aGVyIGhh
bmRsZXJzCisqLworSW5zcGVjdG9yVGVzdC5hZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24oZXZl
bnROYW1lLCBjYWxsYmFjaywgY2FwdHVyZSkKK3sKKyAgICBpZiAoIUluc3BlY3RvclRlc3QuZXZl
bnRIYW5kbGVyW2V2ZW50TmFtZV0pIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmVudEhhbmRs
ZXJbZXZlbnROYW1lXSA9IGNhbGxiYWNrOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHZh
ciBmaXJzdEhhbmRsZXIgPSBJbnNwZWN0b3JUZXN0LmV2ZW50SGFuZGxlcltldmVudE5hbWVdOwor
ICAgIHZhciBzZWNvbmRIYW5kbGVyID0gY2FsbGJhY2s7CisgICAgaWYgKGNhcHR1cmUpIHsKKyAg
ICAgICAgLy8gU3dhcCBmaXJzdEhhbmRsZXIgd2l0aCB0aGUgbmV3IGNhbGxiYWNrLCBzbyB0aGF0
IHdlIGV4ZWN1dGUgdGhlIGNhbGxiYWNrIGZpcnN0LgorICAgICAgICBbZmlyc3RIYW5kbGVyLCBz
ZWNvbmRIYW5kbGVyXSA9IFtzZWNvbmRIYW5kbGVyLCBmaXJzdEhhbmRsZXJdOworICAgIH0KKyAg
ICBJbnNwZWN0b3JUZXN0LmV2ZW50SGFuZGxlcltldmVudE5hbWVdID0gZnVuY3Rpb24obWVzc2Fn
ZU9iamVjdCkKKyAgICB7CisgICAgICAgIGZpcnN0SGFuZGxlcihtZXNzYWdlT2JqZWN0KTsKKyAg
ICAgICAgc2Vjb25kSGFuZGxlcihtZXNzYWdlT2JqZWN0KTsKKyAgICB9OworfQorCisvKioKICog
TG9ncyBtZXNzYWdlIHRvIGRvY3VtZW50LgogKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZQogKi8K
QEAgLTE2Myw3ICsxOTEsNyBAQCBJbnNwZWN0b3JUZXN0LmltcG9ydEluc3BlY3RvclNjcmlwdHMg
PSBmdW5jdGlvbigpCiAgICAgICAgIEluc3BlY3RvclRlc3QuaW1wb3J0U2NyaXB0KCIuLi8uLi8u
Li8uLi8uLi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS8iICsgaW5zcGVjdG9y
U2NyaXB0c1tpXSArICIuanMiKTsKIAogICAgIC8vIFRoZSBpbml0aWFsaXphdGlvbiBzaG91bGQg
YmUgaW4gc3luYyB3aXRoIFdlYkluc3BlY3Rvci5sb2FkZWQgaW4gTWFpbi5qcy4KLSAgICAvLyBG
SVhNRTogQXMgc29vbiBhcyB3ZSBjYW4gc3VwcG9ydCBhbGwgdGhlIG9ic2VydmVycyBhbmQgbWFu
YWdlcnMgd2Ugc2hvdWxkIHJlbW92ZSBVSSByZWxhdGVkIHRhc2tzIAorICAgIC8vIEZJWE1FOiBB
cyBzb29uIGFzIHdlIGNhbiBzdXBwb3J0IGFsbCB0aGUgb2JzZXJ2ZXJzIGFuZCBtYW5hZ2VycyB3
ZSBzaG91bGQgcmVtb3ZlIFVJIHJlbGF0ZWQgdGFza3MKICAgICAvLyBmcm9tIFdlYkluc3BlY3Rv
ci5sb2FkZWQsIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgZnJvbSB0aGUgTGF5b3V0VGVzdHMuCiAK
ICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyUGFnZURpc3BhdGNoZXIobmV3IFdlYkluc3Bl
Y3Rvci5QYWdlT2JzZXJ2ZXIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXBy
b3RvY29sL2RvbS9kb20tc2VhcmNoLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci1wcm90b2NvbC9kb20vZG9tLXNlYXJjaC1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYzMWUxYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20vZG9tLXNlYXJjaC1jcmFzaC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0cyB0aGF0IGVsZW1lbnRzIHBhbmVsIHNlYXJj
aCBpcyBub3QgY3Jhc2hpbmcgb24gZG9jdW1lbnRFbGVtZW50LWxlc3MgY2FzZXMuCisKKworUEFT
UzogVGVzdCBwYXNzZXMgaWYgaXQgZG9lc24ndCBjcmFzaC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9kb20tc2VhcmNoLWNyYXNoLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2RvbS1zZWFyY2gtY3Jhc2guaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWE5MjVkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9kb20tc2VhcmNoLWNyYXNoLmh0
bWwKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291
cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJET00uZ2V0RG9jdW1lbnQiLCB7
fSwgb25Hb3REb2N1bWVudCk7CisKKyAgICBmdW5jdGlvbiBvbkdvdERvY3VtZW50KG1lc3NhZ2Up
IHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja0ZvckVycm9yKG1lc3NhZ2UpOworICAgICAg
ICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJET00ucGVyZm9ybVNlYXJjaCIsIHtxdWVyeTog
IkZvb0JhciJ9LCBvblNlYXJjaENvbXBsZXRlZCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gb25T
ZWFyY2hDb21wbGV0ZWQobWVzc2FnZSkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuY2hl
Y2tGb3JFcnJvcihtZXNzYWdlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBU1M6IFRl
c3QgcGFzc2VzIGlmIGl0IGRvZXNuJ3QgY3Jhc2guIik7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
Y29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
PlRlc3RzIHRoYXQgZWxlbWVudHMgcGFuZWwgc2VhcmNoIGlzIG5vdCBjcmFzaGluZyBvbiBkb2N1
bWVudEVsZW1lbnQtbGVzcyBjYXNlcy48L3A+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2RvbS1z
ZWFyY2gtY3Jhc2gtaWZyYW1lLmh0bWwiIG9ubG9hZD0icnVuVGVzdCgpIj48L2lmcmFtZT4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2Nv
bC9kb20vZG9tLXNlYXJjaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJv
dG9jb2wvZG9tL2RvbS1zZWFyY2gtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjQwMWViZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3ItcHJvdG9jb2wvZG9tL2RvbS1zZWFyY2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTgg
QEAKK1Rlc3RpbmcgRE9NLnBlcmZvcm1TZWFyY2ggd2l0aCBubyBwYXJlbnQgbm9kZSBpZHMuCisK
KworPT09IFF1ZXJ5OiAiYm9keSIgPT09CitDb3VudDogMgorYm9keS5tYWluLWZyYW1lCitib2R5
Lmluc2lkZS1pZnJhbWUKKz09PSBRdWVyeTogIjxib2R5IiA9PT0KK0NvdW50OiAyCitib2R5Lm1h
aW4tZnJhbWUKK2JvZHkuaW5zaWRlLWlmcmFtZQorPT09IFF1ZXJ5OiAiYm9keT4iID09PQorQ291
bnQ6IDIKK2JvZHkubWFpbi1mcmFtZQorYm9keS5pbnNpZGUtaWZyYW1lCis9PT0gUXVlcnk6ICI8
Ym9keT4iID09PQorQ291bnQ6IDIKK2JvZHkubWFpbi1mcmFtZQorYm9keS5pbnNpZGUtaWZyYW1l
Cis9PT0gUXVlcnk6ICJvbmxvYWQiID09PQorQ291bnQ6IDEKK2JvZHkubWFpbi1mcmFtZQorPT09
IFF1ZXJ5OiAicnVuVGVzdCgpIiA9PT0KK0NvdW50OiAxCitib2R5Lm1haW4tZnJhbWUKKz09PSBR
dWVyeTogIlwicnVuVGVzdCgpIiA9PT0KK0NvdW50OiAxCitib2R5Lm1haW4tZnJhbWUKKz09PSBR
dWVyeTogIlwicnVuVGVzdCgpXCIiID09PQorQ291bnQ6IDEKK2JvZHkubWFpbi1mcmFtZQorPT09
IFF1ZXJ5OiAicnVuVGVzdCgpXCIiID09PQorQ291bnQ6IDEKK2JvZHkubWFpbi1mcmFtZQorPT09
IFF1ZXJ5OiAiLmJvZHktaW5zaWRlLWlmcmFtZSIgPT09CitDb3VudDogMAorPT09IFF1ZXJ5OiAi
KiIgPT09CitDb3VudDogMTIKK2h0bWwKK2hlYWQKK3NjcmlwdAorc2NyaXB0Citib2R5Lm1haW4t
ZnJhbWUKK3AKK2lmcmFtZQoraHRtbC5pbnNpZGUtaWZyYW1lCitoZWFkLmluc2lkZS1pZnJhbWUK
K2JvZHkuaW5zaWRlLWlmcmFtZQorZGl2LmJhc2UxLmluc2lkZS1pZnJhbWUKK3AuaW5zaWRlLWlm
cmFtZQorPT09IFF1ZXJ5OiAiL2h0bWwvYm9keSIgPT09CitDb3VudDogMgorYm9keS5tYWluLWZy
YW1lCitib2R5Lmluc2lkZS1pZnJhbWUKKz09PSBRdWVyeTogIi9odG1sL2JvZHkvQG9ubG9hZCIg
PT09CitDb3VudDogMQorYm9keS5tYWluLWZyYW1lCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci1wcm90b2NvbC9kb20vZG9tLXNlYXJjaC13aXRoLWNvbnRleHQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9kb20tc2VhcmNoLXdpdGgt
Y29udGV4dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OTllNDQzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2Nv
bC9kb20vZG9tLXNlYXJjaC13aXRoLWNvbnRleHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUg
QEAKK1Rlc3RpbmcgRE9NLnBlcmZvcm1TZWFyY2ggd2l0aCBwYXJlbnQgbm9kZSBpZHMuCisKKwor
PT09IFF1ZXJ5OiAicCIgaW4gW10gPT09CitDb3VudDogMAorPT09IFF1ZXJ5OiAicCIgaW4gWy5i
YXNlMV0gPT09CitDb3VudDogMQorcC5iYXNlMS5tYWluLWZyYW1lCis9PT0gUXVlcnk6ICJwIiBp
biBbLmJhc2UyXSA9PT0KK0NvdW50OiAxCitwLmJhc2UyLm1haW4tZnJhbWUKKz09PSBRdWVyeTog
InAiIGluIFsuYmFzZTEsIC5iYXNlMl0gPT09CitDb3VudDogMgorcC5iYXNlMS5tYWluLWZyYW1l
CitwLmJhc2UyLm1haW4tZnJhbWUKKz09PSBRdWVyeTogInAiIGluIFtpZnJhbWVdID09PQorQ291
bnQ6IDEKK3AuaW5zaWRlLWlmcmFtZQorPT09IFF1ZXJ5OiAiLy9wIiBpbiBbLmJhc2UxXSA9PT0K
K0NvdW50OiAxCitwLmJhc2UxLm1haW4tZnJhbWUKKz09PSBRdWVyeTogIi8vZGl2IiBpbiBbLmJh
c2UxXSA9PT0KK0NvdW50OiAxCitkaXYuYmFzZTEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2RvbS9kb20tc2VhcmNoLXdpdGgtY29udGV4dC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9kb20tc2VhcmNoLXdpdGgtY29udGV4dC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlZDgzMjkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2RvbS1zZWFyY2gt
d2l0aC1jb250ZXh0Lmh0bWwKQEAgLTAsMCArMSwxMjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci1wcm90b2NvbC9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgLy8gQ3JlYXRlIGEgRE9NIGxpc3RlbmVyIHRvIGNv
bnZlcnQgbm9kZUlkcyB0byB0YWcgbmFtZXMuCisgICAgSW5zcGVjdG9yVGVzdC5pbXBvcnRTY3Jp
cHQoIkluc3BlY3RvckRPTUxpc3RlbmVyLmpzIik7CisgICAgdmFyIGRvbSA9IGNyZWF0ZURPTUxp
c3RlbmVyKCk7CisKKyAgICAvLyBDYWNoaW5nIHRoZSBvdXRwdXQgdG8gYXZvaWQgc2VhcmNoaW5n
IHRocm91Z2ggdGhlIGxvZy4KKyAgICB2YXIgb3V0cHV0ID0gW107CisgICAgdmFyIGRvY3VtZW50
SWQ7CisgICAgdmFyIGRvbVNlYXJjaFF1ZXJpZXMgPSBbCisgICAgICAgIHsKKyAgICAgICAgICAg
IHF1ZXJ5OiAicCIsCisgICAgICAgICAgICBub2RlczogW10KKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgcXVlcnk6ICJwIiwKKyAgICAgICAgICAgIG5vZGVzOiBbIi5iYXNlMSJd
CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHF1ZXJ5OiAicCIsCisgICAgICAg
ICAgICBub2RlczogWyIuYmFzZTIiXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICBxdWVyeTogInAiLAorICAgICAgICAgICAgbm9kZXM6IFsiLmJhc2UxIiwgIi5iYXNlMiJdCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHF1ZXJ5OiAicCIsCisgICAgICAgICAg
ICBub2RlczogWyJpZnJhbWUiXQorICAgICAgICB9LAorCisgICAgICAgIC8vIFhQYXRoIHNob3Vs
ZCByZXR1cm4ganVzdCB0aGUgY2hpbGRyZW4gb2YgdGhlIHNlbGVjdGVkIG5vZGVzLgorICAgICAg
ICB7CisgICAgICAgICAgICBxdWVyeTogIi8vcCIsCisgICAgICAgICAgICBub2RlczogWyIuYmFz
ZTEiXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBxdWVyeTogIi8vZGl2IiwK
KyAgICAgICAgICAgIG5vZGVzOiBbIi5iYXNlMSJdCisgICAgICAgIH0KKyAgICBdOworCisgICAg
SW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiRE9NLmdldERvY3VtZW50Iiwge30sIG9uR290RG9j
dW1lbnQpOworCisgICAgZnVuY3Rpb24gb25Hb3REb2N1bWVudChtZXNzYWdlKSB7CisgICAgICAg
IEluc3BlY3RvclRlc3QuY2hlY2tGb3JFcnJvcihtZXNzYWdlKTsKKyAgICAgICAgZG9tLmNvbGxl
Y3ROb2RlKG1lc3NhZ2UucmVzdWx0LnJvb3QpOworICAgICAgICBkb2N1bWVudElkID0gbWVzc2Fn
ZS5yZXN1bHQucm9vdC5ub2RlSWQ7CisgICAgICAgIHBlcmZvcm1TZWFyY2hlcyhkb21TZWFyY2hR
dWVyaWVzLCB0ZXN0RmluaXNoZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBlcmZvcm1TZWFy
Y2hlcyhsaXN0LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIG5leHQoKSB7Cisg
ICAgICAgICAgICBpZiAobGlzdC5sZW5ndGgpCisgICAgICAgICAgICAgICAgc2VhcmNoKGxpc3Qu
c2hpZnQoKSwgbmV4dCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2FsbGJh
Y2soKTsKKyAgICAgICAgfQorICAgICAgICBuZXh0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
c2VhcmNoKHF1ZXJ5RGF0YSwgY2FsbGJhY2spCisgICAgeworICAgICAgICByZXNvbHZlU2VsZWN0
b3JzKHF1ZXJ5RGF0YS5ub2RlcywgZnVuY3Rpb24obm9kZUlkcykgeworICAgICAgICAgICAgb3V0
cHV0LnB1c2goIj09PSBRdWVyeTogIiArIEpTT04uc3RyaW5naWZ5KHF1ZXJ5RGF0YS5xdWVyeSkg
KyAiIGluIFsiICsgcXVlcnlEYXRhLm5vZGVzLmpvaW4oIiwgIikgKyAiXSA9PT0iKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQoIkRPTS5wZXJmb3JtU2VhcmNoIiwge3F1
ZXJ5OiBxdWVyeURhdGEucXVlcnksIG5vZGVJZHM6IG5vZGVJZHN9LCBmdW5jdGlvbihtZXNzYWdl
KSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja0ZvckVycm9yKG1lc3NhZ2Up
OworICAgICAgICAgICAgICAgIHByaW50U2VhcmNoUmVzdWx0cyhtZXNzYWdlLnJlc3VsdCwgY2Fs
bGJhY2spOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHJlc29sdmVTZWxlY3RvcnMobm9kZXMsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFy
IHJlc3VsdHMgPSBuZXcgQXJyYXkobm9kZXMubGVuZ3RoKTsKKyAgICAgICAgdmFyIHJlbWFpbmlu
ZyA9IG5vZGVzLmxlbmd0aDsKKyAgICAgICAgaWYgKCFyZW1haW5pbmcpCisgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2socmVzdWx0cyk7CisgICAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24o
c2VsZWN0b3IsIGluZGV4KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5k
KCJET00ucXVlcnlTZWxlY3RvciIsIHtub2RlSWQ6IGRvY3VtZW50SWQsIHNlbGVjdG9yOiBzZWxl
Y3Rvcn0sIGZ1bmN0aW9uKG1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmNoZWNrRm9yRXJyb3IobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0c1tpbmRleF0g
PSBtZXNzYWdlLnJlc3VsdC5ub2RlSWQ7CisgICAgICAgICAgICAgICAgaWYgKC0tcmVtYWluaW5n
IDw9IDApCisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdHMpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHByaW50U2VhcmNoUmVz
dWx0cyhyZXN1bHRzLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG91dHB1dC5wdXNoKCJDb3Vu
dDogIiArIHJlc3VsdHMucmVzdWx0Q291bnQpOworICAgICAgICBpZiAoIXJlc3VsdHMucmVzdWx0
Q291bnQpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKKworICAgICAgICB2YXIgb3B0
aW9ucyA9IHsic2VhcmNoSWQiOiByZXN1bHRzLnNlYXJjaElkLCAiZnJvbUluZGV4IjogMCwgInRv
SW5kZXgiOiByZXN1bHRzLnJlc3VsdENvdW50fTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5k
Q29tbWFuZCgiRE9NLmdldFNlYXJjaFJlc3VsdHMiLCBvcHRpb25zLCBmdW5jdGlvbihtZXNzYWdl
KSB7CisgICAgICAgICAgICBmb3IgKHZhciBub2RlSWQgb2YgbWVzc2FnZS5yZXN1bHQubm9kZUlk
cykKKyAgICAgICAgICAgICAgICBvdXRwdXQucHVzaChkb20uZ2V0Tm9kZUlkZW50aWZpZXIobm9k
ZUlkKSk7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiB0ZXN0RmluaXNoZWQoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2cob3V0cHV0LmpvaW4oIlxuIikpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiIGNsYXNzPSJtYWluLWZyYW1lIj4KKyAgICA8cD5UZXN0aW5nIERPTS5wZXJmb3JtU2VhcmNo
IHdpdGggcGFyZW50IG5vZGUgaWRzLjwvcD4KKworICAgIDxkaXYgY2xhc3M9ImJhc2UxIj4KKyAg
ICAgICAgPHAgY2xhc3M9ImJhc2UxIG1haW4tZnJhbWUiPjwvcD4KKyAgICA8L2Rpdj4KKworICAg
IDxkaXYgY2xhc3M9ImJhc2UyIj4KKyAgICAgICAgPHAgY2xhc3M9ImJhc2UyIG1haW4tZnJhbWUi
PjwvcD4KKyAgICA8L2Rpdj4KKworICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvZG9tLXNlYXJj
aC1pZnJhbWUuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2RvbS1zZWFyY2guaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20vZG9tLXNlYXJjaC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMGNmZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2RvbS1zZWFyY2guaHRtbApAQCAtMCwwICsx
LDcxIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcmVzb3VyY2VzL3Byb3RvY29s
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIC8v
IExvYWRpbmcgdGhlIHF1ZXJpZXMgZnJvbSBleHRlcm5hbCBmaWxlIHRvIGF2b2lkIGhhdmluZyB0
aGVtIHNob3cgdXAgaW4gdGhlIHJlc3VsdHMuCisgICAgSW5zcGVjdG9yVGVzdC5pbXBvcnRTY3Jp
cHQoIi4uLy4uLy4uLy4uL2luc3BlY3Rvci1wcm90b2NvbC9kb20vcmVzb3VyY2VzL2RvbS1zZWFy
Y2gtcXVlcmllcy5qcyIpOworCisgICAgLy8gQ3JlYXRlIGEgRE9NIGxpc3RlbmVyIHRvIGNvbnZl
cnQgbm9kZUlkcyB0byB0YWcgbmFtZXMuCisgICAgSW5zcGVjdG9yVGVzdC5pbXBvcnRTY3JpcHQo
Ikluc3BlY3RvckRPTUxpc3RlbmVyLmpzIik7CisgICAgdmFyIGRvbSA9IGNyZWF0ZURPTUxpc3Rl
bmVyKCk7CisKKyAgICAvLyBDYWNoaW5nIHRoZSBvdXRwdXQgdG8gYXZvaWQgc2VhcmNoaW5nIHRo
cm91Z2ggdGhlIGxvZy4KKyAgICB2YXIgb3V0cHV0ID0gW107CisKKyAgICBJbnNwZWN0b3JUZXN0
LnNlbmRDb21tYW5kKCJET00uZ2V0RG9jdW1lbnQiLCB7fSwgb25Hb3REb2N1bWVudCk7CisKKyAg
ICBmdW5jdGlvbiBvbkdvdERvY3VtZW50KG1lc3NhZ2UpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5jaGVja0ZvckVycm9yKG1lc3NhZ2UpOworICAgICAgICBkb20uY29sbGVjdE5vZGUobWVzc2Fn
ZS5yZXN1bHQucm9vdCk7CisgICAgICAgIHBlcmZvcm1TZWFyY2hlcyhkb21TZWFyY2hRdWVyaWVz
LCB0ZXN0RmluaXNoZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBlcmZvcm1TZWFyY2hlcyhs
aXN0LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIG5leHQoKSB7CisgICAgICAg
ICAgICBpZiAobGlzdC5sZW5ndGgpCisgICAgICAgICAgICAgICAgc2VhcmNoKGxpc3Quc2hpZnQo
KSwgbmV4dCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsK
KyAgICAgICAgfQorICAgICAgICBuZXh0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2VhcmNo
KHF1ZXJ5LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG91dHB1dC5wdXNoKCI9PT0gUXVlcnk6
ICIgKyBKU09OLnN0cmluZ2lmeShxdWVyeSkgKyAiID09PSIpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LnNlbmRDb21tYW5kKCJET00ucGVyZm9ybVNlYXJjaCIsIHtxdWVyeTogcXVlcnl9LCBmdW5j
dGlvbihtZXNzYWdlKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrRm9yRXJyb3Io
bWVzc2FnZSk7CisgICAgICAgICAgICBwcmludFNlYXJjaFJlc3VsdHMobWVzc2FnZS5yZXN1bHQs
IGNhbGxiYWNrKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJpbnRTZWFy
Y2hSZXN1bHRzKHJlc3VsdHMsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgb3V0cHV0LnB1c2go
IkNvdW50OiAiICsgcmVzdWx0cy5yZXN1bHRDb3VudCk7CisgICAgICAgIGlmICghcmVzdWx0cy5y
ZXN1bHRDb3VudCkKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOworCisgICAgICAgIHZh
ciBvcHRpb25zID0geyJzZWFyY2hJZCI6IHJlc3VsdHMuc2VhcmNoSWQsICJmcm9tSW5kZXgiOiAw
LCAidG9JbmRleCI6IHJlc3VsdHMucmVzdWx0Q291bnR9OworICAgICAgICBJbnNwZWN0b3JUZXN0
LnNlbmRDb21tYW5kKCJET00uZ2V0U2VhcmNoUmVzdWx0cyIsIG9wdGlvbnMsIGZ1bmN0aW9uIG9u
UmVzdWx0c1JlY2VpdmVkKG1lc3NhZ2UpIHsKKyAgICAgICAgICAgIGZvciAodmFyIG5vZGVJZCBv
ZiBtZXNzYWdlLnJlc3VsdC5ub2RlSWRzKQorICAgICAgICAgICAgICAgIG91dHB1dC5wdXNoKGRv
bS5nZXROb2RlSWRlbnRpZmllcihub2RlSWQpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7Cisg
ICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RGaW5pc2hlZCgpCisgICAgewor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhvdXRwdXQuam9pbigiXG4iKSk7CisgICAgICAgIElu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSIgY2xhc3M9Im1haW4tZnJhbWUiPgorICAgIDxwPlRl
c3RpbmcgRE9NLnBlcmZvcm1TZWFyY2ggd2l0aCBubyBwYXJlbnQgbm9kZSBpZHMuPC9wPgorICAg
IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvZG9tLXNlYXJjaC1pZnJhbWUuaHRtbCI+PC9pZnJhbWU+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJv
dG9jb2wvZG9tL3Jlc291cmNlcy9kb20tc2VhcmNoLWNyYXNoLWlmcmFtZS5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9yZXNvdXJjZXMvZG9tLXNlYXJjaC1jcmFzaC1p
ZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2Y3MWRlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9yZXNv
dXJjZXMvZG9tLXNlYXJjaC1jcmFzaC1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxzY3Jp
cHQ+Citkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3Jlc291cmNlcy9kb20tc2VhcmNoLWlmcmFtZS5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9yZXNvdXJjZXMvZG9tLXNlYXJj
aC1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjAzYzc2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9y
ZXNvdXJjZXMvZG9tLXNlYXJjaC1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sIGNs
YXNzPSJpbnNpZGUtaWZyYW1lIj4KKyAgICA8aGVhZCBjbGFzcz0iaW5zaWRlLWlmcmFtZSI+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IGNsYXNzPSJpbnNpZGUtaWZyYW1lIj4KKyAgICAgICAgPGRp
diBjbGFzcz0iYmFzZTEgaW5zaWRlLWlmcmFtZSI+CisgICAgICAgICAgICA8cCBjbGFzcz0iaW5z
aWRlLWlmcmFtZSI+PC9wPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yLXByb3RvY29sL2RvbS9yZXNvdXJjZXMvZG9tLXNlYXJjaC1xdWVyaWVzLmpzIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS9yZXNvdXJjZXMvZG9tLXNlYXJjaC1xdWVyaWVz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxY2YzNWUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tL3Jlc291cmNlcy9k
b20tc2VhcmNoLXF1ZXJpZXMuanMKQEAgLTAsMCArMSwyNSBAQAorLy8gSGF2aW5nIHRoZSBxdWVy
aWVzIGluIGFuIGV4dGVybmFsIGZpbGUsIHNvIHRoYXQgRE9NIHNlYXJjaCB3aWxsIG5vdCBmaW5k
IHRoZSBzY3JpcHQgd2hlbiBzZWFyY2hpbmcgZm9yIHZhbHVlcy4KKwordmFyIGRvbVNlYXJjaFF1
ZXJpZXMgPSBbCisgICAgImJvZHkiLAorICAgICI8Ym9keSIsCisgICAgImJvZHk+IiwKKyAgICAi
PGJvZHk+IiwKKworICAgIC8vIEF0dHJpYnV0ZSBuYW1lcworICAgICJvbmxvYWQiLAorCisgICAg
Ly8gQXR0cmlidXRlIHZhbHVlcworICAgICJydW5UZXN0KCkiLAorICAgICJcInJ1blRlc3QoKSIs
CisgICAgIlwicnVuVGVzdCgpXCIiLAorICAgICJydW5UZXN0KClcIiIsCisKKyAgICAvLyBDU1Mg
c2VsZWN0b3JzCisgICAgIi5ib2R5LWluc2lkZS1pZnJhbWUiLAorICAgICIqIiwKKworICAgIC8v
IFhQYXRoIHF1ZXJ5CisgICAgIi9odG1sL2JvZHkiLAorICAgICIvaHRtbC9ib2R5L0BvbmxvYWQi
LAorXTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDc0ZTM4ZjQuLjMzNGRmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNTkzLDYgKzE1OTMs
NyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JOb2RlRmluZGVyLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3Bl
Y3RvclByb2ZpbGVyQWdlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzNjMzRmYS4uZTRlMGI4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTExLTE0ICBBbGV4YW5kcnUgQ2hpY3VsaXRh
ICA8YWNoaWN1QGFkb2JlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBET00ucGVyZm9y
bVNlYXJjaCBzaG91bGQgYWNjZXB0IGEgbGlzdCBvZiBjb250ZXh0IG5vZGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzOTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgRXh0cmFjdGVkIHRoZSBjb2Rl
IGluIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoIGludG8gaXRzIG93biBoZWxwZXIg
Y2xhc3MKKyAgICAgICAgY2FsbGVkIEluc3BlY3Rvck5vZGVGaW5kZXIuIEFsc28gYWRkZWQgYSBu
ZXcgYXJyYXkgcGFyYW1ldGVyIGNhbGxlZCAibm9kZUlkcyIKKyAgICAgICAgdGhhdCBjYW4gYmUg
dXNlZCB0byBsaW1pdCB0aGUgc2VhcmNoIHJlc3VsdHMgdG8ganVzdCBwYXJ0aWFsIHN1YnRyZWVz
LgorCisgICAgICAgIFRlc3RzOiBpbnNwZWN0b3ItcHJvdG9jb2wvZG9tL2RvbS1zZWFyY2gtY3Jh
c2guaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yLXByb3RvY29sL2RvbS9kb20tc2VhcmNo
LXdpdGgtY29udGV4dC5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0b3ItcHJvdG9jb2wvZG9t
L2RvbS1zZWFyY2guaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JBbGxJbk9uZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNo
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6c3RyaXBDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5vZGVGaW5k
ZXI6Okluc3BlY3Rvck5vZGVGaW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTm9k
ZUZpbmRlcjo6cGVyZm9ybVNlYXJjaCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOb2Rl
RmluZGVyOjpzZWFyY2hVc2luZ0RPTVRyZWVUcmF2ZXJzYWwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTm9kZUZpbmRlcjo6bWF0Y2hlc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JOb2RlRmluZGVyOjptYXRjaGVzRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JOb2RlRmluZGVyOjpzZWFyY2hVc2luZ1hQYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvck5vZGVGaW5kZXI6OnNlYXJjaFVzaW5nQ1NTU2VsZWN0b3JzKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvck5vZGVGaW5kZXI6OnJlc3VsdHMpOgorCiAyMDEzLTExLTE1ICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgogCiAg
ICAgICAgIE1vZGlmeWluZyBSVENJY2VDYW5kaWRhdGUgb2JqZWN0IGNvbnN0cnVjdGlvbiB0byBt
YXRjaCB0aGUgc3BlYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOTMwOTk3OS4u
NGI5Y2RlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zODIyLDYgKzM4MjIs
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JMYXllclRyZWVBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TWVtb3J5QWdlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVG
aW5kZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRl
ci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmggXAogCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IDM0NWY2ZjUuLjljYTJi
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
agpAQCAtMTc4MDAsNiArMTc4MDAsMTQgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAiPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
ck92ZXJsYXkuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CkBAIC0yMDg5NCw2ICsyMDkwMiw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3JcSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JNZW1vcnlBZ2VudC5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rvck5vZGVG
aW5kZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JPdmVybGF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5z
cGVjdG9yUGFnZUFnZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDU1YTk5M2Yu
LmEzOTVkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTQ4NTQsNiArNDg1NCw5IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAi
PgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JET01Ob2RlQWdlbnQu
Y3BwIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgpAQCAtMTI0NDQsNiArMTI0NDcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXEluc3BlY3Rvck1lbW9yeUFnZW50LmgiPgogICAgICAgPEZpbHRlcj5pbnNw
ZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JOb2RlRmluZGVyLmgiPgorICAgICAgPEZpbHRlcj5pbnNw
ZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JPdmVybGF5LmgiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0
b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1OTVmODU3Li5kZWU5ZTg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xNjE2LDYgKzE2MTYsOCBAQAogCQk1MDNEMENBQjE0QjVCMDg3MDBGMzJGNTggLyogQ3VzdG9t
RmlsdGVyUmVuZGVyZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUwM0QwQ0E4MTRCNUIwODcwMEYzMkY1OCAvKiBDdXN0b21GaWx0ZXJSZW5kZXJlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTUwM0QwQ0FDMTRCNUIw
ODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDNEMENBOTE0QjVCMDg3MDBGMzJGNTcg
LyogQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUwM0QwQ0FFMTRCNUIwQkEwMEYzMkY1NyAvKiBTdHls
ZUN1c3RvbUZpbHRlclByb2dyYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUwM0QwQ0FEMTRCNUIwQkEwMEYzMkY1NyAvKiBTdHlsZUN1c3RvbUZpbHRl
clByb2dyYW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQk1MDRB
QUNDRDE4MzQ0NTU5MDBFM0Q5QkMgLyogSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDRBQUNDQjE4MzQ0NTU5MDBF
M0Q5QkMgLyogSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAgKi87IH07CisJCTUwNEFBQ0NFMTgzNDQ1
NTkwMEUzRDlCQyAvKiBJbnNwZWN0b3JOb2RlRmluZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDRBQUNDQzE4MzQ0NTU5MDBFM0Q5QkMgLyogSW5z
cGVjdG9yTm9kZUZpbmRlci5oICovOyB9OwogCQk1MDgxRTNDMzNDRTU4MEMxNkVGOEI0OEIgLyog
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUwODFFM0RGM0NGQzgwQzE2RUY4QjQ4QiAvKiBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwICovOyB9OwogCQk1MDgxRTNFMDNDRkY4MEMxNkVGOEI0OEIgLyogQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MDgxRTNFMTNEMDI4MEMxNkVGOEI0OEIgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTA4
Q0NBNEYxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwOENDQTREMTNDRjEwNkIwMDMxNTFG
MyAvKiBSZW5kZXJGbG93VGhyZWFkLmggKi87IH07CkBAIC04MzEwLDYgKzgzMTIsOCBAQAogCQk1
MDNEMENBODE0QjVCMDg3MDBGMzJGNTggLyogQ3VzdG9tRmlsdGVyUmVuZGVyZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyUmVuZGVyZXIuaDsgcGF0aCA9
IGZpbHRlcnMvQ3VzdG9tRmlsdGVyUmVuZGVyZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTAzRDBDQTkxNEI1QjA4NzAwRjMyRjU3IC8qIEN1c3RvbUZpbHRlclByb2dyYW1DbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyUHJvZ3Jh
bUNsaWVudC5oOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwM0QwQ0FEMTRCNUIwQkEwMEYzMkY1NyAvKiBT
dHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmg7IHBhdGggPSBzdHlsZS9TdHlsZUN1c3RvbUZp
bHRlclByb2dyYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTA0QUFDQ0IxODM0
NDU1OTAwRTNEOUJDIC8qIEluc3BlY3Rvck5vZGVGaW5kZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yTm9kZUZpbmRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUwNEFBQ0NDMTgzNDQ1NTkwMEUzRDlCQyAvKiBJbnNwZWN0b3JO
b2RlRmluZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvck5v
ZGVGaW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTA4MUUzREYzQ0ZDODBD
MTZFRjhCNDhCIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTA4MUUzRTEzRDAyODBDMTZFRjhCNDhCIC8qIENhY2hlZFJl
c291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwOENDQTRE
MTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlckZsb3dUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE0NDE1LDYgKzE0NDE5LDggQEAKIAkJCQk3QTI0NTg3QTEwMjFFQUY0MDAwQTAw
QUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuaCAqLywKIAkJCQlGM0Q0QzQ3NjEyRTA3NjYzMDAzREEx
NTAgLyogSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgKi8sCiAJCQkJRjNENEM0NzcxMkUw
NzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCAqLywKKwkJCQk1MDRB
QUNDQjE4MzQ0NTU5MDBFM0Q5QkMgLyogSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAgKi8sCisJCQkJ
NTA0QUFDQ0MxODM0NDU1OTAwRTNEOUJDIC8qIEluc3BlY3Rvck5vZGVGaW5kZXIuaCAqLywKIAkJ
CQk3QTc0RUNCODEwMTgzOUE1MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNw
cCAqLywKIAkJCQk3QTc0RUNCOTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmggKi8sCiAJCQkJMjI3Nzc3NUYxMzQ1REVBOTAwOEVBNDU1IC8qIEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbC5oICovLApAQCAtMjMzNTMsNiArMjMzNTksNyBAQAogCQkJCUE5RDI0ODA3
MEQ3NTdFN0QwMEZERjk1OSAvKiBKU0RPTU1pbWVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OUQyNDgwOTBENzU3RTdEMDBGREY5NTkgLyogSlNET01NaW1lVHlwZUFycmF5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MkNDQTlFMzE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MDRBQUNDRTE4MzQ0NTU5MDBFM0Q5QkMgLyog
SW5zcGVjdG9yTm9kZUZpbmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDRTUzRTAwQThEMTg4
MTAwMjI5NDdEIC8qIEpTRE9NUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTlBQzNGMzE4
MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGQjkxMzkyQTE2QUU0RkMwMDAxRkU2ODIgLyogSlNET01QYXRoLmggaW4gSGVhZGVycyAq
LywKQEAgLTI3NjYxLDYgKzI3NjY4LDcgQEAKIAkJCQk1MTFFRjJDQTE3RjBGRDM1MDBFNEZBMTYg
LyogSlNJREJUcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUQxNjhFNzEwMjI2
RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTFCNzg0MjAxNjM5Q0JCRTAwMDdCNjkyIC8qIFNoYXJlZFdvcmtlclJlcG9zaXRvcnku
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTA0QUFDQ0QxODM0NDU1OTAwRTNEOUJDIC8qIEluc3Bl
Y3Rvck5vZGVGaW5kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFEMTY4RUQxMDIyNkU4OTAw
OUJDODI3IC8qIFNoYXJlZFdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMz
REE2NDBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTYzRTg4RjcxMThBMzlEMjAwRUQ5MjMxIC8qIFNpbXBsZUZvbnREYXRhQ29yZVRleHQu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFsbEluT25lLmNwcAppbmRleCAzYmUwMjNlLi4yNjNiZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKQEAgLTYxLDYgKzYxLDcgQEAKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAi
CisjaW5jbHVkZSAiSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
T3ZlcmxheS5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmNwcCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDI1ZWVkODYuLmQzYzJhMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNzEsNiAr
NzEsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySGlzdG9yeS5oIgorI2luY2x1ZGUgIklu
c3BlY3Rvck5vZGVGaW5kZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50
cy5oIgpAQCAtODAsNyArODEsNiBAQAogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKICNpbmNs
dWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKLSNpbmNsdWRlICJOb2RlVHJhdmVy
c2FsLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNs
dWRlICJSZW5kZXJTdHlsZS5oIgpAQCAtOTYsNyArOTYsNiBAQAogI2luY2x1ZGUgImh0bWxlZGl0
aW5nLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNp
bmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTg4
MSwxMjggKzg4MCw0NSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVy
cyhOb2RlKiBub2RlLCBWZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+JgogICAgIH0KIH0KIAotdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgU3RyaW5nKiBzZWFyY2hJZCwgaW50KiByZXN1
bHRDb3VudCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2goRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG5vZGVJZHMsIFN0cmluZyogc2VhcmNoSWQsIGlu
dCogcmVzdWx0Q291bnQpCiB7Ci0gICAgLy8gRklYTUU6IEZldyB0aGluZ3MgYXJlIG1pc3Npbmcg
aGVyZToKLSAgICAvLyAxKSBTZWFyY2ggd29ya3Mgd2l0aCBub2RlIGdyYW51bGFyaXR5IC0gbnVt
YmVyIG9mIG1hdGNoZXMgd2l0aGluIG5vZGUgaXMgbm90IGNhbGN1bGF0ZWQuCi0gICAgLy8gMikg
VGhlcmUgaXMgbm8gbmVlZCB0byBwdXNoIGFsbCBzZWFyY2ggcmVzdWx0cyB0byB0aGUgZnJvbnQt
ZW5kIGF0IGEgdGltZSwgcHVzaGluZyBuZXh0IC8gcHJldmlvdXMgcmVzdWx0Ci0gICAgLy8gICAg
aXMgc3VmZmljaWVudC4KKyAgICAvLyBGSVhNRTogU2VhcmNoIHdvcmtzIHdpdGggbm9kZSBncmFu
dWxhcml0eSAtIG51bWJlciBvZiBtYXRjaGVzIHdpdGhpbiBub2RlIGlzIG5vdCBjYWxjdWxhdGVk
LgorICAgIEluc3BlY3Rvck5vZGVGaW5kZXIgZmluZGVyKHdoaXRlc3BhY2VUcmltbWVkUXVlcnkp
OwogCi0gICAgdW5zaWduZWQgcXVlcnlMZW5ndGggPSB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5Lmxl
bmd0aCgpOwotICAgIGJvb2wgc3RhcnRUYWdGb3VuZCA9ICF3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5
LmZpbmQoJzwnKTsKLSAgICBib29sIGVuZFRhZ0ZvdW5kID0gd2hpdGVzcGFjZVRyaW1tZWRRdWVy
eS5yZXZlcnNlRmluZCgnPicpICsgMSA9PSBxdWVyeUxlbmd0aDsKLSAgICBib29sIHN0YXJ0UXVv
dGVGb3VuZCA9ICF3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LmZpbmQoJyInKTsKLSAgICBib29sIGVu
ZFF1b3RlRm91bmQgPSB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LnJldmVyc2VGaW5kKCciJykgKyAx
ID09IHF1ZXJ5TGVuZ3RoOwotICAgIGJvb2wgZXhhY3RBdHRyaWJ1dGVNYXRjaCA9IHN0YXJ0UXVv
dGVGb3VuZCAmJiBlbmRRdW90ZUZvdW5kOwotCi0gICAgU3RyaW5nIHRhZ05hbWVRdWVyeSA9IHdo
aXRlc3BhY2VUcmltbWVkUXVlcnk7Ci0gICAgU3RyaW5nIGF0dHJpYnV0ZVF1ZXJ5ID0gd2hpdGVz
cGFjZVRyaW1tZWRRdWVyeTsKLSAgICBpZiAoc3RhcnRUYWdGb3VuZCkKLSAgICAgICAgdGFnTmFt
ZVF1ZXJ5ID0gdGFnTmFtZVF1ZXJ5LnJpZ2h0KHRhZ05hbWVRdWVyeS5sZW5ndGgoKSAtIDEpOwot
ICAgIGlmIChlbmRUYWdGb3VuZCkKLSAgICAgICAgdGFnTmFtZVF1ZXJ5ID0gdGFnTmFtZVF1ZXJ5
LmxlZnQodGFnTmFtZVF1ZXJ5Lmxlbmd0aCgpIC0gMSk7Ci0gICAgaWYgKHN0YXJ0UXVvdGVGb3Vu
ZCkKLSAgICAgICAgYXR0cmlidXRlUXVlcnkgPSBhdHRyaWJ1dGVRdWVyeS5yaWdodChhdHRyaWJ1
dGVRdWVyeS5sZW5ndGgoKSAtIDEpOwotICAgIGlmIChlbmRRdW90ZUZvdW5kKQotICAgICAgICBh
dHRyaWJ1dGVRdWVyeSA9IGF0dHJpYnV0ZVF1ZXJ5LmxlZnQoYXR0cmlidXRlUXVlcnkubGVuZ3Ro
KCkgLSAxKTsKLQotICAgIFZlY3RvcjxEb2N1bWVudCo+IGRvY3MgPSBkb2N1bWVudHMoKTsKLSAg
ICBMaXN0SGFzaFNldDxOb2RlKj4gcmVzdWx0Q29sbGVjdG9yOwotCi0gICAgZm9yIChWZWN0b3I8
RG9jdW1lbnQqPjo6aXRlcmF0b3IgaXQgPSBkb2NzLmJlZ2luKCk7IGl0ICE9IGRvY3MuZW5kKCk7
ICsraXQpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gKml0OwotICAgICAgICBOb2Rl
KiBub2RlID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAgICAgICBpZiAoIW5vZGUp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBNYW51YWwgcGxhaW4gdGV4dCBz
ZWFyY2guCi0gICAgICAgIHdoaWxlICgobm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSwg
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpKSkpIHsKLSAgICAgICAgICAgIHN3aXRjaCAobm9k
ZS0+bm9kZVR5cGUoKSkgewotICAgICAgICAgICAgY2FzZSBOb2RlOjpURVhUX05PREU6Ci0gICAg
ICAgICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgICAgIGNhc2UgTm9kZTo6
Q0RBVEFfU0VDVElPTl9OT0RFOiB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHRleHQgPSBub2Rl
LT5ub2RlVmFsdWUoKTsKLSAgICAgICAgICAgICAgICBpZiAodGV4dC5maW5kSWdub3JpbmdDYXNl
KHdoaXRlc3BhY2VUcmltbWVkUXVlcnkpICE9IG5vdEZvdW5kKQotICAgICAgICAgICAgICAgICAg
ICByZXN1bHRDb2xsZWN0b3IuYWRkKG5vZGUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBOb2RlOjpFTEVNRU5UX05PREU6IHsKLSAgICAg
ICAgICAgICAgICBpZiAoKCFzdGFydFRhZ0ZvdW5kICYmICFlbmRUYWdGb3VuZCAmJiAobm9kZS0+
bm9kZU5hbWUoKS5maW5kSWdub3JpbmdDYXNlKHRhZ05hbWVRdWVyeSkgIT0gbm90Rm91bmQpKQot
ICAgICAgICAgICAgICAgICAgICB8fCAoc3RhcnRUYWdGb3VuZCAmJiBlbmRUYWdGb3VuZCAmJiBl
cXVhbElnbm9yaW5nQ2FzZShub2RlLT5ub2RlTmFtZSgpLCB0YWdOYW1lUXVlcnkpKQotICAgICAg
ICAgICAgICAgICAgICB8fCAoc3RhcnRUYWdGb3VuZCAmJiAhZW5kVGFnRm91bmQgJiYgbm9kZS0+
bm9kZU5hbWUoKS5zdGFydHNXaXRoKHRhZ05hbWVRdWVyeSwgZmFsc2UpKQotICAgICAgICAgICAg
ICAgICAgICB8fCAoIXN0YXJ0VGFnRm91bmQgJiYgZW5kVGFnRm91bmQgJiYgbm9kZS0+bm9kZU5h
bWUoKS5lbmRzV2l0aCh0YWdOYW1lUXVlcnksIGZhbHNlKSkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0Q29sbGVjdG9yLmFkZChub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIEdvIHRocm91Z2ggYWxsIGF0
dHJpYnV0ZXMgYW5kIHNlcmlhbGl6ZSB0aGVtLgotICAgICAgICAgICAgICAgIGNvbnN0IEVsZW1l
bnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFlbGVt
ZW50LT5oYXNBdHRyaWJ1dGVzKCkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgICAgICAgICAgdW5zaWduZWQgbnVtQXR0cnMgPSBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgp
OwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BdHRyczsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEFkZCBhdHRyaWJ1dGUgcGFpcgotICAgICAgICAg
ICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA9IGVsZW1lbnQtPmF0dHJpYnV0
ZUF0KGkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlLmxvY2FsTmFtZSgpLmZp
bmQod2hpdGVzcGFjZVRyaW1tZWRRdWVyeSkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdENvbGxlY3Rvci5hZGQobm9kZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBz
aXplX3QgZm91bmRQb3NpdGlvbiA9IGF0dHJpYnV0ZS52YWx1ZSgpLmZpbmQoYXR0cmlidXRlUXVl
cnkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRQb3NpdGlvbiAhPSBub3RGb3VuZCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFleGFjdEF0dHJpYnV0ZU1hdGNoIHx8ICgh
Zm91bmRQb3NpdGlvbiAmJiBhdHRyaWJ1dGUudmFsdWUoKS5sZW5ndGgoKSA9PSBhdHRyaWJ1dGVR
dWVyeS5sZW5ndGgoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDb2xs
ZWN0b3IuYWRkKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgIGlmIChub2RlSWRzKSB7CisgICAg
ICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIG5vZGVJZHNSZWYgPSAqbm9kZUlkczsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5vZGVJZHNSZWYtPmxlbmd0aCgpOyAr
K2kpIHsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gbm9kZVZhbHVlID0gbm9k
ZUlkc1JlZi0+Z2V0KGkpOworICAgICAgICAgICAgaWYgKCFub2RlVmFsdWUpIHsKKyAgICAgICAg
ICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW52YWxpZCBub2RlSWRzIGl0ZW0uIjsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaW50IG5vZGVJZCA9IDA7CisgICAgICAg
ICAgICBpZiAoIW5vZGVWYWx1ZS0+YXNOdW1iZXIoJm5vZGVJZCkpIHsKKyAgICAgICAgICAgICAg
ICAqZXJyb3JTdHJpbmcgPSAiSW52YWxpZCBub2RlSWRzIGl0ZW0gdHlwZS4gRXhwZWN0aW5nIGlu
dGVnZXIgdHlwZXMuIjsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBYUGF0aCBldmFsdWF0aW9uCi0gICAgICAgIGZvciAoVmVj
dG9yPERvY3VtZW50Kj46Oml0ZXJhdG9yIGl0ID0gZG9jcy5iZWdpbigpOyBpdCAhPSBkb2NzLmVu
ZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSAqaXQ7Ci0gICAg
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgIFJlZlB0cjxYUGF0aFJl
c3VsdD4gcmVzdWx0ID0gZG9jdW1lbnQtPmV2YWx1YXRlKHdoaXRlc3BhY2VUcmltbWVkUXVlcnks
IGRvY3VtZW50LCAwLCBYUGF0aFJlc3VsdDo6T1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZUEUsIDAs
IGVjKTsKLSAgICAgICAgICAgIGlmIChlYyB8fCAhcmVzdWx0KQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUgPSByZXN1bHQtPnNuYXBz
aG90TGVuZ3RoKGVjKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgbG9uZyBpID0gMDsgIWVj
ICYmIGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gcmVzdWx0
LT5zbmFwc2hvdEl0ZW0oaSwgZWMpOwotICAgICAgICAgICAgICAgIGlmIChlYykKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+aXNBdHRyaWJ1
dGVOb2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIG5vZGUgPSB0b0F0dHIobm9kZSktPm93bmVy
RWxlbWVudCgpOwotICAgICAgICAgICAgICAgIHJlc3VsdENvbGxlY3Rvci5hZGQobm9kZSk7Cisg
ICAgICAgICAgICBOb2RlKiBub2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsK
KyAgICAgICAgICAgIGlmICghbm9kZSkgeworICAgICAgICAgICAgICAgIC8vIGFzc2VydE5vZGUg
c2hvdWxkIGhhdmUgZmlsbGVkIHRoZSBlcnJvclN0cmluZyBmb3IgdXMuCisgICAgICAgICAgICAg
ICAgQVNTRVJUKGVycm9yU3RyaW5nLT5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluZGVyLnBlcmZvcm1TZWFyY2gobm9kZSk7
CiAgICAgICAgIH0KLQotICAgICAgICAvLyBTZWxlY3RvciBldmFsdWF0aW9uCi0gICAgICAgIGZv
ciAoVmVjdG9yPERvY3VtZW50Kj46Oml0ZXJhdG9yIGl0ID0gZG9jcy5iZWdpbigpOyBpdCAhPSBk
b2NzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSAqaXQ7
Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgIFJlZlB0cjxO
b2RlTGlzdD4gbm9kZUxpc3QgPSBkb2N1bWVudC0+cXVlcnlTZWxlY3RvckFsbCh3aGl0ZXNwYWNl
VHJpbW1lZFF1ZXJ5LCBlYyk7Ci0gICAgICAgICAgICBpZiAoZWMgfHwgIW5vZGVMaXN0KQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICB1bnNpZ25lZCBzaXplID0gbm9k
ZUxpc3QtPmxlbmd0aCgpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emU7ICsraSkKLSAgICAgICAgICAgICAgICByZXN1bHRDb2xsZWN0b3IuYWRkKG5vZGVMaXN0LT5p
dGVtKGkpKTsKLSAgICAgICAgfQorICAgIH0gZWxzZSBpZiAobV9kb2N1bWVudCkgeworICAgICAg
ICAvLyBUaGVyZSdzIG5vIG5lZWQgdG8gaXRlcmF0ZSB0aGUgZnJhbWVzIHRyZWUgYmVjYXVzZQor
ICAgICAgICAvLyB0aGUgc2VhcmNoIGhlbHBlciB3aWxsIGdvIGluc2lkZSB0aGUgZnJhbWUgb3du
ZXIgZWxlbWVudHMuCisgICAgICAgIGZpbmRlci5wZXJmb3JtU2VhcmNoKG1fZG9jdW1lbnQuZ2V0
KCkpOwogICAgIH0KIAogICAgICpzZWFyY2hJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRl
SWRlbnRpZmllcigpOwotICAgIFNlYXJjaFJlc3VsdHM6Oml0ZXJhdG9yIHJlc3VsdHNJdCA9IG1f
c2VhcmNoUmVzdWx0cy5hZGQoKnNlYXJjaElkLCBWZWN0b3I8UmVmUHRyPE5vZGU+PigpKS5pdGVy
YXRvcjsKIAotICAgIGZvciAoTGlzdEhhc2hTZXQ8Tm9kZSo+OjppdGVyYXRvciBpdCA9IHJlc3Vs
dENvbGxlY3Rvci5iZWdpbigpOyBpdCAhPSByZXN1bHRDb2xsZWN0b3IuZW5kKCk7ICsraXQpCi0g
ICAgICAgIHJlc3VsdHNJdC0+dmFsdWUuYXBwZW5kKCppdCk7CisgICAgYXV0byYgcmVzdWx0c1Zl
Y3RvciA9IG1fc2VhcmNoUmVzdWx0cy5hZGQoKnNlYXJjaElkLCBWZWN0b3I8UmVmUHRyPE5vZGU+
PigpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gZmluZGVyLnJl
c3VsdHMoKS5iZWdpbigpOyBpdGVyYXRvciAhPSBmaW5kZXIucmVzdWx0cygpLmVuZCgpOyArK2l0
ZXJhdG9yKQorICAgICAgICByZXN1bHRzVmVjdG9yLmFwcGVuZCgqaXRlcmF0b3IpOwogCi0gICAg
KnJlc3VsdENvdW50ID0gcmVzdWx0c0l0LT52YWx1ZS5zaXplKCk7CisgICAgKnJlc3VsdENvdW50
ID0gcmVzdWx0c1ZlY3Rvci5zaXplKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Omdl
dFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNl
YXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxpbnQ+PiYgbm9kZUlkcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmgKaW5kZXggMTE5NmM5OC4uYTVkNjBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRl
ICJUaW1lci5oIgogCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL0xpc3RI
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTEzMSw3ICsxMzAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldE91dGVySFRNTChFcnJvclN0cmluZyosIGludCBub2RlSWQs
IGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9kZVZhbHVl
KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgdmly
dHVhbCB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2Rl
SWQsIGNvbnN0IFdURjo6U3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KTsK
LSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgU3RyaW5nKiBzZWFyY2hJZCwgaW50KiByZXN1bHRD
b3VudCk7CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4qIG5vZGVJZHMsIFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8aW50Pj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZFNlYXJjaFJlc3VsdHMo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkKTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVj
dEdyb3VwLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3Vs
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZp
bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUxMGMyNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmNw
cApAQCAtMCwwICsxLDE3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0
ZW1zIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBKb3NlcGgg
UGVjb3Jhcm8KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTm9kZUZpbmRl
ci5oIgorCisjaW5jbHVkZSAiQXR0ci5oIgorI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxGcmFt
ZU93bmVyRWxlbWVudC5oIgorI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiTm9kZVRy
YXZlcnNhbC5oIgorI2luY2x1ZGUgIlhQYXRoUmVzdWx0LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RhdGljIFN0cmluZyBzdHJpcENoYXJhY3RlcnMoU3RyaW5nIHN0cmluZywgY29uc3Qg
Y2hhciBzdGFydENoYXJhY3RlciwgY29uc3QgY2hhciBlbmRDaGFyYWN0ZXIsIGJvb2wmIHN0YXJ0
Q2hhckZvdW5kLCBib29sJiBlbmRDaGFyRm91bmQpCit7CisgICAgc3RhcnRDaGFyRm91bmQgPSBz
dHJpbmcuc3RhcnRzV2l0aChzdGFydENoYXJhY3Rlcik7CisgICAgZW5kQ2hhckZvdW5kID0gc3Ry
aW5nLmVuZHNXaXRoKGVuZENoYXJhY3Rlcik7CisKKyAgICB1bnNpZ25lZCBzdGFydCA9IHN0YXJ0
Q2hhckZvdW5kID8gMSA6IDA7CisgICAgdW5zaWduZWQgZW5kID0gc3RyaW5nLmxlbmd0aCgpIC0g
KGVuZENoYXJGb3VuZCA/IDEgOiAwKTsKKyAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZyhzdGFy
dCwgZW5kIC0gc3RhcnQpOworfQorCitJbnNwZWN0b3JOb2RlRmluZGVyOjpJbnNwZWN0b3JOb2Rl
RmluZGVyKFN0cmluZyB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KQorICAgIDogbV93aGl0ZXNwYWNl
VHJpbW1lZFF1ZXJ5KHdoaXRlc3BhY2VUcmltbWVkUXVlcnkpCit7CisgICAgbV90YWdOYW1lUXVl
cnkgPSBzdHJpcENoYXJhY3RlcnMod2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgJzwnLCAnPicsIG1f
c3RhcnRUYWdGb3VuZCwgbV9lbmRUYWdGb3VuZCk7CisKKyAgICBib29sIHN0YXJ0UXVvdGVGb3Vu
ZCwgZW5kUXVvdGVGb3VuZDsKKyAgICBtX2F0dHJpYnV0ZVF1ZXJ5ID0gc3RyaXBDaGFyYWN0ZXJz
KHdoaXRlc3BhY2VUcmltbWVkUXVlcnksICciJywgJyInLCBzdGFydFF1b3RlRm91bmQsIGVuZFF1
b3RlRm91bmQpOworICAgIG1fZXhhY3RBdHRyaWJ1dGVNYXRjaCA9IHN0YXJ0UXVvdGVGb3VuZCAm
JiBlbmRRdW90ZUZvdW5kOworfQorCit2b2lkIEluc3BlY3Rvck5vZGVGaW5kZXI6OnBlcmZvcm1T
ZWFyY2goTm9kZSogcGFyZW50Tm9kZSkKK3sKKyAgICBzZWFyY2hVc2luZ1hQYXRoKHBhcmVudE5v
ZGUpOworICAgIHNlYXJjaFVzaW5nQ1NTU2VsZWN0b3JzKHBhcmVudE5vZGUpOworCisgICAgLy8g
S2VlcCB0aGUgRE9NIHRyZWUgdHJhdmVyc2FsIGxhc3QuIFRoaXMgd2F5IGlmcmFtZSBjb250ZW50
IHdpbGwgY29tZSBhZnRlciB0aGVpciBwYXJlbnRzLgorICAgIHNlYXJjaFVzaW5nRE9NVHJlZVRy
YXZlcnNhbChwYXJlbnROb2RlKTsKK30KKwordm9pZCBJbnNwZWN0b3JOb2RlRmluZGVyOjpzZWFy
Y2hVc2luZ0RPTVRyZWVUcmF2ZXJzYWwoTm9kZSogcGFyZW50Tm9kZSkKK3sKKyAgICAvLyBNYW51
YWwgcGxhaW4gdGV4dCBzZWFyY2guCisgICAgZm9yIChhdXRvIG5vZGUgPSBwYXJlbnROb2RlOyBu
b2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlLCBwYXJlbnROb2RlKSkgeworICAg
ICAgICBzd2l0Y2ggKG5vZGUtPm5vZGVUeXBlKCkpIHsKKyAgICAgICAgY2FzZSBOb2RlOjpURVhU
X05PREU6CisgICAgICAgIGNhc2UgTm9kZTo6Q09NTUVOVF9OT0RFOgorICAgICAgICBjYXNlIE5v
ZGU6OkNEQVRBX1NFQ1RJT05fTk9ERTogeworICAgICAgICAgICAgaWYgKG5vZGUtPm5vZGVWYWx1
ZSgpLmZpbmRJZ25vcmluZ0Nhc2UobV93aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KSAhPSBub3RGb3Vu
ZCkKKyAgICAgICAgICAgICAgICBtX3Jlc3VsdHMuYWRkKG5vZGUpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBOb2RlOjpFTEVNRU5UX05PREU6IHsKKyAgICAg
ICAgICAgIGlmIChtYXRjaGVzRWxlbWVudCgqdG9FbGVtZW50KG5vZGUpKSkKKyAgICAgICAgICAg
ICAgICBtX3Jlc3VsdHMuYWRkKG5vZGUpOworCisgICAgICAgICAgICAvLyBTZWFyY2ggaW5zaWRl
IGZyYW1lIGVsZW1lbnRzLgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzRnJhbWVPd25lckVsZW1l
bnQoKSkgeworICAgICAgICAgICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogZnJhbWVPd25l
ciA9IHRvSFRNTEZyYW1lT3duZXJFbGVtZW50KG5vZGUpOworICAgICAgICAgICAgICAgIGlmIChE
b2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZU93bmVyLT5jb250ZW50RG9jdW1lbnQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgcGVyZm9ybVNlYXJjaChkb2N1bWVudCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBJbnNwZWN0b3JOb2RlRmlu
ZGVyOjptYXRjaGVzQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQoreworICAg
IGlmIChhdHRyaWJ1dGUubG9jYWxOYW1lKCkuZmluZChtX3doaXRlc3BhY2VUcmltbWVkUXVlcnkp
ICE9IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbV9leGFjdEF0
dHJpYnV0ZU1hdGNoID8gYXR0cmlidXRlLnZhbHVlKCkgPT0gbV9hdHRyaWJ1dGVRdWVyeSA6IGF0
dHJpYnV0ZS52YWx1ZSgpLmZpbmQobV9hdHRyaWJ1dGVRdWVyeSkgIT0gbm90Rm91bmQ7Cit9CisK
K2Jvb2wgSW5zcGVjdG9yTm9kZUZpbmRlcjo6bWF0Y2hlc0VsZW1lbnQoY29uc3QgRWxlbWVudCYg
ZWxlbWVudCkKK3sKKyAgICBTdHJpbmcgbm9kZU5hbWUgPSBlbGVtZW50Lm5vZGVOYW1lKCk7Cisg
ICAgaWYgKCghbV9zdGFydFRhZ0ZvdW5kICYmICFtX2VuZFRhZ0ZvdW5kICYmIChub2RlTmFtZS5m
aW5kSWdub3JpbmdDYXNlKG1fdGFnTmFtZVF1ZXJ5KSAhPSBub3RGb3VuZCkpCisgICAgICAgIHx8
IChtX3N0YXJ0VGFnRm91bmQgJiYgbV9lbmRUYWdGb3VuZCAmJiBlcXVhbElnbm9yaW5nQ2FzZShu
b2RlTmFtZSwgbV90YWdOYW1lUXVlcnkpKQorICAgICAgICB8fCAobV9zdGFydFRhZ0ZvdW5kICYm
ICFtX2VuZFRhZ0ZvdW5kICYmIG5vZGVOYW1lLnN0YXJ0c1dpdGgobV90YWdOYW1lUXVlcnksIGZh
bHNlKSkKKyAgICAgICAgfHwgKCFtX3N0YXJ0VGFnRm91bmQgJiYgbV9lbmRUYWdGb3VuZCAmJiBu
b2RlTmFtZS5lbmRzV2l0aChtX3RhZ05hbWVRdWVyeSwgZmFsc2UpKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlcygpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICB1bnNpZ25lZCBudW1BdHRycyA9IGVsZW1lbnQuYXR0cmlidXRlQ291
bnQoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQXR0cnM7ICsraSkgeworICAg
ICAgICBpZiAobWF0Y2hlc0F0dHJpYnV0ZShlbGVtZW50LmF0dHJpYnV0ZUF0KGkpKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCBJbnNwZWN0b3JOb2RlRmluZGVyOjpzZWFyY2hVc2luZ1hQYXRoKE5vZGUqIHBhcmVudE5vZGUp
Cit7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPFhQYXRoUmVzdWx0PiBy
ZXN1bHQgPSBwYXJlbnROb2RlLT5kb2N1bWVudCgpLmV2YWx1YXRlKG1fd2hpdGVzcGFjZVRyaW1t
ZWRRdWVyeSwgcGFyZW50Tm9kZSwgMCwgWFBhdGhSZXN1bHQ6Ok9SREVSRURfTk9ERV9TTkFQU0hP
VF9UWVBFLCAwLCBlYyk7CisgICAgaWYgKGVjIHx8ICFyZXN1bHQpCisgICAgICAgIHJldHVybjsK
KworICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSA9IHJlc3VsdC0+c25hcHNob3RMZW5ndGgoZWMpOwor
ICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICh1bnNpZ25lZCBsb25nIGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSByZXN1bHQtPnNuYXBz
aG90SXRlbShpLCBlYyk7CisgICAgICAgIGlmIChlYykKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpZiAobm9kZS0+aXNBdHRyaWJ1dGVOb2RlKCkpCisgICAgICAgICAgICBub2RlID0g
dG9BdHRyKG5vZGUpLT5vd25lckVsZW1lbnQoKTsKKworICAgICAgICAvLyBYUGF0aCBjYW4gZ2V0
IG91dCBvZiB0aGUgY29udGV4dCBub2RlIHRoYXQgd2UgcGFzcyBhcyB0aGUgc3RhcnRpbmcgcG9p
bnQgdG8gZXZhbHVhdGUsIHNvIHdlIG5lZWQgdG8gZmlsdGVyIGZvciBqdXN0IHRoZSBub2RlcyB3
ZSBjYXJlIGFib3V0LgorICAgICAgICBpZiAobm9kZSA9PSBwYXJlbnROb2RlIHx8IG5vZGUtPmlz
RGVzY2VuZGFudE9mKHBhcmVudE5vZGUpKQorICAgICAgICAgICAgbV9yZXN1bHRzLmFkZChub2Rl
KTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9yTm9kZUZpbmRlcjo6c2VhcmNoVXNpbmdDU1NT
ZWxlY3RvcnMoTm9kZSogcGFyZW50Tm9kZSkKK3sKKyAgICBpZiAoIXBhcmVudE5vZGUtPmlzQ29u
dGFpbmVyTm9kZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVMaXN0ID0gdG9Db250YWluZXJOb2RlKHBhcmVu
dE5vZGUpLT5xdWVyeVNlbGVjdG9yQWxsKG1fd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgZWMpOwor
ICAgIGlmIChlYyB8fCAhbm9kZUxpc3QpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVk
IHNpemUgPSBub2RlTGlzdC0+bGVuZ3RoKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNpemU7ICsraSkKKyAgICAgICAgbV9yZXN1bHRzLmFkZChub2RlTGlzdC0+aXRlbShpKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTm9kZUZpbmRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
Ljk0MTI1M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTm9kZUZpbmRlci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQWRvYmUgU3lzdGVtcyBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnNwZWN0
b3JOb2RlRmluZGVyX2gKKyNkZWZpbmUgSW5zcGVjdG9yTm9kZUZpbmRlcl9oCisKKyNpbmNsdWRl
IDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdHRyaWJ1dGU7CitjbGFzcyBFbGVtZW50Owor
Y2xhc3MgTm9kZTsKKworY2xhc3MgSW5zcGVjdG9yTm9kZUZpbmRlciB7CitwdWJsaWM6CisgICAg
SW5zcGVjdG9yTm9kZUZpbmRlcihTdHJpbmcgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSk7CisgICAg
dm9pZCBwZXJmb3JtU2VhcmNoKE5vZGUqKTsKKyAgICBjb25zdCBMaXN0SGFzaFNldDxOb2RlKj4m
IHJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdHM7IH0KKworcHJpdmF0ZToKKyAgICBi
b29sIG1hdGNoZXNBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJik7CisgICAgYm9vbCBtYXRjaGVz
RWxlbWVudChjb25zdCBFbGVtZW50Jik7CisKKyAgICB2b2lkIHNlYXJjaFVzaW5nRE9NVHJlZVRy
YXZlcnNhbChOb2RlKik7CisgICAgdm9pZCBzZWFyY2hVc2luZ1hQYXRoKE5vZGUqKTsKKyAgICB2
b2lkIHNlYXJjaFVzaW5nQ1NTU2VsZWN0b3JzKE5vZGUqKTsKKworICAgIGJvb2wgbV9zdGFydFRh
Z0ZvdW5kOworICAgIGJvb2wgbV9lbmRUYWdGb3VuZDsKKyAgICBib29sIG1fZXhhY3RBdHRyaWJ1
dGVNYXRjaDsKKworICAgIFN0cmluZyBtX3doaXRlc3BhY2VUcmltbWVkUXVlcnk7CisgICAgU3Ry
aW5nIG1fdGFnTmFtZVF1ZXJ5OworICAgIFN0cmluZyBtX2F0dHJpYnV0ZVF1ZXJ5OworCisgICAg
TGlzdEhhc2hTZXQ8Tm9kZSo+IG1fcmVzdWx0czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEluc3BlY3Rvck5vZGVGaW5kZXJfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL3Byb3RvY29sL0RPTS5qc29uCmluZGV4IGYxNGM4NTguLmU4M2Y0NzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KQEAgLTIwOCw3ICsyMDgsOCBA
QAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJwZXJmb3JtU2VhcmNoIiwKICAgICAg
ICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicXVlcnki
LCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiUGxhaW4gdGV4dCBvciBxdWVyeSBz
ZWxlY3RvciBvciBYUGF0aCBzZWFyY2ggcXVlcnkuIiB9CisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJxdWVyeSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJQbGFpbiB0ZXh0
IG9yIHF1ZXJ5IHNlbGVjdG9yIG9yIFhQYXRoIHNlYXJjaCBxdWVyeS4iIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJub2RlSWRzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIk
cmVmIjogIk5vZGVJZCIgfSwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklkcyBv
ZiBub2RlcyB0byB1c2UgYXMgc3RhcnRpbmcgcG9pbnRzIGZvciB0aGUgc2VhcmNoLiIgfQogICAg
ICAgICAgICAgXSwKICAgICAgICAgICAgICJyZXR1cm5zIjogWwogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAic2VhcmNoSWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVW5p
cXVlIHNlYXJjaCBzZXNzaW9uIGlkZW50aWZpZXIuIiB9LAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>