<?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>52652</bug_id>
          
          <creation_ts>2011-01-18 12:50:37 -0800</creation_ts>
          <short_desc>Web Inspector: make InjectedScriptAccess API a part of Web Inspector protocol.</short_desc>
          <delta_ts>2011-01-19 06:09:12 -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 (Deprecated)</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>336016</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-18 12:50:37 -0800</bug_when>
    <thetext>Calls served by the InjectedScript should be first class protocol citizens, not dispatched via single protocol message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336046</commentid>
    <comment_count>1</comment_count>
      <attachid>79319</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-18 13:17:15 -0800</bug_when>
    <thetext>Created attachment 79319
[PATCH] Proposed change.

I am still nailing down couple of tests, but I think it is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336049</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-18 13:19:50 -0800</bug_when>
    <thetext>Attachment 79319 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

Source/WebCore/inspector/InjectedScript.h:77:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336355</commentid>
    <comment_count>3</comment_count>
      <attachid>79393</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-18 23:09:00 -0800</bug_when>
    <thetext>Created attachment 79393
[PATCH] Proposed change with passing tests now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336368</commentid>
    <comment_count>4</comment_count>
      <attachid>79393</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-19 00:13:55 -0800</bug_when>
    <thetext>Comment on attachment 79393
[PATCH] Proposed change with passing tests now.

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

