<?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>119343</bug_id>
          
          <creation_ts>2013-07-31 10:44:20 -0700</creation_ts>
          <short_desc>Some cleanup in JSValue::get</short_desc>
          <delta_ts>2013-08-01 14:05:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mark.lam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>spena</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>913413</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-07-31 10:44:20 -0700</bug_when>
    <thetext>JSValue::get is implemented to:
    1) Check if the value is a cell – if not, synthesize a prototype to search,
    2) call getOwnPropertySlot on the cell,
    3) if this returns false, cast to JSObject to get the prototype, and walk the prototype chain.
By all rights this should crash when passed a string and accessing a property that does not exist, because the string is a cell, getOwnPropertySlot should return false, and the cast to JSObject should be unsafe.  To work around this, JSString::getOwnPropertySlot actually implements &apos;get&apos; functionality - searching the prototype chain, and faking out a return value of undefined if no property is found.

This is a huge hazard, since fixing JSString::getOwnPropertySlot or calling getOwnPropertySlot on cells from elsewhere would introduce bugs.  Fortunately it is only ever called in this one place.

The fix here is to move getOwnPropertySlot onto JSObjecte and end this madness - cells don&apos;t have property slots anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913417</commentid>
    <comment_count>1</comment_count>
      <attachid>207862</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-07-31 10:48:44 -0700</bug_when>
    <thetext>Created attachment 207862
fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913418</commentid>
    <comment_count>2</comment_count>
      <attachid>207862</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-07-31 10:53:23 -0700</bug_when>
    <thetext>Comment on attachment 207862
fix

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

r=me

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:675
&gt; -    
&gt; +

Please revert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913433</commentid>
    <comment_count>3</comment_count>
      <attachid>207862</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-07-31 11:27:49 -0700</bug_when>
    <thetext>Comment on attachment 207862
fix

Attachment 207862 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/1297657</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913478</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-07-31 13:43:43 -0700</bug_when>
    <thetext>Fixed in r153532, r153537.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913595</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-07-31 18:44:39 -0700</bug_when>
    <thetext>This broke bindings generation tests; please fix:
http://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK1%20%28Tests%29?numbuilds=200</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913862</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-08-01 14:05:56 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; This broke bindings generation tests; please fix:
&gt; http://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK1%20%28Tests%29?numbuilds=200

The fix for the bindings test is at https://bugs.webkit.org/show_bug.cgi?id=119410.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207862</attachid>
            <date>2013-07-31 10:48:44 -0700</date>
            <delta_ts>2013-07-31 11:27:49 -0700</delta_ts>
            <desc>fix</desc>
            <filename>119343.1.patch</filename>
            <type>text/plain</type>
            <size>95368</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUzNDgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBA
CisyMDEzLTA3LTMwICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBTb21lIGNsZWFudXAgaW4gSlNWYWx1ZTo6Z2V0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTkzNDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKU1ZhbHVlOjpnZXQgaXMgaW1wbGVtZW50
ZWQgdG86CisgICAgICAgICAgICAxKSBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYSBjZWxsIOKAk8Kg
aWYgbm90LCBzeW50aGVzaXplIGEgcHJvdG90eXBlIHRvIHNlYXJjaCwKKyAgICAgICAgICAgIDIp
IGNhbGwgZ2V0T3duUHJvcGVydHlTbG90IG9uIHRoZSBjZWxsLAorICAgICAgICAgICAgMykgaWYg
dGhpcyByZXR1cm5zIGZhbHNlLCBjYXN0IHRvIEpTT2JqZWN0IHRvIGdldCB0aGUgcHJvdG90eXBl
LCBhbmQgd2FsayB0aGUgcHJvdG90eXBlIGNoYWluLgorICAgICAgICBCeSBhbGwgcmlnaHRzIHRo
aXMgc2hvdWxkIGNyYXNoIHdoZW4gcGFzc2VkIGEgc3RyaW5nIGFuZCBhY2Nlc3NpbmcgYSBwcm9w
ZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0LCBiZWNhdXNlCisgICAgICAgIHRoZSBzdHJpbmcgaXMg
YSBjZWxsLCBnZXRPd25Qcm9wZXJ0eVNsb3Qgc2hvdWxkIHJldHVybiBmYWxzZSwgYW5kIHRoZSBj
YXN0IHRvIEpTT2JqZWN0IHNob3VsZCBiZSB1bnNhZmUuCisgICAgICAgIFRvIHdvcmsgYXJvdW5k
IHRoaXMsIEpTU3RyaW5nOjpnZXRPd25Qcm9wZXJ0eVNsb3QgYWN0dWFsbHkgaW1wbGVtZW50cyAn
Z2V0JyBmdW5jdGlvbmFsaXR5IC0gc2VhcmNoaW5nIHRoZQorICAgICAgICBwcm90b3R5cGUgY2hh
aW4sIGFuZCBmYWtpbmcgb3V0IGEgcmV0dXJuIHZhbHVlIG9mIHVuZGVmaW5lZCBpZiBubyBwcm9w
ZXJ0eSBpcyBmb3VuZC4KKworICAgICAgICBUaGlzIGlzIGEgaHVnZSBoYXphcmQsIHNpbmNlIGZp
eGluZyBKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlTbG90IG9yIGNhbGxpbmcgZ2V0T3duUHJvcGVy
dHlTbG90IG9uIGNlbGxzCisgICAgICAgIGZyb20gZWxzZXdoZXJlIHdvdWxkIGludHJvZHVjZSBi
dWdzLiBGb3J0dW5hdGVseSBpdCBpcyBvbmx5IGV2ZXIgY2FsbGVkIGluIHRoaXMgb25lIHBsYWNl
LgorCisgICAgICAgIFRoZSBmaXggaGVyZSBpcyB0byBtb3ZlIGdldE93blByb3BlcnR5U2xvdCBv
bnRvIEpTT2JqZWN0ZcKgYW5kIGVuZCB0aGlzIG1hZG5lc3MgLSBjZWxscyBkb24ndCBoYXZlIHBy
b3BlcnR5CisgICAgICAgIHNsb3RzIGFueXdheS4KKworICAgICAgICBJbnRlcmVzdGluZyBjaGFu
Z2VzIGFyZSBpbiBKU0NKU1ZhbHVlSW5saW5lcy5oLCBKU1N0cmluZy5jcHAgLSB0aGUgcmVzdCBp
cyBwcmV0dHkgbXVjaCBhbGwgSlNDZWxsIC0+IEpTT2JqZWN0LgorCiAyMDEzLTA3LTMwICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggcHJvYmxlbXMgd2l0aCBk
aXZvdCBhbmQgbGluZVN0YXJ0IG1pc21hdGNoZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSlNDVHlwZWRBcnJheVN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0pTQ1R5cGVkQXJyYXlTdHVicy5oCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDkg
KzUzLDkgQEAgcHVibGljOiBcCiAgICAgICAgIHJldHVybiBwdHI7IFwKICAgICB9XAogXAotICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYp
O1wKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OlByb3Bl
cnR5U2xvdCYpO1wKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlND
OjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1wKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XAorICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1wKICAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1wKICAg
ICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCk7XAogICAgIHN0YXRpYyBj
b25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87XApAQCAtOTksOSArOTksOSBAQCB2b2lkIEpTIyNu
YW1lIyNBcnJheTo6ZmluaXNoQ3JlYXRpb24oVk0mCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2lu
Zm8pKTtcCiB9XAogXAotYm9vbCBKUyMjbmFtZSMjQXJyYXk6OmdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KVwKK2Jvb2wgSlMjI25hbWUjI0FycmF5OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXAoge1wKLSAgICBKUyMjbmFtZSMjQXJyYXkq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlMjI25hbWUjI0FycmF5Kj4oY2VsbCk7XAorICAgIEpTIyNu
YW1lIyNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKUyMjbmFtZSMjQXJyYXkqPihvYmplY3Qp
O1wKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pO1wK
ICAgICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7XAogICAgIGlmIChp
bmRleCA8IHRoaXNPYmplY3QtPm1fc3RvcmFnZUxlbmd0aCkge1wKQEAgLTEwOSw3ICsxMDksNyBA
QCBib29sIEpTIyNuYW1lIyNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90CiAgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpc09iamVjdC0+Z2V0QnlJbmRleChleGVjLCBpbmRleCkpO1wKICAgICAgICAg
cmV0dXJuIHRydWU7XAogICAgIH1cCi0gICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xv
dChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1wKKyAgICByZXR1cm4gQmFzZTo6Z2V0
T3duUHJvcGVydHlTbG90KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTtcCiB9XAog
XAogYm9vbCBKUyMjbmFtZSMjQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilcCkBAIC0xMjUsOSArMTI1LDkgQEAgYm9vbCBK
UyMjbmFtZSMjQXJyYXk6OmdldE93blByb3BlcnR5RGVzYwogICAgIHJldHVybiBCYXNlOjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IpO1wKIH1cCiBcCi1ib29sIEpTIyNuYW1lIyNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpXAorYm9vbCBKUyMjbmFtZSMjQXJyYXk6OmdldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcCiB7XAotICAgIEpTIyNuYW1lIyNB
cnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKUyMjbmFtZSMjQXJyYXkqPihjZWxsKTtcCisgICAg
SlMjI25hbWUjI0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTIyNuYW1lIyNBcnJheSo+KG9i
amVjdCk7XAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5m
byk7XAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPCB0aGlzT2JqZWN0LT5tX3N0b3JhZ2VMZW5ndGgp
IHtcCiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdC0+Z2V0QnlJbmRleChleGVjLCBw
cm9wZXJ0eU5hbWUpKTtcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3QuaAkocmV2aXNpb24gMTUzMzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw4ICsxNzYsOCBA
QCBwcml2YXRlOgogCiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKLSAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwogICAgIAogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVu
Y3Rpb25zLmgJKHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsOSArMTIy
LDkgQEAgU3RyaW5nIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2xhc3NOYQogfQogCiB0ZW1w
bGF0ZSA8Y2xhc3MgUGFyZW50PgotYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
LSAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmpl
Y3QqPihjZWxsKTsKKyAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
Q2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwogICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihl
eGVjKTsKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CkBAIC0xODMsOSArMTgzLDkg
QEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blBybwogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgotYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKLSAgICByZXR1cm4gY2VsbC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KGNl
bGwsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdCk7Cisg
ICAgcmV0dXJuIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KG9iamVj
dCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0K
IAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCShyZXZpc2lvbiAxNTMz
OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsOSArNjUsOSBAQCBTdHJpbmcgRGVidWdnZXJBY3Rp
dmF0aW9uOjpjbGFzc05hbWUoY29uCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1fYWN0aXZhdGlv
bi0+bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQo
KSk7CiB9CiAKLWJvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgRGVidWdnZXJBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgRGVidWdnZXJBY3RpdmF0aW9u
KiB0aGlzT2JqZWN0ID0ganNDYXN0PERlYnVnZ2VyQWN0aXZhdGlvbio+KGNlbGwpOworICAgIERl
YnVnZ2VyQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlckFjdGl2YXRpb24q
PihvYmplY3QpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRh
YmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCks
IGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDE1
MzM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAgICAgICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7Ci0gICAg
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZv
aWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9u
IDE1MzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY3Miw3ICs2NzIsNyBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRC
eVZhbChFeGVjU3RhdGUqIGV4ZWMsCiAKICAgICBpZiAoaXNOYW1lKHN1YnNjcmlwdCkpCiAgICAg
ICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGpzQ2FzdDxOYW1lSW5zdGFuY2UqPihzdWJz
Y3JpcHQuYXNDZWxsKCkpLT5wcml2YXRlTmFtZSgpKTsKLSAgICAKKwogICAgIElkZW50aWZpZXIg
cHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAg
ICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHkpOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCShyZXZpc2lvbiAxNTMzOTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05MCw5ICs5MCw5IEBAIHZvaWQgQXJndW1lbnRzOjpmaWxsQXJnTGlzdChFeGVj
U3RhdGUqIGUKICAgICB9CiB9CiAKLWJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCitib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKLSAgICBBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8QXJndW1lbnRz
Kj4oY2VsbCk7CisgICAgQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PEFyZ3VtZW50cyo+
KG9iamVjdCk7CiAgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSB0aGlzT2JqZWN0LT50cnlHZXRBcmd1
bWVudChpKSkgewogICAgICAgICBzbG90LnNldFZhbHVlKHZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC0xMjMsOSArMTIzLDkgQEAgdm9pZCBBcmd1bWVudHM6OmNyZWF0ZVN0cmljdE1v
ZGVDYWxsZWVJZgogICAgIG1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4
ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0K
IAotYm9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQorYm9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKLSAgICBBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8QXJndW1lbnRzKj4o
Y2VsbCk7CisgICAgQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PEFyZ3VtZW50cyo+KG9i
amVjdCk7CiAgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CiAgICAgaWYg
KEpTVmFsdWUgdmFsdWUgPSB0aGlzT2JqZWN0LT50cnlHZXRBcmd1bWVudChpKSkgewogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChpIDwgUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCShyZXZpc2lvbiAxNTMzOTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkod29ya2luZyBj
b3B5KQpAQCAtOTcsOCArOTcsOCBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAg
IHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIHZvaWQgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTUzMzk5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDkg
KzY2LDkgQEAgdm9pZCBBcnJheUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeAogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7
CiB9CiAKLWJvb2wgQXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QgJnNsb3QpCitib29sIEFycmF5Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKLSAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25T
bG90PEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6YXJyYXlDb25zdHJ1Y3RvclRh
YmxlKGV4ZWMpLCBqc0Nhc3Q8QXJyYXlDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxGdW5jdGlv
bj4oZXhlYywgRXhlY1N0YXRlOjphcnJheUNvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxB
cnJheUNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9v
bCBBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDcgKzUzLDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIEFycmF5Q29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKLSAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTUzMzk5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzYsOSArMTM2LDkgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oSlNHbAogICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7
CiB9CiAKLWJvb2wgQXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQorYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8
SlNBcnJheT4oZXhlYywgRXhlY1N0YXRlOjphcnJheVByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nh
c3Q8QXJyYXlQcm90b3R5cGUqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICByZXR1
cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTQXJyYXk+KGV4ZWMsIEV4ZWNTdGF0ZTo6YXJyYXlQ
cm90b3R5cGVUYWJsZShleGVjKSwganNDYXN0PEFycmF5UHJvdG90eXBlKj4ob2JqZWN0KSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCShyZXZp
c2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBBcnJheVByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CiAgICAgICAgIAotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Jvb2xlYW5Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw5ICs2Myw5IEBAIHZv
aWQgQm9vbGVhblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXgKICAgICBBU1NFUlQoaW5oZXJp
dHMoJnNfaW5mbykpOwogfQogCi1ib29sIEJvb2xlYW5Qcm90b3R5cGU6OmdldE93blByb3BlcnR5
U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBCb29sZWFuUHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiB7Ci0gICAgcmV0dXJuIGdldFN0
YXRpY0Z1bmN0aW9uU2xvdDxCb29sZWFuT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OmJvb2xlYW5Q
cm90b3R5cGVUYWJsZShleGVjKSwganNDYXN0PEJvb2xlYW5Qcm90b3R5cGUqPihjZWxsKSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEJvb2xl
YW5PYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6Ym9vbGVhblByb3RvdHlwZVRhYmxlKGV4ZWMpLCBq
c0Nhc3Q8Qm9vbGVhblByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKIGJvb2wgQm9vbGVhblByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaAkocmV2aXNpb24gMTUzMzk5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBC
b29sZWFuUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAt
NjAsMTAgKzYwLDEwIEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgdHlwZWRlZiBib29sICgq
RGVsZXRlUHJvcGVydHlCeUluZGV4RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVu
c2lnbmVkKTsKICAgICBEZWxldGVQcm9wZXJ0eUJ5SW5kZXhGdW5jdGlvblB0ciBkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXg7CiAKLSAgICB0eXBlZGVmIGJvb2wgKCpHZXRPd25Qcm9wZXJ0eVNsb3RGdW5j
dGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKKyAgICB0eXBlZGVmIGJvb2wgKCpHZXRPd25Qcm9wZXJ0eVNsb3RGdW5jdGlvblB0cikoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEdl
dE93blByb3BlcnR5U2xvdEZ1bmN0aW9uUHRyIGdldE93blByb3BlcnR5U2xvdDsKIAotICAgIHR5
cGVkZWYgYm9vbCAoKkdldE93blByb3BlcnR5U2xvdEJ5SW5kZXhGdW5jdGlvblB0cikoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOworICAgIHR5cGVkZWYgYm9v
bCAoKkdldE93blByb3BlcnR5U2xvdEJ5SW5kZXhGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7CiAgICAgR2V0T3duUHJvcGVydHlTbG90
QnlJbmRleEZ1bmN0aW9uUHRyIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXg7CiAKICAgICB0eXBl
ZGVmIEpTVmFsdWUgKCpUb1RoaXNGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgRUNN
QU1vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw5ICs4
Niw5IEBAIHZvaWQgRGF0ZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGUKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoLCBqc051bWJlcig3KSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwog
fQogCi1ib29sIERhdGVDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QgJnNsb3QpCitib29sIERhdGVDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90ICZzbG90KQogewotICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8
SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRlOjpkYXRlQ29uc3RydWN0b3JUYWJsZShl
eGVjKSwganNDYXN0PERhdGVDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhl
YywgRXhlY1N0YXRlOjpkYXRlQ29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PERhdGVDb25z
dHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgRGF0ZUNv
bnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTUzMzk5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcg
KzU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdl
dENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwogICAgICAgICBzdGF0aWMg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAotICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
IAogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMTUzMzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNCw5ICs1MTQsOSBAQCB2b2lk
IERhdGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWNTCiAgICAgLy8gVGhlIGNvbnN0cnVj
dG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIsIGFmdGVyIERhdGVDb25zdHJ1Y3RvciBoYXMgYmVlbiBi
dWlsdC4KIH0KIAotYm9vbCBEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKK2Jvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNs
b3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZGF0ZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8RGF0
ZVByb3RvdHlwZSo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBnZXRT
dGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZGF0ZVRhYmxlKGV4
ZWMpLCBqc0Nhc3Q8RGF0ZVByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKIGJvb2wgRGF0ZVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24gMTUzMzk5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcHJvdG90eXBl
LT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0dXJu
IHByb3RvdHlwZTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxNTMzOTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYxLDkgKzYxLDkgQEAgdm9pZCBFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oRXhlYwogICAgIHB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyhBU0NJSUxpdGVyYWwoIkVy
cm9yIikpKSwgRG9udEVudW0pOwogfQogCi1ib29sIEVycm9yUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK2Jvb2wgRXJyb3JQcm90b3R5cGU6OmdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKLSAgICByZXR1cm4gZ2V0
U3RhdGljRnVuY3Rpb25TbG90PEVycm9ySW5zdGFuY2U+KGV4ZWMsIEV4ZWNTdGF0ZTo6ZXJyb3JQ
cm90b3R5cGVUYWJsZShleGVjKSwganNDYXN0PEVycm9yUHJvdG90eXBlKj4oY2VsbCksIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxFcnJvcklu
c3RhbmNlPihleGVjLCBFeGVjU3RhdGU6OmVycm9yUHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2Fz
dDxFcnJvclByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJv
b2wgRXJyb3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMTUzMzk5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgRXJyb3JJ
bnN0YW5jZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB9OwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAJ
KHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0
aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw5ICsxNTAsOSBAQCBpbmxpbmUgYm9v
bCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgSlNBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K2Jvb2wgSlNBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7Ci0gICAgSlNBY3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQWN0aXZh
dGlvbio+KGNlbGwpOworICAgIEpTQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Fj
dGl2YXRpb24qPihvYmplY3QpOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSB7CiAgICAgICAgIC8vIERlZmVuZCBhZ2FpbnN0IHRoZSBp
bnNwZWN0b3IgYXNraW5nIGZvciB0aGUgYXJndW1lbnRzIG9iamVjdCBhZnRlciBpdCBoYXMgYmVl
biBvcHRpbWl6ZWQgb3V0LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
Y3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQg
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMTUzMzk5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3Nyw5ICsxNzcsOSBAQCBib29sIEpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0CiAgICAgcmV0dXJuIGFycmF5LT5KU09iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0
eShleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKIH0KIAot
Ym9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jv
b2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQog
ewotICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOworICAg
IEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KG9iamVjdCk7CiAgICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAg
IHNsb3Quc2V0VmFsdWUoanNOdW1iZXIodGhpc09iamVjdC0+bGVuZ3RoKCkpKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5o
CShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgdGhyb3dF
eGNlcHRpb24pOwogCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYpOwogCiAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlu
bGluZXMuaAkocmV2aXNpb24gMTUzMzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjI3LDIxICs2MjcsMTkg
QEAgaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZQogCiBpbmxpbmUgSlNW
YWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIGNvbnN0CiB7Ci0gICAgaWYgKFVOTElLRUxZKCFpc0Nl
bGwoKSkpIHsKLSAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IHN5bnRoZXNpemVQcm90b3R5
cGUoZXhlYyk7Ci0gICAgICAgIGlmICghcHJvdG90eXBlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywg
cHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
ICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOwotICAgIH0K
LSAgICBKU0NlbGwqIGNlbGwgPSBhc0NlbGwoKTsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAg
ICBpZiAoY2VsbC0+ZmFzdEdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKQorICAgIC8vIElmIHRoaXMgaXMgYSBwcmltaXRpdmUsIHdlJ2xsIG5lZWQgdG8gc3ludGhl
c2l6ZSB0aGUgcHJvdG90eXBlIC0KKyAgICAvLyBhbmQgaWYgaXQncyBhIHN0cmluZyB0aGVyZSBh
cmUgc3BlY2lhbCBwcm9wZXJ0aWVzIHRvIGNoZWNrIGZpcnN0LgorICAgIEpTT2JqZWN0KiBvYmpl
Y3Q7CisgICAgaWYgKFVOTElLRUxZKCFpc09iamVjdCgpKSkgeworICAgICAgICBpZiAoaXNDZWxs
KCkgJiYgYXNTdHJpbmcoKnRoaXMpLT5nZXRTdHJpbmdQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KSkKICAgICAgICAgICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIHBy
b3BlcnR5TmFtZSk7Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gYXNPYmplY3QoY2VsbCkt
PnByb3RvdHlwZSgpOwotICAgICAgICBpZiAoIXByb3RvdHlwZS5pc09iamVjdCgpKQotICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgICAgIGNlbGwgPSBhc09iamVjdChwcm90
b3R5cGUpOwotICAgIH0KKyAgICAgICAgb2JqZWN0ID0gc3ludGhlc2l6ZVByb3RvdHlwZShleGVj
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgb2JqZWN0ID0gYXNPYmplY3QoYXNDZWxsKCkpOworICAg
IAorICAgIGlmIChvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKQorICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOwor
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpn
ZXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0CkBAIC02NTIs
MjEgKzY1MCwxOSBAQCBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBlCiAK
IGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdAogewotICAgIGlmIChVTkxJS0VM
WSghaXNDZWxsKCkpKSB7Ci0gICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBzeW50aGVzaXpl
UHJvdG90eXBlKGV4ZWMpOwotICAgICAgICBpZiAoIXByb3RvdHlwZS0+Z2V0UHJvcGVydHlTbG90
KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCi0gICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLSAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsK
LSAgICB9Ci0gICAgSlNDZWxsKiBjZWxsID0gY29uc3RfY2FzdDxKU0NlbGwqPihhc0NlbGwoKSk7
Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgaWYgKGNlbGwtPm1ldGhvZFRhYmxlKCktPmdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkK
KyAgICAvLyBJZiB0aGlzIGlzIGEgcHJpbWl0aXZlLCB3ZSdsbCBuZWVkIHRvIHN5bnRoZXNpemUg
dGhlIHByb3RvdHlwZSAtCisgICAgLy8gYW5kIGlmIGl0J3MgYSBzdHJpbmcgdGhlcmUgYXJlIHNw
ZWNpYWwgcHJvcGVydGllcyB0byBjaGVjayBmaXJzdC4KKyAgICBKU09iamVjdCogb2JqZWN0Owor
ICAgIGlmIChVTkxJS0VMWSghaXNPYmplY3QoKSkpIHsKKyAgICAgICAgaWYgKGlzQ2VsbCgpICYm
IGFzU3RyaW5nKCp0aGlzKS0+Z2V0U3RyaW5nUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpCiAgICAgICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0
eU5hbWUpOwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGFzT2JqZWN0KGNlbGwpLT5wcm90
b3R5cGUoKTsKLSAgICAgICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKLSAgICAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICBjZWxsID0gcHJvdG90eXBlLmFzQ2VsbCgp
OwotICAgIH0KKyAgICAgICAgb2JqZWN0ID0gc3ludGhlc2l6ZVByb3RvdHlwZShleGVjKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgb2JqZWN0ID0gYXNPYmplY3QoYXNDZWxsKCkpOworICAgIAorICAg
IGlmIChvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQor
ICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogfQogCiBpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAJKHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDMwICs4Miw2IEBAIENvbnN0cnVj
dFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEoKICAgICByZXR1cm4gQ29uc3RydWN0VHlw
ZU5vbmU7CiB9CiAKLWJvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCi17Ci0gICAgLy8gVGhpcyBpcyBub3QgYSBnZW5lcmFsIHB1cnBvc2UgaW1wbGVtZW50
YXRpb24gb2YgZ2V0T3duUHJvcGVydHlTbG90LgotICAgIC8vIEl0IHNob3VsZCBvbmx5IGJlIGNh
bGxlZCBieSBKU1ZhbHVlOjpnZXQuCi0gICAgLy8gSXQgY2FsbHMgZ2V0UHJvcGVydHlTbG90LCBu
b3QgZ2V0T3duUHJvcGVydHlTbG90LgotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjZWxsLT50b09i
amVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIHNsb3Quc2V0QmFz
ZShvYmplY3QpOwotICAgIGlmICghb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnRp
Zmllciwgc2xvdCkpCi0gICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWJvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCi17Ci0gICAgLy8gVGhpcyBpcyBub3QgYSBnZW5lcmFsIHB1cnBvc2UgaW1wbGVtZW50
YXRpb24gb2YgZ2V0T3duUHJvcGVydHlTbG90LgotICAgIC8vIEl0IHNob3VsZCBvbmx5IGJlIGNh
bGxlZCBieSBKU1ZhbHVlOjpnZXQuCi0gICAgLy8gSXQgY2FsbHMgZ2V0UHJvcGVydHlTbG90LCBu
b3QgZ2V0T3duUHJvcGVydHlTbG90LgotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjZWxsLT50b09i
amVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIHNsb3Quc2V0QmFz
ZShvYmplY3QpOwotICAgIGlmICghb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnRp
Zmllciwgc2xvdCkpCi0gICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KIHZvaWQgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkpIHsKQEAgLTE4Niw2ICsxNjIsMTgg
QEAgSlNWYWx1ZSBKU0NlbGw6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iagogICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogfQogCitib29sIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKQoreworICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEpTQ2VsbDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKQogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTUzMzk5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExOCwxMSArMTE4LDYgQEAgcHVibGljOgogICAgIHZvaWQgemFwKCkgeyAqcmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3QqKj4odGhpcykgPSAwOyB9CiAgICAgYm9vbCBpc1phcHBlZCgpIGNvbnN0
IHsgcmV0dXJuICEqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqIGNvbnN0Kj4odGhpcyk7IH0K
IAotICAgIC8vIEZJWE1FOiBSZW5hbWUgZ2V0T3duUHJvcGVydHlTbG90IHRvIHZpcnR1YWxHZXRP
d25Qcm9wZXJ0eVNsb3QsIGFuZAotICAgIC8vIGZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QgdG8gZ2V0
T3duUHJvcGVydHlTbG90LiBDYWxsZXJzIHNob3VsZCBhbHdheXMKLSAgICAvLyBjYWxsIHRoaXMg
ZnVuY3Rpb24sIG5vdCBpdHMgc2xvd2VyIHZpcnR1YWwgY291bnRlcnBhcnQuIChGb3IgaW50ZWdl
cgotICAgIC8vIHByb3BlcnR5IG5hbWVzLCB3ZSB3YW50IGEgc2ltaWxhciBpbnRlcmZhY2Ugd2l0
aCBhcHByb3ByaWF0ZSBvcHRpbWl6YXRpb25zLikKLSAgICBib29sIGZhc3RHZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU1Zh
bHVlIGZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKIAogICAg
IHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0dXJlT2Zmc2V0KCkKQEAgLTE0NSwxMCArMTQwLDYgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiwgU3RydWN0dXJlKiwgQ3JlYXRpbmdFYXJseUNlbGxUYWcpOwogCi0gICAg
Ly8gQmFzZSBpbXBsZW1lbnRhdGlvbjsgZm9yIG5vbi1vYmplY3QgY2xhc3NlcyBpbXBsZW1lbnRz
IGdldFByb3BlcnR5U2xvdC4KLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0KICAgICAvLyBEdW1teSBpbXBs
ZW1lbnRhdGlvbnMgb2Ygb3ZlcnJpZGUtYWJsZSBzdGF0aWMgZnVuY3Rpb25zIGZvciBjbGFzc2Vz
IHRvIHB1dCBpbiB0aGVpciBNZXRob2RUYWJsZQogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRW
YWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUp
OwogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKQEAgLTE1OSw2ICsxNTAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIE5PX1JF
VFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBz
dGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShy
ZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NSwxMyArMTY1LDYgQEAgaW5saW5lIGJvb2wg
SlNDZWxsOjppbmhlcml0cyhjb25zdCBDbGFzcwogICAgIHJldHVybiBjbGFzc0luZm8oKS0+aXNT
dWJDbGFzc09mKGluZm8pOwogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjpmYXN0R2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkpCi0gICAgICAgIHJldHVybiBhc09iamVj
dCh0aGlzKS0+aW5saW5lR2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7Ci0gICAgcmV0dXJuIG1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCiAvLyBGYXN0IGNhbGwgdG8gZ2V0IGEgcHJv
cGVydHkgd2hlcmUgd2UgbWF5IG5vdCB5ZXQgaGF2ZSBjb252ZXJ0ZWQgdGhlIHN0cmluZyB0byBh
bgogLy8gaWRlbnRpZmllci4gVGhlIGZpcnN0IHRpbWUgd2UgcGVyZm9ybSBhIHByb3BlcnR5IGFj
Y2VzcyB3aXRoIGEgZ2l2ZW4gc3RyaW5nLCB0cnkKIC8vIHBlcmZvcm1pbmcgdGhlIHByb3BlcnR5
IG1hcCBsb29rdXAgd2l0aG91dCBmb3JtaW5nIGFuIGlkZW50aWZpZXIuIFdlIGRldGVjdCB0aGlz
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAko
cmV2aXNpb24gMTUzMzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MCw5ICsyNDAsOSBAQCBKU1ZhbHVlIEpTRnVu
Y3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlCiAgICAgcmV0dXJuIHRoaXNPYmotPmpzRXhlY3V0
YWJsZSgpLT5uYW1lVmFsdWUoKTsKIH0KIAotYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIEpTRnVuY3Rpb24qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOworICAgIEpTRnVuY3Rpb24qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7CiAgICAgaWYgKHRoaXNPYmplY3Qt
PmlzSG9zdEZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTUzMzk5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUqIGNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlKEV4ZWNTdGF0ZSosIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSk7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAg
ICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAJKHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY5LDkgKzU2OSw5IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OmFkZFN0YXRpY0dsb2JhbHMoR2wKICAgICB9CiB9CiAKLWJvb2wgSlNH
bG9iYWxPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9v
bCBKU0dsb2JhbE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQogewotICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oY2VsbCk7CisgICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihvYmplY3QpOwogICAgIGlmIChnZXRTdGF0aWNGdW5jdGlvblNsb3Q8
QmFzZT4oZXhlYywgRXhlY1N0YXRlOjpnbG9iYWxPYmplY3RUYWJsZShleGVjKSwgdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJu
IHN5bWJvbFRhYmxlR2V0KHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlz
aW9uIDE1MzM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7
CiAgICAgYm9vbCBoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hbWVTY29wZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYW1lU2NvcGUuY3BwCShyZXZpc2lv
biAxNTMzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hbWVTY29wZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDkgKzc1LDkgQEAgdm9pZCBKU05hbWVTY29wZTo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlYwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLWJvb2wgSlNOYW1lU2NvcGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K2Jvb2wgSlNOYW1lU2NvcGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7Ci0gICAgcmV0dXJuIHN5bWJvbFRhYmxlR2V0KGpzQ2FzdDxKU05hbWVTY29wZSo+KGNlbGwp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBzeW1ib2xUYWJsZUdldChqc0Nhc3Q8
SlNOYW1lU2NvcGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNj
b3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYW1l
U2NvcGUuaAkocmV2aXNpb24gMTUzMzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNOYW1lU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAgICAgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIEVDTUFNb2Rl
KTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG8sIFR5cGVJbmZvKE5hbWVTY29wZU9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
JnNfaW5mbyk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5P
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Tm90QW5PYmplY3QuY3BwCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTMgKzQ2
LDEzIEBAIEpTVmFsdWUgSlNOb3RBbk9iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnMKIH0KIAogLy8g
SlNPYmplY3QgbWV0aG9kcwotYm9vbCBKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpCiti
b29sIEpTTm90QW5PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKQogewogICAgIEFTU0VSVF9VTlVT
RUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpCitib29sIEpTTm90QW5PYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKQogewogICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgJKHJldmlzaW9uIDE1MzM5OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjgsOCArNjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZSk7CiAKICAgICAgICAgLy8gSlNPYmplY3QgbWV0aG9kcwotICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBzdGF0
aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuY3BwCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTkwLDkgKzU5MCw5
IEBAIGNvbnN0IENsYXNzSW5mbyBKU09OT2JqZWN0OjpzX2luZm8gPSB7ICIKIAogLy8gRUNNQSAx
NS44CiAKLWJvb2wgSlNPTk9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCitib29sIEpTT05PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKLSAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0
PihleGVjLCBFeGVjU3RhdGU6Ompzb25UYWJsZShleGVjKSwganNDYXN0PEpTT05PYmplY3QqPihj
ZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25T
bG90PEpTT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Ompzb25UYWJsZShleGVjKSwganNDYXN0PEpT
T05PYmplY3QqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTT05P
YmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmgJKHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEpTT05PYmplY3QoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTUzMzk5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsMTQg
KzI2MiwxMiBAQCBTdHJpbmcgSlNPYmplY3Q6OmNsYXNzTmFtZShjb25zdCBKU09iamVjCiAgICAg
cmV0dXJuIGluZm8tPmNsYXNzTmFtZTsKIH0KIAotYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwg
UHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleChKU09iamVjdCogdGhpc09iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gTkIuIFRoZSBmYWN0IHRoYXQgd2UncmUgZGly
ZWN0bHkgY29uc3VsdGluZyBvdXIgaW5kZXhlZCBzdG9yYWdlIGltcGxpZXMgdGhhdCBpdCBpcyBu
b3QKICAgICAvLyBsZWdhbCBmb3IgYW55b25lIHRvIG92ZXJyaWRlIGdldE93blByb3BlcnR5U2xv
dCgpIHdpdGhvdXQgYWxzbyBvdmVycmlkaW5nCiAgICAgLy8gZ2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleCgpLgogICAgIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0
Kj4oY2VsbCk7Ci0gICAgCiAgICAgaWYgKGkgPiBNQVhfQVJSQVlfSU5ERVgpCiAgICAgICAgIHJl
dHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09i
amVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSwgc2xvdCk7CiAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE1MzM5
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMSwxMiArMTMxLDEzIEBAIHB1YmxpYzoKICAgICBKU1ZhbHVlIGdldChFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAKKyAgICBib29sIGZhc3RHZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBi
b29sIGdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRQ
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKIAotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBib29sIGFsbG93c0Fj
Y2Vzc0Zyb20oRXhlY1N0YXRlKik7CkBAIC0xMTcxLDkgKzExNzIsMTYgQEAgQUxXQVlTX0lOTElO
RSBib29sIEpTT2JqZWN0OjppbmxpbmVHZXRPdwogLy8gSXQgbWF5IHNlZW0gY3JhenkgdG8gaW5s
aW5lIGEgZnVuY3Rpb24gdGhpcyBsYXJnZSwgZXNwZWNpYWxseSBhIHZpcnR1YWwgZnVuY3Rpb24s
CiAvLyBidXQgaXQgbWFrZXMgYSBiaWcgZGlmZmVyZW5jZSB0byBwcm9wZXJ0eSBsb29rdXAgdGhh
dCBkZXJpdmVkIGNsYXNzZXMgY2FuIGlubGluZSB0aGVpcgogLy8gYmFzZSBjbGFzcyBjYWxsIHRv
IHRoaXMuCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgcmV0dXJuIGpzQ2Fz
dDxKU09iamVjdCo+KGNlbGwpLT5pbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKKyAgICByZXR1cm4gb2JqZWN0LT5pbmxpbmVHZXRPd25Qcm9wZXJ0eVNs
b3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworQUxXQVlTX0lOTElORSBib29sIEpT
T2JqZWN0OjpmYXN0R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmICghc3RydWN0
dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkpCisgICAgICAg
IHJldHVybiBhc09iamVjdCh0aGlzKS0+aW5saW5lR2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIG1ldGhvZFRhYmxlKCktPmdldE93blByb3Bl
cnR5U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiAvLyBJdCBtYXkg
c2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGlzIGxhcmdlIGJ1dCBpdCBtYWtlcyBh
IGJpZyBkaWZmZXJlbmNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3h5LmNwcAkocmV2aXNpb24gMTUzMzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDE1ICs3MCwxNSBAQCBTdHJpbmcg
SlNQcm94eTo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0CiAgICAgcmV0dXJuIHRoaXNPYmplY3Qt
PnRhcmdldCgpLT5tZXRob2RUYWJsZSgpLT5jbGFzc05hbWUodGhpc09iamVjdC0+dGFyZ2V0KCkp
OwogfQogCi1ib29sIEpTUHJveHk6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQorYm9vbCBKU1Byb3h5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7Ci0gICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2Vs
bCk7CisgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4ob2JqZWN0KTsK
ICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KTsKIH0KIAotYm9vbCBKU1Byb3h5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKK2Jvb2wgSlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogewotICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94
eSo+KGNlbGwpOworICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KG9i
amVjdCk7CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZSgpLT5n
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm94eS5oCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDggKzc0LDggQEAgcHJvdGVjdGVk
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0VGFyZ2V0KFZNJiwgSlNHbG9iYWxPYmpl
Y3QqKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNv
bnN0IEpTT2JqZWN0Kik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMCw3
ICsyMzAsNyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6b3V0T2ZNZW1vcnkoRXhlY1N0YXRlCiAgICAg
ICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKIH0KIAotSlNTdHJpbmcqIEpTUm9wZVN0
cmluZzo6Z2V0SW5kZXhTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGkpCitKU19F
WFBPUlQgSlNTdHJpbmcqIEpTUm9wZVN0cmluZzo6Z2V0SW5kZXhTbG93Q2FzZShFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGkpCiB7CiAgICAgQVNTRVJUKGlzUm9wZSgpKTsKICAgICByZXNvbHZl
Um9wZShleGVjKTsKQEAgLTI4MywyNCArMjgzLDYgQEAgSlNWYWx1ZSBKU1N0cmluZzo6dG9UaGlz
KEpTQ2VsbCogY2VsbCwgRQogICAgIHJldHVybiBTdHJpbmdPYmplY3Q6OmNyZWF0ZShleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzQ2FzdDxKU1N0cmluZyo+KGNlbGwpKTsKIH0K
IAotYm9vbCBKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Ci17Ci0gICAgSlNTdHJpbmcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdHJpbmcqPihjZWxsKTsK
LSAgICAvLyBUaGUgc2VtYW50aWNzIGhlcmUgYXJlIHJlYWxseSBnZXRQcm9wZXJ0eVNsb3QsIG5v
dCBnZXRPd25Qcm9wZXJ0eVNsb3QuCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBi
ZSBjYWxsZWQgYnkgSlNWYWx1ZTo6Z2V0LgotICAgIGlmICh0aGlzT2JqZWN0LT5nZXRTdHJpbmdQ
cm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgc2xvdC5zZXRCYXNlKHRoaXNPYmplY3QpOwotICAgIEpTT2JqZWN0KiBvYmplY3Q7
Ci0gICAgZm9yIChKU1ZhbHVlIHByb3RvdHlwZSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+c3RyaW5nUHJvdG90eXBlKCk7ICFwcm90b3R5cGUuaXNOdWxsKCk7IHByb3RvdHlwZSA9IG9i
amVjdC0+cHJvdG90eXBlKCkpIHsKLSAgICAgICAgb2JqZWN0ID0gYXNPYmplY3QocHJvdG90eXBl
KTsKLSAgICAgICAgaWYgKG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90
KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICBzbG90LnNldFVuZGVmaW5lZCgpOwotICAgIHJldHVybiB0cnVlOwot
fQotCiBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubGVuZ3RoKSB7CkBAIC0zMTgsMTQgKzMwMCw0IEBAIGJvb2wgSlNTdHJpbmc6OmdldFN0cmlu
Z1Byb3BlcnR5RGVzY3JpcHQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNTdHJpbmc6
OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIEpTU3Ry
aW5nKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3RyaW5nKj4oY2VsbCk7Ci0gICAgLy8gVGhlIHNl
bWFudGljcyBoZXJlIGFyZSByZWFsbHkgZ2V0UHJvcGVydHlTbG90LCBub3QgZ2V0T3duUHJvcGVy
dHlTbG90LgotICAgIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IEpT
VmFsdWU6OmdldC4KLSAgICBpZiAodGhpc09iamVjdC0+Z2V0U3RyaW5nUHJvcGVydHlTbG90KGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVy
biBKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZp
ZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZp
c2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsMTAgKzIwMyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBFQ01BTW9kZSk7CiAKLSAgICAgICAgLy8gQWN0dWFsbHkgZ2V0UHJvcGVydHlTbG90LCBu
b3QgZ2V0T3duUHJvcGVydHlTbG90IChzZWUgSlNDZWxsKS4KLSAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKLQogICAgICAgICBTdHJpbmcmIHN0cmluZygpIHsgQVNTRVJUKCFpc1JvcGUoKSk7IHJl
dHVybiBtX3ZhbHVlOyB9CiAKICAgICAgICAgZnJpZW5kIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0
YXRlKiwgSlNTdHJpbmcqLCBKU1N0cmluZyopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmFtZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmFtZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE1MzM5OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hbWVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01OCw5ICs1OCw5IEBAIHZvaWQgTmFtZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
RXhlY1MKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1ib29sIE5hbWVQcm90
b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBOYW1l
UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCiB7
Ci0gICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihleGVjLCBFeGVjU3RhdGU6
OnByaXZhdGVOYW1lUHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxOYW1lUHJvdG90eXBlKj4o
Y2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9u
U2xvdDxCYXNlPihleGVjLCBFeGVjU3RhdGU6OnByaXZhdGVOYW1lUHJvdG90eXBlVGFibGUoZXhl
YyksIGpzQ2FzdDxOYW1lUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
IH0KIAogYm9vbCBOYW1lUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYW1lUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmFtZVByb3RvdHlwZS5oCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYW1lUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU1LDcgKzU1LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE5hbWVJbnN0YW5j
ZTo6U3RydWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYpOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTUzMzk5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Miw5ICs3Miw5IEBAIHZvaWQgTnVtYmVyQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKEUKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT52
bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkg
fCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCi1ib29sIE51bWJlckNvbnN0cnVjdG9yOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgTnVtYmVyQ29uc3Ry
dWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAg
ICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PE51bWJlckNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1
bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6Om51bWJlckNvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpz
Q2FzdDxOdW1iZXJDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAg
IHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8TnVtYmVyQ29uc3RydWN0b3IsIEludGVybmFsRnVu
Y3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6bnVtYmVyQ29uc3RydWN0b3JUYWJsZShleGVjKSwganND
YXN0PE51bWJlckNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAogYm9vbCBOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxNTMzOTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBKU1ZhbHVlIGdldFZhbHVlUHJv
cGVydHkoRXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdDsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAx
NTMzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw5ICs4Myw5IEBAIHZvaWQgTnVtYmVyUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihFeGUKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQog
Ci1ib29sIE51bWJlclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qg
JnNsb3QpCitib29sIE51bWJlclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90ICZzbG90KQogewotICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8TnVt
YmVyT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om51bWJlclByb3RvdHlwZVRhYmxlKGV4ZWMpLCBq
c0Nhc3Q8TnVtYmVyUHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAg
cmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxOdW1iZXJPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0
ZTo6bnVtYmVyUHJvdG90eXBlVGFibGUoZXhlYyksIGpzQ2FzdDxOdW1iZXJQcm90b3R5cGUqPihv
YmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIE51bWJlclByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJv
dG90eXBlLmgJKHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTnVtYmVyUHJvdG90eXBlKEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAxNTMzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDkgKzk0LDkgQEAgdm9pZCBPYmplY3RDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBS
ZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiB9CiAKLWJvb2wgT2JqZWN0Q29uc3Ry
dWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBPYmpl
Y3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90
KQogewotICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIEV4
ZWNTdGF0ZTo6b2JqZWN0Q29uc3RydWN0b3JUYWJsZShleGVjKSwganNDYXN0PE9iamVjdENvbnN0
cnVjdG9yKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIGdldFN0YXRp
Y0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpvYmplY3RDb25zdHJ1Y3Rv
clRhYmxlKGV4ZWMpLCBqc0Nhc3Q8T2JqZWN0Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCiBib29sIE9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KIAotICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
IAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxNTM0NTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk2LDEzICsxOTYsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3Ns
b3RCYXNlOwogICAgIH0KIAotICAgIHZvaWQgc2V0QmFzZShKU1ZhbHVlIGJhc2UpCi0gICAgewot
ICAgICAgICBBU1NFUlQobV9zbG90QmFzZSk7Ci0gICAgICAgIEFTU0VSVChiYXNlKTsKLSAgICAg
ICAgbV9zbG90QmFzZSA9IGJhc2U7Ci0gICAgfQotCiBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEpTVmFsdWUgZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKikgY29uc3Q7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDkgKzE1Myw5IEBA
IEpTVmFsdWUgUmVnRXhwQ29uc3RydWN0b3I6OmdldFJpZ2h0Q29udGUKICAgICByZXR1cm4gbV9j
YWNoZWRSZXN1bHQubGFzdFJlc3VsdChleGVjLCB0aGlzKS0+cmlnaHRDb250ZXh0KGV4ZWMpOwog
fQogICAgIAotYm9vbCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitib29sIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVl
U2xvdDxSZWdFeHBDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgRXhlY1N0YXRl
OjpyZWdFeHBDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3Iq
PihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVT
bG90PFJlZ0V4cENvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6
OnJlZ0V4cENvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+
KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgUmVnRXhwQ29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTUzMzk5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyAr
NTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
IAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5o
CShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBNYXRjaGVzQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTYgKzY3LDE2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgICAgIHJlaWZ5TWF0Y2hQcm9wZXJ0eShleGVjKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQorICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFJlZ0V4cE1hdGNo
ZXNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSZWdFeHBNYXRjaGVzQXJyYXkqPihjZWxsKTsK
KyAgICAgICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSZWdF
eHBNYXRjaGVzQXJyYXkqPihvYmplY3QpOwogICAgICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlB
bGxQcm9wZXJ0aWVzSWZOZWNlc3NhcnkoZXhlYyk7CiAgICAgICAgICAgICByZXR1cm4gSlNBcnJh
eTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgICAgICB7Ci0gICAgICAgICAg
ICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwTWF0Y2hlc0Fy
cmF5Kj4oY2VsbCk7CisgICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4ob2JqZWN0KTsKICAgICAgICAgICAgIGlmIChw
cm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlBbGxQcm9wZXJ0
aWVzSWZOZWNlc3NhcnkoZXhlYyk7CiAgICAgICAgICAgICBlbHNlCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHJldmlzaW9uIDE1MzM5
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg5LDE0ICs4OSwxNCBAQCB2b2lkIFJlZ0V4cE9iamVjdDo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbGFzdElu
ZGV4KTsKIH0KIAotYm9vbCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQorYm9vbCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpIHsKLSAgICAgICAgUmVnRXhwT2JqZWN0KiByZWdFeHAg
PSBhc1JlZ0V4cE9iamVjdChjZWxsKTsKKyAgICAgICAgUmVnRXhwT2JqZWN0KiByZWdFeHAgPSBh
c1JlZ0V4cE9iamVjdChvYmplY3QpOwogICAgICAgICBzbG90LnNldFZhbHVlKHJlZ0V4cCwgcmVn
RXhwLT5nZXRMYXN0SW5kZXgoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBy
ZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PFJlZ0V4cE9iamVjdCwgSlNPYmplY3Q+KGV4ZWMsIEV4
ZWNTdGF0ZTo6cmVnRXhwVGFibGUoZXhlYyksIGpzQ2FzdDxSZWdFeHBPYmplY3QqPihjZWxsKSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PFJlZ0V4
cE9iamVjdCwgSlNPYmplY3Q+KGV4ZWMsIEV4ZWNTdGF0ZTo6cmVnRXhwVGFibGUoZXhlYyksIGpz
Q2FzdDxSZWdFeHBPYmplY3QqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBi
b29sIFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIHRlc3QoRXhlY1N0YXRlKiBleGVj
LCBKU1N0cmluZyogc3RyaW5nKSB7IHJldHVybiBtYXRjaChleGVjLCBzdHJpbmcpOyB9CiAgICAg
ICAgIEpTVmFsdWUgZXhlYyhFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogCi0gICAgICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwog
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBz
dGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw5ICs2NSw5IEBAIFJlZ0V4cFByb3RvdHlwZTo6UmVnRXhwUHJvdG90eXBlKEpT
R2xvYmEKIHsKIH0KIAotYm9vbCBSZWdFeHBQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90ICZzbG90KQorYm9vbCBSZWdFeHBQcm90b3R5cGU6OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKLSAgICByZXR1cm4gZ2V0U3RhdGljRnVu
Y3Rpb25TbG90PFJlZ0V4cE9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpyZWdFeHBQcm90b3R5cGVU
YWJsZShleGVjKSwganNDYXN0PFJlZ0V4cFByb3RvdHlwZSo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8UmVnRXhwT2JqZWN0Pihl
eGVjLCBFeGVjU3RhdGU6OnJlZ0V4cFByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8UmVnRXhw
UHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBSZWdF
eHBQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cFByb3RvdHlwZS5oCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NyArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgUmVnRXhwT2Jq
ZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsOSArNjAsOSBAQCB2
b2lkIFN0cmluZ0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFCiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwg
anNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIH0KIAotYm9v
bCBTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNs
b3QpCitib29sIFN0cmluZ0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QgJnNsb3QpCiB7Ci0gICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxJbnRl
cm5hbEZ1bmN0aW9uPihleGVjLCBFeGVjU3RhdGU6OnN0cmluZ0NvbnN0cnVjdG9yVGFibGUoZXhl
YyksIGpzQ2FzdDxTdHJpbmdDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhl
YywgRXhlY1N0YXRlOjpzdHJpbmdDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8U3RyaW5n
Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIFN0
cmluZ0NvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBDb25z
dHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwogICAg
ICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAot
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKICAgICB9OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuY3BwCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0
NCw3IEBAIHZvaWQgU3RyaW5nT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0KICAgICBzZXRJ
bnRlcm5hbFZhbHVlKHZtLCBzdHJpbmcpOwogfQogCi1ib29sIFN0cmluZ09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFN0cmluZ09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBTdHJpbmdPYmpl
Y3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHRo
aXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+Z2V0U3RyaW5nUHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpCkBAIC01Miw5ICs1Miw5IEBAIGJvb2wgU3RyaW5nT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlMKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogICAgIAotYm9v
bCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQorYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKLSAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3Ry
aW5nT2JqZWN0Kj4oY2VsbCk7CisgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0
PFN0cmluZ09iamVjdCo+KG9iamVjdCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmludGVybmFsVmFs
dWUoKS0+Z2V0U3RyaW5nUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOyAgICAKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5
TmFtZSksIHNsb3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmgJKHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNy
ZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7CiAKLSAgICAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGlj
IHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTM0ODIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAx
My0wNy0zMCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgU29tZSBjbGVhbnVwIGluIEpTVmFsdWU6OmdldAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5MzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAg
ICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3Rv
ckRlY2xhcmF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2Rz
KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaDoKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFs
bGJhY2tPYmplY3RJbXA6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogYnJpZGdlL3J1
bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90
QnlJbmRleCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKiBi
cmlkZ2UvcnVudGltZV9tZXRob2QuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lTWV0aG9kOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5oOgor
ICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGJyaWRn
ZS9ydW50aW1lX29iamVjdC5oOgorICAgICAgICAgICAgLSBnZXRPd25Qcm9wZXJ0eVNsb3QsIEpT
Q2VsbCAtPiBKU09iamVjdAorCiAyMDEzLTA3LTMwICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVt
ZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBQYXNzIGNvbHVtbiBhcyA0dGggYXJndW1l
bnQgdG8gV29ya2VyR2xvYmFsU2NvcGUub25lcnJvciBhbmQgV2luZG93Lm9uZXJyb3IgaGFuZGxl
cnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjY0MCw3ICsyNjQwLDcg
QEAgX19aTjdXZWJDb3JlNFBhZ2UxOHNldFZpc2liaWxpdHlTdGF0ZUVOUwogI2lmIFVTRShQTFVH
SU5fSE9TVF9QUk9DRVNTKQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxMWdldENhbGxEYXRhRVBO
U182SlNDZWxsRVJOU184Q2FsbERhdGFFCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDE0ZmluaXNo
Q3JlYXRpb25FUk5TXzJWTUVSS04zV1RGNlN0cmluZ0UKLV9fWk4zSlNDMTNSdW50aW1lTWV0aG9k
MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9w
ZXJ0eU5hbWVFUk5TXzEyUHJvcGVydHlTbG90RQorX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxOGdl
dE93blByb3BlcnR5U2xvdEVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5TXzEyUHJvcGVy
dHlOYW1lRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMjRnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlBy
b3BlcnR5TmFtZUVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzEzUnVudGltZU1l
dGhvZDZzX2luZm9FCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZEMyRVBOU18xNEpTR2xvYmFsT2Jq
ZWN0RVBOU185U3RydWN0dXJlRVBOU184QmluZGluZ3M2TWV0aG9kRQpAQCAtMjY1MCw3ICsyNjUw
LDcgQEAgX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxMmRlZmF1bAogX19aTjNKU0M4
QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU182SlNDZWxsRVBOU185
RXhlY1N0YXRlRU5TXzEyUHJvcGVydHlOYW1lRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVP
YmplY3QxNGZpbmlzaENyZWF0aW9uRVBOU18xNEpTR2xvYmFsT2JqZWN0RQogX19aTjNKU0M4Qmlu
ZGluZ3MxM1J1bnRpbWVPYmplY3QxNmdldENvbnN0cnVjdERhdGFFUE5TXzZKU0NlbGxFUk5TXzEz
Q29uc3RydWN0RGF0YUUKLV9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MThnZXRPd25Q
cm9wZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVF
Uk5TXzEyUHJvcGVydHlTbG90RQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxOGdl
dE93blByb3BlcnR5U2xvdEVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRlRU5TXzEyUHJvcGVy
dHlOYW1lRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2Jq
ZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUk5T
XzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM0pTQzhCaW5k
aW5nczEzUnVudGltZU9iamVjdDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU184SlNPYmpl
Y3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzE4UHJvcGVydHlEZXNjcmlw
dG9yRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QzcHV0RVBOU182SlNDZWxsRVBO
U185RXhlY1N0YXRlRU5TXzEyUHJvcGVydHlOYW1lRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3Bl
cnR5U2xvdEUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDkgKzEx
MCw5IEBAIHN0YXRpYyBKU1ZhbHVlIG5hbWVkSXRlbUdldHRlcihFeGVjU3RhdGUKICAgICByZXR1
cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgbm9kZSk7CiB9CiAKLWJvb2wg
SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9v
bCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogewotICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4o
Y2VsbCk7CisgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cq
PihvYmplY3QpOwogICAgIC8vIFdoZW4gYWNjZXNzaW5nIGEgV2luZG93IGNyb3NzLWRvbWFpbiwg
ZnVuY3Rpb25zIGFyZSBhbHdheXMgdGhlIG5hdGl2ZSBidWlsdC1pbiBvbmVzLCBhbmQgdGhleQog
ICAgIC8vIGFyZSBub3QgYWZmZWN0ZWQgYnkgcHJvcGVydGllcyBjaGFuZ2VkIG9uIHRoZSBXaW5k
b3cgb3IgYW55dGhpbmcgaW4gaXRzIHByb3RvdHlwZSBjaGFpbi4KICAgICAvLyBUaGlzIGlzIGNv
bnNpc3RlbnQgd2l0aCB0aGUgYmVoYXZpb3Igb2YgRmlyZWZveC4KQEAgLTI1Niw5ICsyNTYsOSBA
QCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDCiAgICAgcmV0dXJuIEJh
c2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCi1ib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90
JiBzbG90KQorYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7Ci0gICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01X
aW5kb3cqPihjZWxsKTsKKyAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RP
TVdpbmRvdyo+KG9iamVjdCk7CiAgICAgCiAgICAgaWYgKCF0aGlzT2JqZWN0LT5pbXBsKCktPmZy
YW1lKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgbWVzc2FnZSBoZXJl
IHRoYXQgZXhwbGFpbnMgd2h5IHRoZSBwcm9wZXJ0eSBhY2Nlc3MvZnVuY3Rpb24gY2FsbCB3YXMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNzkwLDkgKzc5MCw5
IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBHZXR0ZXJzCiAgICAgaWYgKCRoYXNHZXR0
ZXIpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYp
O1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7Ci0gICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIikgaWYgKCRoYXNDb21wbGV4R2V0dGVyKTsKKyAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICgkaGFzQ29tcGxleEdldHRl
cik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3REZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlBy
b3BlcnR5U2xvdCYpO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpT
Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvciJ9OwogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRGVsZWdhdGUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0
b3ImKTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUdl
dE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3IifTsKICAgICAgICAgJHN0cnVjdHVyZUZsYWdz
eyJKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCJ9ID0gMTsKQEAgLTEwMTksOSArMTAx
OSw5IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9O1xu
XG4iKTsKIAogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNJbmxp
bmVHZXRPd25Qcm9wZXJ0eVNsb3QifSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbUdldE93blByb3BlcnR5U2xvdCJ9KSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJBTFdBWVNfSU5MSU5FIGJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDOjpKU0NlbGwqIGNlbGwsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICJBTFdBWVNfSU5MSU5FIGJvb2wgJHtjbGFzc05hbWV9Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCogb2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYg
c2xvdClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAie1xuIik7Ci0gICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0gSlND
Ojpqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDwke2Ns
YXNzTmFtZX0qPihvYmplY3QpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcbiIpOwog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJv
ZHkoJGludGVyZmFjZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRudW1BdHRyaWJ1dGVz
ID4gMCwgMSkpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAifVxuXG4iKTsKQEAgLTEw
OTcsNyArMTA5Nyw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvO1xuIik7CiAgICAg
aWYgKCRudW1GdW5jdGlvbnMgPiAwIHx8ICRudW1Db25zdGFudHMgPiAwKSB7Ci0gICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Qzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOwogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7
IkpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90In0gPSAxOwogICAgIH0KQEAgLTE3Njgs
OSArMTc2OCw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYg
KCRudW1Db25zdGFudHMgPiAwIHx8ICRudW1GdW5jdGlvbnMgPiAwKSB7Ci0gICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5
U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oY2VsbCk7XG4iKTsK
KyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiB0
aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KG9iamVjdCk7XG4iKTsK
IAogICAgICAgICBpZiAoJG51bUNvbnN0YW50cyBlcSAwICYmICRudW1GdW5jdGlvbnMgZXEgMCkg
ewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEJhc2U6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7
ICAgICAgICAKQEAgLTE5MjAsOSArMTkyMCw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgIyBBdHRyaWJ1dGVzCiAgICAgaWYgKCRoYXNHZXR0ZXIpIHsKICAgICAgICAgaWYgKCEk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNJbmxpbmVHZXRPd25Qcm9wZXJ0eVNs
b3QifSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldE93blBy
b3BlcnR5U2xvdCJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtj
bGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNl
bGwpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFt
ZX0qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4ob2JqZWN0KTtcbiIpOwogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSgkaW50ZXJmYWNlLCAkaW50ZXJmYWNl
TmFtZSwgJGNsYXNzTmFtZSwgJG51bUF0dHJpYnV0ZXMgPiAwLCAwKSk7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CkBAIC0xOTM3LDkgKzE5MzcsOSBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbiB8
fCAkbmFtZWRHZXR0ZXJGdW5jdGlvbgogICAgICAgICAgICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZEdldHRlciJ9CiAgICAgICAgICAgICAgICAg
fHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tR2V0T3duUHJvcGVy
dHlTbG90QW5kRGVzY3JpcHRvciJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
ImJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KVxu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihj
ZWxsKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05h
bWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKIAogICAgICAgICAgICAgIyBTaW5rIHRoZSBp
bnQtdG8tc3RyaW5nIGNvbnZlcnNpb24gdGhhdCBoYXBwZW5zIHdoZW4gd2UgY3JlYXRlIGEgUHJv
cGVydHlOYW1lCkBAIC0zODgyLDcgKzM4ODIsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRl
Y2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gcHRyO1xu
Iik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cblxuIik7CiAKLSAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlND
ZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNs
b3QmKTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVz
Y3JpcHRvciYpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBjb25z
dCBKU0M6OkNsYXNzSW5mbyBzX2luZm87XG4iKTsKIApAQCAtNDI2NCw5ICs0MjY0LDkgQEAgc3Vi
IEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAKICAgICAgICAgbXkgJGtpbmQgPSAk
aGFzU3RhdGljRnVuY3Rpb25zID8gIlByb3BlcnR5IiA6ICJWYWx1ZSI7CiAKLSAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Z2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIntcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIGdldFN0
YXRpYyR7a2luZH1TbG90PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9LCBKU0RPTVdyYXBwZXI+KGV4
ZWMsICIgLiBjb25zdHJ1Y3Rvckhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRjb25zdHJ1Y3RvckNsYXNzTmFtZSkg
LiAiLCBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihjZWxsKSwgcHJvcGVydHlOYW1l
LCBzbG90KTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIGdl
dFN0YXRpYyR7a2luZH1TbG90PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9LCBKU0RPTVdyYXBwZXI+
KGV4ZWMsICIgLiBjb25zdHJ1Y3Rvckhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRjb25zdHJ1Y3RvckNsYXNzTmFt
ZSkgLiAiLCBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihvYmplY3QpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7
CiAKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NO
YW1lfTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKVxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXku
Y3BwCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDkgKzg1LDkgQEAgdm9pZCBSdW50aW1lQXJy
YXk6OmdldE93blByb3BlcnR5TmFtZXMoSgogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIFJ1
bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29s
IFJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogewotICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lQXJyYXkq
PihjZWxsKTsKKyAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFy
cmF5Kj4ob2JqZWN0KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgpIHsKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iamVj
dCwgdGhpc09iamVjdC0+bGVuZ3RoR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
MjUsOSArMTI1LDkgQEAgYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcAog
ICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLWJvb2wgUnVudGltZUFycmF5
OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlICpleGVj
LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBSdW50aW1lQXJyYXk6
OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlICpl
eGVjLCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIFJ1bnRpbWVB
cnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lQXJyYXkqPihjZWxsKTsKKyAgICBSdW50
aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4ob2JqZWN0KTsKICAg
ICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkgewogICAgICAgICBzbG90LnNl
dEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGluZGV4LCB0aGlzT2JqZWN0LT5pbmRleEdldHRlcik7
CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5oCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9hcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CiAKICAgICBzdGF0aWMg
dm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkocmV2aXNpb24gMTUzMzk5KQorKysg
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjEsOSArNjEsOSBAQCBKU1ZhbHVlIFJ1bnRpbWVNZXRob2Q6Omxlbmd0aEdldHRlcihFeGVj
CiAgICAgcmV0dXJuIGpzTnVtYmVyKHRoaXNPYmotPm1fbWV0aG9kLT5udW1QYXJhbWV0ZXJzKCkp
OwogfQogCi1ib29sIFJ1bnRpbWVNZXRob2Q6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90ICZzbG90KQorYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QgJnNsb3QpCiB7Ci0gICAgUnVudGltZU1ldGhvZCogdGhpc09iamVjdCA9IGpz
Q2FzdDxSdW50aW1lTWV0aG9kKj4oY2VsbCk7CisgICAgUnVudGltZU1ldGhvZCogdGhpc09iamVj
dCA9IGpzQ2FzdDxSdW50aW1lTWV0aG9kKj4ob2JqZWN0KTsKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgc2xvdC5zZXRDYWNo
ZWFibGVDdXN0b20odGhpc09iamVjdCwgdGhpc09iamVjdC0+bGVuZ3RoR2V0dGVyKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRo
b2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2Qu
aAkocmV2aXNpb24gMTUzMzk5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0
aG9kLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyBD
YWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCi0gICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiBwcml2YXRlOgpJbmRleDogU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCShyZXZpc2lvbiAxNTMzOTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTYsOSArMTE2LDkgQEAgSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjptZXRob2RHZXR0ZXIo
RXhlYwogICAgIHJldHVybiBtZXRob2Q7CiB9CiAKLWJvb2wgUnVudGltZU9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlICpleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIFJ1bnRpbWVPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUgKmV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBSdW50aW1l
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVPYmplY3QqPihjZWxsKTsKKyAgICBS
dW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVPYmplY3QqPihvYmplY3Qp
OwogICAgIGlmICghdGhpc09iamVjdC0+bV9pbnN0YW5jZSkgewogICAgICAgICB0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihleGVjKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3
ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAK
LSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5oCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEy
NCw3IEBAIHByaXZhdGU6CiAgICAgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgT2JqY0luc3RhbmNlKiwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUp
OwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNP
YmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9uIDE1MzM5OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpmaW5pc2hDcmVh
dGkKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi1ib29sIE9iamNGYWxsYmFj
a09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIC8vIGtlZXAgdGhlIHByb3RvdHlwZSBmcm9tIGdl
dHRpbmcgY2FsbGVkIGluc3RlYWQgb2YganVzdCByZXR1cm5pbmcgZmFsc2UKICAgICBzbG90LnNl
dFVuZGVmaW5lZCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTUzNDgyKQorKysgU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMt
MDctMzAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAg
ICAgIFNvbWUgY2xlYW51cCBpbiBKU1ZhbHVlOjpnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTM0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
Lmg6CisgICAgICAgICAgICAtIGdldE93blByb3BlcnR5U2xvdCwgSlNDZWxsIC0+IEpTT2JqZWN0
CisKIDIwMTMtMDctMzAgIEplZmYgTWlsbGVyICA8amVmZm1AYXBwbGUuY29tPgogCiAgICAgICAg
IFBhZ2UgZm9yIFdLUGFnZUxvYWRlckNsaWVudCBwcm9jZXNzRGlkQ3Jhc2ggY2FsbGJhY2sgYWx3
YXlzIHJlcG9ydHMgYSBwcm9jZXNzIGlkZW50aWZpZXIgb2YgMApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmNwcAkocmV2aXNpb24gMTUzMzk5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsOSArMjU4
LDkgQEAgQ29uc3RydWN0VHlwZSBKU05QT2JqZWN0OjpnZXRDb25zdHJ1Y3REYQogICAgIHJldHVy
biBDb25zdHJ1Y3RUeXBlSG9zdDsKIH0KIAotYm9vbCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIEpTTlBPYmplY3QqIHRoaXNP
YmplY3QgPSBKU0M6OmpzQ2FzdDxKU05QT2JqZWN0Kj4oY2VsbCk7CisgICAgSlNOUE9iamVjdCog
dGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihvYmplY3QpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CiAgICAgaWYgKCF0aGlz
T2JqZWN0LT5tX25wT2JqZWN0KSB7CiAgICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4
ZWMpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNhbGxEYXRhJik7CiAgICAgc3RhdGljIEpT
Qzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25z
dHJ1Y3REYXRhJik7CiAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVj
dCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNj
cmlwdG9yJik7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xv
dCYpOwogCg==
</data>
<flag name="review"
          id="229684"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="229693"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>