&gt; Source/WebCore/inspector/InjectedScript.cpp:167
&gt; +    if (hasNoValue() || !canAccessInspectedWindow()) {

Is there a valid scenario where hasNoValue() == true ?

&gt; Source/WebCore/inspector/InjectedScriptHost.h:114
&gt; +    InjectedScript injectedScriptForMainWorld();

injectedScriptForMainWorld -&gt; injectedScriptForMainFrame, we don&apos;t create injected scripts for non-main worlds.

&gt; Source/WebCore/inspector/InjectedScriptSource.js:195
&gt; +            if (callFrameId &gt;= 0) {

I&apos;d rather use callFrameId !== -1 since there no frames with negative ids.

&gt; Source/WebCore/inspector/InjectedScriptSource.js:330
&gt; +    getNodePrototypes: function(nodeId)

Why did this method move?

&gt; Source/WebCore/inspector/Inspector.idl:77
&gt; +        [domain=InjectedScript] void evaluate(in String expression, in String objectGroup, out Value result);

Either both or none of evaluate &amp; evaluateInCallFrame should accept injectedScriptId for consistency.

&gt; Source/WebCore/inspector/front-end/ExtensionServer.js:275
&gt; +        InspectorBackend.evaluate(evalExpression, &quot;none&quot;, callback.bind(this));

none -&gt; extension?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336378</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-19 01:02:19 -0800</bug_when>
    <thetext>Committed r76105: &lt;http://trac.webkit.org/changeset/76105&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336463</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-19 06:09:12 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76105 might have broken SnowLeopard Intel Release (Tests)
The following tests are not passing:
http/tests/inspector/extensions-resources-redirect.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79319</attachid>
            <date>2011-01-18 13:17:15 -0800</date>
            <delta_ts>2011-01-18 23:09:00 -0800</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>injected_script</filename>
            <type>text/plain</type>
            <size>52269</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMDgyOTkxLi42MTkxMGEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDEt
MTggIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbWFrZSBJ
bmplY3RlZFNjcmlwdEFjY2VzcyBBUEkgYSBwYXJ0IG9mIFdlYiBJbnNwZWN0b3IgcHJvdG9jb2wu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjY1Mgor
CisgICAgICAgIENhbGxzIHNlcnZlZCBieSB0aGUgSW5qZWN0ZWRTY3JpcHQgc2hvdWxkIGJlIGZp
cnN0IGNsYXNzIHByb3RvY29sCisgICAgICAgIGNpdGl6ZW5zLCBub3QgZGlzcGF0Y2hlZCB2aWEg
c2luZ2xlIHByb3RvY29sIG1lc3NhZ2UuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9leHRlbnNpb25zLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0V4dGVuc2lvbnNUZXN0
Lkluc3BlY3RvclRlc3QucnVuRXh0ZW5zaW9uVGVzdHMpOgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVj
dG9yVGVzdC5JbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKToKKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItY29udmVyc2lvbi5odG1sOgorICAgICAgICAqIGlu
c3BlY3Rvci9jb25zb2xlLWNvbW1hbmQtY2xlYXIuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Y29uc29sZS1kaXItZ2xvYmFsLmh0bWw6CisKIDIwMTEtMDEtMTggIEFudHRpIEtvaXZpc3RvICA8
YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXRlc3Qu
anMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXRlc3QuanMK
aW5kZXggNDM4YjYyYi4uMzExYzQyOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtdGVzdC5qcwpAQCAtMzQsNyArMzQsNyBAQCBJbnNwZWN0
b3JUZXN0LmRpc3BhdGNoT25NZXNzYWdlID0gZnVuY3Rpb24obWVzc2FnZUlkLCBjYWxsYmFjaywg
cmVjdXJyaW5nKQogCiBJbnNwZWN0b3JUZXN0LnJ1bkV4dGVuc2lvblRlc3RzID0gZnVuY3Rpb24o
KQogewotICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldERlZmF1bHQoKS5ldmFsdWF0ZSgibG9j
YXRpb24uaHJlZiIsICJjb25zb2xlIiwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgSW5zcGVjdG9y
QmFja2VuZC5ldmFsdWF0ZSgibG9jYXRpb24uaHJlZiIsICJjb25zb2xlIiwgZnVuY3Rpb24ocmVz
dWx0KSB7CiAgICAgICAgIHZhciBwYWdlVVJMID0gcmVzdWx0LmRlc2NyaXB0aW9uOwogICAgICAg
ICB2YXIgZXh0ZW5zaW9uVVJMID0gKC9eaHR0cHM/Oi8udGVzdChwYWdlVVJMKSA/CiAgICAgICAg
ICAgICBwYWdlVVJMLnJlcGxhY2UoL14oaHR0cHM/OlwvXC9bXi9dKlwvKS4qJC8sIiQxIikgOgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRl
c3QyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qy
LmpzCmluZGV4IDMwMmNhZjEuLmYxOTgyYzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcworKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMKQEAgLTI0LDcgKzI0LDcgQEAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSA9IGZ1bmN0aW9uKGNvZGUsIGNhbGxiYWNrKQog
CiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlID0gZnVuY3Rpb24oY29kZSwgY2FsbGJhY2sp
CiB7Ci0gICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0RGVmYXVsdCgpLmV2YWx1YXRlKGNvZGUs
ICJjb25zb2xlIiwgY2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7fSk7CisgICAgSW5zcGVjdG9yQmFj
a2VuZC5ldmFsdWF0ZShjb2RlLCAiY29uc29sZSIsIGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge30p
OwogfQogCiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlV2l0aFRpbWVvdXQgPSBmdW5jdGlv
bihjb2RlLCBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlLWhhci1jb252ZXJzaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItY29udmVyc2lvbi5odG1sCmluZGV4IDUxYzc4OTQu
LjljNThmZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jl
c291cmNlLWhhci1jb252ZXJzaW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2UtaGFyLWNvbnZlcnNpb24uaHRtbApAQCAtMjYsNyArMjYsNyBAQCB2
YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICB9CiAKICAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBh
Z2VJZk5lZWRlZChmdW5jdGlvbigpIHsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0
RGVmYXVsdCgpLmV2YWx1YXRlKCJkb1hIUigpIiwgImNvbnNvbGUiLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgSW5zcGVjdG9yQmFja2VuZC5ldmFsdWF0ZSgiZG9YSFIoKSIsICJjb25zb2xlIiwgZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICBhZGRDb29raWVIZWFkZXJzVG9SZXNvdXJjZShmaW5kUmVz
b3VyY2VCeVVSTCgvaW5zcGVjdG9yLXRlc3QyXC5qcyQvKSk7CiAgICAgICAgICAgICB2YXIgZW50
cmllcyA9IChuZXcgV2ViSW5zcGVjdG9yLkhBUkxvZygpKS5idWlsZCgpLmVudHJpZXM7CiAgICAg
ICAgICAgICBlbnRyaWVzLnNvcnQoSW5zcGVjdG9yVGVzdC5yZXNvdXJjZVVSTENvbXBhcmVyKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWNvbW1hbmQtY2xlYXIu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWNvbW1hbmQtY2xlYXIuaHRtbApp
bmRleCA5Y2IyZjVjLi5mODcwZWM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Y29uc29sZS1jb21tYW5kLWNsZWFyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nv
bnNvbGUtY29tbWFuZC1jbGVhci5odG1sCkBAIC0xNyw3ICsxNyw3IEBAIGZ1bmN0aW9uIGRvaXQo
KQogICAgICAgICBvdXRwdXQoIj09PSBBZnRlciBjbGVhciA9PT0iKTsgCiAgICAgICAgIGR1bXBD
b25zb2xlTWVzc2FnZXMoKTsKICAgICB9Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiSW5q
ZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0RGVmYXVsdCgpLmV2YWx1YXRlKCdjbGVhcigpJywgJycsIGZ1
bmN0aW9uKCkge30pIiwgY2FsbGJhY2spOworICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoIklu
c3BlY3RvckJhY2tlbmQuZXZhbHVhdGUoJ2NsZWFyKCknLCAnJywgZnVuY3Rpb24oKSB7fSkiLCBj
YWxsYmFjayk7CiB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NvbnNvbGUtZGlyLWdsb2JhbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUtZGlyLWdsb2JhbC5odG1sCmluZGV4IDkzZWY2Y2MuLjc2ZTZjY2IgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWRpci1nbG9iYWwuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXItZ2xvYmFsLmh0bWwKQEAgLTIyLDcgKzIyLDcgQEAg
ZnVuY3Rpb24gZnJvbnRlbmRfZXhwYW5kQW5kRHVtcENvbnNvbGVNZXNzYWdlcyh0ZXN0Q29udHJv
bGxlcikKICAgICAvLyBOZWVkIHRlc3QgdG8gYmUgYXN5bmMgdG8gZXhwYW5kIGNvbnNvbGUgb2Jq
ZWN0cy4KICAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAKLSAgICBJbmplY3Rl
ZFNjcmlwdEFjY2Vzcy5nZXREZWZhdWx0KCkuZXZhbHVhdGUoIndpbmRvdyIsICJjb25zb2xlIiwg
ZXZhbENhbGxiYWNrKTsKKyAgICBJbnNwZWN0b3JCYWNrZW5kLmV2YWx1YXRlKCJ3aW5kb3ciLCAi
Y29uc29sZSIsIGV2YWxDYWxsYmFjayk7CiAKICAgICBmdW5jdGlvbiBldmFsQ2FsbGJhY2socmVz
dWx0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ODAzNDZmLi5kMDEwMDc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzcgQEAKKzIwMTEtMDEtMTggIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogbWFrZSBJbmplY3RlZFNjcmlwdEFjY2VzcyBBUEkgYSBwYXJ0IG9m
IFdlYiBJbnNwZWN0b3IgcHJvdG9jb2wuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MjY1MgorCisgICAgICAgIENhbGxzIHNlcnZlZCBieSB0aGUgSW5q
ZWN0ZWRTY3JpcHQgc2hvdWxkIGJlIGZpcnN0IGNsYXNzIHByb3RvY29sCisgICAgICAgIGNpdGl6
ZW5zLCBub3QgZGlzcGF0Y2hlZCB2aWEgc2luZ2xlIHByb3RvY29sIG1lc3NhZ2UuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG06CisgICAg
ICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
amVjdGVkU2NyaXB0OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlw
dDo6ZXZhbHVhdGVJbkNhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlw
dDo6ZXZhbHVhdGVPblNlbGYpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6Omdl
dENvbXBsZXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpwdXNoTm9kZVRvRnJv
bnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OnJlc29sdmVOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXROb2RlUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0Tm9kZVByb3RvdHlwZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OnNldFByb3BlcnR5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6Om1ha2VDYWxsKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZUluQ2FsbEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVPblNl
bGYpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRDb21wbGV0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmdldFByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpwdXNoTm9kZVRvRnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpyZXNvbHZlTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmdldE5vZGVQcm9wZXJ0aWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6Z2V0Tm9kZVByb3RvdHlw
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpzZXRQcm9wZXJ0eVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6aW5qZWN0ZWRTY3Jp
cHRGb3JPYmplY3RJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6Omlu
amVjdGVkU2NyaXB0Rm9yTm9kZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0
SG9zdDo6aW5qZWN0ZWRTY3JpcHRGb3JNYWluV29ybGQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuanM6CisgICAgICAgICguKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmlk
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck9iamVjdDo6
Z2V0TnVtYmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkF1ZGl0UnVsZXMuZXZhbHVhdGVJblRhcmdldFdpbmRvdyk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b25zb2xlVmlldy5wcm90b3R5cGUuY29tcGxldGlvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbnNvbGVWaWV3LnByb3RvdHlwZS5kb0V2YWxJbldpbmRvdyk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLl9jcmVhdGVUb29sdGlwRm9yTm9kZSk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25QYW5lbC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25XYXRjaFNpZGViYXJQYW5lLnByb3RvdHlwZS5zZXRF
eHByZXNzaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZl
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9v
bkV2YWx1YXRlT25JbnNwZWN0ZWRQYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0luamVjdGVkU2NyaXB0QWNjZXNzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvUHJvcGVydGllc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlByb3BlcnRpZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUudXBkYXRlLmNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZSk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZW1vdGVPYmplY3QuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnJlc29sdmVOb2RlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlLmdldFByb3BlcnRpZXMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUuc2V0UHJvcGVydHlWYWx1ZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5wdXNoTm9kZVRvRnJv
bnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuZG9FdmFsSW5DYWxs
RnJhbWUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorCiAyMDExLTAxLTE3ICBQ
YXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMjYyNDBiMy4uODhl
OTM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDY0OCw3ICs0NjQ4LDYgQEAKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkRmFrZVdvcmtlci5qcycsCi0gICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdEFjY2Vzcy5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcycsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBiNzkwNDcyLi5jYTQ5NjcyIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjU0
NjUsMTAgKzY1NDY1LDYgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcSW5qZWN0ZWRTY3JpcHRBY2Nlc3Mu
anMiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxpbnNwZWN0b3JcZnJvbnQtZW5kXGluc3BlY3Rvci5jc3MiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3Bl
Y3Rvci5wbSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9y
LnBtCmluZGV4IGI3YmUxNWUuLjYzMmMwZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCkBAIC01NSw2ICs1NSwxMCBAQCAkdHlw
ZVRyYW5zZm9ybXsiRmlsZVN5c3RlbSJ9ID0gewogICAgICJoZWFkZXIiID0+ICJJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuaCIsCiAgICAgImRvbWFpbkFjY2Vzc29yIiA9PiAibV9pbnNwZWN0b3JD
b250cm9sbGVyLT5tX2ZpbGVTeXN0ZW1BZ2VudCIsCiB9OworJHR5cGVUcmFuc2Zvcm17IkluamVj
dGVkU2NyaXB0In0gPSB7CisgICAgImZvcndhcmRIZWFkZXIiID0+ICJJbmplY3RlZFNjcmlwdEhv
c3QuaCIsCisgICAgImRvbWFpbkFjY2Vzc29yIiA9PiAibV9pbnNwZWN0b3JDb250cm9sbGVyLT5t
X2luamVjdGVkU2NyaXB0SG9zdCIsCit9OwogJHR5cGVUcmFuc2Zvcm17Ikluc3BlY3RvciJ9ID0g
ewogICAgICJmb3J3YXJkSGVhZGVyIiA9PiAiSW5zcGVjdG9yQ29udHJvbGxlci5oIiwKICAgICAi
ZG9tYWluQWNjZXNzb3IiID0+ICJtX2luc3BlY3RvckNvbnRyb2xsZXIiLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggM2Y0ZDgxOS4uNzMyMDljOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC00NCwy
MSArNDQsODYgQEAgSW5qZWN0ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0KFNjcmlwdE9iamVjdCBp
bmplY3RlZFNjcmlwdE9iamVjdCkKIHsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6ZGlzcGF0
Y2goY29uc3QgU3RyaW5nJiBtZXRob2ROYW1lLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0LCBib29sKiBoYWRFeGNlcHRpb24pIAordm9pZCBJ
bmplY3RlZFNjcmlwdDo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCiB7Ci0g
ICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIGlmICghY2FuQWNjZXNzSW5zcGVjdGVkV2lu
ZG93KCkpIHsKLSAgICAgICAgKmhhZEV4Y2VwdGlvbiA9IHRydWU7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRP
YmplY3QsICJldmFsdWF0ZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Np
b24pOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKKyAgICBtYWtl
Q2FsbChmdW5jdGlvbiwgcmVzdWx0KTsKK30KIAotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZGlzcGF0Y2giKTsKLSAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChtZXRob2ROYW1lKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChh
cmd1bWVudHMpOwotICAgICpoYWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBTY3JpcHRWYWx1ZSBy
ZXN1bHRWYWx1ZSA9IGZ1bmN0aW9uLmNhbGwoKmhhZEV4Y2VwdGlvbik7Ci0gICAgaWYgKCEqaGFk
RXhjZXB0aW9uKQotICAgICAgICAqcmVzdWx0ID0gcmVzdWx0VmFsdWUudG9JbnNwZWN0b3JWYWx1
ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOwordm9pZCBJbmplY3RlZFNj
cmlwdDo6ZXZhbHVhdGVJbkNhbGxGcmFtZShsb25nIGNhbGxGcmFtZSwgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+KiByZXN1bHQpCit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0
ZWRTY3JpcHRPYmplY3QsICJldmFsdWF0ZUluQ2FsbEZyYW1lIik7CisgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoY2FsbEZyYW1lKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHBy
ZXNzaW9uKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RHcm91cCk7CisgICAg
bWFrZUNhbGwoZnVuY3Rpb24sIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2
YWx1YXRlT25TZWxmKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25Cb2R5LCBQYXNzUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiBhcmd1bWVudHNBcnJheSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0
KQoreworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2Jq
ZWN0LCAiZXZhbHVhdGVPblNlbGYiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChmdW5j
dGlvbkJvZHkpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGFyZ3VtZW50c0FycmF5LT50
b0pTT05TdHJpbmcoKSk7CisgICAgbWFrZUNhbGwoZnVuY3Rpb24sIHJlc3VsdCk7Cit9CisKK3Zv
aWQgSW5qZWN0ZWRTY3JpcHQ6OmdldENvbXBsZXRpb25zKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgYm9vbCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIGxvbmcgY2FsbEZyYW1lSWQs
IFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldENvbXBsZXRpb25zIik7Cisg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CisgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJKTsKKyAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVJZCk7CisgICAgbWFrZUNhbGwoZnVuY3Rpb24sIHJl
c3VsdCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBib29sIGlnbm9yZUhhc093blByb3BlcnR5LCBi
b29sIGFiYnJldmlhdGUsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldFBy
b3BlcnRpZXMiKTsKKyAgICBTdHJpbmcgb2JqZWN0SWRTdHJpbmcgPSBvYmplY3RJZC0+dG9KU09O
U3RyaW5nKCk7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWRTdHJpbmcpOwor
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGlnbm9yZUhhc093blByb3BlcnR5KTsKKyAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChhYmJyZXZpYXRlKTsKKyAgICBtYWtlQ2FsbChmdW5jdGlv
biwgcmVzdWx0KTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdDo6cHVzaE5vZGVUb0Zyb250ZW5k
KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiogcmVzdWx0KQoreworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVj
dGVkU2NyaXB0T2JqZWN0LCAicHVzaE5vZGVUb0Zyb250ZW5kIik7CisgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQob2JqZWN0SWQtPnRvSlNPTlN0cmluZygpKTsKKyAgICBtYWtlQ2FsbChmdW5j
dGlvbiwgcmVzdWx0KTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdDo6cmVzb2x2ZU5vZGUobG9u
ZyBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgInJlc29sdmVOb2Rl
Iik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobm9kZUlkKTsKKyAgICBtYWtlQ2FsbChm
dW5jdGlvbiwgcmVzdWx0KTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Tm9kZVByb3Bl
cnRpZXMobG9uZyBub2RlSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHByb3BlcnRpZXNB
cnJheSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQoreworICAgIFNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZ2V0Tm9kZVByb3BlcnRp
ZXMiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChub2RlSWQpOworICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KHByb3BlcnRpZXNBcnJheS0+dG9KU09OU3RyaW5nKCkpOworICAgIG1h
a2VDYWxsKGZ1bmN0aW9uLCByZXN1bHQpOworfQorCit2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRO
b2RlUHJvdG90eXBlcyhsb25nIG5vZGVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0
KQoreworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2Jq
ZWN0LCAiZ2V0Tm9kZVByb3RvdHlwZXMiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChu
b2RlSWQpOworICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCByZXN1bHQpOworfQorCit2b2lkIEluamVj
dGVkU2NyaXB0OjpzZXRQcm9wZXJ0eVZhbHVlKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBv
YmplY3RJZCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQoreworICAgIFNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZ2V0Tm9kZVByb3BlcnRp
ZXMiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZC0+dG9KU09OU3RyaW5n
KCkpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHByb3BlcnR5TmFtZSk7CisgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CisgICAgbWFrZUNhbGwoZnVuY3Rpb24s
IHJlc3VsdCk7CiB9CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKQEAgLTkxLDEx
ICsxNTYsMjkgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZVdyYXBwZXJPYmplY3RHcm91
cChjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogICAgIHJlbGVhc2VGdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChvYmplY3RHcm91cCk7CiAgICAgcmVsZWFzZUZ1bmN0aW9uLmNhbGwoKTsKIH0KKwog
Ym9vbCBJbmplY3RlZFNjcmlwdDo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkKIHsKICAgICBy
ZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0OjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3cobV9pbmpl
Y3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKIH0KIAordm9pZCBJbmplY3RlZFNjcmlw
dDo6bWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiogcmVzdWx0KQoreworICAgIGlmIChoYXNOb1ZhbHVlKCkgfHwgIWNhbkFjY2Vzc0lu
c3BlY3RlZFdpbmRvdygpKSB7CisgICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3JWYWx1ZTo6bnVs
bCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBm
YWxzZTsKKyAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGZ1bmN0aW9uLmNhbGwoaGFkRXhj
ZXB0aW9uKTsKKworICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKKyAgICBpZiAoIWhhZEV4Y2Vw
dGlvbikKKyAgICAgICAgKnJlc3VsdCA9IHJlc3VsdFZhbHVlLnRvSW5zcGVjdG9yVmFsdWUobV9p
bmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKKyAgICBlbHNlCisgICAgICAgICpy
ZXN1bHQgPSBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHQuaAppbmRleCBmODBjZmI0Li44ZTg2OWU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaApAQCAtMzYsMTAgKzM2LDEyIEBACiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK2NsYXNzIFNjcmlwdEZ1bmN0
aW9uQ2FsbDsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHQgewogcHVibGljOgpAQCAtNDgsMTAgKzUw
LDIxIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzTm9WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5qZWN0ZWRTY3JpcHRPYmplY3QuaGFzTm9WYWx1ZSgpOyB9CiAKLSAgICB2b2lkIGRpc3BhdGNo
KGNvbnN0IFN0cmluZyYgbWV0aG9kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudHMsIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCwgYm9vbCogaGFkRXhjZXB0aW9uKTsKKyAgICB2b2lk
IGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RH
cm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIGV2YWx1YXRl
SW5DYWxsRnJhbWUobG9uZyBjYWxsRnJhbWUsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29u
c3QgU3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsK
KyAgICB2b2lkIGV2YWx1YXRlT25TZWxmKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25Cb2R5LCBQYXNz
UmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmd1bWVudHNBcnJheSwgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIGdldENvbXBsZXRpb25zKGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIGxvbmcgY2FsbEZy
YW1lSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgdm9pZCBnZXRQcm9w
ZXJ0aWVzKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgYm9vbCBpZ25vcmVI
YXNPd25Qcm9wZXJ0eSwgYm9vbCBhYmJyZXZpYXRlLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiBy
ZXN1bHQpOworICAgIHZvaWQgcHVzaE5vZGVUb0Zyb250ZW5kKFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3RJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2
b2lkIHJlc29sdmVOb2RlKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1
bHQpOworICAgIHZvaWQgZ2V0Tm9kZVByb3BlcnRpZXMobG9uZyBub2RlSWQsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IHByb3BlcnRpZXNBcnJheSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
cmVzdWx0KTsKKyAgICB2b2lkIGdldE5vZGVQcm90b3R5cGVzKGxvbmcgbm9kZUlkLCBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgc2V0UHJvcGVydHlWYWx1ZShQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJl
c3VsdCk7CisKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBQYXNzUmVmUHRy
PEluc3BlY3RvclZhbHVlPiBjYWxsRnJhbWVzKCk7CiAjZW5kaWYKKwogICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IHdyYXBGb3JDb25zb2xlKFNjcmlwdFZhbHVlKTsKICAgICB2b2lkIHJl
bGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJik7CiAgICAgU2NyaXB0U3RhdGUq
IHNjcmlwdFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3Jp
cHRTdGF0ZSgpOyB9CkBAIC02MCw2ICs3Myw5IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIEluamVj
dGVkU2NyaXB0IEluamVjdGVkU2NyaXB0SG9zdDo6aW5qZWN0ZWRTY3JpcHRGb3IoU2NyaXB0U3Rh
dGUqKTsKICAgICBleHBsaWNpdCBJbmplY3RlZFNjcmlwdChTY3JpcHRPYmplY3QpOwogICAgIGJv
b2wgY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCk7CisKKyAgICB2b2lkIG1ha2VDYWxsKFNjcmlw
dEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7
CisKICAgICBTY3JpcHRPYmplY3QgbV9pbmplY3RlZFNjcmlwdE9iamVjdDsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggM2Zk
NzBlNC4uYWViNTlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0SG9zdC5jcHAKQEAgLTMwLDIyICszMCwyMSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgiCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
Ci0KICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1
ZGUgIkluamVjdGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xl
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRE9NQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
RnJvbnRlbmQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAKQEAgLTgxLDYgKzgwLDc2IEBA
IEluamVjdGVkU2NyaXB0SG9zdDo6fkluamVjdGVkU2NyaXB0SG9zdCgpCiB7CiB9CiAKK3ZvaWQg
SW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkK
K3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9y
TWFpbldvcmxkKCk7CisgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCisgICAg
ICAgIGluamVjdGVkU2NyaXB0LmV2YWx1YXRlKGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCByZXN1
bHQpOworfQorCit2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVJbkNhbGxGcmFtZShs
b25nIGluamVjdGVkU2NyaXB0SWQsIGxvbmcgY2FsbEZyYW1lLCBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4q
IHJlc3VsdCkKK3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVk
U2NyaXB0SWQgPyBtX2lkVG9JbmplY3RlZFNjcmlwdC5nZXQoaW5qZWN0ZWRTY3JpcHRJZCkgOiBp
bmplY3RlZFNjcmlwdEZvck1haW5Xb3JsZCgpOworICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFz
Tm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0ZUluQ2FsbEZyYW1lKGNh
bGxGcmFtZSwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZU9uU2VsZihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uQm9k
eSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJndW1lbnRzQXJyYXksIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IGluamVjdGVkU2NyaXB0Rm9yTWFpbldvcmxkKCk7CisgICAgaWYgKCFpbmplY3RlZFNjcmlw
dC5oYXNOb1ZhbHVlKCkpCisgICAgICAgIGluamVjdGVkU2NyaXB0LmV2YWx1YXRlT25TZWxmKGZ1
bmN0aW9uQm9keSwgYXJndW1lbnRzQXJyYXksIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpnZXRDb21wbGV0aW9ucyhsb25nIGluamVjdGVkU2NyaXB0SWQsIGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIGxv
bmcgY2FsbEZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0SWQgPyBtX2lkVG9J
bmplY3RlZFNjcmlwdC5nZXQoaW5qZWN0ZWRTY3JpcHRJZCkgOiBpbmplY3RlZFNjcmlwdEZvck1h
aW5Xb3JsZCgpOworICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAgICAg
ICBpbmplY3RlZFNjcmlwdC5nZXRDb21wbGV0aW9ucyhleHByZXNzaW9uLCBpbmNsdWRlSW5zcGVj
dG9yQ29tbWFuZExpbmVBUEksIGNhbGxGcmFtZUlkLCByZXN1bHQpOworfQorCit2b2lkIEluamVj
dGVkU2NyaXB0SG9zdDo6Z2V0UHJvcGVydGllcyhQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
b2JqZWN0SWQsIGJvb2wgaWdub3JlSGFzT3duUHJvcGVydHksIGJvb2wgYWJicmV2aWF0ZSwgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQoreworICAgIEluamVjdGVkU2NyaXB0IGluamVj
dGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZC5nZXQoKSk7Cisg
ICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCisgICAgICAgIGluamVjdGVkU2Ny
aXB0LmdldFByb3BlcnRpZXMob2JqZWN0SWQsIGlnbm9yZUhhc093blByb3BlcnR5LCBhYmJyZXZp
YXRlLCByZXN1bHQpOworfQorCit2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6cHVzaE5vZGVUb0Zy
b250ZW5kKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogcmVzdWx0KQoreworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0
ID0gaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZC5nZXQoKSk7CisgICAgaWYgKCFp
bmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCisgICAgICAgIGluamVjdGVkU2NyaXB0LnB1c2hO
b2RlVG9Gcm9udGVuZChvYmplY3RJZCwgcmVzdWx0KTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlw
dEhvc3Q6OnJlc29sdmVOb2RlKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiBy
ZXN1bHQpCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNj
cmlwdEZvck5vZGVJZChub2RlSWQpOworICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1
ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5yZXNvbHZlTm9kZShub2RlSWQsIHJlc3VsdCk7
Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXROb2RlUHJvcGVydGllcyhsb25nIG5v
ZGVJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcHJvcGVydGllc0FycmF5LCBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRT
Y3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvck5vZGVJZChub2RlSWQpOworICAgIGlmICghaW5qZWN0
ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXROb2RlUHJv
cGVydGllcyhub2RlSWQsIHByb3BlcnRpZXNBcnJheSwgcmVzdWx0KTsKK30KKwordm9pZCBJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmdldE5vZGVQcm90b3R5cGVzKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+KiByZXN1bHQpCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHQgPSBpbmplY3RlZFNjcmlwdEZvck5vZGVJZChub2RlSWQpOworICAgIGlmICghaW5qZWN0ZWRT
Y3JpcHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXROb2RlUHJvdG90
eXBlcyhub2RlSWQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpzZXRQ
cm9wZXJ0eVZhbHVlKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRyPElu
c3BlY3RvclZhbHVlPiogcmVzdWx0KQoreworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2Ny
aXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZC5nZXQoKSk7CisgICAgaWYg
KCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCisgICAgICAgIGluamVjdGVkU2NyaXB0LnNl
dFByb3BlcnR5VmFsdWUob2JqZWN0SWQsIHByb3BlcnR5TmFtZSwgZXhwcmVzc2lvbiwgcmVzdWx0
KTsKK30KKwogdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKCkK
IHsKICAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQpAQCAtMjE0LDYgKzI4Myw0MyBAQCB2
b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6ZGlkRGVzdHJveVdvcmtlcihsb25nIGlkKQogfQogI2Vu
ZGlmIC8vIEVOQUJMRShXT1JLRVJTKQogCitJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdEhv
c3Q6OmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3RJZCkK
K3sKKyAgICBsb25nIGluamVjdGVkU2NyaXB0SWQgPSAwOworICAgIGJvb2wgc3VjY2VzcyA9IG9i
amVjdElkLT5nZXROdW1iZXIoImluamVjdGVkU2NyaXB0SWQiLCAmaW5qZWN0ZWRTY3JpcHRJZCk7
CisgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBtX2lkVG9JbmplY3RlZFNjcmlwdC5n
ZXQoaW5qZWN0ZWRTY3JpcHRJZCk7CisgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7Cit9CisK
K0luamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0SG9zdDo6aW5qZWN0ZWRTY3JpcHRGb3JOb2Rl
SWQobG9uZyBub2RlSWQpCit7CisgICAgaWYgKCFtX2luc3BlY3RvckNvbnRyb2xsZXIpCisgICAg
ICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOworCisgICAgRnJhbWUqIGZyYW1lID0gMDsKKyAg
ICBpZiAobm9kZUlkKSB7CisgICAgICAgIEFTU0VSVChtX2luc3BlY3RvckNvbnRyb2xsZXItPmRv
bUFnZW50KCkpOworICAgICAgICBOb2RlKiBub2RlID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5k
b21BZ2VudCgpLT5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICAgICAgaWYgKG5vZGUpIHsKKyAgICAg
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUtPm93bmVyRG9jdW1lbnQoKTsKKyAgICAg
ICAgICAgIGlmIChkb2N1bWVudCkKKyAgICAgICAgICAgICAgICBmcmFtZSA9IGRvY3VtZW50LT5m
cmFtZSgpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIGZyYW1lID0gbV9pbnNwZWN0
b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgpOworCisgICAgaWYgKGZy
YW1lKQorICAgICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRGb3IobWFpbldvcmxkU2NyaXB0U3Rh
dGUoZnJhbWUpKTsKKworICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOworfQorCitJbmplY3Rl
ZFNjcmlwdCBJbmplY3RlZFNjcmlwdEhvc3Q6OmluamVjdGVkU2NyaXB0Rm9yTWFpbldvcmxkKCkK
K3sKKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRGb3IobWFpbldvcmxkU2NyaXB0U3RhdGUobV9p
bnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgpKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKaW5kZXggZTlj
MDlhYS4uZjI0YjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuaApAQCAtNTgsNiArNTgsMTggQEAgcHVibGljOgogCiAgICAgfkluamVjdGVkU2Ny
aXB0SG9zdCgpOwogCisgICAgLy8gUGFydCBvZiB0aGUgcHJvdG9jb2wuCisgICAgdm9pZCBldmFs
dWF0ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAs
IFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgdm9pZCBldmFsdWF0ZUluQ2Fs
bEZyYW1lKGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwgbG9uZyBjYWxsRnJhbWUsIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIGV2YWx1YXRlT25TZWxmKGNvbnN0IFN0cmluZyYg
ZnVuY3Rpb25Cb2R5LCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcmd1bWVudHNBcnJheSwg
UmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIGdldENvbXBsZXRpb25z
KGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBib29sIGlu
Y2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwgbG9uZyBjYWxsRnJhbWVJZCwgUmVmUHRyPElu
c3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIGdldFByb3BlcnRpZXMoUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBib29sIGlnbm9yZUhhc093blByb3BlcnR5LCBi
b29sIGFiYnJldmlhdGUsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgdm9p
ZCBwdXNoTm9kZVRvRnJvbnRlbmQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElk
LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgcmVzb2x2ZU5vZGUo
bG9uZyBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgdm9pZCBn
ZXROb2RlUHJvcGVydGllcyhsb25nIG5vZGVJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
cHJvcGVydGllc0FycmF5LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZv
aWQgZ2V0Tm9kZVByb3RvdHlwZXMobG9uZyBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4q
IHJlc3VsdCk7CisgICAgdm9pZCBzZXRQcm9wZXJ0eVZhbHVlKFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKwogICAgIElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2luc3Bl
Y3RvckNvbnRyb2xsZXI7IH0KICAgICB2b2lkIGRpc2Nvbm5lY3RDb250cm9sbGVyKCkgeyBtX2lu
c3BlY3RvckNvbnRyb2xsZXIgPSAwOyB9CiAKQEAgLTk3LDYgKzEwOSwxMCBAQCBwcml2YXRlOgog
ICAgIFNjcmlwdE9iamVjdCBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBsb25nIGlkKTsKICAgICB2b2lkIGRpc2NhcmRJ
bmplY3RlZFNjcmlwdChTY3JpcHRTdGF0ZSopOwogCisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0
ZWRTY3JpcHRGb3JPYmplY3RJZChJbnNwZWN0b3JPYmplY3QqIG9iamVjdElkKTsKKyAgICBJbmpl
Y3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvck5vZGVJZChsb25nIG5vZGVJZCk7CisgICAgSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JNYWluV29ybGQoKTsKKwogICAgIEluc3BlY3Rv
ckNvbnRyb2xsZXIqIG1faW5zcGVjdG9yQ29udHJvbGxlcjsKICAgICBsb25nIG1fbmV4dEluamVj
dGVkU2NyaXB0SWQ7CiAgICAgbG9uZyBtX2xhc3RXb3JrZXJJZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwppbmRleCBlZWU1YjE0Li40OWUy
MTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291
cmNlLmpzCkBAIC02MCw3ICs2MCw5IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV0gPSBn
cm91cDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZ3JvdXAucHVzaChpZCk7
Ci0gICAgICAgICAgICAgICAgb2JqZWN0SWQgPSB0aGlzLl9zZXJpYWxpemVPYmplY3RJZChpZCwg
b2JqZWN0R3JvdXBOYW1lKTsKKyAgICAgICAgICAgICAgICBvYmplY3RJZCA9IHsgaW5qZWN0ZWRT
Y3JpcHRJZDogaW5qZWN0ZWRTY3JpcHRJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWQ6IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cE5hbWU6IG9iamVjdEdy
b3VwTmFtZSB9OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2Ny
aXB0LlJlbW90ZU9iamVjdC5mcm9tT2JqZWN0KG9iamVjdCwgb2JqZWN0SWQsIGFiYnJldmlhdGUp
OwogICAgICAgICB9IGNhdGNoIChlKSB7CkBAIC02OCwxOCArNzAsOSBAQCBJbmplY3RlZFNjcmlw
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgX3NlcmlhbGl6ZU9iamVj
dElkOiBmdW5jdGlvbihpZCwgZ3JvdXBOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGluamVj
dGVkU2NyaXB0SWQgKyAiOiIgKyBpZCArICI6IiArIGdyb3VwTmFtZTsKLSAgICB9LAotCiAgICAg
X3BhcnNlT2JqZWN0SWQ6IGZ1bmN0aW9uKG9iamVjdElkKQogICAgIHsKLSAgICAgICAgdmFyIHRv
a2VucyA9IG9iamVjdElkLnNwbGl0KCI6Iik7Ci0gICAgICAgIHZhciBwYXJzZWRPYmplY3RJZCA9
IHt9OwotICAgICAgICBwYXJzZWRPYmplY3RJZC5pZCA9IHBhcnNlSW50KHRva2Vuc1sxXSk7Ci0g
ICAgICAgIHBhcnNlZE9iamVjdElkLmdyb3VwTmFtZSA9IHRva2Vuc1syXTsKLSAgICAgICAgcmV0
dXJuIHBhcnNlZE9iamVjdElkOworICAgICAgICByZXR1cm4gZXZhbCgiKCIgKyBvYmplY3RJZCAr
ICIpIik7CiAgICAgfSwKIAogICAgIHJlbGVhc2VXcmFwcGVyT2JqZWN0R3JvdXA6IGZ1bmN0aW9u
KG9iamVjdEdyb3VwTmFtZSkKQEAgLTEwMywyNiArOTYsMTEgQEAgSW5qZWN0ZWRTY3JpcHQucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0sCiAKLSAgICBnZXRQcm90
b3R5cGVzOiBmdW5jdGlvbihub2RlSWQpCi0gICAgewotICAgICAgICB0aGlzLnJlbGVhc2VXcmFw
cGVyT2JqZWN0R3JvdXAoInByb3RvdHlwZXMiKTsKLSAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9u
b2RlRm9ySWQobm9kZUlkKTsKLSAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICAgICAgdmFyIHByb3RvdHlw
ZSA9IG5vZGU7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuX3dy
YXBPYmplY3QocHJvdG90eXBlLCAicHJvdG90eXBlcyIpKTsKLSAgICAgICAgICAgIHByb3RvdHlw
ZSA9IHByb3RvdHlwZS5fX3Byb3RvX187Ci0gICAgICAgIH0gd2hpbGUgKHByb3RvdHlwZSkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAotCiAgICAgZ2V0UHJvcGVydGllczogZnVuY3Rp
b24ob2JqZWN0SWQsIGlnbm9yZUhhc093blByb3BlcnR5LCBhYmJyZXZpYXRlKQogICAgIHsKICAg
ICAgICAgdmFyIHBhcnNlZE9iamVjdElkID0gdGhpcy5fcGFyc2VPYmplY3RJZChvYmplY3RJZCk7
CiAgICAgICAgIHZhciBvYmplY3QgPSB0aGlzLl9vYmplY3RGb3JJZChwYXJzZWRPYmplY3RJZCk7
CisKICAgICAgICAgaWYgKCF0aGlzLl9pc0RlZmluZWQob2JqZWN0KSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBbXTsKQEAgLTIxNCw3ICsxOTIs
NyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAg
ICAgICB2YXIgZXhwcmVzc2lvblJlc3VsdDsKICAgICAgICAgICAgIC8vIEV2YWx1YXRlIG9uIGNh
bGwgZnJhbWUgaWYgY2FsbCBmcmFtZSBpZCBpcyBhdmFpbGFibGUuCi0gICAgICAgICAgICBpZiAo
dHlwZW9mIGNhbGxGcmFtZUlkID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgaWYgKGNhbGxG
cmFtZUlkID49IDApIHsKICAgICAgICAgICAgICAgICB2YXIgY2FsbEZyYW1lID0gdGhpcy5fY2Fs
bEZyYW1lRm9ySWQoY2FsbEZyYW1lSWQpOwogICAgICAgICAgICAgICAgIGlmICghY2FsbEZyYW1l
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHM7CkBAIC0zMjMsOSArMzAxLDkgQEAg
SW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3Jp
cHRIb3N0Lm5vZGVGb3JJZChub2RlSWQpOwogICAgIH0sCiAKLSAgICBfb2JqZWN0Rm9ySWQ6IGZ1
bmN0aW9uKHBhcnNlZE9iamVjdElkKQorICAgIF9vYmplY3RGb3JJZDogZnVuY3Rpb24ob2JqZWN0
SWQpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5faWRUb1dyYXBwZWRPYmplY3RbcGFyc2Vk
T2JqZWN0SWQuaWRdOworICAgICAgICByZXR1cm4gdGhpcy5faWRUb1dyYXBwZWRPYmplY3Rbb2Jq
ZWN0SWQuaWRdOwogICAgIH0sCiAKICAgICByZXNvbHZlTm9kZTogZnVuY3Rpb24obm9kZUlkKQpA
QCAtMzQyLDEyICszMjAsMjkgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAg
ICB2YXIgbm9kZSA9IHRoaXMuX25vZGVGb3JJZChub2RlSWQpOwogICAgICAgICBpZiAoIW5vZGUp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHByb3BlcnRpZXMgPSBldmFsKCIo
IiArIHByb3BlcnRpZXMgKyAiKSIpOwogICAgICAgICB2YXIgcmVzdWx0ID0ge307CiAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7ICsraSkKICAgICAgICAgICAg
IHJlc3VsdFtwcm9wZXJ0aWVzW2ldXSA9IG5vZGVbcHJvcGVydGllc1tpXV07CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfSwKIAorICAgIGdldE5vZGVQcm90b3R5cGVzOiBmdW5jdGlvbihu
b2RlSWQpCisgICAgeworICAgICAgICB0aGlzLnJlbGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAoInBy
b3RvdHlwZXMiKTsKKyAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9ub2RlRm9ySWQobm9kZUlkKTsK
KyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgdmFyIHByb3RvdHlwZSA9IG5vZGU7CisgICAgICAg
IGRvIHsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuX3dyYXBPYmplY3QocHJvdG90eXBl
LCAicHJvdG90eXBlcyIpKTsKKyAgICAgICAgICAgIHByb3RvdHlwZSA9IHByb3RvdHlwZS5fX3By
b3RvX187CisgICAgICAgIH0gd2hpbGUgKHByb3RvdHlwZSkKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9LAorCiAgICAgcHVzaE5vZGVUb0Zyb250ZW5kOiBmdW5jdGlvbihvYmplY3RJZCkK
ICAgICB7CiAgICAgICAgIHZhciBwYXJzZWRPYmplY3RJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQo
b2JqZWN0SWQpOwpAQCAtMzU5LDggKzM1NCw4IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9
IHsKIAogICAgIGV2YWx1YXRlT25TZWxmOiBmdW5jdGlvbihmdW5jQm9keSwgYXJncykKICAgICB7
Ci0gICAgICAgIHZhciBmdW5jID0gd2luZG93LmV2YWwoIigiICsgZnVuY0JvZHkgKyAiKSIpOwot
ICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmdzIHx8IFtdKTsKKyAgICAgICAgdmFy
IGZ1bmMgPSBldmFsKCIoIiArIGZ1bmNCb2R5ICsgIikiKTsKKyAgICAgICAgcmV0dXJuIGZ1bmMu
YXBwbHkodGhpcywgZXZhbCgiKCIgKyBhcmdzICsgIikiKSB8fCBbXSk7CiAgICAgfSwKIAogICAg
IF9pc0RlZmluZWQ6IGZ1bmN0aW9uKG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5pZGwKaW5kZXggNmMyY2MyZS4uOGFkMTJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5pZGwKQEAgLTM2LDggKzM2LDYgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAv
LyBnZW5lcmljIEluc3BlY3RvcidzIG1ldGhvZHMKICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAot
ICAgICAgICAvLyBIVUdFIEZJWE1FOiB3ZSBuZWVkIHRvIGV4cG9zZSBJbmplY3RlZFNjcmlwdCBt
ZXRob2RzIGhlcmUuIE9yIGRvY3VtZW50IEluamVjdGVkU2NyaXB0IGNhcGFiaWxpdGllcy4KLSAg
ICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGlu
IGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwgaW4gU3RyaW5nIG1ldGhvZE5hbWUsIGluIFN0cmluZyBh
cmd1bWVudHMsIG91dCBWYWx1ZSByZXN1bHQsIG91dCBib29sZWFuIGlzRXhjZXB0aW9uKTsKICAg
ICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgYWRkU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChp
biBTdHJpbmcgc2NyaXB0U291cmNlKTsKICAgICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQg
cmVtb3ZlQWxsU2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQoKTsKICAgICAgICAgW2RvbWFpbj1JbnNw
ZWN0b3JdIHZvaWQgcmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cChpbiBsb25nIGluamVjdGVkU2Ny
aXB0SWQsIGluIFN0cmluZyBvYmplY3RHcm91cCk7CkBAIC03Myw2ICs3MSwyMSBAQCBtb2R1bGUg
Y29yZSB7CiAgICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIGRlbGV0ZUNvb2tpZShpbiBT
dHJpbmcgY29va2llTmFtZSwgaW4gU3RyaW5nIGRvbWFpbik7CiAKICAgICAgICAgLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KKyAgICAgICAgLy8gSW5qZWN0ZWQgU2NyaXB0CisgICAgICAgIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CisKKyAgICAgICAgW2RvbWFpbj1JbmplY3RlZFNjcmlwdF0gdm9pZCBldmFsdWF0ZShpbiBTdHJp
bmcgZXhwcmVzc2lvbiwgaW4gU3RyaW5nIG9iamVjdEdyb3VwLCBvdXQgVmFsdWUgcmVzdWx0KTsK
KyAgICAgICAgW2RvbWFpbj1JbmplY3RlZFNjcmlwdF0gdm9pZCBldmFsdWF0ZUluQ2FsbEZyYW1l
KGluIGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwgaW4gbG9uZyBjYWxsRnJhbWUsIGluIFN0cmluZyBl
eHByZXNzaW9uLCBpbiBTdHJpbmcgb2JqZWN0R3JvdXAsIG91dCBWYWx1ZSByZXN1bHQpOworICAg
ICAgICBbZG9tYWluPUluamVjdGVkU2NyaXB0XSB2b2lkIGV2YWx1YXRlT25TZWxmKGluIFN0cmlu
ZyBmdW5jdGlvbkJvZHksIGluIEFycmF5IGFyZ3VtZW50c0FycmF5LCBvdXQgVmFsdWUgcmVzdWx0
KTsKKyAgICAgICAgW2RvbWFpbj1JbmplY3RlZFNjcmlwdF0gdm9pZCBnZXRDb21wbGV0aW9ucyhp
biBsb25nIGluamVjdGVkU2NyaXB0SWQsIGluIFN0cmluZyBleHByZXNzaW9uLCBpbiBib29sZWFu
IGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwgaW4gbG9uZyBjYWxsRnJhbWVJZCwgb3V0
IFZhbHVlIHJlc3VsdCk7CisgICAgICAgIFtkb21haW49SW5qZWN0ZWRTY3JpcHRdIHZvaWQgZ2V0
UHJvcGVydGllcyhpbiBPYmplY3Qgb2JqZWN0SWQsIGluIGJvb2xlYW4gaWdub3JlSGFzT3duUHJv
cGVydHksIGluIGJvb2xlYW4gYWJicmV2aWF0ZSwgb3V0IFZhbHVlIHJlc3VsdCk7CisgICAgICAg
IFtkb21haW49SW5qZWN0ZWRTY3JpcHRdIHZvaWQgcHVzaE5vZGVUb0Zyb250ZW5kKGluIE9iamVj
dCBvYmplY3RJZCwgb3V0IFZhbHVlIHJlc3VsdCk7CisgICAgICAgIFtkb21haW49SW5qZWN0ZWRT
Y3JpcHRdIHZvaWQgcmVzb2x2ZU5vZGUoaW4gbG9uZyBub2RlSWQsIG91dCBWYWx1ZSByZXN1bHQp
OworICAgICAgICBbZG9tYWluPUluamVjdGVkU2NyaXB0XSB2b2lkIGdldE5vZGVQcm9wZXJ0aWVz
KGluIGxvbmcgbm9kZUlkLCBpbiBWYWx1ZSBwcm9wZXJ0aWVzQXJyYXksIG91dCBWYWx1ZSByZXN1
bHQpOworICAgICAgICBbZG9tYWluPUluamVjdGVkU2NyaXB0XSB2b2lkIGdldE5vZGVQcm90b3R5
cGVzKGluIGxvbmcgbm9kZUlkLCBvdXQgVmFsdWUgcmVzdWx0KTsKKyAgICAgICAgW2RvbWFpbj1J
bmplY3RlZFNjcmlwdF0gdm9pZCBzZXRQcm9wZXJ0eVZhbHVlKGluIE9iamVjdCBvYmplY3RJZCwg
aW4gU3RyaW5nIHByb3BlcnR5TmFtZSwgaW4gU3RyaW5nIGV4cHJlc3Npb24sIG91dCBWYWx1ZSBy
ZXN1bHQpOworCisgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAgICAgIC8vIENvbnNvbGUgQVBJ
CiAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA1YTEzOWI2Li5hOTFlYjI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0x
MTYxLDI2ICsxMTYxLDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0b3JlU3RpY2t5
QnJlYWtwb2ludChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnIKIH0KICNlbmRpZgogCi12
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoT25JbmplY3RlZFNjcmlwdChsb25nIGlu
amVjdGVkU2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kTmFtZSwgY29uc3QgU3RyaW5nJiBh
cmd1bWVudHMsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCwgYm9vbCogaGFkRXhjZXB0
aW9uKQotewotICAgIGlmICghbV9mcm9udGVuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8g
RklYTUU6IGV4cGxpY2l0bHkgcGFzcyBpbmplY3RlZFNjcmlwdElkIGFsb25nIHdpdGggbm9kZSBp
ZCB0byB0aGUgZnJvbnRlbmQuCi0gICAgYm9vbCBpbmplY3RlZFNjcmlwdElkSXNOb2RlSWQgPSBp
bmplY3RlZFNjcmlwdElkIDw9IDA7Ci0KLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dDsKLSAgICBpZiAoaW5qZWN0ZWRTY3JpcHRJZElzTm9kZUlkKQotICAgICAgICBpbmplY3RlZFNj
cmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yTm9kZUlkKC1pbmplY3RlZFNjcmlwdElkKTsKLSAgICBl
bHNlCi0gICAgICAgIGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRIb3N0KCktPmluamVj
dGVkU2NyaXB0Rm9ySWQoaW5qZWN0ZWRTY3JpcHRJZCk7Ci0KLSAgICBpZiAoaW5qZWN0ZWRTY3Jp
cHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbmplY3RlZFNjcmlwdC5k
aXNwYXRjaChtZXRob2ROYW1lLCBhcmd1bWVudHMsIHJlc3VsdCwgaGFkRXhjZXB0aW9uKTsKLX0K
LQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwKGxv
bmcgaW5qZWN0ZWRTY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkKIHsKICAgICBp
bmplY3RlZFNjcmlwdEhvc3QoKS0+cmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cChpbmplY3RlZFNj
cmlwdElkLCBvYmplY3RHcm91cCk7CkBAIC0xNDY4LDI3ICsxNDQ4LDYgQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpvcGVuSW5JbnNwZWN0ZWRXaW5kb3coY29uc3QgU3RyaW5nJiB1cmwpCiAg
ICAgbmV3RnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihtYWluRnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIG5ld0ZyYW1lLT5sb2FkZXIoKS0+Y29tcGxldGVVUkwodXJs
KSwgIiIsIGZhbHNlLCBmYWxzZSk7CiB9CiAKLUluamVjdGVkU2NyaXB0IEluc3BlY3RvckNvbnRy
b2xsZXI6OmluamVjdGVkU2NyaXB0Rm9yTm9kZUlkKGxvbmcgaWQpCi17Ci0KLSAgICBGcmFtZSog
ZnJhbWUgPSAwOwotICAgIGlmIChpZCkgewotICAgICAgICBBU1NFUlQobV9kb21BZ2VudCk7Ci0g
ICAgICAgIE5vZGUqIG5vZGUgPSBtX2RvbUFnZW50LT5ub2RlRm9ySWQoaWQpOwotICAgICAgICBp
ZiAobm9kZSkgewotICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbm9kZS0+b3duZXJE
b2N1bWVudCgpOwotICAgICAgICAgICAgaWYgKGRvY3VtZW50KQotICAgICAgICAgICAgICAgIGZy
YW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAg
ZnJhbWUgPSBtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpOwotCi0gICAgaWYgKGZyYW1lKQot
ICAgICAgICByZXR1cm4gbV9pbmplY3RlZFNjcmlwdEhvc3QtPmluamVjdGVkU2NyaXB0Rm9yKG1h
aW5Xb3JsZFNjcmlwdFN0YXRlKGZyYW1lKSk7Ci0KLSAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQo
KTsKLX0KLQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRTY3JpcHRUb0V2YWx1YXRlT25M
b2FkKGNvbnN0IFN0cmluZyYgc291cmNlKQogewogICAgIG1fc2NyaXB0c1RvRXZhbHVhdGVPbkxv
YWQuYXBwZW5kKHNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaAppbmRleCA5Y2RkYzU2Li40MDUxMzljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTIyNCwxNiArMjI0LDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFN0aWNreUJyZWFrcG9pbnRzKFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBicmVha3BvaW50cyk7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0SW5qZWN0ZWRT
Y3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2UpOwotICAgIHZvaWQgZGlzcGF0Y2hPbklu
amVjdGVkU2NyaXB0KGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBtZXRob2RO
YW1lLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVz
dWx0LCBib29sKiBoYWRFeGNlcHRpb24pOwotCiAgICAgLy8gR2VuZXJpYyBjb2RlIGNhbGxlZCBm
cm9tIGN1c3RvbSBpbXBsZW1lbnRhdGlvbnMuCiAgICAgdm9pZCByZWxlYXNlV3JhcHBlck9iamVj
dEdyb3VwKGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCk7
CiAKICAgICB2b2lkIGV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyB0ZXN0Q2FsbElkLCBj
b25zdCBTdHJpbmcmIHNjcmlwdCk7CiAKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dEZvck5vZGVJZChsb25nIGlkKTsKLQogICAgIHZvaWQgYWRkU2NyaXB0VG9FdmFsdWF0ZU9uTG9h
ZChjb25zdCBTdHJpbmcmIHNvdXJjZSk7CiAgICAgdm9pZCByZW1vdmVBbGxTY3JpcHRzVG9FdmFs
dWF0ZU9uTG9hZCgpOwogICAgIHZvaWQgc2V0SW5zcGVjdG9yRXh0ZW5zaW9uQVBJKGNvbnN0IFN0
cmluZyYgc291cmNlKTsKQEAgLTI4Myw5ICsyNzgsNyBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxkQXJyYXlGb3JDb29raWVzKExpc3RIYXNoU2V0PENvb2tp
ZT4mKTsKIAogICAgIHZvaWQgZm9jdXNOb2RlKCk7Ci0KICAgICBib29sIGlzTWFpblJlc291cmNl
TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVcmwpOwot
CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgY2FsbElkLCBjb25z
dCBTdHJpbmcmIGpzb25SZXN1bHQpOwogCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAppbmRleCA4OWU5Yjdj
Li5kMWI4MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVz
LmNwcApAQCAtNjQ3LDYgKzY0NywxNCBAQCBib29sIEluc3BlY3Rvck9iamVjdDo6Z2V0Qm9vbGVh
bihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIG91dHB1dCkgY29uc3QKICAgICByZXR1cm4gdmFs
dWUtPmFzQm9vbGVhbihvdXRwdXQpOwogfQogCitib29sIEluc3BlY3Rvck9iamVjdDo6Z2V0TnVt
YmVyKGNvbnN0IFN0cmluZyYgbmFtZSwgbG9uZyogb3V0cHV0KSBjb25zdAoreworICAgIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUgPSBnZXQobmFtZSk7CisgICAgaWYgKCF2YWx1ZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB2YWx1ZS0+YXNOdW1iZXIob3V0cHV0KTsK
K30KKwogYm9vbCBJbnNwZWN0b3JPYmplY3Q6OmdldE51bWJlcihjb25zdCBTdHJpbmcmIG5hbWUs
IGRvdWJsZSogb3V0cHV0KSBjb25zdAogewogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFs
dWUgPSBnZXQobmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVz
LmgKaW5kZXggMzkxMzcyZS4uODQzZjM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaApAQCAtMTgwLDYgKzE4MCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
X2l0ZXJhdG9yIGZpbmQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBib29sIGdldEJv
b2xlYW4oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiBvdXRwdXQpIGNvbnN0OworICAgIGJvb2wg
Z2V0TnVtYmVyKGNvbnN0IFN0cmluZyYgbmFtZSwgbG9uZyogb3V0cHV0KSBjb25zdDsKICAgICBi
b29sIGdldE51bWJlcihjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSogb3V0cHV0KSBjb25zdDsK
ICAgICBib29sIGdldFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyogb3V0cHV0KSBj
b25zdDsKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZ2V0T2JqZWN0KGNvbnN0IFN0
cmluZyYgbmFtZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0F1ZGl0UnVsZXMuanMKaW5kZXggN2FhODkxZi4uYWQ0MmUxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcwpAQCAtNjUsNyArNjUs
NyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5nZXREb21haW5Ub1Jlc291cmNlc01hcCA9IGZ1
bmN0aW9uKHJlc291cmNlcywgdHlwZXMsIG5lZQogCiBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5l
dmFsdWF0ZUluVGFyZ2V0V2luZG93ID0gZnVuY3Rpb24oZnVuYywgYXJncywgY2FsbGJhY2spCiB7
Ci0gICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0RGVmYXVsdCgpLmV2YWx1YXRlT25TZWxmKGZ1
bmMudG9TdHJpbmcoKSwgYXJncywgY2FsbGJhY2spOworICAgIEluc3BlY3RvckJhY2tlbmQuZXZh
bHVhdGVPblNlbGYoZnVuYy50b1N0cmluZygpLCBhcmdzLCBjYWxsYmFjayk7CiB9CiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5k
ZXggYTQwMDMwZS4uYjJmMjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC0zNTUsMTQgKzM1NSwxNCBAQCBXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAvLyBDb2xsZWN0IGNvbW1hIHNl
cGFyYXRlZCBvYmplY3QgcHJvcGVydGllcyBmb3IgdGhlIGNvbXBsZXRpb24uCiAKICAgICAgICAg
dmFyIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSA9ICghZG90Tm90YXRpb24gJiYgIWJy
YWNrZXROb3RhdGlvbik7Ci0gICAgICAgIHZhciBjYWxsRnJhbWVJZCA9IFdlYkluc3BlY3Rvci5w
YW5lbHMuc2NyaXB0cy5zZWxlY3RlZENhbGxGcmFtZUlkKCk7CisgICAgICAgIHZhciBjYWxsRnJh
bWVJZCA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5zZWxlY3RlZENhbGxGcmFtZUlkKCkg
fHwgLTE7CiAgICAgICAgIHZhciBpbmplY3RlZFNjcmlwdEFjY2VzczsKICAgICAgICAgaWYgKFdl
Ykluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cyAmJiBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMu
cGF1c2VkKSB7CiAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRDYWxsRnJhbWUgPSBXZWJJbnNwZWN0
b3IucGFuZWxzLnNjcmlwdHMuc2lkZWJhclBhbmVzLmNhbGxzdGFjay5zZWxlY3RlZENhbGxGcmFt
ZTsKLSAgICAgICAgICAgIGluamVjdGVkU2NyaXB0QWNjZXNzID0gSW5qZWN0ZWRTY3JpcHRBY2Nl
c3MuZ2V0KHNlbGVjdGVkQ2FsbEZyYW1lLndvcmxkSWQpOworICAgICAgICAgICAgdmFyIGluamVj
dGVkU2NyaXB0SWQgPSBzZWxlY3RlZENhbGxGcmFtZS53b3JsZElkOwogICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIGluamVjdGVkU2NyaXB0QWNjZXNzID0gSW5qZWN0ZWRTY3JpcHRBY2Nlc3Mu
Z2V0RGVmYXVsdCgpOwotICAgICAgICBpbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXRDb21wbGV0aW9u
cyhleHByZXNzaW9uU3RyaW5nLCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIGNhbGxG
cmFtZUlkLCByZXBvcnRDb21wbGV0aW9ucyk7CisgICAgICAgICAgICB2YXIgaW5qZWN0ZWRTY3Jp
cHRJZCA9IDA7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0Q29tcGxldGlvbnMoaW5qZWN0
ZWRTY3JpcHRJZCwgZXhwcmVzc2lvblN0cmluZywgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5l
QVBJLCBjYWxsRnJhbWVJZCwgcmVwb3J0Q29tcGxldGlvbnMpOwogICAgIH0sCiAKICAgICBfcmVw
b3J0Q29tcGxldGlvbnM6IGZ1bmN0aW9uKGJlc3RNYXRjaE9ubHksIGNvbXBsZXRpb25zUmVhZHlD
YWxsYmFjaywgZG90Tm90YXRpb24sIGJyYWNrZXROb3RhdGlvbiwgcHJlZml4LCByZXN1bHQsIGlz
RXhjZXB0aW9uKSB7CkBAIC01MzIsOCArNTMyLDggQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgZnVuY3Rpb24gZXZhbENhbGxiYWNrKHJlc3VsdCkKICAg
ICAgICAgewogICAgICAgICAgICAgY2FsbGJhY2soV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5m
cm9tUGF5bG9hZChyZXN1bHQpKTsKLSAgICAgICAgfTsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHRB
Y2Nlc3MuZ2V0RGVmYXVsdCgpLmV2YWx1YXRlKGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBldmFs
Q2FsbGJhY2spOworICAgICAgICB9CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZXZhbHVhdGUo
ZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIGV2YWxDYWxsYmFjayk7CiAgICAgfSwKIAogICAgIF9l
bnRlcktleVByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCmluZGV4IDY3
ZDM0YjIuLjcyMmMwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTQxMSw4ICs0MTEsNyBAQCBX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCIlZCDDlyAlZCBwaXhlbHMgKE5hdHVyYWw6ICVkIMOXICVkIHBpeGVscykiLCBwcm9wZXJ0
aWVzLm9mZnNldFdpZHRoLCBwcm9wZXJ0aWVzLm9mZnNldEhlaWdodCwgcHJvcGVydGllcy5uYXR1
cmFsV2lkdGgsIHByb3BlcnRpZXMubmF0dXJhbEhlaWdodCk7CiAgICAgICAgIH0KLQotICAgICAg
ICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXRGb3JOb2RlKG5vZGUpLmdldE5vZGVQcm9wZXJ0aWVz
KG5vZGUuaWQsIFsibmF0dXJhbEhlaWdodCIsICJuYXR1cmFsV2lkdGgiLCAib2Zmc2V0SGVpZ2h0
IiwgIm9mZnNldFdpZHRoIl0sIHNldFRvb2x0aXAuYmluZCh0aGlzKSk7CisgICAgICAgIEluc3Bl
Y3RvckJhY2tlbmQuZ2V0Tm9kZVByb3BlcnRpZXMobm9kZS5pZCwgWyJuYXR1cmFsSGVpZ2h0Iiwg
Im5hdHVyYWxXaWR0aCIsICJvZmZzZXRIZWlnaHQiLCAib2Zmc2V0V2lkdGgiXSwgc2V0VG9vbHRp
cC5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAgdXBkYXRlU2VsZWN0aW9uOiBmdW5jdGlvbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lv
blBhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25Q
YW5lbC5qcwppbmRleCA0YjQyZTY4Li44NGRlOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uUGFuZWwuanMKQEAgLTk1LDcgKzk1LDcg
QEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvbldhdGNoU2lkZWJhclBhbmUucHJvdG90eXBlID0gewog
CiAgICAgc2V0RXhwcmVzc2lvbjogZnVuY3Rpb24oZXhwcmVzc2lvbiwgdGl0bGUpCiAgICAgewot
ICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXREZWZhdWx0KCkuZXZhbHVhdGUoZXhwcmVz
c2lvbiwgdGhpcy5fb25FdmFsdWF0ZS5iaW5kKHRoaXMsIHRpdGxlKSk7CisgICAgICAgIEluc3Bl
Y3RvckJhY2tlbmQuZXZhbHVhdGUoZXhwcmVzc2lvbiwgdGhpcy5fb25FdmFsdWF0ZS5iaW5kKHRo
aXMsIHRpdGxlKSk7CiAgICAgfSwKIAogICAgIF9vbkV2YWx1YXRlOiBmdW5jdGlvbih0aXRsZSwg
cmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25TZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4
dGVuc2lvblNlcnZlci5qcwppbmRleCAxMzIwZWZiLi42YTg4YmY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcwpAQCAt
MjcyLDcgKzI3Miw3IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0g
ewogICAgICAgICB2YXIgZXZhbEV4cHJlc3Npb24gPSAiSlNPTi5zdHJpbmdpZnkoZXZhbCgnIiAr
CiAgICAgICAgICAgICAid2l0aCAod2luZG93LmNvbnNvbGUuX2NvbW1hbmRMaW5lQVBJKSB3aXRo
ICh3aW5kb3cpIHsnICsgdW5lc2NhcGUoJyIgKyBlc2NhcGUobWVzc2FnZS5leHByZXNzaW9uKSAr
CiAgICAgICAgICAgICAiJykgKyAnfScpKTsiOwotICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vz
cy5nZXREZWZhdWx0KCkuZXZhbHVhdGUoZXZhbEV4cHJlc3Npb24sIGNhbGxiYWNrLmJpbmQodGhp
cykpOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmV2YWx1YXRlKGV2YWxFeHByZXNzaW9uLCBu
dWxsLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAgX29uUmV2ZWFsQW5kU2Vs
ZWN0OiBmdW5jdGlvbihtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdEFjY2Vzcy5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGNiM2MyYjguLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdEFjY2Vzcy5qcworKysgL2Rldi9udWxsCkBA
IC0xLDk2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBKb3NlcGggUGVjb3Jhcm8K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5j
dGlvbiBJbmplY3RlZFNjcmlwdEFjY2Vzcyh3b3JsZElkKSB7Ci0gICAgdGhpcy5fd29ybGRJZCA9
IHdvcmxkSWQ7Ci19Ci0KLUluamVjdGVkU2NyaXB0QWNjZXNzLmdldCA9IGZ1bmN0aW9uKHdvcmxk
SWQpCi17Ci0gICAgaWYgKHR5cGVvZiB3b3JsZElkID09PSAibnVtYmVyIikKLSAgICAgICAgcmV0
dXJuIG5ldyBJbmplY3RlZFNjcmlwdEFjY2Vzcyh3b3JsZElkKTsKLQotICAgIGNvbnNvbGUuYXNz
ZXJ0KGZhbHNlLCAiQWNjZXNzIHRvIGluamVjdGVkIHNjcmlwdCB3aXRoIG5vIGlkIik7Ci19Ci0K
LUluamVjdGVkU2NyaXB0QWNjZXNzLmdldEZvck5vZGUgPSBmdW5jdGlvbihub2RlKQotewotICAg
IC8vIEZJWE1FOiBkbyBzb21ldGhpbmcuCi0gICAgcmV0dXJuIEluamVjdGVkU2NyaXB0QWNjZXNz
LmdldCgtbm9kZS5pZCk7Ci19Ci0KLUluamVjdGVkU2NyaXB0QWNjZXNzLmdldEZvck9iamVjdElk
ID0gZnVuY3Rpb24ob2JqZWN0SWQpCi17Ci0gICAgLy8gRklYTUU6IG1vdmUgdG8gbmF0aXZlIGxh
eWVyLgotICAgIHZhciB0b2tlbnMgPSBvYmplY3RJZC5zcGxpdCgiOiIpOwotICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdEFjY2Vzcy5nZXQocGFyc2VJbnQodG9rZW5zWzBdKSk7Ci19Ci0KLUluamVj
dGVkU2NyaXB0QWNjZXNzLmdldERlZmF1bHQgPSBmdW5jdGlvbigpCi17Ci0gICAgcmV0dXJuIElu
amVjdGVkU2NyaXB0QWNjZXNzLmdldCgwKTsKLX0KLQotSW5qZWN0ZWRTY3JpcHRBY2Nlc3MucHJv
dG90eXBlID0ge307Ci0KLUluamVjdGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlciA9IGZ1
bmN0aW9uKG1ldGhvZE5hbWUsIGFzeW5jKQotewotICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLnBy
b3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBhbGxB
cmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKLSAgICAgICAgdmFy
IGNhbGxiYWNrID0gYWxsQXJnc1thbGxBcmdzLmxlbmd0aCAtIDFdOwotICAgICAgICB2YXIgYXJn
c1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFsbEFy
Z3MsIDAsIGFsbEFyZ3MubGVuZ3RoIC0gMSkpOwotICAgICAgICAKLSAgICAgICAgZnVuY3Rpb24g
bXlDYWxsYmFjayhyZXN1bHQsIGlzRXhjZXB0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoIWlzRXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuYWRkTWVz
c2FnZShXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UoIkVycm9y
IGRpc3BhdGNoaW5nOiAiICsgbWV0aG9kTmFtZSkpOwotICAgICAgICB9Ci0gICAgICAgIEluc3Bl
Y3RvckJhY2tlbmQuZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KHRoaXMuX3dvcmxkSWQsIG1ldGhv
ZE5hbWUsIGFyZ3NTdHJpbmcsIG15Q2FsbGJhY2spOwotICAgIH07Ci19Ci0KLS8vIEluamVjdGVk
U2NyaXB0QWNjZXNzIG1lc3NhZ2UgZm9yd2FyZGluZyBwdXRzIHNvbWUgY29uc3RyYWludHMgb24g
dGhlIHdheSBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZCBhbmQgY2FsbGVkOgotLy8gLSBNYWtlIHN1
cmUgY29ycmVzcG9uZGluZyBtZXRob2RzIGluIEluamVjdGVkU2NyaXB0IHJldHVybiBub24tbnVs
bCBhbmQgbm9uLXVuZGVmaW5lZCB2YWx1ZXMsCi0vLyAtIE1ha2Ugc3VyZSBsYXN0IHBhcmFtZXRl
ciBvZiBhbGwgdGhlIEluamVjdGVkU3JpcHRBY2Nlc3MuKiBjYWxscyBpcyBhIGNhbGxiYWNrIGZ1
bmN0aW9uLgotLy8gV2Uga2VlcCB0aGVzZSBzb3J0ZWQuCi1JbmplY3RlZFNjcmlwdEFjY2Vzcy5f
aW5zdGFsbEhhbmRsZXIoImV2YWx1YXRlIik7Ci1JbmplY3RlZFNjcmlwdEFjY2Vzcy5faW5zdGFs
bEhhbmRsZXIoImV2YWx1YXRlSW5DYWxsRnJhbWUiKTsKLUluamVjdGVkU2NyaXB0QWNjZXNzLl9p
bnN0YWxsSGFuZGxlcigiZXZhbHVhdGVPblNlbGYiKTsKLUluamVjdGVkU2NyaXB0QWNjZXNzLl9p
bnN0YWxsSGFuZGxlcigiZ2V0Q29tcGxldGlvbnMiKTsKLUluamVjdGVkU2NyaXB0QWNjZXNzLl9p
bnN0YWxsSGFuZGxlcigiZ2V0UHJvcGVydGllcyIpOwotSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuX2lu
c3RhbGxIYW5kbGVyKCJnZXRQcm90b3R5cGVzIik7Ci1JbmplY3RlZFNjcmlwdEFjY2Vzcy5faW5z
dGFsbEhhbmRsZXIoInB1c2hOb2RlVG9Gcm9udGVuZCIpOwotSW5qZWN0ZWRTY3JpcHRBY2Nlc3Mu
X2luc3RhbGxIYW5kbGVyKCJyZXNvbHZlTm9kZSIpOwotSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuX2lu
c3RhbGxIYW5kbGVyKCJnZXROb2RlUHJvcGVydGllcyIpOwotSW5qZWN0ZWRTY3JpcHRBY2Nlc3Mu
X2luc3RhbGxIYW5kbGVyKCJzZXRQcm9wZXJ0eVZhbHVlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTaWRlYmFyUGFuZS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvcGVydGllc1NpZGViYXJQYW5lLmpz
CmluZGV4IGI5YzIxMmEuLmExZTM3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUHJvcGVydGllc1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvcGVydGllc1NpZGViYXJQYW5lLmpzCkBAIC00Miwx
MSArNDIsMTEgQEAgV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgc2VsZiA9
IHRoaXM7Ci0gICAgICAgIHZhciBjYWxsYmFjayA9IGZ1bmN0aW9uKHByb3RvdHlwZXMpIHsKLSAg
ICAgICAgICAgIHZhciBib2R5ID0gc2VsZi5ib2R5RWxlbWVudDsKKyAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2socHJvdG90eXBlcykKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGJvZHkgPSB0
aGlzLmJvZHlFbGVtZW50OwogICAgICAgICAgICAgYm9keS5yZW1vdmVDaGlsZHJlbigpOwotICAg
ICAgICAgICAgc2VsZi5zZWN0aW9ucyA9IFtdOworICAgICAgICAgICAgdGhpcy5zZWN0aW9ucyA9
IFtdOwogCiAgICAgICAgICAgICAvLyBHZXQgYXJyYXkgb2YgcHJvdG90eXBlIHVzZXItZnJpZW5k
bHkgbmFtZXMuCiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3RvdHlwZXMubGVu
Z3RoOyArK2kpIHsKQEAgLTU1LDExICs1NSwxMSBAQCBXZWJJbnNwZWN0b3IuUHJvcGVydGllc1Np
ZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBpZiAodGl0bGUubWF0Y2go
L1Byb3RvdHlwZSQvKSkKICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZS5yZXBsYWNl
KC9Qcm90b3R5cGUkLywgIiIpOwogICAgICAgICAgICAgICAgIHZhciBzZWN0aW9uID0gbmV3IFdl
Ykluc3BlY3Rvci5PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbihwcm90b3R5cGUsIHRpdGxlKTsKLSAg
ICAgICAgICAgICAgICBzZWxmLnNlY3Rpb25zLnB1c2goc2VjdGlvbik7CisgICAgICAgICAgICAg
ICAgdGhpcy5zZWN0aW9ucy5wdXNoKHNlY3Rpb24pOwogICAgICAgICAgICAgICAgIGJvZHkuYXBw
ZW5kQ2hpbGQoc2VjdGlvbi5lbGVtZW50KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAg
ICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0Rm9yTm9kZShub2RlKS5nZXRQcm90b3R5cGVz
KG5vZGUuaWQsIGNhbGxiYWNrKTsKKyAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JCYWNrZW5k
LmdldE5vZGVQcm90b3R5cGVzKG5vZGUuaWQsIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZW1v
dGVPYmplY3QuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlbW90ZU9i
amVjdC5qcwppbmRleCA0ZDY3MzZjLi4xMGFmMmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlbW90ZU9iamVjdC5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlbW90ZU9iamVjdC5qcwpAQCAtNTIsNyArNTIsNyBAQCBX
ZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnJlc29sdmVOb2RlID0gZnVuY3Rpb24obm9kZSwgY2Fs
bGJhY2spCiAgICAgewogICAgICAgICBjYWxsYmFjayhvYmplY3QgPyBXZWJJbnNwZWN0b3IuUmVt
b3RlT2JqZWN0LmZyb21QYXlsb2FkKG9iamVjdCkgOiBudWxsKTsKICAgICB9Ci0gICAgSW5qZWN0
ZWRTY3JpcHRBY2Nlc3MuZ2V0Rm9yTm9kZShub2RlKS5yZXNvbHZlTm9kZShub2RlLmlkLCBteWNh
bGxiYWNrKTsKKyAgICBJbnNwZWN0b3JCYWNrZW5kLnJlc29sdmVOb2RlKG5vZGUuaWQsIG15Y2Fs
bGJhY2spOwogfQogCiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkID0gZnVu
Y3Rpb24ocGF5bG9hZCkKQEAgLTExOCw3ICsxMTgsNyBAQCBXZWJJbnNwZWN0b3IuUmVtb3RlT2Jq
ZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzW2ldLnZhbHVlID0g
V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChwcm9wZXJ0aWVzW2ldLnZhbHVl
KTsKICAgICAgICAgICAgIGNhbGxiYWNrKHByb3BlcnRpZXMpOwogICAgICAgICB9Ci0gICAgICAg
IEluamVjdGVkU2NyaXB0QWNjZXNzLmdldEZvck9iamVjdElkKHRoaXMuX29iamVjdElkKS5nZXRQ
cm9wZXJ0aWVzKHRoaXMuX29iamVjdElkLCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgYWJicmV2aWF0
ZSwgcmVtb3RlT2JqZWN0QmluZGVyKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRQcm9w
ZXJ0aWVzKHRoaXMuX29iamVjdElkLCAhIWlnbm9yZUhhc093blByb3BlcnR5LCBhYmJyZXZpYXRl
LCByZW1vdGVPYmplY3RCaW5kZXIpOwogICAgIH0sCiAKICAgICBzZXRQcm9wZXJ0eVZhbHVlOiBm
dW5jdGlvbihuYW1lLCB2YWx1ZSwgY2FsbGJhY2spCkBAIC0xMjcsMTIgKzEyNywxMiBAQCBXZWJJ
bnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNhbGxiYWNr
KGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBJbmplY3Rl
ZFNjcmlwdEFjY2Vzcy5nZXRGb3JPYmplY3RJZCh0aGlzLl9vYmplY3RJZCkuc2V0UHJvcGVydHlW
YWx1ZSh0aGlzLl9vYmplY3RJZCwgbmFtZSwgdmFsdWUsIGNhbGxiYWNrKTsKKyAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5zZXRQcm9wZXJ0eVZhbHVlKHRoaXMuX29iamVjdElkLCBuYW1lLCB2YWx1
ZSwgY2FsbGJhY2spOwogICAgIH0sCiAKICAgICBwdXNoTm9kZVRvRnJvbnRlbmQ6IGZ1bmN0aW9u
KGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0Rm9yT2Jq
ZWN0SWQodGhpcy5fb2JqZWN0SWQpLnB1c2hOb2RlVG9Gcm9udGVuZCh0aGlzLl9vYmplY3RJZCwg
Y2FsbGJhY2spOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnB1c2hOb2RlVG9Gcm9udGVuZCh0
aGlzLl9vYmplY3RJZCwgY2FsbGJhY2spOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCBjYzhmZmM5Li45
MDE5OGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdHNQYW5lbC5qcwpAQCAtMzY4LDcgKzM2OCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgICAg
ICBjYWxsYmFjayhXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHJlc3VsdCkp
OwogICAgICAgICB9Ci0gICAgICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldChjYWxsRnJhbWUu
d29ybGRJZCkuZXZhbHVhdGVJbkNhbGxGcmFtZShjYWxsRnJhbWUuaWQsIGNvZGUsIG9iamVjdEdy
b3VwLCBldmFsQ2FsbGJhY2spOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmV2YWx1YXRlSW5D
YWxsRnJhbWUoY2FsbEZyYW1lLndvcmxkSWQsIGNhbGxGcmFtZS5pZCwgY29kZSwgb2JqZWN0R3Jv
dXAsIGV2YWxDYWxsYmFjayk7CiAgICAgfSwKIAogICAgIF9kZWJ1Z2dlclBhdXNlZDogZnVuY3Rp
b24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5x
cmMKaW5kZXggZGI5MmZmMy4uY2Q2OGJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtNTEsNyArNTEsNiBAQAogICAgIDxmaWxlPkhlbHBT
Y3JlZW4uanM8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VWaWV3LmpzPC9maWxlPgogICAgIDxmaWxl
PkluamVjdGVkRmFrZVdvcmtlci5qczwvZmlsZT4KLSAgICA8ZmlsZT5JbmplY3RlZFNjcmlwdEFj
Y2Vzcy5qczwvZmlsZT4KICAgICA8ZmlsZT5pbnNwZWN0b3IuanM8L2ZpbGU+CiAgICAgPGZpbGU+
SW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qczwvZmlsZT4KICAgICA8ZmlsZT5LZXlib2FyZFNo
b3J0Y3V0LmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggNzA1NTA5Mi4uY2E2ZDQxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNDMsNyAr
MTQzLDYgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJIZWFwU25hcHNob3RWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJEZWJ1Z2dlck1vZGVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJET01BZ2VudC5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSW5qZWN0ZWRTY3JpcHRBY2Nlc3Mu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRp
bWVsaW5lQWdlbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IlRpbWVsaW5lUGFuZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79393</attachid>
            <date>2011-01-18 23:09:00 -0800</date>
            <delta_ts>2011-01-19 00:54:38 -0800</delta_ts>
            <desc>[PATCH] Proposed change with passing tests now.</desc>
            <filename>injected_script_api</filename>
            <type>text/plain</type>
            <size>59316</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MTdhOGI4Li4xYjYyMTRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDEt
MTggIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbWFrZSBJ
bmplY3RlZFNjcmlwdEFjY2VzcyBBUEkgYSBwYXJ0IG9mIFdlYiBJbnNwZWN0b3IgcHJvdG9jb2wu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjY1Mgor
CisgICAgICAgIENhbGxzIHNlcnZlZCBieSB0aGUgSW5qZWN0ZWRTY3JpcHQgc2hvdWxkIGJlIGZp
cnN0IGNsYXNzIHByb3RvY29sCisgICAgICAgIGNpdGl6ZW5zLCBub3QgZGlzcGF0Y2hlZCB2aWEg
c2luZ2xlIHByb3RvY29sIG1lc3NhZ2UuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9leHRlbnNpb25zLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0V4dGVuc2lvbnNUZXN0
Lkluc3BlY3RvclRlc3QucnVuRXh0ZW5zaW9uVGVzdHMpOgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVj
dG9yVGVzdC5JbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKToKKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItY29udmVyc2lvbi5odG1sOgorICAgICAgICAqIGlu
c3BlY3Rvci9jb25zb2xlLWNvbW1hbmQtY2xlYXIuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Y29uc29sZS1kaXItZ2xvYmFsLmh0bWw6CisKIDIwMTEtMDEtMTggIEVyaWMgU2VpZGVsICA8ZXJp
Y0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3NjA4NC4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMt
dGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtdGVz
dC5qcwppbmRleCA0MzhiNjJiLi4zMTFjNDI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy10ZXN0LmpzCkBAIC0zNCw3ICszNCw3IEBAIElu
c3BlY3RvclRlc3QuZGlzcGF0Y2hPbk1lc3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlSWQsIGNhbGxi
YWNrLCByZWN1cnJpbmcpCiAKIEluc3BlY3RvclRlc3QucnVuRXh0ZW5zaW9uVGVzdHMgPSBmdW5j
dGlvbigpCiB7Ci0gICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0RGVmYXVsdCgpLmV2YWx1YXRl
KCJsb2NhdGlvbi5ocmVmIiwgImNvbnNvbGUiLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICBJbnNw
ZWN0b3JCYWNrZW5kLmV2YWx1YXRlKCJsb2NhdGlvbi5ocmVmIiwgImNvbnNvbGUiLCBmdW5jdGlv
bihyZXN1bHQpIHsKICAgICAgICAgdmFyIHBhZ2VVUkwgPSByZXN1bHQuZGVzY3JpcHRpb247CiAg
ICAgICAgIHZhciBleHRlbnNpb25VUkwgPSAoL15odHRwcz86Ly50ZXN0KHBhZ2VVUkwpID8KICAg
ICAgICAgICAgIHBhZ2VVUkwucmVwbGFjZSgvXihodHRwcz86XC9cL1teL10qXC8pLiokLywiJDEi
KSA6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0
b3ItdGVzdDIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdDIuanMKaW5kZXggMzAyY2FmMS4uZjE5ODJjOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcwpAQCAtMjQsNyArMjQsNyBA
QCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlID0gZnVuY3Rpb24oY29kZSwgY2FsbGJh
Y2spCiAKIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UgPSBmdW5jdGlvbihjb2RlLCBjYWxs
YmFjaykKIHsKLSAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXREZWZhdWx0KCkuZXZhbHVhdGUo
Y29kZSwgImNvbnNvbGUiLCBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHt9KTsKKyAgICBJbnNwZWN0
b3JCYWNrZW5kLmV2YWx1YXRlKGNvZGUsICJjb25zb2xlIiwgY2FsbGJhY2sgfHwgZnVuY3Rpb24o
KSB7fSk7CiB9CiAKIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2VXaXRoVGltZW91dCA9IGZ1
bmN0aW9uKGNvZGUsIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLWNvbnZlcnNpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1jb252ZXJzaW9uLmh0bWwKaW5kZXggNTFj
Nzg5NC4uOWM1OGZkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2UtaGFyLWNvbnZlcnNpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItY29udmVyc2lvbi5odG1sCkBAIC0yNiw3ICsyNiw3
IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgIH0KIAogICAgIEluc3BlY3RvclRlc3QucmVs
b2FkUGFnZUlmTmVlZGVkKGZ1bmN0aW9uKCkgewotICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vz
cy5nZXREZWZhdWx0KCkuZXZhbHVhdGUoImRvWEhSKCkiLCAiY29uc29sZSIsIGZ1bmN0aW9uKCkg
eworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmV2YWx1YXRlKCJkb1hIUigpIiwgImNvbnNvbGUi
LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGFkZENvb2tpZUhlYWRlcnNUb1Jlc291cmNlKGZp
bmRSZXNvdXJjZUJ5VVJMKC9pbnNwZWN0b3ItdGVzdDJcLmpzJC8pKTsKICAgICAgICAgICAgIHZh
ciBlbnRyaWVzID0gKG5ldyBXZWJJbnNwZWN0b3IuSEFSTG9nKCkpLmJ1aWxkKCkuZW50cmllczsK
ICAgICAgICAgICAgIGVudHJpZXMuc29ydChJbnNwZWN0b3JUZXN0LnJlc291cmNlVVJMQ29tcGFy
ZXIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtY29tbWFuZC1j
bGVhci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtY29tbWFuZC1jbGVhci5o
dG1sCmluZGV4IDljYjJmNWMuLmY4NzBlYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLWNvbW1hbmQtY2xlYXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY29uc29sZS1jb21tYW5kLWNsZWFyLmh0bWwKQEAgLTE3LDcgKzE3LDcgQEAgZnVuY3Rpb24g
ZG9pdCgpCiAgICAgICAgIG91dHB1dCgiPT09IEFmdGVyIGNsZWFyID09PSIpOyAKICAgICAgICAg
ZHVtcENvbnNvbGVNZXNzYWdlcygpOwogICAgIH0KLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9y
KCJJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXREZWZhdWx0KCkuZXZhbHVhdGUoJ2NsZWFyKCknLCAn
JywgZnVuY3Rpb24oKSB7fSkiLCBjYWxsYmFjayk7CisgICAgZXZhbHVhdGVJbldlYkluc3BlY3Rv
cigiSW5zcGVjdG9yQmFja2VuZC5ldmFsdWF0ZSgnY2xlYXIoKScsICcnLCBmdW5jdGlvbigpIHt9
KSIsIGNhbGxiYWNrKTsKIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvY29uc29sZS1kaXItZ2xvYmFsLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Y29uc29sZS1kaXItZ2xvYmFsLmh0bWwKaW5kZXggOTNlZjZjYy4uNzZlNmNjYiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyLWdsb2JhbC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWRpci1nbG9iYWwuaHRtbApAQCAtMjIsNyArMjIs
NyBAQCBmdW5jdGlvbiBmcm9udGVuZF9leHBhbmRBbmREdW1wQ29uc29sZU1lc3NhZ2VzKHRlc3RD
b250cm9sbGVyKQogICAgIC8vIE5lZWQgdGVzdCB0byBiZSBhc3luYyB0byBleHBhbmQgY29uc29s
ZSBvYmplY3RzLgogICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIAotICAgIElu
amVjdGVkU2NyaXB0QWNjZXNzLmdldERlZmF1bHQoKS5ldmFsdWF0ZSgid2luZG93IiwgImNvbnNv
bGUiLCBldmFsQ2FsbGJhY2spOworICAgIEluc3BlY3RvckJhY2tlbmQuZXZhbHVhdGUoIndpbmRv
dyIsICJjb25zb2xlIiwgZXZhbENhbGxiYWNrKTsKIAogICAgIGZ1bmN0aW9uIGV2YWxDYWxsYmFj
ayhyZXN1bHQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEzZTVkYzguLmM3YWNmZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw3NyBAQAorMjAxMS0wMS0xOCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBtYWtlIEluamVjdGVkU2NyaXB0QWNjZXNzIEFQSSBhIHBh
cnQgb2YgV2ViIEluc3BlY3RvciBwcm90b2NvbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNjUyCisKKyAgICAgICAgQ2FsbHMgc2VydmVkIGJ5IHRo
ZSBJbmplY3RlZFNjcmlwdCBzaG91bGQgYmUgZmlyc3QgY2xhc3MgcHJvdG9jb2wKKyAgICAgICAg
Y2l0aXplbnMsIG5vdCBkaXNwYXRjaGVkIHZpYSBzaW5nbGUgcHJvdG9jb2wgbWVzc2FnZS4KKwor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVk
U2NyaXB0OjpldmFsdWF0ZUluQ2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVk
U2NyaXB0OjpldmFsdWF0ZU9uU2VsZik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlw
dDo6Z2V0Q29tcGxldGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6Omdl
dFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OnB1c2hOb2Rl
VG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6cmVzb2x2ZU5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmdldE5vZGVQcm9wZXJ0aWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXROb2RlUHJvdG90eXBlcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6c2V0UHJvcGVydHlWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6bWFrZUNhbGwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFs
dWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1YXRlSW5D
YWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0
ZU9uU2VsZik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmdldENvbXBs
ZXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6Z2V0UHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OnB1c2hOb2RlVG9G
cm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OnJlc29sdmVO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6Z2V0Tm9kZVByb3Bl
cnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXROb2RlUHJv
dG90eXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OnNldFByb3Bl
cnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjppbmplY3Rl
ZFNjcmlwdEZvck9iamVjdElkKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9z
dDo6aW5qZWN0ZWRTY3JpcHRGb3JOb2RlSWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRT
Y3JpcHRIb3N0OjppbmplY3RlZFNjcmlwdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdFNvdXJjZS5qczoKKyAgICAgICAgKC4pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2Jq
ZWN0OjpnZXROdW1iZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5ldmFsdWF0ZUluVGFyZ2V0V2luZG93KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5jb21wbGV0aW9ucyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmRvRXZhbEluV2luZG93KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX2NyZWF0ZVRvb2x0aXBGb3JO
b2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblBhbmVsLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvbldhdGNoU2lkZWJhclBhbmUucHJvdG90eXBl
LnNldEV4cHJlc3Npb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9u
U2VydmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5
cGUuX29uRXZhbHVhdGVPbkluc3BlY3RlZFBhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUHJvcGVydGllc1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUuY2FsbGJhY2spOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUudXBk
YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1JlbW90ZU9iamVjdC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucmVzb2x2ZU5vZGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUuZ2V0UHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5zZXRQcm9wZXJ0eVZhbHVl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlLnB1c2hOb2Rl
VG9Gcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5kb0V2YWxJ
bkNhbGxGcmFtZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisKIDIwMTEtMDEt
MTggTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBSeW9zdWtlIE5pd2EuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMDYyODhmYy4uODk3NThjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDY0OSw3ICs0NjQ5LDYgQEAKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0ltYWdlVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkRmFrZVdvcmtlci5qcycsCi0gICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdEFjY2Vzcy5qcycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA1MjZiYjA2Li44YmEzYzRjIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjU0NjksMTAg
KzY1NDY5LDYgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuanMiCi0J
CQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNw
ZWN0b3JcZnJvbnQtZW5kXGluc3BlY3Rvci5jc3MiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5w
bSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCmlu
ZGV4IGI3YmUxNWUuLjE2YTYwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCkBAIC01NSw2ICs1NSwxMCBAQCAkdHlwZVRyYW5z
Zm9ybXsiRmlsZVN5c3RlbSJ9ID0gewogICAgICJoZWFkZXIiID0+ICJJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQuaCIsCiAgICAgImRvbWFpbkFjY2Vzc29yIiA9PiAibV9pbnNwZWN0b3JDb250cm9s
bGVyLT5tX2ZpbGVTeXN0ZW1BZ2VudCIsCiB9OworJHR5cGVUcmFuc2Zvcm17IkluamVjdGVkU2Ny
aXB0In0gPSB7CisgICAgImZvcndhcmRIZWFkZXIiID0+ICJJbmplY3RlZFNjcmlwdEhvc3QuaCIs
CisgICAgImRvbWFpbkFjY2Vzc29yIiA9PiAibV9pbnNwZWN0b3JDb250cm9sbGVyLT5tX2luamVj
dGVkU2NyaXB0SG9zdCIsCit9OwogJHR5cGVUcmFuc2Zvcm17Ikluc3BlY3RvciJ9ID0gewogICAg
ICJmb3J3YXJkSGVhZGVyIiA9PiAiSW5zcGVjdG9yQ29udHJvbGxlci5oIiwKICAgICAiZG9tYWlu
QWNjZXNzb3IiID0+ICJtX2luc3BlY3RvckNvbnRyb2xsZXIiLApAQCAtODcsNyArOTEsOCBAQCAk
dHlwZVRyYW5zZm9ybXsiT2JqZWN0In0gPSB7CiAgICAgImRlZmF1bHRWYWx1ZSIgPT4gIkluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCkiLAogICAgICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9yT2JqZWN0
IiwKICAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yVmFsdWVzLmgiLAotICAgICJKU09OVHlwZSIg
PT4gIk9iamVjdCIKKyAgICAiSlNPTlR5cGUiID0+ICJPYmplY3QiLAorICAgICJKU1R5cGUiID0+
ICJvYmplY3QiCiB9OwogJHR5cGVUcmFuc2Zvcm17IkFycmF5In0gPSB7CiAgICAgInBhcmFtIiA9
PiAiUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4iLApAQCAtOTUsNyArMTAwLDggQEAgJHR5cGVU
cmFuc2Zvcm17IkFycmF5In0gPSB7CiAgICAgImRlZmF1bHRWYWx1ZSIgPT4gIkluc3BlY3RvckFy
cmF5OjpjcmVhdGUoKSIsCiAgICAgImZvcndhcmQiID0+ICJJbnNwZWN0b3JBcnJheSIsCiAgICAg
ImhlYWRlciIgPT4gIkluc3BlY3RvclZhbHVlcy5oIiwKLSAgICAiSlNPTlR5cGUiID0+ICJBcnJh
eSIKKyAgICAiSlNPTlR5cGUiID0+ICJBcnJheSIsCisgICAgIkpTVHlwZSIgPT4gIm9iamVjdCIK
IH07CiAkdHlwZVRyYW5zZm9ybXsiVmFsdWUifSA9IHsKICAgICAicGFyYW0iID0+ICJQYXNzUmVm
UHRyPEluc3BlY3RvclZhbHVlPiIsCkBAIC0xMDMsNyArMTA5LDggQEAgJHR5cGVUcmFuc2Zvcm17
IlZhbHVlIn0gPSB7CiAgICAgImRlZmF1bHRWYWx1ZSIgPT4gIkluc3BlY3RvclZhbHVlOjpudWxs
KCkiLAogICAgICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9yVmFsdWUiLAogICAgICJoZWFkZXIiID0+
ICJJbnNwZWN0b3JWYWx1ZXMuaCIsCi0gICAgIkpTT05UeXBlIiA9PiAiVmFsdWUiCisgICAgIkpT
T05UeXBlIiA9PiAiVmFsdWUiLAorICAgICJKU1R5cGUiID0+ICIiCiB9OwogJHR5cGVUcmFuc2Zv
cm17IlN0cmluZyJ9ID0gewogICAgICJwYXJhbSIgPT4gImNvbnN0IFN0cmluZyYiLApAQCAtMTEy
LDcgKzExOSw4IEBAICR0eXBlVHJhbnNmb3JteyJTdHJpbmcifSA9IHsKICAgICAiZGVmYXVsdFZh
bHVlIiA9PiAiXCJcIiIsCiAgICAgImZvcndhcmRIZWFkZXIiID0+ICJ3dGYvRm9yd2FyZC5oIiwK
ICAgICAiaGVhZGVyIiA9PiAiUGxhdGZvcm1TdHJpbmcuaCIsCi0gICAgIkpTT05UeXBlIiA9PiAi
U3RyaW5nIgorICAgICJKU09OVHlwZSIgPT4gIlN0cmluZyIsCisgICAgIkpTVHlwZSIgPT4gInN0
cmluZyIKIH07CiAkdHlwZVRyYW5zZm9ybXsibG9uZyJ9ID0gewogICAgICJwYXJhbSIgPT4gImxv
bmciLApAQCAtMTIwLDcgKzEyOCw4IEBAICR0eXBlVHJhbnNmb3JteyJsb25nIn0gPSB7CiAgICAg
ImRlZmF1bHRWYWx1ZSIgPT4gIjAiLAogICAgICJmb3J3YXJkIiA9PiAiIiwKICAgICAiaGVhZGVy
IiA9PiAiIiwKLSAgICAiSlNPTlR5cGUiID0+ICJOdW1iZXIiCisgICAgIkpTT05UeXBlIiA9PiAi
TnVtYmVyIiwKKyAgICAiSlNUeXBlIiA9PiAibnVtYmVyIgogfTsKICR0eXBlVHJhbnNmb3JteyJp
bnQifSA9IHsKICAgICAicGFyYW0iID0+ICJpbnQiLApAQCAtMTI5LDYgKzEzOCw3IEBAICR0eXBl
VHJhbnNmb3JteyJpbnQifSA9IHsKICAgICAiZm9yd2FyZCIgPT4gIiIsCiAgICAgImhlYWRlciIg
PT4gIiIsCiAgICAgIkpTT05UeXBlIiA9PiAiTnVtYmVyIiwKKyAgICAiSlNUeXBlIiA9PiAibnVt
YmVyIgogfTsKICR0eXBlVHJhbnNmb3JteyJ1bnNpZ25lZCBsb25nIn0gPSB7CiAgICAgInBhcmFt
IiA9PiAidW5zaWduZWQgbG9uZyIsCkBAIC0xMzYsNyArMTQ2LDggQEAgJHR5cGVUcmFuc2Zvcm17
InVuc2lnbmVkIGxvbmcifSA9IHsKICAgICAiZGVmYXVsdFZhbHVlIiA9PiAiMHUiLAogICAgICJm
b3J3YXJkIiA9PiAiIiwKICAgICAiaGVhZGVyIiA9PiAiIiwKLSAgICAiSlNPTlR5cGUiID0+ICJO
dW1iZXIiCisgICAgIkpTT05UeXBlIiA9PiAiTnVtYmVyIiwKKyAgICAiSlNUeXBlIiA9PiAibnVt
YmVyIgogfTsKICR0eXBlVHJhbnNmb3JteyJ1bnNpZ25lZCBpbnQifSA9IHsKICAgICAicGFyYW0i
ID0+ICJ1bnNpZ25lZCBpbnQiLApAQCAtMTQ0LDcgKzE1NSw4IEBAICR0eXBlVHJhbnNmb3JteyJ1
bnNpZ25lZCBpbnQifSA9IHsKICAgICAiZGVmYXVsdFZhbHVlIiA9PiAiMHUiLAogICAgICJmb3J3
YXJkIiA9PiAiIiwKICAgICAiaGVhZGVyIiA9PiAiIiwKLSAgICAiSlNPTlR5cGUiID0+ICJOdW1i
ZXIiCisgICAgIkpTT05UeXBlIiA9PiAiTnVtYmVyIiwKKyAgICAiSlNUeXBlIiA9PiAibnVtYmVy
IgogfTsKICR0eXBlVHJhbnNmb3JteyJkb3VibGUifSA9IHsKICAgICAicGFyYW0iID0+ICJkb3Vi
bGUiLApAQCAtMTUyLDcgKzE2NCw4IEBAICR0eXBlVHJhbnNmb3JteyJkb3VibGUifSA9IHsKICAg
ICAiZGVmYXVsdFZhbHVlIiA9PiAiMC4wIiwKICAgICAiZm9yd2FyZCIgPT4gIiIsCiAgICAgImhl
YWRlciIgPT4gIiIsCi0gICAgIkpTT05UeXBlIiA9PiAiTnVtYmVyIgorICAgICJKU09OVHlwZSIg
PT4gIk51bWJlciIsCisgICAgIkpTVHlwZSIgPT4gIm51bWJlciIKIH07CiAkdHlwZVRyYW5zZm9y
bXsiYm9vbGVhbiJ9ID0gewogICAgICJwYXJhbSIgPT4gImJvb2wiLApAQCAtMTYwLDcgKzE3Myw4
IEBAICR0eXBlVHJhbnNmb3JteyJib29sZWFuIn0gPSB7CiAgICAgImRlZmF1bHRWYWx1ZSIgPT4g
ImZhbHNlIiwKICAgICAiZm9yd2FyZCIgPT4gIiIsCiAgICAgImhlYWRlciIgPT4gIiIsCi0gICAg
IkpTT05UeXBlIiA9PiAiQm9vbGVhbiIKKyAgICAiSlNPTlR5cGUiID0+ICJCb29sZWFuIiwKKyAg
ICAiSlNUeXBlIiA9PiAiYm9vbGVhbiIKIH07CiAkdHlwZVRyYW5zZm9ybXsidm9pZCJ9ID0gewog
ICAgICJmb3J3YXJkIiA9PiAiIiwKQEAgLTU2Nyw3ICs1ODEsNyBAQCBzdWIgZ2VuZXJhdGVCYWNr
ZW5kU3R1YkpTCiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBiYWNrZW5kRnVuY3Rpb25zKSB7
CiAgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAg
IG15ICRkb21haW4gPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
ImRvbWFpbiJ9OwotICAgICAgICBteSAkYXJndW1lbnROYW1lcyA9IGpvaW4oIiwiLCBtYXAoIlwi
IiAuICRfLT5uYW1lIC4gIlwiOiBcIiIgLiBsYygkdHlwZVRyYW5zZm9ybXskXy0+dHlwZX0tPnsi
SlNPTlR5cGUifSkgLiAiXCIiLCBncmVwKCRfLT5kaXJlY3Rpb24gZXEgImluIiwgQHskZnVuY3Rp
b24tPnBhcmFtZXRlcnN9KSkpOworICAgICAgICBteSAkYXJndW1lbnROYW1lcyA9IGpvaW4oIiwi
LCBtYXAoIlwiIiAuICRfLT5uYW1lIC4gIlwiOiBcIiIgLiAkdHlwZVRyYW5zZm9ybXskXy0+dHlw
ZX0tPnsiSlNUeXBlIn0gLiAiXCIiLCBncmVwKCRfLT5kaXJlY3Rpb24gZXEgImluIiwgQHskZnVu
Y3Rpb24tPnBhcmFtZXRlcnN9KSkpOwogICAgICAgICBwdXNoKEBKU1N0dWJzLCAiICAgIHRoaXMu
X3JlZ2lzdGVyRGVsZWdhdGUoJ3siIC4KICAgICAgICAgICAgICJcInNlcVwiOiAwLCAiIC4KICAg
ICAgICAgICAgICJcImRvbWFpblwiOiBcIiRkb21haW5cIiwgIiAuCkBAIC02MjUsNyArNjM5LDcg
QEAgSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGFyZ3Muc2hpZnQo
KTsKLSAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IHJlcXVlc3QuYXJndW1lbnRzW2tl
eV0pIHsKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0LmFyZ3VtZW50c1trZXldICYmIHR5cGVvZiB2
YWx1ZSAhPT0gcmVxdWVzdC5hcmd1bWVudHNba2V5XSkgewogICAgICAgICAgICAgICAgIGNvbnNv
bGUuZXJyb3IoIlByb3RvY29sIEVycm9yOiBJbnZhbGlkIHR5cGUgb2YgYXJndW1lbnQgJyVzJyBm
b3IgJ0luc3BlY3RvckJhY2tlbmQuJXMnIGNhbGwuIEl0IHNob3VsZCBiZSAnJXMnIGJ1dCBpdCBp
cyAnJXMnLiIsIGtleSwgcmVxdWVzdC5jb21tYW5kLCByZXF1ZXN0LmFyZ3VtZW50c1trZXldLCB0
eXBlb2YgdmFsdWUpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDNmNGQ4MTku
LmYyODQ2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cApAQCAtNDQsMjEgKzQ0LDg2IEBAIEluamVjdGVkU2NyaXB0OjpJbmplY3RlZFNjcmlwdChTY3Jp
cHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QpCiB7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWV0aG9kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1
bWVudHMsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCwgYm9vbCogaGFkRXhjZXB0aW9u
KSAKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVz
dWx0KQogewotICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBpZiAoIWNhbkFjY2Vzc0lu
c3BlY3RlZFdpbmRvdygpKSB7Ci0gICAgICAgICpoYWRFeGNlcHRpb24gPSB0cnVlOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQorICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVj
dGVkU2NyaXB0T2JqZWN0LCAiZXZhbHVhdGUiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChleHByZXNzaW9uKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RHcm91cCk7
CisgICAgbWFrZUNhbGwoZnVuY3Rpb24sIHJlc3VsdCk7Cit9CiAKLSAgICBTY3JpcHRGdW5jdGlv
bkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImRpc3BhdGNoIik7Ci0gICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobWV0aG9kTmFtZSk7Ci0gICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQoYXJndW1lbnRzKTsKLSAgICAqaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2Ny
aXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBmdW5jdGlvbi5jYWxsKCpoYWRFeGNlcHRpb24pOwotICAg
IGlmICghKmhhZEV4Y2VwdGlvbikKLSAgICAgICAgKnJlc3VsdCA9IHJlc3VsdFZhbHVlLnRvSW5z
cGVjdG9yVmFsdWUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKK3ZvaWQg
SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlSW5DYWxsRnJhbWUobG9uZyBjYWxsRnJhbWUsIGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPElu
c3BlY3RvclZhbHVlPiogcmVzdWx0KQoreworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZXZhbHVhdGVJbkNhbGxGcmFtZSIpOworICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZSk7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQoZXhwcmVzc2lvbik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0R3Jv
dXApOworICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCByZXN1bHQpOworfQorCit2b2lkIEluamVjdGVk
U2NyaXB0OjpldmFsdWF0ZU9uU2VsZihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uQm9keSwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJndW1lbnRzQXJyYXksIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4qIHJlc3VsdCkKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3Rl
ZFNjcmlwdE9iamVjdCwgImV2YWx1YXRlT25TZWxmIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQoZnVuY3Rpb25Cb2R5KTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChhcmd1bWVu
dHNBcnJheS0+dG9KU09OU3RyaW5nKCkpOworICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCByZXN1bHQp
OworfQorCit2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRDb21wbGV0aW9ucyhjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIGJvb2wgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBsb25nIGNh
bGxGcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit7CisgICAgU2NyaXB0
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJnZXRDb21wbGV0
aW9ucyIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOworICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSk7Cisg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lSWQpOworICAgIG1ha2VDYWxsKGZ1
bmN0aW9uLCByZXN1bHQpOworfQorCit2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVz
KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgYm9vbCBpZ25vcmVIYXNPd25Q
cm9wZXJ0eSwgYm9vbCBhYmJyZXZpYXRlLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQp
Cit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmpl
Y3QsICJnZXRQcm9wZXJ0aWVzIik7CisgICAgU3RyaW5nIG9iamVjdElkU3RyaW5nID0gb2JqZWN0
SWQtPnRvSlNPTlN0cmluZygpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElk
U3RyaW5nKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChpZ25vcmVIYXNPd25Qcm9wZXJ0
eSk7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoYWJicmV2aWF0ZSk7CisgICAgbWFrZUNh
bGwoZnVuY3Rpb24sIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnB1c2hOb2Rl
VG9Gcm9udGVuZChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgInB1c2hOb2RlVG9Gcm9udGVuZCIpOworICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkLT50b0pTT05TdHJpbmcoKSk7CisgICAgbWFr
ZUNhbGwoZnVuY3Rpb24sIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlc29s
dmVOb2RlKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit7Cisg
ICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJy
ZXNvbHZlTm9kZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG5vZGVJZCk7CisgICAg
bWFrZUNhbGwoZnVuY3Rpb24sIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6Omdl
dE5vZGVQcm9wZXJ0aWVzKGxvbmcgbm9kZUlkLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBw
cm9wZXJ0aWVzQXJyYXksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldE5v
ZGVQcm9wZXJ0aWVzIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobm9kZUlkKTsKKyAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChwcm9wZXJ0aWVzQXJyYXktPnRvSlNPTlN0cmluZygp
KTsKKyAgICBtYWtlQ2FsbChmdW5jdGlvbiwgcmVzdWx0KTsKK30KKwordm9pZCBJbmplY3RlZFNj
cmlwdDo6Z2V0Tm9kZVByb3RvdHlwZXMobG9uZyBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4qIHJlc3VsdCkKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3Rl
ZFNjcmlwdE9iamVjdCwgImdldE5vZGVQcm90b3R5cGVzIik7CisgICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQobm9kZUlkKTsKKyAgICBtYWtlQ2FsbChmdW5jdGlvbiwgcmVzdWx0KTsKK30KKwor
dm9pZCBJbmplY3RlZFNjcmlwdDo6c2V0UHJvcGVydHlWYWx1ZShQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldE5v
ZGVQcm9wZXJ0aWVzIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQtPnRv
SlNPTlN0cmluZygpKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChwcm9wZXJ0eU5hbWUp
OworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOworICAgIG1ha2VDYWxs
KGZ1bmN0aW9uLCByZXN1bHQpOwogfQogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CkBAIC05MSwxMSArMTU2LDI5IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VXcmFwcGVy
T2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkKICAgICByZWxlYXNlRnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQob2JqZWN0R3JvdXApOwogICAgIHJlbGVhc2VGdW5jdGlvbi5jYWxs
KCk7CiB9CisKIGJvb2wgSW5qZWN0ZWRTY3JpcHQ6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygp
CiB7CiAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6Y2FuQWNjZXNzSW5zcGVjdGVkV2lu
ZG93KG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7CiB9CiAKK3ZvaWQgSW5q
ZWN0ZWRTY3JpcHQ6Om1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBpZiAoaGFzTm9WYWx1ZSgpIHx8ICFj
YW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSkgeworICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9y
VmFsdWU6Om51bGwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgaGFkRXhj
ZXB0aW9uID0gZmFsc2U7CisgICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBmdW5jdGlvbi5j
YWxsKGhhZEV4Y2VwdGlvbik7CisKKyAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CisgICAgaWYg
KCFoYWRFeGNlcHRpb24pCisgICAgICAgICpyZXN1bHQgPSByZXN1bHRWYWx1ZS50b0luc3BlY3Rv
clZhbHVlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7CisgICAgZWxzZQor
ICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yVmFsdWU6Om51bGwoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggZjgwY2ZiNC4uOWZiNGM1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKQEAgLTM2LDEwICszNiwx
MiBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVjdG9yVmFsdWU7CitjbGFzcyBT
Y3JpcHRGdW5jdGlvbkNhbGw7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0IHsKIHB1YmxpYzoKQEAg
LTQ4LDEwICs1MCwyMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc05vVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX2luamVjdGVkU2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKTsgfQogCi0gICAgdm9p
ZCBkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1ldGhvZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJndW1l
bnRzLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQsIGJvb2wqIGhhZEV4Y2VwdGlvbik7
CisgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgdm9p
ZCBldmFsdWF0ZUluQ2FsbEZyYW1lKGxvbmcgY2FsbEZyYW1lLCBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4q
IHJlc3VsdCk7CisgICAgdm9pZCBldmFsdWF0ZU9uU2VsZihjb25zdCBTdHJpbmcmIGZ1bmN0aW9u
Qm9keSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJndW1lbnRzQXJyYXksIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgdm9pZCBnZXRDb21wbGV0aW9ucyhjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGJvb2wgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBs
b25nIGNhbGxGcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZv
aWQgZ2V0UHJvcGVydGllcyhQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGJv
b2wgaWdub3JlSGFzT3duUHJvcGVydHksIGJvb2wgYWJicmV2aWF0ZSwgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIHB1c2hOb2RlVG9Gcm9udGVuZChQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3Vs
dCk7CisgICAgdm9pZCByZXNvbHZlTm9kZShsb25nIG5vZGVJZCwgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIGdldE5vZGVQcm9wZXJ0aWVzKGxvbmcgbm9kZUlkLCBQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBwcm9wZXJ0aWVzQXJyYXksIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgdm9pZCBnZXROb2RlUHJvdG90eXBlcyhsb25nIG5vZGVJ
ZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIHNldFByb3BlcnR5
VmFsdWUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+KiByZXN1bHQpOworCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gY2FsbEZyYW1lcygpOwogI2VuZGlmCisKICAgICBQ
YXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB3cmFwRm9yQ29uc29sZShTY3JpcHRWYWx1ZSk7CiAg
ICAgdm9pZCByZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwKGNvbnN0IFN0cmluZyYpOwogICAgIFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRP
YmplY3Quc2NyaXB0U3RhdGUoKTsgfQpAQCAtNjAsNiArNzMsOSBAQCBwcml2YXRlOgogICAgIGZy
aWVuZCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdEhvc3Q6OmluamVjdGVkU2NyaXB0Rm9y
KFNjcmlwdFN0YXRlKik7CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRTY3JpcHQoU2NyaXB0T2JqZWN0
KTsKICAgICBib29sIGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpOworCisgICAgdm9pZCBtYWtl
Q2FsbChTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQp
OworCiAgICAgU2NyaXB0T2JqZWN0IG1faW5qZWN0ZWRTY3JpcHRPYmplY3Q7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDNm
ZDcwZTQuLmYyM2Q4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwCkBAIC0zMCwyMiArMzAsMjEgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgotI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0U291cmNlLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIgotI2luY2x1
ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
IAotCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdC5oIgorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0U291cmNlLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29s
ZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckRPTUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogCkBAIC04MSw2ICs4MCw3NiBA
QCBJbmplY3RlZFNjcmlwdEhvc3Q6On5JbmplY3RlZFNjcmlwdEhvc3QoKQogewogfQogCit2b2lk
IEluamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQp
Cit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZv
ck1haW5Xb3JsZCgpOworICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAg
ICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0ZShleHByZXNzaW9uLCBvYmplY3RHcm91cCwgcmVz
dWx0KTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1YXRlSW5DYWxsRnJhbWUo
bG9uZyBpbmplY3RlZFNjcmlwdElkLCBsb25nIGNhbGxGcmFtZSwgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
KiByZXN1bHQpCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3Rl
ZFNjcmlwdElkID8gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuZ2V0KGluamVjdGVkU2NyaXB0SWQpIDog
aW5qZWN0ZWRTY3JpcHRGb3JNYWluV29ybGQoKTsKKyAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVJbkNhbGxGcmFtZShj
YWxsRnJhbWUsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCByZXN1bHQpOworfQorCit2b2lkIElu
amVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVPblNlbGYoY29uc3QgU3RyaW5nJiBmdW5jdGlvbkJv
ZHksIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFyZ3VtZW50c0FycmF5LCBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+KiByZXN1bHQpCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHQgPSBpbmplY3RlZFNjcmlwdEZvck1haW5Xb3JsZCgpOworICAgIGlmICghaW5qZWN0ZWRTY3Jp
cHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0ZU9uU2VsZihm
dW5jdGlvbkJvZHksIGFyZ3VtZW50c0FycmF5LCByZXN1bHQpOworfQorCit2b2lkIEluamVjdGVk
U2NyaXB0SG9zdDo6Z2V0Q29tcGxldGlvbnMobG9uZyBpbmplY3RlZFNjcmlwdElkLCBjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGJvb2wgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBs
b25nIGNhbGxGcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit7CisgICAg
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdElkID8gbV9pZFRv
SW5qZWN0ZWRTY3JpcHQuZ2V0KGluamVjdGVkU2NyaXB0SWQpIDogaW5qZWN0ZWRTY3JpcHRGb3JN
YWluV29ybGQoKTsKKyAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAg
ICAgaW5qZWN0ZWRTY3JpcHQuZ2V0Q29tcGxldGlvbnMoZXhwcmVzc2lvbiwgaW5jbHVkZUluc3Bl
Y3RvckNvbW1hbmRMaW5lQVBJLCBjYWxsRnJhbWVJZCwgcmVzdWx0KTsKK30KKwordm9pZCBJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmdldFByb3BlcnRpZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IG9iamVjdElkLCBib29sIGlnbm9yZUhhc093blByb3BlcnR5LCBib29sIGFiYnJldmlhdGUsIFJl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQuZ2V0KCkpOwor
ICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNj
cmlwdC5nZXRQcm9wZXJ0aWVzKG9iamVjdElkLCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgYWJicmV2
aWF0ZSwgcmVzdWx0KTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OnB1c2hOb2RlVG9G
cm9udGVuZChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IGluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQuZ2V0KCkpOworICAgIGlmICgh
aW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5wdXNo
Tm9kZVRvRnJvbnRlbmQob2JqZWN0SWQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpyZXNvbHZlTm9kZShsb25nIG5vZGVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
cmVzdWx0KQoreworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRT
Y3JpcHRGb3JOb2RlSWQobm9kZUlkKTsKKyAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFs
dWUoKSkKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQucmVzb2x2ZU5vZGUobm9kZUlkLCByZXN1bHQp
OworfQorCit2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0Tm9kZVByb3BlcnRpZXMobG9uZyBu
b2RlSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHByb3BlcnRpZXNBcnJheSwgUmVmUHRy
PEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQoreworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVk
U2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JOb2RlSWQobm9kZUlkKTsKKyAgICBpZiAoIWluamVj
dGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0Tm9kZVBy
b3BlcnRpZXMobm9kZUlkLCBwcm9wZXJ0aWVzQXJyYXksIHJlc3VsdCk7Cit9CisKK3ZvaWQgSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpnZXROb2RlUHJvdG90eXBlcyhsb25nIG5vZGVJZCwgUmVmUHRyPElu
c3BlY3RvclZhbHVlPiogcmVzdWx0KQoreworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2Ny
aXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JOb2RlSWQobm9kZUlkKTsKKyAgICBpZiAoIWluamVjdGVk
U2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0Tm9kZVByb3Rv
dHlwZXMobm9kZUlkLCByZXN1bHQpOworfQorCit2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6c2V0
UHJvcGVydHlWYWx1ZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGNvbnN0
IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNj
cmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQuZ2V0KCkpOworICAgIGlm
ICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICBpbmplY3RlZFNjcmlwdC5z
ZXRQcm9wZXJ0eVZhbHVlKG9iamVjdElkLCBwcm9wZXJ0eU5hbWUsIGV4cHJlc3Npb24sIHJlc3Vs
dCk7Cit9CisKIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjbGVhckNvbnNvbGVNZXNzYWdlcygp
CiB7CiAgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKQEAgLTIxNCw2ICsyODMsNDMgQEAg
dm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmRpZERlc3Ryb3lXb3JrZXIobG9uZyBpZCkKIH0KICNl
bmRpZiAvLyBFTkFCTEUoV09SS0VSUykKIAorSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRI
b3N0OjppbmplY3RlZFNjcmlwdEZvck9iamVjdElkKEluc3BlY3Rvck9iamVjdCogb2JqZWN0SWQp
Cit7CisgICAgbG9uZyBpbmplY3RlZFNjcmlwdElkID0gMDsKKyAgICBib29sIHN1Y2Nlc3MgPSBv
YmplY3RJZC0+Z2V0TnVtYmVyKCJpbmplY3RlZFNjcmlwdElkIiwgJmluamVjdGVkU2NyaXB0SWQp
OworICAgIGlmIChzdWNjZXNzKQorICAgICAgICByZXR1cm4gbV9pZFRvSW5qZWN0ZWRTY3JpcHQu
Z2V0KGluamVjdGVkU2NyaXB0SWQpOworICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOworfQor
CitJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdEhvc3Q6OmluamVjdGVkU2NyaXB0Rm9yTm9k
ZUlkKGxvbmcgbm9kZUlkKQoreworICAgIGlmICghbV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAg
ICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKKworICAgIEZyYW1lKiBmcmFtZSA9IDA7Cisg
ICAgaWYgKG5vZGVJZCkgeworICAgICAgICBBU1NFUlQobV9pbnNwZWN0b3JDb250cm9sbGVyLT5k
b21BZ2VudCgpKTsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+
ZG9tQWdlbnQoKS0+bm9kZUZvcklkKG5vZGVJZCk7CisgICAgICAgIGlmIChub2RlKSB7CisgICAg
ICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBub2RlLT5vd25lckRvY3VtZW50KCk7CisgICAg
ICAgICAgICBpZiAoZG9jdW1lbnQpCisgICAgICAgICAgICAgICAgZnJhbWUgPSBkb2N1bWVudC0+
ZnJhbWUoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBmcmFtZSA9IG1faW5zcGVj
dG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLT5tYWluRnJhbWUoKTsKKworICAgIGlmIChm
cmFtZSkKKyAgICAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0Rm9yKG1haW5Xb3JsZFNjcmlwdFN0
YXRlKGZyYW1lKSk7CisKKyAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKK30KKworSW5qZWN0
ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRIb3N0OjppbmplY3RlZFNjcmlwdEZvck1haW5Xb3JsZCgp
Cit7CisgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0Rm9yKG1haW5Xb3JsZFNjcmlwdFN0YXRlKG1f
aW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLT5tYWluRnJhbWUoKSkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCmluZGV4IGU5
YzA5YWEuLjRjYjYyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmgKQEAgLTU4LDYgKzU4LDE4IEBAIHB1YmxpYzoKIAogICAgIH5JbmplY3RlZFNj
cmlwdEhvc3QoKTsKIAorICAgIC8vIFBhcnQgb2YgdGhlIHByb3RvY29sLgorICAgIHZvaWQgZXZh
bHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3Vw
LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgZXZhbHVhdGVJbkNh
bGxGcmFtZShsb25nIGluamVjdGVkU2NyaXB0SWQsIGxvbmcgY2FsbEZyYW1lLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgdm9pZCBldmFsdWF0ZU9uU2VsZihjb25zdCBTdHJpbmcm
IGZ1bmN0aW9uQm9keSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJndW1lbnRzQXJyYXks
IFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgdm9pZCBnZXRDb21wbGV0aW9u
cyhsb25nIGluamVjdGVkU2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBp
bmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIGxvbmcgY2FsbEZyYW1lSWQsIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgYm9vbCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwg
Ym9vbCBhYmJyZXZpYXRlLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZv
aWQgcHVzaE5vZGVUb0Zyb250ZW5kKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJ
ZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIHJlc29sdmVOb2Rl
KGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQg
Z2V0Tm9kZVByb3BlcnRpZXMobG9uZyBub2RlSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IHByb3BlcnRpZXNBcnJheSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2
b2lkIGdldE5vZGVQcm90b3R5cGVzKGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
KiByZXN1bHQpOworICAgIHZvaWQgc2V0UHJvcGVydHlWYWx1ZShQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisKICAgICBJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKCkgeyByZXR1cm4gbV9pbnNw
ZWN0b3JDb250cm9sbGVyOyB9CiAgICAgdm9pZCBkaXNjb25uZWN0Q29udHJvbGxlcigpIHsgbV9p
bnNwZWN0b3JDb250cm9sbGVyID0gMDsgfQogCkBAIC05Nyw2ICsxMDksMTAgQEAgcHJpdmF0ZToK
ICAgICBTY3JpcHRPYmplY3QgY3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgbG9uZyBpZCk7CiAgICAgdm9pZCBkaXNjYXJk
SW5qZWN0ZWRTY3JpcHQoU2NyaXB0U3RhdGUqKTsKIAorICAgIEluamVjdGVkU2NyaXB0IGluamVj
dGVkU2NyaXB0Rm9yT2JqZWN0SWQoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3RJZCk7CisgICAgSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JOb2RlSWQobG9uZyBub2RlSWQpOworICAgIElu
amVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yTWFpbldvcmxkKCk7CisKICAgICBJbnNwZWN0
b3JDb250cm9sbGVyKiBtX2luc3BlY3RvckNvbnRyb2xsZXI7CiAgICAgbG9uZyBtX25leHRJbmpl
Y3RlZFNjcmlwdElkOwogICAgIGxvbmcgbV9sYXN0V29ya2VySWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5kZXggZWVlNWIxNC4uNDll
MjEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
U291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNv
dXJjZS5qcwpAQCAtNjAsNyArNjAsOSBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX29iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdID0g
Z3JvdXA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGdyb3VwLnB1c2goaWQp
OwotICAgICAgICAgICAgICAgIG9iamVjdElkID0gdGhpcy5fc2VyaWFsaXplT2JqZWN0SWQoaWQs
IG9iamVjdEdyb3VwTmFtZSk7CisgICAgICAgICAgICAgICAgb2JqZWN0SWQgPSB7IGluamVjdGVk
U2NyaXB0SWQ6IGluamVjdGVkU2NyaXB0SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlkOiBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBOYW1lOiBvYmplY3RH
cm91cE5hbWUgfTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBJbmplY3RlZFNj
cmlwdC5SZW1vdGVPYmplY3QuZnJvbU9iamVjdChvYmplY3QsIG9iamVjdElkLCBhYmJyZXZpYXRl
KTsKICAgICAgICAgfSBjYXRjaCAoZSkgewpAQCAtNjgsMTggKzcwLDkgQEAgSW5qZWN0ZWRTY3Jp
cHQucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIF9zZXJpYWxpemVPYmpl
Y3RJZDogZnVuY3Rpb24oaWQsIGdyb3VwTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBpbmpl
Y3RlZFNjcmlwdElkICsgIjoiICsgaWQgKyAiOiIgKyBncm91cE5hbWU7Ci0gICAgfSwKLQogICAg
IF9wYXJzZU9iamVjdElkOiBmdW5jdGlvbihvYmplY3RJZCkKICAgICB7Ci0gICAgICAgIHZhciB0
b2tlbnMgPSBvYmplY3RJZC5zcGxpdCgiOiIpOwotICAgICAgICB2YXIgcGFyc2VkT2JqZWN0SWQg
PSB7fTsKLSAgICAgICAgcGFyc2VkT2JqZWN0SWQuaWQgPSBwYXJzZUludCh0b2tlbnNbMV0pOwot
ICAgICAgICBwYXJzZWRPYmplY3RJZC5ncm91cE5hbWUgPSB0b2tlbnNbMl07Ci0gICAgICAgIHJl
dHVybiBwYXJzZWRPYmplY3RJZDsKKyAgICAgICAgcmV0dXJuIGV2YWwoIigiICsgb2JqZWN0SWQg
KyAiKSIpOwogICAgIH0sCiAKICAgICByZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwOiBmdW5jdGlv
bihvYmplY3RHcm91cE5hbWUpCkBAIC0xMDMsMjYgKzk2LDExIEBAIEluamVjdGVkU2NyaXB0LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9LAogCi0gICAgZ2V0UHJv
dG90eXBlczogZnVuY3Rpb24obm9kZUlkKQotICAgIHsKLSAgICAgICAgdGhpcy5yZWxlYXNlV3Jh
cHBlck9iamVjdEdyb3VwKCJwcm90b3R5cGVzIik7Ci0gICAgICAgIHZhciBub2RlID0gdGhpcy5f
bm9kZUZvcklkKG5vZGVJZCk7Ci0gICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgICAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgICAgIHZhciBwcm90b3R5
cGUgPSBub2RlOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLl93
cmFwT2JqZWN0KHByb3RvdHlwZSwgInByb3RvdHlwZXMiKSk7Ci0gICAgICAgICAgICBwcm90b3R5
cGUgPSBwcm90b3R5cGUuX19wcm90b19fOwotICAgICAgICB9IHdoaWxlIChwcm90b3R5cGUpCi0g
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKLQogICAgIGdldFByb3BlcnRpZXM6IGZ1bmN0
aW9uKG9iamVjdElkLCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgYWJicmV2aWF0ZSkKICAgICB7CiAg
ICAgICAgIHZhciBwYXJzZWRPYmplY3RJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0SWQp
OwogICAgICAgICB2YXIgb2JqZWN0ID0gdGhpcy5fb2JqZWN0Rm9ySWQocGFyc2VkT2JqZWN0SWQp
OworCiAgICAgICAgIGlmICghdGhpcy5faXNEZWZpbmVkKG9iamVjdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gW107CkBAIC0yMTQsNyArMTky
LDcgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICB0cnkgewogICAgICAg
ICAgICAgdmFyIGV4cHJlc3Npb25SZXN1bHQ7CiAgICAgICAgICAgICAvLyBFdmFsdWF0ZSBvbiBj
YWxsIGZyYW1lIGlmIGNhbGwgZnJhbWUgaWQgaXMgYXZhaWxhYmxlLgotICAgICAgICAgICAgaWYg
KHR5cGVvZiBjYWxsRnJhbWVJZCA9PT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIGlmIChjYWxs
RnJhbWVJZCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgdmFyIGNhbGxGcmFtZSA9IHRoaXMuX2Nh
bGxGcmFtZUZvcklkKGNhbGxGcmFtZUlkKTsKICAgICAgICAgICAgICAgICBpZiAoIWNhbGxGcmFt
ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzOwpAQCAtMzIzLDkgKzMwMSw5IEBA
IEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2Ny
aXB0SG9zdC5ub2RlRm9ySWQobm9kZUlkKTsKICAgICB9LAogCi0gICAgX29iamVjdEZvcklkOiBm
dW5jdGlvbihwYXJzZWRPYmplY3RJZCkKKyAgICBfb2JqZWN0Rm9ySWQ6IGZ1bmN0aW9uKG9iamVj
dElkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0W3BhcnNl
ZE9iamVjdElkLmlkXTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0W29i
amVjdElkLmlkXTsKICAgICB9LAogCiAgICAgcmVzb2x2ZU5vZGU6IGZ1bmN0aW9uKG5vZGVJZCkK
QEAgLTM0MiwxMiArMzIwLDI5IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdmFyIG5vZGUgPSB0aGlzLl9ub2RlRm9ySWQobm9kZUlkKTsKICAgICAgICAgaWYgKCFub2Rl
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBwcm9wZXJ0aWVzID0gZXZhbCgi
KCIgKyBwcm9wZXJ0aWVzICsgIikiKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IHt9OwogICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyArK2kpCiAgICAgICAgICAg
ICByZXN1bHRbcHJvcGVydGllc1tpXV0gPSBub2RlW3Byb3BlcnRpZXNbaV1dOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0sCiAKKyAgICBnZXROb2RlUHJvdG90eXBlczogZnVuY3Rpb24o
bm9kZUlkKQorICAgIHsKKyAgICAgICAgdGhpcy5yZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwKCJw
cm90b3R5cGVzIik7CisgICAgICAgIHZhciBub2RlID0gdGhpcy5fbm9kZUZvcklkKG5vZGVJZCk7
CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICB2YXIgcmVzdWx0ID0gW107CisgICAgICAgIHZhciBwcm90b3R5cGUgPSBub2RlOworICAgICAg
ICBkbyB7CisgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLl93cmFwT2JqZWN0KHByb3RvdHlw
ZSwgInByb3RvdHlwZXMiKSk7CisgICAgICAgICAgICBwcm90b3R5cGUgPSBwcm90b3R5cGUuX19w
cm90b19fOworICAgICAgICB9IHdoaWxlIChwcm90b3R5cGUpCisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfSwKKwogICAgIHB1c2hOb2RlVG9Gcm9udGVuZDogZnVuY3Rpb24ob2JqZWN0SWQp
CiAgICAgewogICAgICAgICB2YXIgcGFyc2VkT2JqZWN0SWQgPSB0aGlzLl9wYXJzZU9iamVjdElk
KG9iamVjdElkKTsKQEAgLTM1OSw4ICszNTQsOCBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUg
PSB7CiAKICAgICBldmFsdWF0ZU9uU2VsZjogZnVuY3Rpb24oZnVuY0JvZHksIGFyZ3MpCiAgICAg
ewotICAgICAgICB2YXIgZnVuYyA9IHdpbmRvdy5ldmFsKCIoIiArIGZ1bmNCb2R5ICsgIikiKTsK
LSAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJncyB8fCBbXSk7CisgICAgICAgIHZh
ciBmdW5jID0gZXZhbCgiKCIgKyBmdW5jQm9keSArICIpIik7CisgICAgICAgIHJldHVybiBmdW5j
LmFwcGx5KHRoaXMsIGV2YWwoIigiICsgYXJncyArICIpIikgfHwgW10pOwogICAgIH0sCiAKICAg
ICBfaXNEZWZpbmVkOiBmdW5jdGlvbihvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3IuaWRsCmluZGV4IGU0YmJjYzUuLjczOWMzMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuaWRsCkBAIC0zNiw4ICszNiw2IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAg
Ly8gZ2VuZXJpYyBJbnNwZWN0b3IncyBtZXRob2RzCiAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAK
LSAgICAgICAgLy8gSFVHRSBGSVhNRTogd2UgbmVlZCB0byBleHBvc2UgSW5qZWN0ZWRTY3JpcHQg
bWV0aG9kcyBoZXJlLiBPciBkb2N1bWVudCBJbmplY3RlZFNjcmlwdCBjYXBhYmlsaXRpZXMuCi0g
ICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIGRpc3BhdGNoT25JbmplY3RlZFNjcmlwdChp
biBsb25nIGluamVjdGVkU2NyaXB0SWQsIGluIFN0cmluZyBtZXRob2ROYW1lLCBpbiBTdHJpbmcg
YXJndW1lbnRzLCBvdXQgVmFsdWUgcmVzdWx0LCBvdXQgYm9vbGVhbiBpc0V4Y2VwdGlvbik7CiAg
ICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIGFkZFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQo
aW4gU3RyaW5nIHNjcmlwdFNvdXJjZSk7CiAgICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lk
IHJlbW92ZUFsbFNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkKCk7CiAgICAgICAgIFtkb21haW49SW5z
cGVjdG9yXSB2b2lkIHJlbGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAoaW4gbG9uZyBpbmplY3RlZFNj
cmlwdElkLCBpbiBTdHJpbmcgb2JqZWN0R3JvdXApOwpAQCAtNzMsNiArNzEsMjEgQEAgbW9kdWxl
IGNvcmUgewogICAgICAgICBbZG9tYWluPUluc3BlY3Rvcl0gdm9pZCBkZWxldGVDb29raWUoaW4g
U3RyaW5nIGNvb2tpZU5hbWUsIGluIFN0cmluZyBkb21haW4pOwogCiAgICAgICAgIC8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCisgICAgICAgIC8vIEluamVjdGVkIFNjcmlwdAorICAgICAgICAvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LworCisgICAgICAgIFtkb21haW49SW5qZWN0ZWRTY3JpcHRdIHZvaWQgZXZhbHVhdGUoaW4gU3Ry
aW5nIGV4cHJlc3Npb24sIGluIFN0cmluZyBvYmplY3RHcm91cCwgb3V0IFZhbHVlIHJlc3VsdCk7
CisgICAgICAgIFtkb21haW49SW5qZWN0ZWRTY3JpcHRdIHZvaWQgZXZhbHVhdGVJbkNhbGxGcmFt
ZShpbiBsb25nIGluamVjdGVkU2NyaXB0SWQsIGluIGxvbmcgY2FsbEZyYW1lLCBpbiBTdHJpbmcg
ZXhwcmVzc2lvbiwgaW4gU3RyaW5nIG9iamVjdEdyb3VwLCBvdXQgVmFsdWUgcmVzdWx0KTsKKyAg
ICAgICAgW2RvbWFpbj1JbmplY3RlZFNjcmlwdF0gdm9pZCBldmFsdWF0ZU9uU2VsZihpbiBTdHJp
bmcgZnVuY3Rpb25Cb2R5LCBpbiBBcnJheSBhcmd1bWVudHNBcnJheSwgb3V0IFZhbHVlIHJlc3Vs
dCk7CisgICAgICAgIFtkb21haW49SW5qZWN0ZWRTY3JpcHRdIHZvaWQgZ2V0Q29tcGxldGlvbnMo
aW4gbG9uZyBpbmplY3RlZFNjcmlwdElkLCBpbiBTdHJpbmcgZXhwcmVzc2lvbiwgaW4gYm9vbGVh
biBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIGluIGxvbmcgY2FsbEZyYW1lSWQsIG91
dCBWYWx1ZSByZXN1bHQpOworICAgICAgICBbZG9tYWluPUluamVjdGVkU2NyaXB0XSB2b2lkIGdl
dFByb3BlcnRpZXMoaW4gT2JqZWN0IG9iamVjdElkLCBpbiBib29sZWFuIGlnbm9yZUhhc093blBy
b3BlcnR5LCBpbiBib29sZWFuIGFiYnJldmlhdGUsIG91dCBWYWx1ZSByZXN1bHQpOworICAgICAg
ICBbZG9tYWluPUluamVjdGVkU2NyaXB0XSB2b2lkIHB1c2hOb2RlVG9Gcm9udGVuZChpbiBPYmpl
Y3Qgb2JqZWN0SWQsIG91dCBWYWx1ZSByZXN1bHQpOworICAgICAgICBbZG9tYWluPUluamVjdGVk
U2NyaXB0XSB2b2lkIHJlc29sdmVOb2RlKGluIGxvbmcgbm9kZUlkLCBvdXQgVmFsdWUgcmVzdWx0
KTsKKyAgICAgICAgW2RvbWFpbj1JbmplY3RlZFNjcmlwdF0gdm9pZCBnZXROb2RlUHJvcGVydGll
cyhpbiBsb25nIG5vZGVJZCwgaW4gQXJyYXkgcHJvcGVydGllc0FycmF5LCBvdXQgVmFsdWUgcmVz
dWx0KTsKKyAgICAgICAgW2RvbWFpbj1JbmplY3RlZFNjcmlwdF0gdm9pZCBnZXROb2RlUHJvdG90
eXBlcyhpbiBsb25nIG5vZGVJZCwgb3V0IFZhbHVlIHJlc3VsdCk7CisgICAgICAgIFtkb21haW49
SW5qZWN0ZWRTY3JpcHRdIHZvaWQgc2V0UHJvcGVydHlWYWx1ZShpbiBPYmplY3Qgb2JqZWN0SWQs
IGluIFN0cmluZyBwcm9wZXJ0eU5hbWUsIGluIFN0cmluZyBleHByZXNzaW9uLCBvdXQgVmFsdWUg
cmVzdWx0KTsKKworICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgICAgICAvLyBDb25zb2xlIEFQ
SQogICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggMWIzYWQzNS4uMzgwYzA1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAt
MTE1NywyNiArMTE1Nyw2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzdG9yZVN0aWNr
eUJyZWFrcG9pbnQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyCiB9CiAjZW5kaWYKIAot
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQobG9uZyBp
bmplY3RlZFNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZE5hbWUsIGNvbnN0IFN0cmluZyYg
YXJndW1lbnRzLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQsIGJvb2wqIGhhZEV4Y2Vw
dGlvbikKLXsKLSAgICBpZiAoIW1fZnJvbnRlbmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IEZJWE1FOiBleHBsaWNpdGx5IHBhc3MgaW5qZWN0ZWRTY3JpcHRJZCBhbG9uZyB3aXRoIG5vZGUg
aWQgdG8gdGhlIGZyb250ZW5kLgotICAgIGJvb2wgaW5qZWN0ZWRTY3JpcHRJZElzTm9kZUlkID0g
aW5qZWN0ZWRTY3JpcHRJZCA8PSAwOwotCi0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHQ7Ci0gICAgaWYgKGluamVjdGVkU2NyaXB0SWRJc05vZGVJZCkKLSAgICAgICAgaW5qZWN0ZWRT
Y3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvck5vZGVJZCgtaW5qZWN0ZWRTY3JpcHRJZCk7Ci0gICAg
ZWxzZQotICAgICAgICBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0SG9zdCgpLT5pbmpl
Y3RlZFNjcmlwdEZvcklkKGluamVjdGVkU2NyaXB0SWQpOwotCi0gICAgaWYgKGluamVjdGVkU2Ny
aXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5qZWN0ZWRTY3JpcHQu
ZGlzcGF0Y2gobWV0aG9kTmFtZSwgYXJndW1lbnRzLCByZXN1bHQsIGhhZEV4Y2VwdGlvbik7Ci19
Ci0KIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cChs
b25nIGluamVjdGVkU2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCiB7CiAgICAg
aW5qZWN0ZWRTY3JpcHRIb3N0KCktPnJlbGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAoaW5qZWN0ZWRT
Y3JpcHRJZCwgb2JqZWN0R3JvdXApOwpAQCAtMTQ2NCwyNyArMTQ0NCw2IEBAIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6b3BlbkluSW5zcGVjdGVkV2luZG93KGNvbnN0IFN0cmluZyYgdXJsKQog
ICAgIG5ld0ZyYW1lLT5sb2FkZXIoKS0+Y2hhbmdlTG9jYXRpb24obWFpbkZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLCBuZXdGcmFtZS0+bG9hZGVyKCktPmNvbXBsZXRlVVJMKHVy
bCksICIiLCBmYWxzZSwgZmFsc2UpOwogfQogCi1JbmplY3RlZFNjcmlwdCBJbnNwZWN0b3JDb250
cm9sbGVyOjppbmplY3RlZFNjcmlwdEZvck5vZGVJZChsb25nIGlkKQotewotCi0gICAgRnJhbWUq
IGZyYW1lID0gMDsKLSAgICBpZiAoaWQpIHsKLSAgICAgICAgQVNTRVJUKG1fZG9tQWdlbnQpOwot
ICAgICAgICBOb2RlKiBub2RlID0gbV9kb21BZ2VudC0+bm9kZUZvcklkKGlkKTsKLSAgICAgICAg
aWYgKG5vZGUpIHsKLSAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUtPm93bmVy
RG9jdW1lbnQoKTsKLSAgICAgICAgICAgIGlmIChkb2N1bWVudCkKLSAgICAgICAgICAgICAgICBm
cmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAg
IGZyYW1lID0gbV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKTsKLQotICAgIGlmIChmcmFtZSkK
LSAgICAgICAgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvciht
YWluV29ybGRTY3JpcHRTdGF0ZShmcmFtZSkpOwotCi0gICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
KCk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkU2NyaXB0VG9FdmFsdWF0ZU9u
TG9hZChjb25zdCBTdHJpbmcmIHNvdXJjZSkKIHsKICAgICBtX3NjcmlwdHNUb0V2YWx1YXRlT25M
b2FkLmFwcGVuZChzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmgKaW5kZXggOWNkZGM1Ni4uNDA1MTM5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0yMjQsMTYgKzIyNCwxMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGlja3lCcmVha3BvaW50cyhQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gYnJlYWtwb2ludHMpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNldEluamVjdGVk
U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlKTsKLSAgICB2b2lkIGRpc3BhdGNoT25J
bmplY3RlZFNjcmlwdChsb25nIGluamVjdGVkU2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9k
TmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudHMsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJl
c3VsdCwgYm9vbCogaGFkRXhjZXB0aW9uKTsKLQogICAgIC8vIEdlbmVyaWMgY29kZSBjYWxsZWQg
ZnJvbSBjdXN0b20gaW1wbGVtZW50YXRpb25zLgogICAgIHZvaWQgcmVsZWFzZVdyYXBwZXJPYmpl
Y3RHcm91cChsb25nIGluamVjdGVkU2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAp
OwogCiAgICAgdm9pZCBldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgdGVzdENhbGxJZCwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQpOwogCi0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHRGb3JOb2RlSWQobG9uZyBpZCk7Ci0KICAgICB2b2lkIGFkZFNjcmlwdFRvRXZhbHVhdGVPbkxv
YWQoY29uc3QgU3RyaW5nJiBzb3VyY2UpOwogICAgIHZvaWQgcmVtb3ZlQWxsU2NyaXB0c1RvRXZh
bHVhdGVPbkxvYWQoKTsKICAgICB2b2lkIHNldEluc3BlY3RvckV4dGVuc2lvbkFQSShjb25zdCBT
dHJpbmcmIHNvdXJjZSk7CkBAIC0yODMsOSArMjc4LDcgQEAgcHJpdmF0ZToKICAgICBQYXNzUmVm
UHRyPEluc3BlY3RvckFycmF5PiBidWlsZEFycmF5Rm9yQ29va2llcyhMaXN0SGFzaFNldDxDb29r
aWU+Jik7CiAKICAgICB2b2lkIGZvY3VzTm9kZSgpOwotCiAgICAgYm9vbCBpc01haW5SZXNvdXJj
ZUxvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VXJsKTsK
LQogICAgIHZvaWQgZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29u
c3QgU3RyaW5nJiBqc29uUmVzdWx0KTsKIAogICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKaW5kZXggODllOWI3
Yy4uZDFiODA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVl
cy5jcHAKQEAgLTY0Nyw2ICs2NDcsMTQgQEAgYm9vbCBJbnNwZWN0b3JPYmplY3Q6OmdldEJvb2xl
YW4oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiBvdXRwdXQpIGNvbnN0CiAgICAgcmV0dXJuIHZh
bHVlLT5hc0Jvb2xlYW4ob3V0cHV0KTsKIH0KIAorYm9vbCBJbnNwZWN0b3JPYmplY3Q6OmdldE51
bWJlcihjb25zdCBTdHJpbmcmIG5hbWUsIGxvbmcqIG91dHB1dCkgY29uc3QKK3sKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gZ2V0KG5hbWUpOworICAgIGlmICghdmFsdWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdmFsdWUtPmFzTnVtYmVyKG91dHB1dCk7
Cit9CisKIGJvb2wgSW5zcGVjdG9yT2JqZWN0OjpnZXROdW1iZXIoY29uc3QgU3RyaW5nJiBuYW1l
LCBkb3VibGUqIG91dHB1dCkgY29uc3QKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZh
bHVlID0gZ2V0KG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVl
cy5oCmluZGV4IDM5MTM3MmUuLjg0M2YzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmgKQEAgLTE4MCw2ICsxODAsNyBAQCBwdWJsaWM6CiAKICAgICBjb25z
dF9pdGVyYXRvciBmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgYm9vbCBnZXRC
b29sZWFuKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogb3V0cHV0KSBjb25zdDsKKyAgICBib29s
IGdldE51bWJlcihjb25zdCBTdHJpbmcmIG5hbWUsIGxvbmcqIG91dHB1dCkgY29uc3Q7CiAgICAg
Ym9vbCBnZXROdW1iZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUqIG91dHB1dCkgY29uc3Q7
CiAgICAgYm9vbCBnZXRTdHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcqIG91dHB1dCkg
Y29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGdldE9iamVjdChjb25zdCBT
dHJpbmcmIG5hbWUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9BdWRpdFJ1bGVzLmpzCmluZGV4IDdhYTg5MWYuLmMyYmJjYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMKQEAgLTY1LDcgKzY1
LDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuZ2V0RG9tYWluVG9SZXNvdXJjZXNNYXAgPSBm
dW5jdGlvbihyZXNvdXJjZXMsIHR5cGVzLCBuZWUKIAogV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMu
ZXZhbHVhdGVJblRhcmdldFdpbmRvdyA9IGZ1bmN0aW9uKGZ1bmMsIGFyZ3MsIGNhbGxiYWNrKQog
ewotICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldERlZmF1bHQoKS5ldmFsdWF0ZU9uU2VsZihm
dW5jLnRvU3RyaW5nKCksIGFyZ3MsIGNhbGxiYWNrKTsKKyAgICBJbnNwZWN0b3JCYWNrZW5kLmV2
YWx1YXRlT25TZWxmKGZ1bmMudG9TdHJpbmcoKSwgYXJncywgY2FsbGJhY2spOwogfQogCiAKQEAg
LTcyMSw3ICs3MjEsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5JbWFnZURpbWVuc2lvbnNS
dWxlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBub2RlSWRzOwogICAgICAgICB9
CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuZXZhbHVhdGVJblRhcmdldFdpbmRv
dyhwdXNoSW1hZ2VOb2RlcywgbnVsbCwgcmVjZWl2ZWRJbWFnZXMpOworICAgICAgICBXZWJJbnNw
ZWN0b3IuQXVkaXRSdWxlcy5ldmFsdWF0ZUluVGFyZ2V0V2luZG93KHB1c2hJbWFnZU5vZGVzLCBb
XSwgcmVjZWl2ZWRJbWFnZXMpOwogICAgIH0KIH0KIApAQCAtNzk3LDcgKzc5Nyw3IEBAIFdlYklu
c3BlY3Rvci5BdWRpdFJ1bGVzLkNzc0luSGVhZFJ1bGUucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgcmV0dXJuIGZvdW5kID8gdXJsVG9WaW9sYXRpb25zQXJyYXkgOiBudWxsOwogICAgICAgICB9
CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuZXZhbHVhdGVJblRhcmdldFdpbmRv
dyhyb3V0aW5lLCBudWxsLCBldmFsQ2FsbGJhY2spOworICAgICAgICBXZWJJbnNwZWN0b3IuQXVk
aXRSdWxlcy5ldmFsdWF0ZUluVGFyZ2V0V2luZG93KHJvdXRpbmUsIFtdLCBldmFsQ2FsbGJhY2sp
OwogICAgIH0KIH0KIApAQCAtODQ0LDcgKzg0NCw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVz
LlN0eWxlc1NjcmlwdHNPcmRlclJ1bGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJu
IFsgbGF0ZVN0eWxlVXJscywgY3NzQmVmb3JlSW5saW5lQ291bnQgXTsKICAgICAgICAgfQogCi0g
ICAgICAgIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLmV2YWx1YXRlSW5UYXJnZXRXaW5kb3cocm91
dGluZSwgbnVsbCwgZXZhbENhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICBXZWJJbnNwZWN0
b3IuQXVkaXRSdWxlcy5ldmFsdWF0ZUluVGFyZ2V0V2luZG93KHJvdXRpbmUsIFtdLCBldmFsQ2Fs
bGJhY2suYmluZCh0aGlzKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwppbmRleCA1YWRmY2FjLi44NDNjMmIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcu
anMKQEAgLTM1NSwxNCArMzU1LDE0IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIC8vIENvbGxlY3QgY29tbWEgc2VwYXJhdGVkIG9iamVjdCBwcm9wZXJ0
aWVzIGZvciB0aGUgY29tcGxldGlvbi4KIAogICAgICAgICB2YXIgaW5jbHVkZUluc3BlY3RvckNv
bW1hbmRMaW5lQVBJID0gKCFkb3ROb3RhdGlvbiAmJiAhYnJhY2tldE5vdGF0aW9uKTsKLSAgICAg
ICAgdmFyIGNhbGxGcmFtZUlkID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnNlbGVjdGVk
Q2FsbEZyYW1lSWQoKTsKKyAgICAgICAgdmFyIGNhbGxGcmFtZUlkID0gV2ViSW5zcGVjdG9yLnBh
bmVscy5zY3JpcHRzLnNlbGVjdGVkQ2FsbEZyYW1lSWQoKSB8fCAtMTsKICAgICAgICAgdmFyIGlu
amVjdGVkU2NyaXB0QWNjZXNzOwogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5zY3Jp
cHRzICYmIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5wYXVzZWQpIHsKICAgICAgICAgICAg
IHZhciBzZWxlY3RlZENhbGxGcmFtZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5zaWRl
YmFyUGFuZXMuY2FsbHN0YWNrLnNlbGVjdGVkQ2FsbEZyYW1lOwotICAgICAgICAgICAgaW5qZWN0
ZWRTY3JpcHRBY2Nlc3MgPSBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXQoc2VsZWN0ZWRDYWxsRnJh
bWUud29ybGRJZCk7CisgICAgICAgICAgICB2YXIgaW5qZWN0ZWRTY3JpcHRJZCA9IHNlbGVjdGVk
Q2FsbEZyYW1lLndvcmxkSWQ7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaW5qZWN0ZWRT
Y3JpcHRBY2Nlc3MgPSBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXREZWZhdWx0KCk7Ci0gICAgICAg
IGluamVjdGVkU2NyaXB0QWNjZXNzLmdldENvbXBsZXRpb25zKGV4cHJlc3Npb25TdHJpbmcsIGlu
Y2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwgY2FsbEZyYW1lSWQsIHJlcG9ydENvbXBsZXRp
b25zKTsKKyAgICAgICAgICAgIHZhciBpbmplY3RlZFNjcmlwdElkID0gMDsKKyAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5nZXRDb21wbGV0aW9ucyhpbmplY3RlZFNjcmlwdElkLCBleHByZXNzaW9u
U3RyaW5nLCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmVBUEksIGNhbGxGcmFtZUlkLCByZXBv
cnRDb21wbGV0aW9ucyk7CiAgICAgfSwKIAogICAgIF9yZXBvcnRDb21wbGV0aW9uczogZnVuY3Rp
b24oYmVzdE1hdGNoT25seSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrLCBkb3ROb3RhdGlvbiwg
YnJhY2tldE5vdGF0aW9uLCBwcmVmaXgsIHJlc3VsdCwgaXNFeGNlcHRpb24pIHsKQEAgLTUzMiw4
ICs1MzIsOCBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICBmdW5jdGlvbiBldmFsQ2FsbGJhY2socmVzdWx0KQogICAgICAgICB7CiAgICAgICAgICAgICBj
YWxsYmFjayhXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHJlc3VsdCkpOwot
ICAgICAgICB9OwotICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXREZWZhdWx0KCkuZXZh
bHVhdGUoZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIGV2YWxDYWxsYmFjayk7CisgICAgICAgIH0K
KyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5ldmFsdWF0ZShleHByZXNzaW9uLCBvYmplY3RHcm91
cCwgZXZhbENhbGxiYWNrKTsKICAgICB9LAogCiAgICAgX2VudGVyS2V5UHJlc3NlZDogZnVuY3Rp
b24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0VsZW1lbnRzVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKaW5kZXggNjdkMzRiMi4uNzIyYzAyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRs
aW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNU
cmVlT3V0bGluZS5qcwpAQCAtNDExLDggKzQxMSw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1Ry
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICB0aGlzLnRvb2x0aXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIMOXICVkIHBpeGVscyAo
TmF0dXJhbDogJWQgw5cgJWQgcGl4ZWxzKSIsIHByb3BlcnRpZXMub2Zmc2V0V2lkdGgsIHByb3Bl
cnRpZXMub2Zmc2V0SGVpZ2h0LCBwcm9wZXJ0aWVzLm5hdHVyYWxXaWR0aCwgcHJvcGVydGllcy5u
YXR1cmFsSGVpZ2h0KTsKICAgICAgICAgfQotCi0gICAgICAgIEluamVjdGVkU2NyaXB0QWNjZXNz
LmdldEZvck5vZGUobm9kZSkuZ2V0Tm9kZVByb3BlcnRpZXMobm9kZS5pZCwgWyJuYXR1cmFsSGVp
Z2h0IiwgIm5hdHVyYWxXaWR0aCIsICJvZmZzZXRIZWlnaHQiLCAib2Zmc2V0V2lkdGgiXSwgc2V0
VG9vbHRpcC5iaW5kKHRoaXMpKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXROb2RlUHJv
cGVydGllcyhub2RlLmlkLCBbIm5hdHVyYWxIZWlnaHQiLCAibmF0dXJhbFdpZHRoIiwgIm9mZnNl
dEhlaWdodCIsICJvZmZzZXRXaWR0aCJdLCBzZXRUb29sdGlwLmJpbmQodGhpcykpOwogICAgIH0s
CiAKICAgICB1cGRhdGVTZWxlY3Rpb246IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uUGFuZWwuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblBhbmVsLmpzCmluZGV4IDRiNDJlNjgu
LmZiOTgzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RXh0ZW5zaW9uUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FeHRlbnNpb25QYW5lbC5qcwpAQCAtOTUsNyArOTUsNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5z
aW9uV2F0Y2hTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAKICAgICBzZXRFeHByZXNzaW9uOiBm
dW5jdGlvbihleHByZXNzaW9uLCB0aXRsZSkKICAgICB7Ci0gICAgICAgIEluamVjdGVkU2NyaXB0
QWNjZXNzLmdldERlZmF1bHQoKS5ldmFsdWF0ZShleHByZXNzaW9uLCB0aGlzLl9vbkV2YWx1YXRl
LmJpbmQodGhpcywgdGl0bGUpKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5ldmFsdWF0ZShl
eHByZXNzaW9uLCAiZXh0ZW5zaW9uLXdhdGNoIiwgdGhpcy5fb25FdmFsdWF0ZS5iaW5kKHRoaXMs
IHRpdGxlKSk7CiAgICAgfSwKIAogICAgIF9vbkV2YWx1YXRlOiBmdW5jdGlvbih0aXRsZSwgcmVz
dWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRl
bnNpb25TZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVu
c2lvblNlcnZlci5qcwppbmRleCBiOTdkY2RhLi4wOTI0MTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcwpAQCAtMjcy
LDcgKzI3Miw3IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewog
ICAgICAgICB2YXIgZXZhbEV4cHJlc3Npb24gPSAiSlNPTi5zdHJpbmdpZnkoZXZhbCgnIiArCiAg
ICAgICAgICAgICAid2l0aCAod2luZG93LmNvbnNvbGUuX2NvbW1hbmRMaW5lQVBJKSB3aXRoICh3
aW5kb3cpIHsnICsgdW5lc2NhcGUoJyIgKyBlc2NhcGUobWVzc2FnZS5leHByZXNzaW9uKSArCiAg
ICAgICAgICAgICAiJykgKyAnfScpKTsiOwotICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5n
ZXREZWZhdWx0KCkuZXZhbHVhdGUoZXZhbEV4cHJlc3Npb24sIGNhbGxiYWNrLmJpbmQodGhpcykp
OworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmV2YWx1YXRlKGV2YWxFeHByZXNzaW9uLCAibm9u
ZSIsIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKICAgICBfb25SZXZlYWxBbmRTZWxl
Y3Q6IGZ1bmN0aW9uKG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0QWNjZXNzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdEFjY2Vzcy5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggY2IzYzJiOC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0QWNjZXNzLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsOTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEpvc2VwaCBQZWNvcmFybwot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0
aW9uIEluamVjdGVkU2NyaXB0QWNjZXNzKHdvcmxkSWQpIHsKLSAgICB0aGlzLl93b3JsZElkID0g
d29ybGRJZDsKLX0KLQotSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0ID0gZnVuY3Rpb24od29ybGRJ
ZCkKLXsKLSAgICBpZiAodHlwZW9mIHdvcmxkSWQgPT09ICJudW1iZXIiKQotICAgICAgICByZXR1
cm4gbmV3IEluamVjdGVkU2NyaXB0QWNjZXNzKHdvcmxkSWQpOwotCi0gICAgY29uc29sZS5hc3Nl
cnQoZmFsc2UsICJBY2Nlc3MgdG8gaW5qZWN0ZWQgc2NyaXB0IHdpdGggbm8gaWQiKTsKLX0KLQot
SW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0Rm9yTm9kZSA9IGZ1bmN0aW9uKG5vZGUpCi17Ci0gICAg
Ly8gRklYTUU6IGRvIHNvbWV0aGluZy4KLSAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRBY2Nlc3Mu
Z2V0KC1ub2RlLmlkKTsKLX0KLQotSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0Rm9yT2JqZWN0SWQg
PSBmdW5jdGlvbihvYmplY3RJZCkKLXsKLSAgICAvLyBGSVhNRTogbW92ZSB0byBuYXRpdmUgbGF5
ZXIuCi0gICAgdmFyIHRva2VucyA9IG9iamVjdElkLnNwbGl0KCI6Iik7Ci0gICAgcmV0dXJuIElu
amVjdGVkU2NyaXB0QWNjZXNzLmdldChwYXJzZUludCh0b2tlbnNbMF0pKTsKLX0KLQotSW5qZWN0
ZWRTY3JpcHRBY2Nlc3MuZ2V0RGVmYXVsdCA9IGZ1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gSW5q
ZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0KDApOwotfQotCi1JbmplY3RlZFNjcmlwdEFjY2Vzcy5wcm90
b3R5cGUgPSB7fTsKLQotSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyID0gZnVu
Y3Rpb24obWV0aG9kTmFtZSwgYXN5bmMpCi17Ci0gICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MucHJv
dG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGFsbEFy
Z3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpOwotICAgICAgICB2YXIg
Y2FsbGJhY2sgPSBhbGxBcmdzW2FsbEFyZ3MubGVuZ3RoIC0gMV07Ci0gICAgICAgIHZhciBhcmdz
U3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYWxsQXJn
cywgMCwgYWxsQXJncy5sZW5ndGggLSAxKSk7Ci0gICAgICAgIAotICAgICAgICBmdW5jdGlvbiBt
eUNhbGxiYWNrKHJlc3VsdCwgaXNFeGNlcHRpb24pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghaXNFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRNZXNz
YWdlKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jcmVhdGVUZXh0TWVzc2FnZSgiRXJyb3Ig
ZGlzcGF0Y2hpbmc6ICIgKyBtZXRob2ROYW1lKSk7Ci0gICAgICAgIH0KLSAgICAgICAgSW5zcGVj
dG9yQmFja2VuZC5kaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQodGhpcy5fd29ybGRJZCwgbWV0aG9k
TmFtZSwgYXJnc1N0cmluZywgbXlDYWxsYmFjayk7Ci0gICAgfTsKLX0KLQotLy8gSW5qZWN0ZWRT
Y3JpcHRBY2Nlc3MgbWVzc2FnZSBmb3J3YXJkaW5nIHB1dHMgc29tZSBjb25zdHJhaW50cyBvbiB0
aGUgd2F5IG1ldGhvZHMgYXJlIGltcGxlbWVudGVkIGFuZCBjYWxsZWQ6Ci0vLyAtIE1ha2Ugc3Vy
ZSBjb3JyZXNwb25kaW5nIG1ldGhvZHMgaW4gSW5qZWN0ZWRTY3JpcHQgcmV0dXJuIG5vbi1udWxs
IGFuZCBub24tdW5kZWZpbmVkIHZhbHVlcywKLS8vIC0gTWFrZSBzdXJlIGxhc3QgcGFyYW1ldGVy
IG9mIGFsbCB0aGUgSW5qZWN0ZWRTcmlwdEFjY2Vzcy4qIGNhbGxzIGlzIGEgY2FsbGJhY2sgZnVu
Y3Rpb24uCi0vLyBXZSBrZWVwIHRoZXNlIHNvcnRlZC4KLUluamVjdGVkU2NyaXB0QWNjZXNzLl9p
bnN0YWxsSGFuZGxlcigiZXZhbHVhdGUiKTsKLUluamVjdGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxs
SGFuZGxlcigiZXZhbHVhdGVJbkNhbGxGcmFtZSIpOwotSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuX2lu
c3RhbGxIYW5kbGVyKCJldmFsdWF0ZU9uU2VsZiIpOwotSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuX2lu
c3RhbGxIYW5kbGVyKCJnZXRDb21wbGV0aW9ucyIpOwotSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuX2lu
c3RhbGxIYW5kbGVyKCJnZXRQcm9wZXJ0aWVzIik7Ci1JbmplY3RlZFNjcmlwdEFjY2Vzcy5faW5z
dGFsbEhhbmRsZXIoImdldFByb3RvdHlwZXMiKTsKLUluamVjdGVkU2NyaXB0QWNjZXNzLl9pbnN0
YWxsSGFuZGxlcigicHVzaE5vZGVUb0Zyb250ZW5kIik7Ci1JbmplY3RlZFNjcmlwdEFjY2Vzcy5f
aW5zdGFsbEhhbmRsZXIoInJlc29sdmVOb2RlIik7Ci1JbmplY3RlZFNjcmlwdEFjY2Vzcy5faW5z
dGFsbEhhbmRsZXIoImdldE5vZGVQcm9wZXJ0aWVzIik7Ci1JbmplY3RlZFNjcmlwdEFjY2Vzcy5f
aW5zdGFsbEhhbmRsZXIoInNldFByb3BlcnR5VmFsdWUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvcGVydGllc1NpZGViYXJQYW5lLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVzU2lkZWJhclBhbmUuanMK
aW5kZXggYjljMjEyYS4uYTFlMzdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVzU2lkZWJhclBhbmUuanMKQEAgLTQyLDEx
ICs0MiwxMSBAQCBXZWJJbnNwZWN0b3IuUHJvcGVydGllc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBzZWxmID0g
dGhpczsKLSAgICAgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24ocHJvdG90eXBlcykgewotICAg
ICAgICAgICAgdmFyIGJvZHkgPSBzZWxmLmJvZHlFbGVtZW50OworICAgICAgICBmdW5jdGlvbiBj
YWxsYmFjayhwcm90b3R5cGVzKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgYm9keSA9IHRo
aXMuYm9keUVsZW1lbnQ7CiAgICAgICAgICAgICBib2R5LnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAg
ICAgICAgICBzZWxmLnNlY3Rpb25zID0gW107CisgICAgICAgICAgICB0aGlzLnNlY3Rpb25zID0g
W107CiAKICAgICAgICAgICAgIC8vIEdldCBhcnJheSBvZiBwcm90b3R5cGUgdXNlci1mcmllbmRs
eSBuYW1lcy4KICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvdG90eXBlcy5sZW5n
dGg7ICsraSkgewpAQCAtNTUsMTEgKzU1LDExIEBAIFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2lk
ZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGlmICh0aXRsZS5tYXRjaCgv
UHJvdG90eXBlJC8pKQogICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRpdGxlLnJlcGxhY2Uo
L1Byb3RvdHlwZSQvLCAiIik7CiAgICAgICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSBuZXcgV2Vi
SW5zcGVjdG9yLk9iamVjdFByb3BlcnRpZXNTZWN0aW9uKHByb3RvdHlwZSwgdGl0bGUpOwotICAg
ICAgICAgICAgICAgIHNlbGYuc2VjdGlvbnMucHVzaChzZWN0aW9uKTsKKyAgICAgICAgICAgICAg
ICB0aGlzLnNlY3Rpb25zLnB1c2goc2VjdGlvbik7CiAgICAgICAgICAgICAgICAgYm9keS5hcHBl
bmRDaGlsZChzZWN0aW9uLmVsZW1lbnQpOwogICAgICAgICAgICAgfQotICAgICAgICB9OwotICAg
ICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXRGb3JOb2RlKG5vZGUpLmdldFByb3RvdHlwZXMo
bm9kZS5pZCwgY2FsbGJhY2spOworICAgICAgICB9CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQu
Z2V0Tm9kZVByb3RvdHlwZXMobm9kZS5pZCwgY2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlbW90
ZU9iamVjdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVtb3RlT2Jq
ZWN0LmpzCmluZGV4IDRkNjczNmMuLjEwYWYyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVtb3RlT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVtb3RlT2JqZWN0LmpzCkBAIC01Miw3ICs1Miw3IEBAIFdl
Ykluc3BlY3Rvci5SZW1vdGVPYmplY3QucmVzb2x2ZU5vZGUgPSBmdW5jdGlvbihub2RlLCBjYWxs
YmFjaykKICAgICB7CiAgICAgICAgIGNhbGxiYWNrKG9iamVjdCA/IFdlYkluc3BlY3Rvci5SZW1v
dGVPYmplY3QuZnJvbVBheWxvYWQob2JqZWN0KSA6IG51bGwpOwogICAgIH0KLSAgICBJbmplY3Rl
ZFNjcmlwdEFjY2Vzcy5nZXRGb3JOb2RlKG5vZGUpLnJlc29sdmVOb2RlKG5vZGUuaWQsIG15Y2Fs
bGJhY2spOworICAgIEluc3BlY3RvckJhY2tlbmQucmVzb2x2ZU5vZGUobm9kZS5pZCwgbXljYWxs
YmFjayk7CiB9CiAKIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQgPSBmdW5j
dGlvbihwYXlsb2FkKQpAQCAtMTE4LDcgKzExOCw3IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHByb3BlcnRpZXNbaV0udmFsdWUgPSBX
ZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHByb3BlcnRpZXNbaV0udmFsdWUp
OwogICAgICAgICAgICAgY2FsbGJhY2socHJvcGVydGllcyk7CiAgICAgICAgIH0KLSAgICAgICAg
SW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0Rm9yT2JqZWN0SWQodGhpcy5fb2JqZWN0SWQpLmdldFBy
b3BlcnRpZXModGhpcy5fb2JqZWN0SWQsIGlnbm9yZUhhc093blByb3BlcnR5LCBhYmJyZXZpYXRl
LCByZW1vdGVPYmplY3RCaW5kZXIpOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFByb3Bl
cnRpZXModGhpcy5fb2JqZWN0SWQsICEhaWdub3JlSGFzT3duUHJvcGVydHksIGFiYnJldmlhdGUs
IHJlbW90ZU9iamVjdEJpbmRlcik7CiAgICAgfSwKIAogICAgIHNldFByb3BlcnR5VmFsdWU6IGZ1
bmN0aW9uKG5hbWUsIHZhbHVlLCBjYWxsYmFjaykKQEAgLTEyNywxMiArMTI3LDEyIEBAIFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgY2FsbGJhY2so
ZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIEluamVjdGVk
U2NyaXB0QWNjZXNzLmdldEZvck9iamVjdElkKHRoaXMuX29iamVjdElkKS5zZXRQcm9wZXJ0eVZh
bHVlKHRoaXMuX29iamVjdElkLCBuYW1lLCB2YWx1ZSwgY2FsbGJhY2spOworICAgICAgICBJbnNw
ZWN0b3JCYWNrZW5kLnNldFByb3BlcnR5VmFsdWUodGhpcy5fb2JqZWN0SWQsIG5hbWUsIHZhbHVl
LCBjYWxsYmFjayk7CiAgICAgfSwKIAogICAgIHB1c2hOb2RlVG9Gcm9udGVuZDogZnVuY3Rpb24o
Y2FsbGJhY2spCiAgICAgewotICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXRGb3JPYmpl
Y3RJZCh0aGlzLl9vYmplY3RJZCkucHVzaE5vZGVUb0Zyb250ZW5kKHRoaXMuX29iamVjdElkLCBj
YWxsYmFjayk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQucHVzaE5vZGVUb0Zyb250ZW5kKHRo
aXMuX29iamVjdElkLCBjYWxsYmFjayk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IGVkYjBkMjMuLjZh
ZjEyNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0c1BhbmVsLmpzCkBAIC0zNjYsNyArMzY2LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgICAg
IGNhbGxiYWNrKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocmVzdWx0KSk7
CiAgICAgICAgIH0KLSAgICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0KGNhbGxGcmFtZS53
b3JsZElkKS5ldmFsdWF0ZUluQ2FsbEZyYW1lKGNhbGxGcmFtZS5pZCwgY29kZSwgb2JqZWN0R3Jv
dXAsIGV2YWxDYWxsYmFjayk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZXZhbHVhdGVJbkNh
bGxGcmFtZShjYWxsRnJhbWUud29ybGRJZCwgY2FsbEZyYW1lLmlkLCBjb2RlLCBvYmplY3RHcm91
cCwgZXZhbENhbGxiYWNrKTsKICAgICB9LAogCiAgICAgX2RlYnVnZ2VyUGF1c2VkOiBmdW5jdGlv
bihldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YwppbmRleCBkYjkyZmYzLi5jZDY4YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC01MSw3ICs1MSw2IEBACiAgICAgPGZpbGU+SGVscFNj
cmVlbi5qczwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZVZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+
SW5qZWN0ZWRGYWtlV29ya2VyLmpzPC9maWxlPgotICAgIDxmaWxlPkluamVjdGVkU2NyaXB0QWNj
ZXNzLmpzPC9maWxlPgogICAgIDxmaWxlPmluc3BlY3Rvci5qczwvZmlsZT4KICAgICA8ZmlsZT5J
bnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzPC9maWxlPgogICAgIDxmaWxlPktleWJvYXJkU2hv
cnRjdXQuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuaHRtbAppbmRleCA3MDU1MDkyLi5jYTZkNDEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTE0Myw3ICsx
NDMsNiBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IkhlYXBTbmFwc2hvdFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkRlYnVnZ2VyTW9kZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRPTUFnZW50LmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJJbmplY3RlZFNjcmlwdEFjY2Vzcy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGlt
ZWxpbmVBZ2VudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iVGltZWxpbmVQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGltZWxpbmVPdmVydmlld1BhbmUuanMiPjwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwZmVhMjIyLi5lNGI5N2M2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTAxLTE4ICBQYXZlbCBGZWxk
bWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1ha2UgSW5qZWN0ZWRTY3JpcHRB
Y2Nlc3MgQVBJIGEgcGFydCBvZiBXZWIgSW5zcGVjdG9yIHByb3RvY29sLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI2NTIKKworICAgICAgICBDYWxs
cyBzZXJ2ZWQgYnkgdGhlIEluamVjdGVkU2NyaXB0IHNob3VsZCBiZSBmaXJzdCBjbGFzcyBwcm90
b2NvbAorICAgICAgICBjaXRpemVucywgbm90IGRpc3BhdGNoZWQgdmlhIHNpbmdsZSBwcm90b2Nv
bCBtZXNzYWdlLgorCisgICAgICAgICogc3JjL2pzL1Rlc3RzLmpzOgorCiAyMDExLTAxLTE4ICBW
aWN0b3JpYSBLaXJzdCAgPHZya0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSdXNzZWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
anMvVGVzdHMuanMgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9UZXN0cy5qcwppbmRl
eCBmMmU4ZGNiLi42ZWQ4ZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9qcy9UZXN0cy5qcworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9UZXN0cy5q
cwpAQCAtNzQxLDMyICs3NDEsNiBAQCBUZXN0U3VpdGUucHJvdG90eXBlLl93YWl0VW50aWxTY3Jp
cHRzQXJlUGFyc2VkID0gZnVuY3Rpb24oZXhwZWN0ZWRTY3JpcHRzLCBjYWxsYgogCiAKIC8qKgot
ICogRXhlY3V0ZXMgdGhlICdjb2RlJyB3aXRoIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldFByb3Bl
cnRpZXMgb3ZlcnJpZGVuCi0gKiBzbyB0aGF0IGFsbCBjYWxsYmFja3MgcGFzc2VkIHRvIEluamVj
dGVkU2NyaXB0QWNjZXNzLmdldFByb3BlcnRpZXMgYXJlCi0gKiBleHRlbmRlZCB3aXRoIHRoZSAi
aG9vayIuCi0gKiBAcGFyYW0ge0Z1bmN0aW9ufSBob29rIFRoZSBob29rIGZ1bmN0aW9uLgotICog
QHBhcmFtIHtGdW5jdGlvbn0gY29kZSBBIGNvZGUgc25pcHBldCB0byBiZSBleGVjdXRlZC4KLSAq
LwotVGVzdFN1aXRlLnByb3RvdHlwZS5faG9va0dldFByb3BlcnRpZXNDYWxsYmFjayA9IGZ1bmN0
aW9uKGhvb2ssIGNvZGUpCi17Ci0gICAgdmFyIGFjY2Vzc29yID0gSW5qZWN0ZWRTY3JpcHRBY2Nl
c3MucHJvdG90eXBlOwotICAgIHZhciBvcmlnID0gYWNjZXNzb3IuZ2V0UHJvcGVydGllczsKLSAg
ICBhY2Nlc3Nvci5nZXRQcm9wZXJ0aWVzID0gZnVuY3Rpb24ob2JqZWN0UHJveHksIGlnbm9yZUhh
c093blByb3BlcnR5LCBhYmJyZXZpYXRlLCBjYWxsYmFjaykgewotICAgICAgICBvcmlnLmNhbGwo
dGhpcywgb2JqZWN0UHJveHksIGlnbm9yZUhhc093blByb3BlcnR5LCBhYmJyZXZpYXRlLAotICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KHRoaXMs
IGFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgIGhvb2soKTsKLSAgICAgICAgICAgIH0pOwotICAg
IH07Ci0gICAgdHJ5IHsKLSAgICAgICAgY29kZSgpOwotICAgIH0gZmluYWxseSB7Ci0gICAgICAg
IGFjY2Vzc29yLmdldFByb3BlcnRpZXMgPSBvcmlnOwotICAgIH0KLX07Ci0KLQotLyoqCiAgKiBL
ZXkgZXZlbnQgd2l0aCBnaXZlbiBrZXkgaWRlbnRpZmllci4KICAqLwogVGVzdFN1aXRlLmNyZWF0
ZUtleUV2ZW50ID0gZnVuY3Rpb24oa2V5SWRlbnRpZmllcikK
</data>
<flag name="review"
          id="70807"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>