<?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>107381</bug_id>
          
          <creation_ts>2013-01-19 14:36:38 -0800</creation_ts>
          <short_desc>Inserting a node into the DFG graph should not require five lines of code</short_desc>
          <delta_ts>2013-01-20 11:31:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>106868</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>811467</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-19 14:36:38 -0800</bug_when>
    <thetext>Patch forthcoming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811469</commentid>
    <comment_count>1</comment_count>
      <attachid>183634</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-19 14:38:01 -0800</bug_when>
    <thetext>Created attachment 183634
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811522</commentid>
    <comment_count>2</comment_count>
      <attachid>183648</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-19 18:21:14 -0800</bug_when>
    <thetext>Created attachment 183648
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811524</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-19 18:27:05 -0800</bug_when>
    <thetext>Attachment 183648 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGVariadicFunction.h:46:  Extra space before )  [whitespace/parens] [2]
Source/JavaScriptCore/dfg/DFGBasicBlock.h:105:  The parameter name &quot;graph&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGBasicBlock.h:105:  The parameter name &quot;refChildrenMode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGBasicBlock.h:105:  The parameter name &quot;refNodeMode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGBasicBlock.h:105:  The parameter name &quot;valueParams&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:549:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 6 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811525</commentid>
    <comment_count>4</comment_count>
      <attachid>183648</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-19 18:30:20 -0800</bug_when>
    <thetext>Comment on attachment 183648
the patch

Attachment 183648 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15978380</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811526</commentid>
    <comment_count>5</comment_count>
      <attachid>183648</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-19 18:33:58 -0800</bug_when>
    <thetext>Comment on attachment 183648
the patch

Attachment 183648 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15967396</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811527</commentid>
    <comment_count>6</comment_count>
      <attachid>183650</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-19 18:36:02 -0800</bug_when>
    <thetext>Created attachment 183650
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811529</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-19 18:42:52 -0800</bug_when>
    <thetext>Attachment 183650 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGVariadicFunction.h:46:  Extra space before )  [whitespace/parens] [2]
Source/JavaScriptCore/dfg/DFGBasicBlock.h:105:  The parameter name &quot;valueParams&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811643</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-20 11:31:45 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/140275</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183634</attachid>
            <date>2013-01-19 14:38:01 -0800</date>
            <delta_ts>2013-01-19 18:21:14 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>47717</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwMjU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDEzLTAxLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW5zZXJ0aW5nIGEgbm9kZSBpbnRvIHRoZSBERkcgZ3JhcGggc2hvdWxkIG5vdCByZXF1aXJlIGZp
dmUgbGluZXMgb2YgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA3MzgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisg
ICAgICAgIAorICAgICAgICBXb3JrIGluIHByb2dyZXNzLgorCisgICAgICAgICogZGZnL0RGR0Fk
amFjZW5jeUxpc3QuaDoKKyAgICAgICAgKEFkamFjZW5jeUxpc3QpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFkamFjZW5jeUxpc3Q6OmtpbmQpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNTaW1w
bGlmaWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudHNTaW1wbGlm
aWNhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmg6CisgICAg
ICAgIChCYXNpY0Jsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6cnVuKToK
KyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjprZWVwT3BlcmFuZEFs
aXZlKToKKyAgICAgICAgKiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQ
aGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5n
UGhhc2U6OmFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6
Q29uc3RhbnRGb2xkaW5nUGhhc2U6OnBhaW50VW5yZWFjaGFibGVDb2RlKToKKyAgICAgICAgKiBk
ZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Rml4
dXBQaGFzZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAg
ICAgICAgKEZpeHVwUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmNoZWNr
QXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmJsZXNzQXJyYXlPcGVyYXRp
b24pOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmluamVjdEludDMyVG9Eb3VibGVO
b2RlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6cmVmKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6cmVmSWYpOgorICAgICAgICAoR3Jh
cGgpOgorICAgICAgICAqIGRmZy9ERkdJbnNlcnRpb25TZXQuaDoKKyAgICAgICAgKERGRyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uOjpJbnNlcnRpb24pOgorICAgICAgICAoSlNDOjpE
Rkc6Okluc2VydGlvbjo6ZWxlbWVudCk6CisgICAgICAgIChJbnNlcnRpb24pOgorICAgICAgICAo
SlNDOjpERkc6Okluc2VydGlvblNldDo6SW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKEpTQzo6REZH
OjpJbnNlcnRpb25TZXQ6Omluc2VydCk6CisgICAgICAgIChJbnNlcnRpb25TZXQpOgorICAgICAg
ICAoSlNDOjpERkc6Okluc2VydGlvblNldDo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR05v
ZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKE5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlN0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZTo6cnVuKToKKyAgICAgICAg
KiBkZmcvREZHVmFyaWFkaWNGdW5jdGlvbi5oOiBBZGRlZC4KKwogMjAxMy0wMS0xOSAgR2VvZmZy
ZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRyYWNrIGluaGVyaXRhbmNl
IHN0cnVjdHVyZXMgaW4gYSBzaWRlIHRhYmxlLCBpbnN0ZWFkIG9mIHVzaW5nIGEgcHJpdmF0ZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGphY2VuY3lMaXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGphY2VuY3lMaXN0LmgJKHJl
dmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5
TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDkgQEAgcHVibGljOgogICAgICAg
ICBtX3dvcmRzWzFdLm1fZW5jb2RlZFdvcmQgPSBudW1DaGlsZHJlbjsKICAgICB9CiAgICAgCisj
aWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2lu
ZDsgfQorI2VuZGlmCiBwcml2YXRlOgogICAgIEVkZ2UgbV93b3Jkc1tTaXplXTsKICNpZiAhQVNT
RVJUX0RJU0FCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50
c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE0
MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzU2ltcGxpZmlj
YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMiwxMSArNTMyLDkgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8gV2Uga25vdyBl
eGFjdGx5IHdoYXQgdGhpcyB3aWxsIHJldHVybi4gQnV0IG9ubHkgYWZ0ZXIgd2UgaGF2ZSBjaGVj
a2VkCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgbm9ib2R5IGhhcyBlc2NhcGVkIG91ciBh
cmd1bWVudHMuCi0gICAgICAgICAgICAgICAgICAgIE5vZGUgY2hlY2soQ2hlY2tBcmd1bWVudHNO
b3RDcmVhdGVkLCBjb2RlT3JpZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgY2hlY2sucmVmKCk7
Ci0gICAgICAgICAgICAgICAgICAgIE5vZGVJbmRleCBjaGVja0luZGV4ID0gbV9ncmFwaC5zaXpl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGNoZWNrKTsKLSAgICAgICAg
ICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2ssIGNoZWNrSW5kZXgp
OworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAg
ICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBEb250UmVmQ2hpbGRyZW4sIERvbnRSZWZO
b2RlLCBTcGVjTm9uZSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDaGVja0FyZ3VtZW50c05v
dENyZWF0ZWQsIGNvZGVPcmlnaW4pOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudCgKICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGVJbmRleCwganNOdW1iZXIoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCkgLSAxKSk7CkBAIC01NzYsMjQgKzU3NCwyMCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgIC8vIGhhcyBydW4gLSB0aGVyZWZvcmUgaXQgbWFrZXMgbGl0dGxlIHNlbnNl
IHRvIGxpbmsgdGhlIEdldExvY2FsIG9wZXJhdGlvbgogICAgICAgICAgICAgICAgICAgICAvLyBp
bnRvIHRoZSBWYXJpYWJsZUFjY2Vzc0RhdGEgYW5kIFBoaSBncmFwaHMuCiAKLSAgICAgICAgICAg
ICAgICAgICAgTm9kZSBjaGVjayhDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQsIG5vZGUuY29kZU9y
aWdpbik7Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrLnJlZigpOwotICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgTm9kZSBwaGFudG9tKFBoYW50b20sIG5vZGUuY29k
ZU9yaWdpbik7Ci0gICAgICAgICAgICAgICAgICAgIHBoYW50b20ucmVmKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHBoYW50b20uY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuOworICAgICAgICAgICAg
ICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLmNvZGVPcmlnaW47CisgICAgICAg
ICAgICAgICAgICAgIEFkamFjZW5jeUxpc3QgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuOwogICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbm9kZS5jb252ZXJ0VG9HZXRM
b2NhbFVubGlua2VkKAogICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VmlydHVh
bFJlZ2lzdGVyPigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLmNvZGVPcmlnaW4pLT5hcmd1bWVu
dEluZGV4QWZ0ZXJDYXB0dXJlKGluZGV4KSkpOwogCi0gICAgICAgICAgICAgICAgICAgIE5vZGVJ
bmRleCBjaGVja05vZGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLmFwcGVuZChjaGVjayk7Ci0gICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNl
dC5hcHBlbmQoaW5kZXhJbkJsb2NrLCBjaGVja05vZGVJbmRleCk7Ci0gICAgICAgICAgICAgICAg
ICAgIE5vZGVJbmRleCBwaGFudG9tTm9kZUluZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKHBoYW50b20pOwotICAgICAgICAgICAgICAgICAg
ICBpbnNlcnRpb25TZXQuYXBwZW5kKGluZGV4SW5CbG9jaywgcGhhbnRvbU5vZGVJbmRleCk7Cisg
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAg
ICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIERvbnRSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUs
IFNwZWNOb25lLCBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICBjb2RlT3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgRG9udFJlZkNo
aWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUsIFBoYW50b20sIGNvZGVPcmlnaW4sCisgICAg
ICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbik7CiAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC02MzQsMTIgKzYyOCw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAobV9j
cmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKG5vZGVQdHItPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYg
KG5vZGVQdHItPnNob3VsZEdlbmVyYXRlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSBw
aGFudG9tKFBoYW50b20sIG5vZGVQdHItPmNvZGVPcmlnaW4pOwotICAgICAgICAgICAgICAgICAg
ICBwaGFudG9tLmNoaWxkcmVuID0gbm9kZVB0ci0+Y2hpbGRyZW47Ci0gICAgICAgICAgICAgICAg
ICAgIHBoYW50b20ucmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwaGFudG9t
Tm9kZUluZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
YXBwZW5kKHBoYW50b20pOwotICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuYXBwZW5k
KGluZGV4SW5CbG9jaywgcGhhbnRvbU5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleElu
QmxvY2ssIERvbnRSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNOb25lLCBQaGFudG9tLAor
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZVB0ci0+Y29kZU9yaWdpbiwgbm9kZVB0ci0+Y2hp
bGRyZW4pOwogICAgICAgICAgICAgICAgICAgICBub2RlUHRyID0gJm1fZ3JhcGhbbm9kZUluZGV4
XTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbm9kZVB0ci0+c2V0T3BBbmRE
ZWZhdWx0RmxhZ3MoUGhhbnRvbUFyZ3VtZW50cyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk3LDcgKzk3LDE3
IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogVmVjdG9yPE5vZGVJbmRleCwgOD4KICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCisgICAgCisjZGVmaW5lIERGR19ERUZJTkVf
SU5TRVJUX05PREUodGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQ
YXJhbXMsIHZhbHVlQXJncykgXAorICAgIHRlbXBsYXRlUHJlIHR5cGVQYXJhbXMgdGVtcGxhdGVQ
b3N0IE5vZGVJbmRleCBhcHBlbmROb2RlKFJlZkNoaWxkcmVuTW9kZSByZWZDaGlsZHJlbk1vZGUs
IFJlZk5vZGVNb2RlIHJlZk5vZGVNb2RlLCBTcGVjdWxhdGVkVHlwZSB0eXBlLCB2YWx1ZVBhcmFt
cykgXAorICAgIHsgXAorICAgICAgICBOb2RlSW5kZXggcmVzdWx0ID0gbV9ncmFwaC5hZGROb2Rl
KHJlZkNoaWxkcmVuTW9kZSwgcmVmTm9kZU1vZGUsIHR5cGUsIHZhbHVlQXJncyk7IFwKKyAgICAg
ICAgYXBwZW5kKHJlc3VsdCk7IFwKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsgXAorICAgIH0KKyAg
ICBERkdfVkFSSUFESUNfVEVNUExBVEVfRlVOQ1RJT04oREZHX0RFRklORV9JTlNFUlRfTk9ERSkK
KyN1bmRlZiBERkdfREVGSU5FX0lOU0VSVF9OT0RFCisgICAgCiAgICAgLy8gVGhpcyB2YWx1ZSBp
cyB1c2VkIGludGVybmFsbHkgZm9yIGJsb2NrIGxpbmtpbmcgYW5kIE9TUiBlbnRyeS4gSXQgaXMg
bW9zdGx5IG1lYW5pbmdsZXNzCiAgICAgLy8gZm9yIG90aGVyIHB1cnBvc2VzIGR1ZSB0byBpbmxp
bmluZy4KICAgICB1bnNpZ25lZCBieXRlY29kZUJlZ2luOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsMTEgKzEzNiw5IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGpldHRpc29uQmxvY2soYmxvY2tJbmRleCwgbm90VGFrZW5CbG9ja0luZGV4LCBib3VuZGFy
eUNvZGVPcmlnaW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTm9kZUluZGV4IGp1bXBOb2RlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlIGp1bXAoSnVtcCwgYm91bmRhcnlDb2RlT3Jp
Z2luLCBPcEluZm8odGFrZW5CbG9ja0luZGV4KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAganVtcC5yZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVu
ZChqdW1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kKGp1bXBO
b2RlSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROb2Rl
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250UmVmQ2hpbGRyZW4sIERvbnRS
ZWZOb2RlLCBTcGVjTm9uZSwgSnVtcCwgYm91bmRhcnlDb2RlT3JpZ2luLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBPcEluZm8odGFrZW5CbG9ja0luZGV4KSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lckNoYW5nZWQgPSBv
dXRlckNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0x
NjksMTEgKzE2Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFu
Y2guc2V0T3BBbmREZWZhdWx0RmxhZ3MoUGhhbnRvbSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGJyYW5jaC5yZWZDb3VudCgpID09IDEpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUganVtcChKdW1wLCBi
cmFuY2guY29kZU9yaWdpbiwgT3BJbmZvKHRhcmdldEJsb2NrSW5kZXgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqdW1wLnJlZigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5vZGVJbmRleCBqdW1wTm9kZUluZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQoanVtcCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYmxvY2stPmFwcGVuZChqdW1wTm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBibG9jay0+YXBwZW5kTm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRG9udFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUsIEp1bXAsIGJyYW5j
aC5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8odGFy
Z2V0QmxvY2tJbmRleCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgaW5uZXJDaGFuZ2VkID0gb3V0ZXJDaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc1LDExICsyNzEsNyBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgQVNTRVJUKG1fZ3JhcGhbbm9kZUluZGV4XS5vcCgpICE9IFNldExvY2FsKTsKLSAgICAg
ICAgTm9kZUluZGV4IHBoYW50b21Ob2RlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAg
Tm9kZSBwaGFudG9tKFBoYW50b20sIGNvZGVPcmlnaW4sIG5vZGVJbmRleCk7Ci0gICAgICAgIG1f
Z3JhcGguYXBwZW5kKHBoYW50b20pOwotICAgICAgICBtX2dyYXBoLnJlZihwaGFudG9tTm9kZUlu
ZGV4KTsKLSAgICAgICAgYmxvY2stPmFwcGVuZChwaGFudG9tTm9kZUluZGV4KTsKKyAgICAgICAg
YmxvY2stPmFwcGVuZE5vZGUoRG9udFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUs
IFBoYW50b20sIGNvZGVPcmlnaW4sIG5vZGVJbmRleCk7CiAgICAgfQogICAgIAogICAgIHZvaWQg
Zml4UG9zc2libGVHZXRMb2NhbChCYXNpY0Jsb2NrKiBibG9jaywgRWRnZSYgZWRnZSwgYm9vbCBj
aGFuZ2VSZWYpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHJldmlz
aW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsMjMgQEAgZW51bSBVc2VLaW5kIHsKICAgICBMYXN0
VXNlS2luZCAvLyBNdXN0IGFsd2F5cyBiZSB0aGUgbGFzdCBlbnRyeSBpbiB0aGUgZW51bSwgYXMg
aXQgaXMgdXNlZCB0byBkZW5vdGUgdGhlIG51bWJlciBvZiBlbnVtIGVsZW1lbnRzLgogfTsKIAor
Ly8gVXNlIFJlZkNoaWxkcmVuIGlmIHRoZSBjaGlsZCByZWYgY291bnRzIGhhdmVuJ3QgYWxyZWFk
eSBiZWVuIGFkanVzdGVkIHVzaW5nCisvLyBvdGhlciBtZWFucyBhbmQgZWl0aGVyIG9mIHRoZSBm
b2xsb3dpbmcgaXMgdHJ1ZToKKy8vIC0gVGhlIG5vZGUgeW91J3JlIGNyZWF0aW5nIGlzIE11c3RH
ZW5lcmF0ZS4KKy8vIC0gVGhlIHBsYWNlIHdoZXJlIHlvdSdyZSBpbnNlcnRpbmcgYSByZWZlcmVu
Y2UgdG8gdGhlIG5vZGUgeW91J3JlIGNyZWF0aW5nCisvLyAgIHdpbGwgbm90IGFsc28gZG8gUmVm
Q2hpbGRyZW4uCitlbnVtIFJlZkNoaWxkcmVuTW9kZSB7CisgICAgUmVmQ2hpbGRyZW4sCisgICAg
RG9udFJlZkNoaWxkcmVuCit9OworCisvLyBVc2UgUmVmTm9kZSBpZiB5b3Uga25vdyB0aGF0IHRo
ZSBub2RlIHdpbGwgYmUgdXNlZCBmcm9tIGFub3RoZXIgbm9kZSwgYW5kIHlvdQorLy8gd2lsbCBu
b3QgYWxyZWFkeSBiZSByZWYnaW5nIHRoZSBub2RlIHRvIGFjY291bnQgZm9yIHRoYXQgdXNlLgor
ZW51bSBSZWZOb2RlTW9kZSB7CisgICAgUmVmTm9kZSwKKyAgICBEb250UmVmTm9kZQorfTsKKwog
aW5saW5lIGNvbnN0IGNoYXIqIHVzZUtpbmRUb1N0cmluZyhVc2VLaW5kIHVzZUtpbmQpCiB7CiAg
ICAgc3dpdGNoICh1c2VLaW5kKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTQwMjE1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3OSwxMiArMTc5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBpZiAobmVlZHNXYXRjaHBvaW50KSB7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChtX3N0YXRlLmZvck5vZGUoY2hpbGQpLm1fZnV0dXJlUG9zc2libGVT
dHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSkpOwotICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoW2NoaWxkXS5yZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgTm9k
ZSB3YXRjaHBvaW50KFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50LCBjb2RlT3JpZ2luLCBP
cEluZm8oc3RydWN0dXJlKSwgY2hpbGQpOwotICAgICAgICAgICAgICAgICAgICB3YXRjaHBvaW50
LnJlZigpOwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggd2F0Y2hwb2ludEluZGV4ID0g
bV9ncmFwaC5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKHdhdGNo
cG9pbnQpOwotICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQoaW5kZXhJ
bkJsb2NrLCB3YXRjaHBvaW50SW5kZXgpOworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBS
ZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNOb25lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQsIGNvZGVPcmlnaW4sIE9wSW5mbyhzdHJ1
Y3R1cmUpLCBjaGlsZCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2VJbmRleDsKQEAgLTE5MywxMSAr
MTkwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc3Rh
dHVzLm9mZnNldCgpKSkKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlSW5kZXgg
PSBjaGlsZDsKICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgTm9k
ZSBnZXRCdXR0ZXJmbHkoR2V0QnV0dGVyZmx5LCBjb2RlT3JpZ2luLCBjaGlsZCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGdldEJ1dHRlcmZseS5yZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgcHJv
cGVydHlTdG9yYWdlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5hcHBlbmQoZ2V0QnV0dGVyZmx5KTsKLSAgICAgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuYXBwZW5kKGluZGV4SW5CbG9jaywgcHJvcGVydHlTdG9yYWdlSW5kZXgpOworICAg
ICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2VJbmRleCA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIERvbnRSZWZD
aGlsZHJlbiwgUmVmTm9kZSwgU3BlY05vbmUsIEdldEJ1dHRlcmZseSwgY29kZU9yaWdpbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNoaWxkKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9ncmFwaFtub2RlSW5kZXhdLmNvbnZlcnRUb0dl
dEJ5T2Zmc2V0KG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5zaXplKCksIHByb3BlcnR5U3Rv
cmFnZUluZGV4KTsKQEAgLTI0MSwxMiArMjM2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBpZiAobmVlZHNXYXRjaHBvaW50KSB7CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChtX3N0YXRlLmZvck5vZGUoY2hpbGQpLm1fZnV0dXJlUG9zc2libGVTdHJ1
Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSkpOwotICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoW2NoaWxkXS5yZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSB3
YXRjaHBvaW50KFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50LCBjb2RlT3JpZ2luLCBPcElu
Zm8oc3RydWN0dXJlKSwgY2hpbGQpOwotICAgICAgICAgICAgICAgICAgICB3YXRjaHBvaW50LnJl
ZigpOwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggd2F0Y2hwb2ludEluZGV4ID0gbV9n
cmFwaC5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKHdhdGNocG9p
bnQpOwotICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQoaW5kZXhJbkJs
b2NrLCB3YXRjaHBvaW50SW5kZXgpOworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBSZWZD
aGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAg
U3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQsIGNvZGVPcmlnaW4sIE9wSW5mbyhzdHJ1Y3R1
cmUpLCBjaGlsZCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKiB0cmFuc2l0aW9uRGF0YSA9IDA7CkBA
IC0yNzQsNTEgKzI2NiwzNiBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgTm9kZUluZGV4
IHByb3BlcnR5U3RvcmFnZUluZGV4OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IG1fZ3JhcGhbY2hpbGRdLnJlZigpOwotICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNl
dChzdGF0dXMub2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChz
dGF0dXMub2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGhbY2hpbGRdLnJl
ZigpOyAvLyBUaGUgY2hpbGQgd2lsbCBiZSB1c2VkIGFzIHRoZSBwcm9wZXJ0eSBpbmRleCwgc28g
cmVmIGl0IHRvIHJlZmxlY3QgdGhlIGRvdWJsZSB1c2UuCiAgICAgICAgICAgICAgICAgICAgIHBy
b3BlcnR5U3RvcmFnZUluZGV4ID0gY2hpbGQ7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc3Rh
dHVzLmlzU2ltcGxlUmVwbGFjZSgpIHx8IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9
PSBzdGF0dXMubmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgTm9kZSBnZXRCdXR0ZXJmbHkoR2V0QnV0dGVyZmx5LCBjb2RlT3JpZ2luLCBj
aGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgIGdldEJ1dHRlcmZseS5yZWYoKTsKLSAgICAgICAg
ICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQoZ2V0QnV0dGVyZmx5KTsKLSAgICAgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBwZW5kKGluZGV4SW5CbG9jaywgcHJvcGVydHlTdG9y
YWdlSW5kZXgpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzLmlzU2ltcGxlUmVw
bGFjZSgpIHx8IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBzdGF0dXMubmV3U3Ry
dWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJv
cGVydHlTdG9yYWdlSW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAg
ICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBSZWZDaGlsZHJlbiwgUmVmTm9kZSwgU3BlY05v
bmUsIEdldEJ1dHRlcmZseSwgY29kZU9yaWdpbiwgY2hpbGQpOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoc3RhdHVzLm5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgp
KTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFpc0lubGluZU9mZnNldChzdGF0dXMub2Zm
c2V0KCkpKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSBhbGxvY2F0ZVN0b3JhZ2UoQWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2UsIGNvZGVPcmlnaW4sIE9wSW5mbyh0cmFuc2l0aW9uRGF0YSksIGNo
aWxkKTsKLSAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGVTdG9yYWdlLnJlZigpOyAvLyBPbmNl
IGZvciB0aGUgdXNlLgotICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZVN0b3JhZ2UucmVmKCk7
IC8vIFR3aWNlIGJlY2F1c2UgaXQncyBtdXN0LWdlbmVyYXRlLgotICAgICAgICAgICAgICAgICAg
ICBwcm9wZXJ0eVN0b3JhZ2VJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLmFwcGVuZChhbGxvY2F0ZVN0b3JhZ2UpOwotICAgICAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5hcHBlbmQoaW5kZXhJbkJsb2NrLCBwcm9wZXJ0eVN0b3JhZ2VJbmRl
eCk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZUluZGV4ID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywg
UmVmQ2hpbGRyZW4sIFJlZk5vZGUsIFNwZWNOb25lLCBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4sIE9wSW5mbyh0cmFuc2l0aW9uRGF0
YSksIGNoaWxkKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHN0YXR1cy5uZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA+
IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVCghaXNJbmxpbmVPZmZzZXQoc3RhdHVzLm9mZnNldCgpKSk7CiAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBOb2RlIGdldEJ1dHRlcmZseShHZXRCdXR0ZXJmbHks
IGNvZGVPcmlnaW4sIGNoaWxkKTsKLSAgICAgICAgICAgICAgICAgICAgZ2V0QnV0dGVyZmx5LnJl
ZigpOwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggZ2V0QnV0dGVyZmx5SW5kZXggPSBt
X2dyYXBoLnNpemUoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQoZ2V0QnV0
dGVyZmx5KTsKLSAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBwZW5kKGluZGV4
SW5CbG9jaywgZ2V0QnV0dGVyZmx5SW5kZXgpOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaFtjaGlsZF0ucmVmKCk7Ci0gICAgICAgICAgICAgICAgICAg
IE5vZGUgcmVhbGxvY2F0ZVN0b3JhZ2UoUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgY29kZU9y
aWdpbiwgT3BJbmZvKHRyYW5zaXRpb25EYXRhKSwgY2hpbGQsIGdldEJ1dHRlcmZseUluZGV4KTsK
LSAgICAgICAgICAgICAgICAgICAgcmVhbGxvY2F0ZVN0b3JhZ2UucmVmKCk7IC8vIE9uY2UgZm9y
IHRoZSB1c2UuCi0gICAgICAgICAgICAgICAgICAgIHJlYWxsb2NhdGVTdG9yYWdlLnJlZigpOyAv
LyBUd2ljZSBiZWNhdXNlIGl0J3MgbXVzdC1nZW5lcmF0ZS4KLSAgICAgICAgICAgICAgICAgICAg
cHJvcGVydHlTdG9yYWdlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5hcHBlbmQocmVhbGxvY2F0ZVN0b3JhZ2UpOwotICAgICAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5hcHBlbmQoaW5kZXhJbkJsb2NrLCBwcm9wZXJ0eVN0b3JhZ2VJbmRl
eCk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZUluZGV4ID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywg
UmVmQ2hpbGRyZW4sIFJlZk5vZGUsIFNwZWNOb25lLCBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
LAorICAgICAgICAgICAgICAgICAgICAgICAgY29kZU9yaWdpbiwgT3BJbmZvKHRyYW5zaXRpb25E
YXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmRleEluQmxvY2ssIERvbnRSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNOb25l
LCBHZXRCdXR0ZXJmbHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZU9yaWdpbiwg
Y2hpbGQpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgaWYgKHN0YXR1cy5pc1NpbXBsZVRyYW5zaXRpb24oKSkgewotICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoW2NoaWxkXS5yZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSBwdXRT
dHJ1Y3R1cmUoUHV0U3RydWN0dXJlLCBjb2RlT3JpZ2luLCBPcEluZm8odHJhbnNpdGlvbkRhdGEp
LCBjaGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgIHB1dFN0cnVjdHVyZS5yZWYoKTsKLSAgICAg
ICAgICAgICAgICAgICAgTm9kZUluZGV4IHB1dFN0cnVjdHVyZUluZGV4ID0gbV9ncmFwaC5zaXpl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKHB1dFN0cnVjdHVyZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2ssIHB1
dFN0cnVjdHVyZUluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgUmVmQ2hpbGRy
ZW4sIERvbnRSZWZOb2RlLCBTcGVjTm9uZSwgUHV0U3RydWN0dXJlLCBjb2RlT3JpZ2luLAorICAg
ICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHRyYW5zaXRpb25EYXRhKSwgY2hpbGQpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2dyYXBo
W25vZGVJbmRleF0uY29udmVydFRvUHV0QnlPZmZzZXQobV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NE
YXRhLnNpemUoKSwgcHJvcGVydHlTdG9yYWdlSW5kZXgpOwpAQCAtMzQ2LDggKzMyMyw2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgTm9kZSBwaGFudG9tKFBoYW50b20sIG5v
ZGUuY29kZU9yaWdpbik7Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS5v
cCgpID09IEdldExvY2FsKSB7CiAgICAgICAgICAgICAgICAgTm9kZUluZGV4IHByZXZpb3VzTG9j
YWxBY2Nlc3MgPSBOb05vZGU7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT52YXJpYWJsZXNB
dEhlYWQub3BlcmFuZChub2RlLmxvY2FsKCkpID09IG5vZGVJbmRleApAQCAtNDAzLDEzICszNzgs
MTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICBwaGFudG9tLmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjsK
LSAgICAgICAgICAgIHBoYW50b20ucmVmKCk7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIG1f
Z3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZUluZGV4LCB2YWx1ZSk7Ci0gICAgICAgICAgICBO
b2RlSW5kZXggcGhhbnRvbU5vZGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAg
bV9ncmFwaC5hcHBlbmQocGhhbnRvbSk7Ci0gICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBl
bmQoaW5kZXhJbkJsb2NrLCBwaGFudG9tTm9kZUluZGV4KTsKKyAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBEb250UmVm
Q2hpbGRyZW4sIERvbnRSZWZOb2RlLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS5jb2RlT3JpZ2lu
LAorICAgICAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4pOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTQyMSwyNyArMzkzLDIwIEBA
IHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCB1bnNpZ25lZCBpbmRleEluQmxvY2ssIEpTQ2VsbCogY2VsbCkK
ICAgICB7Ci0gICAgICAgIE5vZGUgd2Vha0NvbnN0YW50KFdlYWtKU0NvbnN0YW50LCBjb2RlT3Jp
Z2luLCBPcEluZm8oY2VsbCkpOwotICAgICAgICB3ZWFrQ29uc3RhbnQucmVmKCk7Ci0gICAgICAg
IHdlYWtDb25zdGFudC5wcmVkaWN0KHNwZWN1bGF0aW9uRnJvbVZhbHVlKGNlbGwpKTsKLSAgICAg
ICAgTm9kZUluZGV4IHdlYWtDb25zdGFudEluZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAg
IG1fZ3JhcGguYXBwZW5kKHdlYWtDb25zdGFudCk7Ci0gICAgICAgIG1faW5zZXJ0aW9uU2V0LmFw
cGVuZChpbmRleEluQmxvY2ssIHdlYWtDb25zdGFudEluZGV4KTsKKyAgICAgICAgTm9kZUluZGV4
IHdlYWtDb25zdGFudEluZGV4ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAg
ICAgIGluZGV4SW5CbG9jaywgRG9udFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgc3BlY3VsYXRp
b25Gcm9tVmFsdWUoY2VsbCksCisgICAgICAgICAgICBXZWFrSlNDb25zdGFudCwgY29kZU9yaWdp
biwgT3BJbmZvKGNlbGwpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUo
KS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRJc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAg
Tm9kZSB3YXRjaHBvaW50KFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50LCBjb2RlT3JpZ2lu
LCBPcEluZm8oY2VsbC0+c3RydWN0dXJlKCkpLCB3ZWFrQ29uc3RhbnRJbmRleCk7Ci0gICAgICAg
ICAgICB3YXRjaHBvaW50LnJlZigpOwotICAgICAgICAgICAgTm9kZUluZGV4IHdhdGNocG9pbnRJ
bmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQod2F0Y2hw
b2ludCk7Ci0gICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQoaW5kZXhJbkJsb2NrLCB3
YXRjaHBvaW50SW5kZXgpOworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
KyAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwg
U3BlY05vbmUsIFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50LAorICAgICAgICAgICAgICAg
IGNvZGVPcmlnaW4sIE9wSW5mbyhjZWxsLT5zdHJ1Y3R1cmUoKSksIHdlYWtDb25zdGFudEluZGV4
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgTm9k
ZSBjaGVjayhDaGVja1N0cnVjdHVyZSwgY29kZU9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguYWRkU3Ry
dWN0dXJlU2V0KGNlbGwtPnN0cnVjdHVyZSgpKSksIHdlYWtDb25zdGFudEluZGV4KTsKLSAgICAg
ICAgY2hlY2sucmVmKCk7Ci0gICAgICAgIE5vZGVJbmRleCBjaGVja0luZGV4ID0gbV9ncmFwaC5z
aXplKCk7Ci0gICAgICAgIG1fZ3JhcGguYXBwZW5kKGNoZWNrKTsKLSAgICAgICAgbV9pbnNlcnRp
b25TZXQuYXBwZW5kKGluZGV4SW5CbG9jaywgY2hlY2tJbmRleCk7CisKKyAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIGluZGV4SW5ibG9jaywgUmVmQ2hpbGRy
ZW4sIERvbnRSZWZOb2RlLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIGNvZGVPcmlnaW4sCisg
ICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoY2VsbC0+c3RydWN0dXJl
KCkpKSwgd2Vha0NvbnN0YW50SW5kZXgpOwogICAgIH0KICAgICAKICAgICAvLyBUaGlzIGlzIG5l
Y2Vzc2FyeSBiZWNhdXNlIHRoZSBDRkEgbWF5IHJlYWNoIGNvbmNsdXNpb25zIGFib3V0IGNvbnN0
YW50cyBiYXNlZCBvbiBpdHMKQEAgLTQ3NywxMSArNDQyLDkgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgTm9kZSBmb3JjZU9TUkV4aXQoRm9yY2VPU1JFeGl0LCBub2RlLmNvZGVP
cmlnaW4pOwotICAgICAgICAgICAgICAgIGZvcmNlT1NSRXhpdC5yZWYoKTsKLSAgICAgICAgICAg
ICAgICBOb2RlSW5kZXggZm9yY2VPU1JFeGl0SW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAg
ICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChmb3JjZU9TUkV4aXQpOwotICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2ssIGZvcmNlT1NSRXhpdEluZGV4KTsK
KyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAg
ICAgICAgICBpbmRleEluQmxvY2ssIERvbnRSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNO
b25lLCBGb3JjZU9TUkV4aXQsCisgICAgICAgICAgICAgICAgICAgIG5vZGUuY29kZU9yaWdpbik7
CiAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgY2xh
c3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6CiAgICAgRml4dXBQaGFzZShH
cmFwaCYgZ3JhcGgpCiAgICAgICAgIDogUGhhc2UoZ3JhcGgsICJmaXh1cCIpCisgICAgICAgICwg
bV9pbnNlcnRpb25TZXQoZ3JhcGgpCiAgICAgewogICAgIH0KICAgICAKQEAgLTk2LDEyICs5Nywx
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBtX2dyYXBoW25vZGUuY2hpbGQxKCld
LnByZWRpY3Rpb24oKSwKICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaFttX2NvbXBpbGVJbmRl
eF0ucHJlZGljdGlvbigpKTsKICAgICAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLnN1cHBvcnRz
TGVuZ3RoKCkgJiYgYXJyYXlQcm9maWxlLT5oYXNEZWZpbml0ZVN0cnVjdHVyZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVmKG5vZGVQdHItPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgTm9kZSBjaGVja1N0cnVjdHVyZShDaGVja1N0cnVjdHVyZSwgbm9kZVB0ci0+
Y29kZU9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGFycmF5UHJvZmlsZS0+
ZXhwZWN0ZWRTdHJ1Y3R1cmUoKSkpLCBub2RlUHRyLT5jaGlsZDEoKS5pbmRleCgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgY2hlY2tTdHJ1Y3R1cmUucmVmKCk7Ci0gICAgICAgICAgICAgICAgICAg
IE5vZGVJbmRleCBjaGVja1N0cnVjdHVyZUluZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGNoZWNrU3RydWN0dXJlKTsKLSAgICAgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBwZW5kKG1faW5kZXhJbkJsb2NrLCBjaGVja1N0cnVj
dHVyZUluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBSZWZDaGlsZHJlbiwg
RG9udFJlZk5vZGUsIFNwZWNOb25lLCBDaGVja1N0cnVjdHVyZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGVQdHItPmNvZGVPcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNl
dChhcnJheVByb2ZpbGUtPmV4cGVjdGVkU3RydWN0dXJlKCkpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGVQdHItPmNoaWxkMSgpLmluZGV4KCkpOwogICAgICAgICAgICAgICAgICAgICBu
b2RlUHRyID0gJm1fZ3JhcGhbbV9jb21waWxlSW5kZXhdOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0gZWxzZSB7CkBAIC0zMjIsMTkgKzMyMSwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpbmplY3RJbnQzMlRvRG91Ymxl
Tm9kZSgwKTsKICAgICAgICAgICAgICAgICBpbmplY3RJbnQzMlRvRG91YmxlTm9kZSgxKTsKKwor
ICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gcmVmJ2luZyBvbiB0aGUgY2hp
bGRyZW4gYmVjYXVzZSB3ZSdyZSBzdGVhbGluZyB0aGVtIGZyb20KKyAgICAgICAgICAgICAgICAv
LyB0aGUgb3JpZ2luYWwgZGl2aXNpb24uCisgICAgICAgICAgICAgICAgTm9kZUluZGV4IG5ld0Rp
dmlzaW9uSW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAg
ICAgICBtX2luZGV4SW5CbG9jaywgRG9udFJlZkNoaWxkcmVuLCBSZWZOb2RlLCBTcGVjRG91Ymxl
LCBtX2dyYXBoW21fY29tcGlsZUluZGV4XSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgTm9kZSYgb2xkRGl2aXNpb24gPSBtX2dyYXBoW21fY29tcGlsZUluZGV4XTsKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBOb2RlIG5ld0RpdmlzaW9uID0gb2xkRGl2aXNp
b247Ci0gICAgICAgICAgICAgICAgbmV3RGl2aXNpb24uc2V0UmVmQ291bnQoMik7Ci0gICAgICAg
ICAgICAgICAgbmV3RGl2aXNpb24ucHJlZGljdChTcGVjRG91YmxlKTsKLSAgICAgICAgICAgICAg
ICBOb2RlSW5kZXggbmV3RGl2aXNpb25JbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIG9sZERpdmlzaW9uLnNldE9wKERvdWJsZUFzSW50MzIp
OwotICAgICAgICAgICAgICAgIG9sZERpdmlzaW9uLmNoaWxkcmVuLmluaXRpYWxpemUoRWRnZShu
ZXdEaXZpc2lvbkluZGV4LCBEb3VibGVVc2UpLCBFZGdlKCksIEVkZ2UoKSk7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQobmV3RGl2aXNpb24pOwotICAg
ICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmFwcGVuZChtX2luZGV4SW5CbG9jaywgbmV3RGl2
aXNpb25JbmRleCk7CisgICAgICAgICAgICAgICAgbV9ncmFwaFttX2NvbXBpbGVJbmRleF0uc2V0
T3AoRG91YmxlQXNJbnQzMik7CisgICAgICAgICAgICAgICAgbV9ncmFwaFttX2NvbXBpbGVJbmRl
eF0uY2hpbGRyZW4uaW5pdGlhbGl6ZShFZGdlKG5ld0RpdmlzaW9uSW5kZXgsIERvdWJsZVVzZSks
IEVkZ2UoKSwgRWRnZSgpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KQEAgLTQyMiwyOCArNDE2LDEzIEBAIHByaXZhdGU6CiAjZW5kaWYK
ICAgICB9CiAgICAgCi0gICAgTm9kZUluZGV4IGFkZE5vZGUoY29uc3QgTm9kZSYgbm9kZSwgYm9v
bCBzaG91bGRHZW5lcmF0ZSkKLSAgICB7Ci0gICAgICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBt
X2dyYXBoLnNpemUoKTsKLSAgICAgICAgbV9ncmFwaC5hcHBlbmQobm9kZSk7Ci0gICAgICAgIG1f
aW5zZXJ0aW9uU2V0LmFwcGVuZChtX2luZGV4SW5CbG9jaywgbm9kZUluZGV4KTsKLSAgICAgICAg
aWYgKHNob3VsZEdlbmVyYXRlKQotICAgICAgICAgICAgbV9ncmFwaFtub2RlSW5kZXhdLnJlZigp
OwotICAgICAgICByZXR1cm4gbm9kZUluZGV4OwotICAgIH0KLSAgICAKICAgICBOb2RlSW5kZXgg
Y2hlY2tBcnJheShBcnJheU1vZGUgYXJyYXlNb2RlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIE5v
ZGVJbmRleCBhcnJheSwgTm9kZUluZGV4IGluZGV4LCBib29sICgqc3RvcmFnZUNoZWNrKShjb25z
dCBBcnJheU1vZGUmKSA9IGNhbkNTRVN0b3JhZ2UsIGJvb2wgc2hvdWxkR2VuZXJhdGUgPSB0cnVl
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGFycmF5TW9kZS5pc1NwZWNpZmljKCkpOwogICAgICAg
ICAKLSAgICAgICAgbV9ncmFwaC5yZWYoYXJyYXkpOwotCiAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gYXJyYXlNb2RlLm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUobV9ncmFwaCwgY29kZU9y
aWdpbik7CiAgICAgICAgIAogICAgICAgICBpZiAoYXJyYXlNb2RlLmRvZXNDb252ZXJzaW9uKCkp
IHsKLSAgICAgICAgICAgIGlmIChpbmRleCAhPSBOb05vZGUpCi0gICAgICAgICAgICAgICAgbV9n
cmFwaC5yZWYoaW5kZXgpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoc3RydWN0dXJl
KSB7CiAgICAgICAgICAgICAgICAgaWYgKG1faW5kZXhJbkJsb2NrID4gMCkgewogICAgICAgICAg
ICAgICAgICAgICAvLyBJZiB0aGUgcHJldmlvdXMgbm9kZSB3YXMgYSBDaGVja1N0cnVjdHVyZSBp
bnNlcnRlZCBiZWNhdXNlIG9mIHN0dWZmCkBAIC00NTUsNDQgKzQzNCw0MiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNOb2RlLnNldE9wQW5kRGVmYXVsdEZsYWdz
KFBoYW50b20pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBOb2RlIGFycmF5aWZ5KEFycmF5aWZ5VG9TdHJ1Y3R1cmUsIGNvZGVPcmlnaW4sIE9w
SW5mbyhzdHJ1Y3R1cmUpLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgYXJyYXksIGluZGV4
KTsKLSAgICAgICAgICAgICAgICBhcnJheWlmeS5yZWYoKTsKLSAgICAgICAgICAgICAgICBOb2Rl
SW5kZXggYXJyYXlpZnlJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAgIG1f
Z3JhcGguYXBwZW5kKGFycmF5aWZ5KTsKLSAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5h
cHBlbmQobV9pbmRleEluQmxvY2ssIGFycmF5aWZ5SW5kZXgpOworICAgICAgICAgICAgICAgIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJs
b2NrLCBSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNOb25lLCBBcnJheWlmeVRvU3RydWN0
dXJlLCBjb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8oc3RydWN0dXJlKSwg
T3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGFycmF5LCBpbmRleCk7CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIE5vZGUgYXJyYXlpZnkoQXJyYXlpZnksIGNvZGVPcmln
aW4sIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBhcnJheSwgaW5kZXgpOwotICAgICAgICAg
ICAgICAgIGFycmF5aWZ5LnJlZigpOwotICAgICAgICAgICAgICAgIE5vZGVJbmRleCBhcnJheWlm
eUluZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQo
YXJyYXlpZnkpOwotICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmFwcGVuZChtX2luZGV4
SW5CbG9jaywgYXJyYXlpZnlJbmRleCk7CisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFJlZkNoaWxk
cmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUsIEFycmF5aWZ5LCBjb2RlT3JpZ2luLAorICAgICAg
ICAgICAgICAgICAgICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgYXJyYXksIGluZGV4KTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChzdHJ1Y3R1
cmUpIHsKLSAgICAgICAgICAgICAgICBOb2RlIGNoZWNrU3RydWN0dXJlKENoZWNrU3RydWN0dXJl
LCBjb2RlT3JpZ2luLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSks
IGFycmF5KTsKLSAgICAgICAgICAgICAgICBjaGVja1N0cnVjdHVyZS5yZWYoKTsKLSAgICAgICAg
ICAgICAgICBOb2RlSW5kZXggY2hlY2tTdHJ1Y3R1cmVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwot
ICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGNoZWNrU3RydWN0dXJlKTsKLSAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQobV9pbmRleEluQmxvY2ssIGNoZWNrU3RydWN0
dXJlSW5kZXgpOworICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisg
ICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBSZWZDaGlsZHJlbiwgRG9udFJlZk5v
ZGUsIFNwZWNOb25lLCBDaGVja1N0cnVjdHVyZSwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAg
ICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSkpLCBhcnJheSk7
CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIE5vZGUgY2hlY2tBcnJheShD
aGVja0FycmF5LCBjb2RlT3JpZ2luLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgYXJyYXkp
OwotICAgICAgICAgICAgICAgIGNoZWNrQXJyYXkucmVmKCk7Ci0gICAgICAgICAgICAgICAgTm9k
ZUluZGV4IGNoZWNrQXJyYXlJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAg
IG1fZ3JhcGguYXBwZW5kKGNoZWNrQXJyYXkpOwotICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0LmFwcGVuZChtX2luZGV4SW5CbG9jaywgY2hlY2tBcnJheUluZGV4KTsKKyAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2lu
ZGV4SW5CbG9jaywgUmVmQ2hpbGRyZW4sIERvbnRSZWZOb2RlLCBTcGVjTm9uZSwgQ2hlY2tBcnJh
eSwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dv
cmQoKSksIGFycmF5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgaWYgKCFzdG9yYWdlQ2hlY2soYXJyYXlNb2RlKSkKICAgICAgICAgICAgIHJldHVybiBOb05v
ZGU7CiAgICAgICAgIAotICAgICAgICBpZiAoc2hvdWxkR2VuZXJhdGUpCi0gICAgICAgICAgICBt
X2dyYXBoLnJlZihhcnJheSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoYXJyYXlNb2RlLnVzZXNC
dXR0ZXJmbHkoKSkKLSAgICAgICAgICAgIHJldHVybiBhZGROb2RlKE5vZGUoR2V0QnV0dGVyZmx5
LCBjb2RlT3JpZ2luLCBhcnJheSksIHNob3VsZEdlbmVyYXRlKTsKKyAgICAgICAgaWYgKGFycmF5
TW9kZS51c2VzQnV0dGVyZmx5KCkpIHsKKyAgICAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLAorICAgICAgICAg
ICAgICAgIHNob3VsZEdlbmVyYXRlID8gUmVmQ2hpbGRyZW4gOiBEb250UmVmQ2hpbGRyZW4sCisg
ICAgICAgICAgICAgICAgc2hvdWxkR2VuZXJhdGUgPyBSZWZOb2RlIDogRG9udFJlZk5vZGUsCisg
ICAgICAgICAgICAgICAgU3BlY05vbmUsIEdldEJ1dHRlcmZseSwgY29kZU9yaWdpbiwgYXJyYXkp
OworICAgICAgICB9CiAgICAgICAgIAotICAgICAgICByZXR1cm4gYWRkTm9kZShOb2RlKEdldElu
ZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UsIGNvZGVPcmlnaW4sIE9wSW5mbyhhcnJheU1vZGUuYXNXb3Jk
KCkpLCBhcnJheSksIHNob3VsZEdlbmVyYXRlKTsKKyAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywKKyAgICAgICAgICAg
IHNob3VsZEdlbmVyYXRlID8gUmVmQ2hpbGRyZW4gOiBEb250UmVmQ2hpbGRyZW4sCisgICAgICAg
ICAgICBzaG91bGRHZW5lcmF0ZSA/IFJlZk5vZGUgOiBEb250UmVmTm9kZSwKKyAgICAgICAgICAg
IFNwZWNOb25lLCBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlLCBjb2RlT3JpZ2luLCBPcEluZm8o
YXJyYXlNb2RlLmFzV29yZCgpKSwgYXJyYXkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGJsZXNz
QXJyYXlPcGVyYXRpb24oRWRnZSBiYXNlLCBFZGdlIGluZGV4LCB1bnNpZ25lZCBzdG9yYWdlQ2hp
bGRJZHgpCkBAIC01MDQsMTEgKzQ4MSw5IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBz
d2l0Y2ggKG5vZGVQdHItPmFycmF5TW9kZSgpLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5
OjpGb3JjZUV4aXQ6IHsKLSAgICAgICAgICAgIE5vZGUgZm9yY2VFeGl0KEZvcmNlT1NSRXhpdCwg
bm9kZVB0ci0+Y29kZU9yaWdpbik7Ci0gICAgICAgICAgICBmb3JjZUV4aXQucmVmKCk7Ci0gICAg
ICAgICAgICBOb2RlSW5kZXggZm9yY2VFeGl0SW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAg
ICAgICAgIG1fZ3JhcGguYXBwZW5kKGZvcmNlRXhpdCk7Ci0gICAgICAgICAgICBtX2luc2VydGlv
blNldC5hcHBlbmQobV9pbmRleEluQmxvY2ssIGZvcmNlRXhpdEluZGV4KTsKKyAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9pbmRleEluQmxv
Y2ssIERvbnRSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNOb25lLCBGb3JjZU9TUkV4aXQs
CisgICAgICAgICAgICAgICAgbm9kZVB0ci0+Y29kZU9yaWdpbik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTYzLDI3ICs1MzgsMTcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUodW5zaWduZWQgY2hpbGRJbmRl
eCkKICAgICB7Ci0gICAgICAgIE5vZGUmIHNvdXJjZSA9IG1fZ3JhcGhbbV9jb21waWxlSW5kZXhd
OwotICAgICAgICBFZGdlJiBlZGdlID0gbV9ncmFwaC5jaGlsZChzb3VyY2UsIGNoaWxkSW5kZXgp
OwotICAgICAgICAKLSAgICAgICAgTm9kZUluZGV4IHJlc3VsdEluZGV4ID0gKE5vZGVJbmRleClt
X2dyYXBoLnNpemUoKTsKKyAgICAgICAgTm9kZUluZGV4IHJlc3VsdEluZGV4ID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBEb250UmVmQ2hp
bGRyZW4sIFJlZk5vZGUsIFNwZWNEb3VibGUsIEludDMyVG9Eb3VibGUsCisgICAgICAgICAgICBt
X2dyYXBoW21fY29tcGlsZUluZGV4XS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgbV9ncmFwaC5j
aGlsZChtX2dyYXBoW21fY29tcGlsZUluZGV4XSwgY2hpbGRJbmRleCkuaW5kZXgoKSk7CiAgICAg
ICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAg
ZGF0YUxvZ0YoIihyZXBsYWNpbmcgQCV1LT5AJXUgd2l0aCBAJXUtPkAldSkgIiwKLSAgICAgICAg
ICAgICAgICBtX2NvbXBpbGVJbmRleCwgZWRnZS5pbmRleCgpLCBtX2NvbXBpbGVJbmRleCwgcmVz
dWx0SW5kZXgpOworICAgICAgICAgICAgICAgICBtX2NvbXBpbGVJbmRleCwgbV9ncmFwaC5jaGls
ZChtX2dyYXBoW21fY29tcGlsZUluZGV4XSwgY2hpbGRJbmRleCkuaW5kZXgoKSwgbV9jb21waWxl
SW5kZXgsICk7CiAjZW5kaWYKLSAgICAgICAgCi0gICAgICAgIC8vIEZpeCB0aGUgZWRnZSB1cCBo
ZXJlIGJlY2F1c2UgaXQncyBhIHJlZmVyZW5jZSB0aGF0IHdpbGwgYmUgY2xvYmJlcmVkIGJ5Ci0g
ICAgICAgIC8vIHRoZSBhcHBlbmQoKSBiZWxvdy4KLSAgICAgICAgTm9kZUluZGV4IG9sZEluZGV4
ID0gZWRnZS5pbmRleCgpOwotICAgICAgICBlZGdlID0gRWRnZShyZXN1bHRJbmRleCwgRG91Ymxl
VXNlKTsKLQotICAgICAgICBtX2dyYXBoLmFwcGVuZChOb2RlKEludDMyVG9Eb3VibGUsIHNvdXJj
ZS5jb2RlT3JpZ2luLCBvbGRJbmRleCkpOwotICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQo
bV9pbmRleEluQmxvY2ssIHJlc3VsdEluZGV4KTsKLSAgICAgICAgCi0gICAgICAgIE5vZGUmIGlu
dDMyVG9Eb3VibGUgPSBtX2dyYXBoW3Jlc3VsdEluZGV4XTsKLSAgICAgICAgaW50MzJUb0RvdWJs
ZS5wcmVkaWN0KFNwZWNEb3VibGUpOwotICAgICAgICBpbnQzMlRvRG91YmxlLnJlZigpOworCisg
ICAgICAgIG1fZ3JhcGguY2hpbGQobV9ncmFwaFttX2NvbXBpbGVJbmRleF0sIGNoaWxkSW5kZXgp
ID0gRWRnZShyZXN1bHRJbmRleCwgRG91YmxlVXNlKTsKICAgICB9CiAKICAgICBCYXNpY0Jsb2Nr
KiBtX2Jsb2NrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNp
b24gMTQwMjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZHQmFzaWNCbG9jay5oIgog
I2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVk
ZSAiREZHVmFyaWFkaWNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RhY2suaCIKICNpbmNsdWRl
ICJNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rv
ci5oPgpAQCAtOTksMTIgKzEwMCwxOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgTm9kZSYgYXQoRWRn
ZSBub2RlVXNlKSBjb25zdCB7IHJldHVybiBhdChub2RlVXNlLmluZGV4KCkpOyB9CiAgICAgCiAg
ICAgLy8gTWFyayBhIG5vZGUgYXMgYmVpbmcgcmVmZXJlbmNlZC4KLSAgICB2b2lkIHJlZihOb2Rl
SW5kZXggbm9kZUluZGV4KQorICAgIE5vZGVJbmRleCByZWYoTm9kZUluZGV4IG5vZGVJbmRleCkK
ICAgICB7CiAgICAgICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5kZXgpOwogICAgICAgICAvLyBJ
ZiB0aGUgdmFsdWUgKGJlZm9yZSBpbmNyZW1lbnRpbmcpIHdhcyBhdCByZWZDb3VudCB6ZXJvIHRo
ZW4gd2UgbmVlZCB0byByZWYgaXRzIGNoaWxkcmVuLgogICAgICAgICBpZiAoIW5vZGUucG9zdGZp
eFJlZigpKQogICAgICAgICAgICAgcmVmQ2hpbGRyZW4obm9kZUluZGV4KTsKKyAgICAgICAgcmV0
dXJuIG5vZGVJbmRleDsKKyAgICB9CisgICAgTm9kZUluZGV4IHJlZklmKE5vZGVJbmRleCBub2Rl
SW5kZXgsIGJvb2wgc2hvdWxkUmVmKQorICAgIHsKKyAgICAgICAgaWYgKCFzaG91bGRSZWYpCisg
ICAgICAgICAgICByZXR1cm4gbm9kZUluZGV4OworICAgICAgICByZXR1cm4gcmVmKG5vZGVJbmRl
eCk7CiAgICAgfQogICAgIHZvaWQgcmVmKEVkZ2Ugbm9kZVVzZSkKICAgICB7CkBAIC0xNzcsNiAr
MTg1LDI0IEBAIHB1YmxpYzoKICAgICAgICAgbm9kZS5jaGlsZHJlbi5jaGlsZDMoKSA9IEVkZ2Uo
KTsKICAgICB9CiAgICAgCisjZGVmaW5lIERGR19ERUZJTkVfQUREX05PREUodGVtcGxhdGVQcmUs
IHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykgXAorICAg
IHRlbXBsYXRlUHJlIHR5cGVQYXJhbXMgdGVtcGxhdGVQb3N0IE5vZGVJbmRleCBhZGROb2RlKFJl
ZkNoaWxkcmVuTW9kZSByZWZDaGlsZHJlbk1vZGUsIFJlZk5vZGVNb2RlIHJlZk5vZGVNb2RlLCBT
cGVjdWxhdGVkVHlwZSB0eXBlLCB2YWx1ZVBhcmFtcykgXAorICAgIHsgXAorICAgICAgICBOb2Rl
IG5vZGUodmFsdWVBcmdzKTsgXAorICAgICAgICBub2RlLnByZWRpY3QodHlwZSk7IFwKKyAgICAg
ICAgaWYgKG5vZGUuZmxhZ3MoKSAmIE11c3RHZW5lcmF0ZSkgXAorICAgICAgICAgICAgbm9kZS5y
ZWYoKTsgXAorICAgICAgICBpZiAocmVmTm9kZU1vZGUgPT0gUmVmTm9kZSkgXAorICAgICAgICAg
ICAgbm9kZS5yZWYoKTsgXAorICAgICAgICBOb2RlSW5kZXggcmVzdWx0ID0gbV9ncmFwaC5zaXpl
KCk7IFwKKyAgICAgICAgbV9ncmFwaC5hcHBlbmQobm9kZSk7IFwKKyAgICAgICAgaWYgKHJlZkNo
aWxkcmVuTW9kZSA9PSBSZWZDaGlsZHJlbikgXAorICAgICAgICAgICAgcmVmQ2hpbGRyZW4ocmVz
dWx0KTsgXAorICAgICAgICByZXR1cm4gcmVzdWx0OyBcCisgICAgfQorICAgIERGR19WQVJJQURJ
Q19URU1QTEFURV9GVU5DVElPTihERkdfREVGSU5FX0FERF9OT0RFKQorI3VuZGVmIERGR19ERUZJ
TkVfQUREX05PREUKKwogICAgIC8vIENhbGwgdGhpcyBpZiB5b3UndmUgbW9kaWZpZWQgdGhlIHJl
ZmVyZW5jZSBjb3VudHMgb2Ygbm9kZXMgdGhhdCBkZWFsIHdpdGgKICAgICAvLyBsb2NhbCB2YXJp
YWJsZXMuIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgbG9jYWwgdmFyaWFibGUgcmVmZXJlbmNl
cyBjYW4gZm9ybQogICAgIC8vIGN5Y2xlcywgYW5kIGhlbmNlIHJlZmVyZW5jZSBjb3VudGluZyBp
cyBub3QgZW5vdWdoLiBUaGlzIHdpbGwgcmVzZXQgdGhlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMw
LDY0ICszMCw3NSBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdHcmFw
aC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGNsYXNzIEluc2VydGlv
biB7CiBwdWJsaWM6CiAgICAgSW5zZXJ0aW9uKCkgeyB9CiAgICAgCi0gICAgSW5zZXJ0aW9uKHNp
emVfdCBpbmRleCwgY29uc3QgRWxlbWVudFR5cGUmIGVsZW1lbnQpCisgICAgSW5zZXJ0aW9uKHNp
emVfdCBpbmRleCwgTm9kZUluZGV4IGVsZW1lbnQpCiAgICAgICAgIDogbV9pbmRleChpbmRleCkK
ICAgICAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKICAgICB7CiAgICAgfQogICAgIAogICAgIHNp
emVfdCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KLSAgICBjb25zdCBFbGVtZW50
VHlwZSYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQorICAgIGNvbnN0IE5v
ZGVJbmRleCBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CiBwcml2YXRlOgog
ICAgIHNpemVfdCBtX2luZGV4OwotICAgIEVsZW1lbnRUeXBlIG1fZWxlbWVudDsKKyAgICBOb2Rl
SW5kZXggbV9lbGVtZW50OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBj
bGFzcyBJbnNlcnRpb25TZXQgewogcHVibGljOgotICAgIEluc2VydGlvblNldCgpIHsgfQorICAg
IEluc2VydGlvblNldChHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAg
ICB7CisgICAgfQogICAgIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IEluc2VydGlvbjxFbGVtZW50
VHlwZT4mIGluc2VydGlvbikKKyAgICBOb2RlSW5kZXggaW5zZXJ0KGNvbnN0IEluc2VydGlvbiYg
aW5zZXJ0aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX2luc2VydGlvbnMuc2l6ZSgpIHx8
IG1faW5zZXJ0aW9ucy5sYXN0KCkuaW5kZXgoKSA8PSBpbnNlcnRpb24uaW5kZXgoKSk7CiAgICAg
ICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoaW5zZXJ0aW9uKTsKKyAgICAgICAgcmV0dXJuIGluc2Vy
dGlvbi5lbGVtZW50KCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgYXBwZW5kKHNpemVfdCBpbmRl
eCwgY29uc3QgRWxlbWVudFR5cGUmIGVsZW1lbnQpCisgICAgTm9kZUluZGV4IGluc2VydChzaXpl
X3QgaW5kZXgsIE5vZGVJbmRleCBlbGVtZW50KQogICAgIHsKLSAgICAgICAgYXBwZW5kKEluc2Vy
dGlvbjxFbGVtZW50VHlwZT4oaW5kZXgsIGVsZW1lbnQpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZChJbnNlcnRpb248RWxlbWVudFR5cGU+KGluZGV4LCBlbGVtZW50KSk7CisgICAgfQorCisjZGVm
aW5lIERGR19ERUZJTkVfSU5TRVJUX05PREUodGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlw
ZVBhcmFtcywgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykgXAorICAgIHRlbXBsYXRlUHJlIHR5cGVQ
YXJhbXMgdGVtcGxhdGVQb3N0IE5vZGVJbmRleCBpbnNlcnROb2RlKHNpemVfdCBpbmRleCwgUmVm
Q2hpbGRyZW5Nb2RlIHJlZkNoaWxkcmVuTW9kZSwgUmVmTm9kZU1vZGUgcmVmTm9kZU1vZGUsIFNw
ZWN1bGF0ZWRUeXBlIHR5cGUsIHZhbHVlUGFyYW1zKSBcCisgICAgeyBcCisgICAgICAgIHJldHVy
biBpbnNlcnQoaW5kZXgsIG1fZ3JhcGguYWRkTm9kZShyZWZDaGlsZHJlbk1vZGUsIHJlZk5vZGVN
b2RlLCB0eXBlLCB2YWx1ZUFyZ3MpKTsgXAogICAgIH0KKyAgICBERkdfVkFSSUFESUNfVEVNUExB
VEVfRlVOQ1RJT04oREZHX0RFRklORV9JTlNFUlRfTk9ERSkKKyN1bmRlZiBERkdfREVGSU5FX0lO
U0VSVF9OT0RFCiAgICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+Ci0g
ICAgdm9pZCBleGVjdXRlKENvbGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9uKQorICAgIHZvaWQgZXhl
Y3V0ZShCYXNpY0Jsb2NrKiBibG9jaykKICAgICB7CiAgICAgICAgIGlmICghbV9pbnNlcnRpb25z
LnNpemUoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY29sbGVjdGlvbi5ncm93KGNv
bGxlY3Rpb24uc2l6ZSgpICsgbV9pbnNlcnRpb25zLnNpemUoKSk7Ci0gICAgICAgIHNpemVfdCBs
YXN0SW5kZXggPSBjb2xsZWN0aW9uLnNpemUoKTsKKyAgICAgICAgYmxvY2stPmdyb3coY29sbGVj
dGlvbi5zaXplKCkgKyBtX2luc2VydGlvbnMuc2l6ZSgpKTsKKyAgICAgICAgc2l6ZV90IGxhc3RJ
bmRleCA9IGJsb2NrLT5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4SW5JbnNlcnRp
b25zID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5kZXhJbkluc2VydGlvbnMtLTspIHsKICAgICAg
ICAgICAgIEluc2VydGlvbjxFbGVtZW50VHlwZT4mIGluc2VydGlvbiA9IG1faW5zZXJ0aW9uc1tp
bmRleEluSW5zZXJ0aW9uc107CiAgICAgICAgICAgICBzaXplX3QgZmlyc3RJbmRleCA9IGluc2Vy
dGlvbi5pbmRleCgpICsgaW5kZXhJbkluc2VydGlvbnM7CiAgICAgICAgICAgICBzaXplX3QgaW5k
ZXhPZmZzZXQgPSBpbmRleEluSW5zZXJ0aW9ucyArIDE7CiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gbGFzdEluZGV4OyAtLWkgPiBmaXJzdEluZGV4OykKLSAgICAgICAgICAgICAgICBjb2xs
ZWN0aW9uW2ldID0gY29sbGVjdGlvbltpIC0gaW5kZXhPZmZzZXRdOwotICAgICAgICAgICAgY29s
bGVjdGlvbltmaXJzdEluZGV4XSA9IGluc2VydGlvbi5lbGVtZW50KCk7CisgICAgICAgICAgICAg
ICAgYmxvY2stPmF0KGkpID0gYmxvY2stPmF0KGkgLSBpbmRleE9mZnNldCk7CisgICAgICAgICAg
ICBibG9jay0+YXQoZmlyc3RJbmRleCkgPSBpbnNlcnRpb24uZWxlbWVudCgpOwogICAgICAgICAg
ICAgbGFzdEluZGV4ID0gZmlyc3RJbmRleDsKICAgICAgICAgfQogICAgICAgICBtX2luc2VydGlv
bnMucmVzaXplKDApOwogICAgIH0KIHByaXZhdGU6Ci0gICAgVmVjdG9yPEluc2VydGlvbjxFbGVt
ZW50VHlwZT4sIDg+IG1faW5zZXJ0aW9uczsKKyAgICBHcmFwaCYgbV9ncmFwaDsKKyAgICBWZWN0
b3I8SW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTQw
MjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg3LDYgKzg3LDE3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAKICAgICBOb2RlKCkgeyB9
CiAgICAgCisgICAgTm9kZShOb2RlVHlwZSBvcCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBjb25z
dCBBZGphY2VuY3lMaXN0JiBjaGlsZHJlbikKKyAgICAgICAgOiBjb2RlT3JpZ2luKGNvZGVPcmln
aW4pCisgICAgICAgICwgY2hpbGRyZW4oY2hpbGRyZW4pCisgICAgICAgICwgbV92aXJ0dWFsUmVn
aXN0ZXIoSW52YWxpZFZpcnR1YWxSZWdpc3RlcikKKyAgICAgICAgLCBtX3JlZkNvdW50KDApCisg
ICAgICAgICwgbV9wcmVkaWN0aW9uKFNwZWNOb25lKQorICAgIHsKKyAgICAgICAgc2V0T3BBbmRE
ZWZhdWx0RmxhZ3Mob3ApOworICAgICAgICBBU1NFUlQoISEobV9mbGFncyAmIE5vZGVIYXNWYXJB
cmdzKSA9PSAoY2hpbGRyZW4ua2luZCgpID09IEFkamFjZW5jeUxpc3Q6OlZhcmlhYmxlKSk7Cisg
ICAgfQorICAgIAogICAgIC8vIENvbnN0cnVjdCBhIG5vZGUgd2l0aCB1cCB0byAzIGNoaWxkcmVu
LCBubyBpbW1lZGlhdGUgdmFsdWUuCiAgICAgTm9kZShOb2RlVHlwZSBvcCwgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBOb2RlSW5kZXggY2hpbGQxID0gTm9Ob2RlLCBOb2RlSW5kZXggY2hpbGQyID0g
Tm9Ob2RlLCBOb2RlSW5kZXggY2hpbGQzID0gTm9Ob2RlKQogICAgICAgICA6IGNvZGVPcmlnaW4o
Y29kZU9yaWdpbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE0MDIx
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQ2hlY2tIb2lzdGlu
Z1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDIzICsyODYsMTYgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICBub2RlLnJlZigpOwotCiAgICAgICAgICAgICAgICAgICAgIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiA9IG5vZGUuY29kZU9yaWdpbjsKICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgIE5vZGUgZ2V0TG9jYWwoR2V0TG9jYWwsIGNvZGVPcmlnaW4sIE9wSW5m
byh2YXJpYWJsZSksIG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIGdldExvY2FsLnBy
ZWRpY3QodmFyaWFibGUtPnByZWRpY3Rpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgIGdldExv
Y2FsLnJlZigpOwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggZ2V0TG9jYWxJbmRleCA9
IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChnZXRM
b2NhbCk7Ci0gICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5hcHBlbmQoaW5kZXhJbkJs
b2NrICsgMSwgZ2V0TG9jYWxJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICBOb2RlIGNoZWNrU3RydWN0dXJlKENoZWNrU3RydWN0dXJlLCBjb2RlT3JpZ2lu
LCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUp
KSwgZ2V0TG9jYWxJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrU3RydWN0dXJlLnJl
ZigpOwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggY2hlY2tTdHJ1Y3R1cmVJbmRleCA9
IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChjaGVj
a1N0cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5hcHBlbmQoaW5k
ZXhJbkJsb2NrICsgMSwgY2hlY2tTdHJ1Y3R1cmVJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggZ2V0TG9jYWxJbmRleCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2sg
KyAxLCBEb250UmVmQ2hpbGRyZW4sIERvbnRSZWZOb2RlLCB2YXJpYWJsZS0+cHJlZGljdGlvbigp
LAorICAgICAgICAgICAgICAgICAgICAgICAgR2V0TG9jYWwsIGNvZGVPcmlnaW4sIE9wSW5mbyh2
YXJpYWJsZSksIG5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2sgKyAxLCBS
ZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNOb25lLCBDaGVja1N0cnVjdHVyZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVy
ZVNldChpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
Z2V0TG9jYWxJbmRleCk7CisKICAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT52YXJpYWJs
ZXNBdFRhaWwub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkgPT0gbm9kZUluZGV4KQogICAgICAg
ICAgICAgICAgICAgICAgICAgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5vcGVyYW5kKHZhcmlhYmxl
LT5sb2NhbCgpKSA9IGdldExvY2FsSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgIApAQCAtMzI3
LDE4ICszMjAsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4gPSBub2RlLmNvZGVPcmlnaW47CiAgICAgICAgICAgICAgICAgICAgIE5vZGVJbmRl
eCBjaGlsZDEgPSBub2RlLmNoaWxkMSgpLmluZGV4KCk7CiAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBOb2RlIHNldExvY2FsKFNldExvY2FsLCBjb2RlT3JpZ2luLCBP
cEluZm8odmFyaWFibGUpLCBjaGlsZDEpOwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXgg
c2V0TG9jYWxJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLmFwcGVuZChzZXRMb2NhbCk7Ci0gICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5h
cHBlbmQoaW5kZXhJbkJsb2NrLCBzZXRMb2NhbEluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaFtjaGlsZDFdLnJlZigpOworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBEb250
UmVmQ2hpbGRyZW4sIERvbnRSZWZOb2RlLCBTcGVjTm9uZSwgU2V0TG9jYWwsIGNvZGVPcmlnaW4s
CisgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8odmFyaWFibGUpLCBjaGlsZDEpOworCiAg
ICAgICAgICAgICAgICAgICAgIC8vIFVzZSBhIEZvcndhcmRDaGVja1N0cnVjdHVyZSB0byBpbmRp
Y2F0ZSB0aGF0IHdlIHNob3VsZCBleGl0IHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAvLyBu
ZXh0IGJ5dGVjb2RlIGluc3RydWN0aW9uIHJhdGhlciB0aGFuIHJlZXhlY3V0aW5nIHRoZSBjdXJy
ZW50IG9uZS4KLSAgICAgICAgICAgICAgICAgICAgTm9kZSBjaGVja1N0cnVjdHVyZShGb3J3YXJk
Q2hlY2tTdHJ1Y3R1cmUsIGNvZGVPcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNl
dChpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSkpLCBjaGlsZDEpOwotICAgICAgICAgICAgICAgICAg
ICBjaGVja1N0cnVjdHVyZS5yZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZUluZGV4IGNo
ZWNrU3RydWN0dXJlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5hcHBlbmQoY2hlY2tTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgICAgICAgICBpbnNl
cnRpb25TZXQuYXBwZW5kKGluZGV4SW5CbG9jaywgY2hlY2tTdHJ1Y3R1cmVJbmRleCk7CisgICAg
ICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAg
ICAgICAgICAgICBpbmRleEluQmxvY2ssIFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05v
bmUsIEZvcndhcmRDaGVja1N0cnVjdHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVP
cmlnaW4sIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChpdGVyLT52YWx1ZS5tX3N0cnVj
dHVyZSkpLCBjaGlsZDEpOwogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWRpY0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWRpY0Z1bmN0aW9uLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhZGljRnVuY3Rpb24uaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR1ZhcmlhZGljRnVuY3Rpb25faAorI2RlZmlu
ZSBERkdWYXJpYWRpY0Z1bmN0aW9uX2gKKworI2RlZmluZSBERkdfQ09NTUEgLAorCisvLyBUaGUg
c2lnbmF0dXJlIG9mIHYgaXMgKHRlbXBsYXRlUHJlLCB0ZW1wbGF0ZVBvc3QsIHR5cGVQYXJhbXMs
IHZhbHVlUGFyYW1zLCB2YWx1ZUFyZ3MpCisvLworLy8gWW91IHdvdWxkIHVzZSBpdCBsaWtlOgor
Ly8gI2RlZmluZSBERUZJTkVfRlVOQ1RJT04odGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlw
ZVBhcmFtcywgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykgXAorLy8gICAgIHRlbXBsYXRlUHJlIHR5
cGVQYXJhbXMgdGVtcGxhdGVQb3N0IHZvaWQgZih2YWx1ZVBhcmFtcykgeyBnKHZhbHVlQXJncyk7
IH0KKy8vIERGR19WQVJJQURJQ19URU1QTEFURV9GVU5DVElPTihERUZJTkVfRlVOQ1RJT04pCisv
LyAjdW5kZWYgREVGSU5FX0ZVTkNUSU9OCisvLworLy8gT3IgaWYgeW91IHdhbnRlZCB0aGUgZGVm
aW5lZCBmdW5jdGlvbiB0byB0YWtlIGFuIGFkZGl0aW9uYWwgdGVtcGxhdGUgYXJnLCB5b3Ugd291
bGQgZG86CisvLyAjZGVmaW5lIERFRklORV9GVU5DVElPTih0ZW1wbGF0ZVByZSwgdGVtcGxhdGVQ
b3N0LCB0eXBlUGFyYW1zLCB2YWx1ZVBhcmFtcywgdmFsdWVBcmdzKSBcCisvLyAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZVBhcmFtcz4gdm9pZCBmKFQgdmFsdWUsIHZhbHVlUGFyYW1zKSB7
IGcodmFsdWUsIHZhbHVlQXJncyk7IH0KKy8vIERGR19WQVJJQURJQ19URU1QTEFURV9GVU5DVElP
TihERUZJTkVfRlVOQ1RJT04pCisvLyAjdW5kZWYgREVGSU5FX0ZVTkNUSU9OCisKKyNkZWZpbmUg
REZHX1ZBUklBRElDX1RFTVBMQVRFX0ZVTkNUSU9OKHYpIFwKKyAgICB2KCwgLCAsICwgKSBcCisg
ICAgdih0ZW1wbGF0ZTwsID4sIHR5cGVuYW1lIF9ERkdfVDEsIGNvbnN0IF9ERkdfVDEmIF9ERkdf
dmFsdWUxLCBfREZHX3ZhbHVlMSkgXAorICAgIHYodGVtcGxhdGU8LCA+LCB0eXBlbmFtZSBfREZH
X1QxIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1QyLCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVl
MSBERkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RGR192YWx1ZTIsIF9ERkdfdmFsdWUxIERGR19D
T01NQSBfREZHX3ZhbHVlMikgXAorICAgIHYodGVtcGxhdGU8LCA+LCB0eXBlbmFtZSBfREZHX1Qx
IERGR19DT01NQSB0eXBlbmFtZSBfREZHX1QyIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1QzLCBj
b25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RGR192
YWx1ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzLCBfREZHX3ZhbHVlMSBE
RkdfQ09NTUEgX0RGR192YWx1ZTIgREZHX0NPTU1BIF9ERkdfdmFsdWUzKSBcCisgICAgdih0ZW1w
bGF0ZTwsID4sIHR5cGVuYW1lIF9ERkdfVDEgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDIgREZH
X0NPTU1BIHR5cGVuYW1lIF9ERkdfVDMgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDQsIGNvbnN0
IF9ERkdfVDEmIF9ERkdfdmFsdWUxIERGR19DT01NQSBjb25zdCBfREZHX1QyJiBfREZHX3ZhbHVl
MiBERkdfQ09NTUEgY29uc3QgX0RGR19UMyYgX0RGR192YWx1ZTMgREZHX0NPTU1BIGNvbnN0IF9E
RkdfVDQmIF9ERkdfdmFsdWU0LCBfREZHX3ZhbHVlMSBERkdfQ09NTUEgX0RGR192YWx1ZTIgREZH
X0NPTU1BIF9ERkdfdmFsdWUzIERGR19DT01NQSBfREZHX3ZhbHVlNCkgXAorICAgIHYodGVtcGxh
dGU8LCA+LCB0eXBlbmFtZSBfREZHX1QxIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1QyIERGR19D
T01NQSB0eXBlbmFtZSBfREZHX1QzIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1Q0IERGR19DT01N
QSB0eXBlbmFtZSBfREZHX1Q1LCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEg
Y29uc3QgX0RGR19UMiYgX0RGR192YWx1ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdf
dmFsdWUzIERGR19DT01NQSBjb25zdCBfREZHX1Q0JiBfREZHX3ZhbHVlNCBERkdfQ09NTUEgY29u
c3QgX0RGR19UNSYgX0RGR192YWx1ZTUsIF9ERkdfdmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVl
MiBERkdfQ09NTUEgX0RGR192YWx1ZTMgREZHX0NPTU1BIF9ERkdfdmFsdWU0IERGR19DT01NQSBf
REZHX3ZhbHVlNSkgXAorICAgIHYodGVtcGxhdGU8LCA+LCB0eXBlbmFtZSBfREZHX1QxIERGR19D
T01NQSB0eXBlbmFtZSBfREZHX1QyIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1QzIERGR19DT01N
QSB0eXBlbmFtZSBfREZHX1Q0IERGR19DT01NQSB0eXBlbmFtZSBfREZHX1Q1IERGR19DT01NQSB0
eXBlbmFtZSBfREZHX1Q2LCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29u
c3QgX0RGR19UMiYgX0RGR192YWx1ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFs
dWUzIERGR19DT01NQSBjb25zdCBfREZHX1Q0JiBfREZHX3ZhbHVlNCBERkdfQ09NTUEgY29uc3Qg
X0RGR19UNSYgX0RGR192YWx1ZTUgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDYmIF9ERkdfdmFsdWU2
LCBfREZHX3ZhbHVlMSBERkdfQ09NTUEgX0RGR192YWx1ZTIgREZHX0NPTU1BIF9ERkdfdmFsdWUz
IERGR19DT01NQSBfREZHX3ZhbHVlNCBERkdfQ09NTUEgX0RGR192YWx1ZTUgREZHX0NPTU1BIF9E
RkdfdmFsdWU2KSBcCisgICAgdih0ZW1wbGF0ZTwsID4sIHR5cGVuYW1lIF9ERkdfVDEgREZHX0NP
TU1BIHR5cGVuYW1lIF9ERkdfVDIgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDMgREZHX0NPTU1B
IHR5cGVuYW1lIF9ERkdfVDQgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDUgREZHX0NPTU1BIHR5
cGVuYW1lIF9ERkdfVDYgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDcsIGNvbnN0IF9ERkdfVDEm
IF9ERkdfdmFsdWUxIERGR19DT01NQSBjb25zdCBfREZHX1QyJiBfREZHX3ZhbHVlMiBERkdfQ09N
TUEgY29uc3QgX0RGR19UMyYgX0RGR192YWx1ZTMgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDQmIF9E
RkdfdmFsdWU0IERGR19DT01NQSBjb25zdCBfREZHX1Q1JiBfREZHX3ZhbHVlNSBERkdfQ09NTUEg
Y29uc3QgX0RGR19UNiYgX0RGR192YWx1ZTYgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDcmIF9ERkdf
dmFsdWU3LCBfREZHX3ZhbHVlMSBERkdfQ09NTUEgX0RGR192YWx1ZTIgREZHX0NPTU1BIF9ERkdf
dmFsdWUzIERGR19DT01NQSBfREZHX3ZhbHVlNCBERkdfQ09NTUEgX0RGR192YWx1ZTUgREZHX0NP
TU1BIF9ERkdfdmFsdWU2IERGR19DT01NQSBfREZHX3ZhbHVlNykgXAorICAgIHYodGVtcGxhdGU8
LCA+LCB0eXBlbmFtZSBfREZHX1QxIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1QyIERGR19DT01N
QSB0eXBlbmFtZSBfREZHX1QzIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1Q0IERGR19DT01NQSB0
eXBlbmFtZSBfREZHX1Q1IERGR19DT01NQSB0eXBlbmFtZSBfREZHX1Q2IERGR19DT01NQSB0eXBl
bmFtZSBfREZHX1Q3IERGR19DT01NQSB0eXBlbmFtZSBfREZHX1Q4LCBjb25zdCBfREZHX1QxJiBf
REZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RGR192YWx1ZTIgREZHX0NPTU1B
IGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzIERGR19DT01NQSBjb25zdCBfREZHX1Q0JiBfREZH
X3ZhbHVlNCBERkdfQ09NTUEgY29uc3QgX0RGR19UNSYgX0RGR192YWx1ZTUgREZHX0NPTU1BIGNv
bnN0IF9ERkdfVDYmIF9ERkdfdmFsdWU2IERGR19DT01NQSBjb25zdCBfREZHX1Q3JiBfREZHX3Zh
bHVlNyBERkdfQ09NTUEgVDgmIF9ERkdfdmFsdWU4LCBfREZHX3ZhbHVlMSBERkdfQ09NTUEgX0RG
R192YWx1ZTIgREZHX0NPTU1BIF9ERkdfdmFsdWUzIERGR19DT01NQSBfREZHX3ZhbHVlNCBERkdf
Q09NTUEgX0RGR192YWx1ZTUgREZHX0NPTU1BIF9ERkdfdmFsdWU2IERGR19DT01NQSBfREZHX3Zh
bHVlNyBERkdfQ09NTUEgX0RGR192YWx1ZTgpCisKKyNlbmRpZiAvLyBERkdWYXJpYWRpY0Z1bmN0
aW9uX2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183648</attachid>
            <date>2013-01-19 18:21:14 -0800</date>
            <delta_ts>2013-01-19 18:36:02 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>60332</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwMjY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDEzLTAxLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW5zZXJ0aW5nIGEgbm9kZSBpbnRvIHRoZSBERkcgZ3JhcGggc2hvdWxkIG5vdCByZXF1aXJlIGZp
dmUgbGluZXMgb2YgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA3MzgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisg
ICAgICAgIAorICAgICAgICBUaGlzIGFkZHMgZmFpcmx5IGNvbXByZWhlbnNpdmUgc3VwcG9ydCBm
b3IgaW5zZXJ0aW5nIGEgbm9kZSBpbnRvIGEgREZHIGdyYXBoIGluIG9uZQorICAgICAgICBtZXRo
b2QgY2FsbC4gQSBjb21tb24gZXhhbXBsZSBvZiB0aGlzIGlzOgorICAgICAgICAKKyAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIERvbnRSZWZDaGlsZHJlbiwg
RG9udFJlZk5vZGUsIFNwZWNOb25lLCBGb3JjZU9TUkV4aXQsIGNvZGVPcmlnaW4pOworICAgICAg
ICAKKyAgICAgICAgVGhlIGFyZ3VtZW50cyB0byBpbnNlcnQoKSBzcGVjaWZ5IHdoYXQgcmVmZXJl
bmNlIGNvdW50aW5nIHlvdSBuZWVkIHRvIGhhdmUgaGFwcGVuCisgICAgICAgIChSZWZDaGlsZHJl
biA9PiByZWN1cnNpdmVseSByZWZzIGFsbCBjaGlsZHJlbiwgUmVmTm9kZSA9PiBub24tcmVjdXJz
aXZlbHkgcmVmcyB0aGUgbm9kZQorICAgICAgICB0aGF0IHdhcyBjcmVhdGVkKSwgdGhlIHByZWRp
Y3Rpb24gdG8gc2V0IChTcGVjTm9uZSBpcyBhIGNvbW1vbiBkZWZhdWx0KSwgZm9sbG93ZWQgYnkK
KyAgICAgICAgdGhlIGFyZ3VtZW50cyB0byB0aGUgTm9kZSgpIGNvbnN0cnVjdG9yLiBJbnNlcnRp
b25TZXQ6Omluc2VydE5vZGUoKSBhbmQgc2ltaWxhciBtZXRob2RzCisgICAgICAgIChHcmFwaDo6
YWRkTm9kZSgpIGFuZCBCYXNpY0Jsb2NrOjphcHBlbmROb2RlKCkpIGFsbCB1c2UgYSBjb21tb24g
dmFyaWFkaWMgdGVtcGxhdGUKKyAgICAgICAgZnVuY3Rpb24gbWFjcm8gZnJvbSBERkdWYXJpYWRp
Y0Z1bmN0aW9uLmguIEFsc28sIGFsbCBvZiB0aGVzZSBtZXRob2RzIHdpbGwgYXV0b21hdGljYWxs
eQorICAgICAgICBub24tcmVjdXJzaXZlbHkgcmVmKCkgdGhlIG5vZGUgYmVpbmcgY3JlYXRlZCBp
ZiB0aGUgZmxhZ3Mgc2F5IE5vZGVNdXN0R2VuZXJhdGUuCisgICAgICAgIAorICAgICAgICBJbiBh
bGwsIHRoaXMgbmV3IG1lY2hhbmlzbSByZXRhaW5zIHRoZSBmbGV4aWJpbGl0eSBvZiB0aGUgb2xk
IGFwcHJvYWNoICh5b3UgZ2V0IHRvCisgICAgICAgIG1hbmFnZSByZWYgY291bnRzIHlvdXJzZWxm
LCBhbGJlaXQgaW4gbGVzcyBjb2RlKSB3aGlsZSBlbnN1cmluZyB0aGF0IG1vc3QgY29kZSB0aGF0
IGFkZHMKKyAgICAgICAgbm9kZXMgdG8gdGhlIGdyYXBoIG5vdyBuZWVkcyBsZXNzIGNvZGUgdG8g
ZG8gaXQuCisgICAgICAgIAorICAgICAgICBJbiB0aGUgZnV0dXJlLCB3ZSBzaG91bGQgcmV2aXNp
dCB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIG1ldGhvZG9sb2d5IGluIHRoZSBERkc6IHdlIGNvdWxk
CisgICAgICAgIGRvIGxpa2UgbW9zdCBjb21waWxlcnMgYW5kIGdldCByaWQgb2YgaXQgZW50aXJl
bHksIG9yIHdlIGNvdWxkIG1ha2UgaXQgYXV0b21hdGljLiBUaGlzCisgICAgICAgIHBhdGNoIGRv
ZXNuJ3QgYXR0ZW1wdCB0byBtYWtlIGFueSBzdWNoIG1ham9yIGNoYW5nZXMsIGFuZCBvbmx5IHNl
ZWtzIHRvIHNpbXBsaWZ5IHRoZQorICAgICAgICB0ZWNobmlxdWUgd2Ugd2VyZSBhbHJlYWR5IHVz
aW5nIChtYW51YWwgcmVmIGNvdW50aW5nKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvT3BlcmFuZHMuaDoK
KyAgICAgICAgKEpTQzo6ZHVtcE9wZXJhbmRzKToKKyAgICAgICAgKiBkZmcvREZHQWRqYWNlbmN5
TGlzdC5oOgorICAgICAgICAoQWRqYWNlbmN5TGlzdCk6CisgICAgICAgIChKU0M6OkRGRzo6QWRq
YWNlbmN5TGlzdDo6a2luZCk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0
aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFyZ3VtZW50c1NpbXBsaWZpY2F0aW9u
UGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suaDoKKyAgICAgICAgKERG
Ryk6CisgICAgICAgIChCYXNpY0Jsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQmFzaWNCbG9ja0lu
bGluZXMuaDogQWRkZWQuCisgICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdDRkdTaW1w
bGlmaWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlv
blBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6
OmtlZXBPcGVyYW5kQWxpdmUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAg
KiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNv
bnN0YW50Rm9sZGluZ1BoYXNlOjpDb25zdGFudEZvbGRpbmdQaGFzZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAoSlND
OjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2sp
OgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpwYWludFVucmVhY2hh
YmxlQ29kZSk6CisgICAgICAgIChDb25zdGFudEZvbGRpbmdQaGFzZSk6CisgICAgICAgICogZGZn
L0RGR0RyaXZlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OkZp
eHVwUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwQmxvY2spOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChGaXh1
cFBoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpjaGVja0FycmF5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpibGVzc0FycmF5T3BlcmF0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjppbmplY3RJbnQzMlRvRG91YmxlTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnJlZik6Cisg
ICAgICAgIChHcmFwaCk6CisgICAgICAgICogZGZnL0RGR0luc2VydGlvblNldC5oOgorICAgICAg
ICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb246Okluc2VydGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uOjplbGVtZW50KToKKyAgICAgICAgKEluc2VydGlvbik6
CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjpJbnNlcnRpb25TZXQpOgorICAgICAg
ICAoSlNDOjpERkc6Okluc2VydGlvblNldDo6aW5zZXJ0KToKKyAgICAgICAgKEluc2VydGlvblNl
dCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjpleGVjdXRlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok5vZGUpOgorICAgICAg
ICAoTm9kZSk6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlOjpydW4p
OgorICAgICAgICAqIGRmZy9ERkdWYXJpYWRpY0Z1bmN0aW9uLmg6IEFkZGVkLgorCiAyMDEzLTAx
LTE5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVHJhY2sg
aW5oZXJpdGFuY2Ugc3RydWN0dXJlcyBpbiBhIHNpZGUgdGFibGUsIGluc3RlYWQgb2YgdXNpbmcg
YSBwcml2YXRlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQw
MjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMzUsNiArMTAzNSw3IEBACiAJCTBG
ODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQz
QjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnJhbmNoRGlyZWN0aW9uLmg7IHBh
dGggPSBkZmcvREZHQnJhbmNoRGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGODVBMzFFMTZBQjc2QUUwMDc3NTcxRSAvKiBERkdWYXJpYWRpY0Z1bmN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ZhcmlhZGljRnVuY3Rpb24uaDsgcGF0
aCA9IGRmZy9ERkdWYXJpYWRpY0Z1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGOEY5NDNBMTY2NzYzMTEwMEQ2MTk3MSAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVTcGVjaWFsaXphdGlv
bktpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhGOTQzRDE2Njc2MzJE
MDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb2RlQmxvY2tIYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY4Rjk0M0UxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUJsb2NrSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTEwOCw2ICsxMTA5LDcgQEAKIAkJMEZDQjQwODUxNUMwQTNDMzAwNDg5
MzJCIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTbG90VmlzaXRvcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZEM0M4MjAxNDExNUNGODAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEcml2ZXIuY3BwOyBwYXRoID0gZGZnL0RGR0RyaXZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDNDODIyMTQxMTVEMEUwMEZE
ODFDQiAvKiBERkdEcml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
RHJpdmVyLmg7IHBhdGggPSBkZmcvREZHRHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGRDU2NTIyMTZBQjc4MEEwMDE5NzY1MyAvKiBERkdCYXNpY0Jsb2NrSW5saW5lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCYXNpY0Jsb2NrSW5saW5lcy5o
OyBwYXRoID0gZGZnL0RGR0Jhc2ljQmxvY2tJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRDgxQUNGMTU0RkI0RUIwMDk4M0U3MiAvKiBERkdEb21pbmF0b3JzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0RvbWluYXRvcnMuY3BwOyBw
YXRoID0gZGZnL0RGR0RvbWluYXRvcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkQ4MUFEMDE1NEZCNEVCMDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEb21pbmF0b3JzLmg7IHBhdGggPSBkZmcvREZHRG9t
aW5hdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MkUxRTE0MTcyQzJG
MDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0NhcGFiaWxpdGllcy5jcHA7IHBhdGggPSBkZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NDMsNiArMjU0NSw3IEBA
CiAJCQkJMEZDMDk3NkIxNDY4QUI0QTAwQ0YyNDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5jcHAg
Ki8sCiAJCQkJMEZDMDk3NkMxNDY4QUI0QTAwQ0YyNDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5o
ICovLAogCQkJCTBGNjIwMTcwMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdCYXNpY0Jsb2NrLmggKi8s
CisJCQkJMEZENTY1MjIxNkFCNzgwQTAwMTk3NjUzIC8qIERGR0Jhc2ljQmxvY2tJbmxpbmVzLmgg
Ki8sCiAJCQkJMEY4MzY0QjUxNjRCMEMwRTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5o
ICovLAogCQkJCTg2RUM5REI0MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5j
cHAgKi8sCiAJCQkJODZFQzlEQjUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2Vy
LmggKi8sCkBAIC0yNjMwLDYgKzI2MzMsNyBAQAogCQkJCTBGMkJEQzQxMTUyMjgwMTcwMENEODkx
MCAvKiBERkdWYXJpYWJsZUV2ZW50LmggKi8sCiAJCQkJMEYyQkRDNDIxNTIyODAxNzAwQ0Q4OTEw
IC8qIERGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwICovLAogCQkJCTBGMkJEQzQzMTUyMjgwMTcw
MENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmggKi8sCisJCQkJMEY4NUEzMUUxNkFC
NzZBRTAwNzc1NzFFIC8qIERGR1ZhcmlhZGljRnVuY3Rpb24uaCAqLywKIAkJCQkwRkZGQzk1MzE0
RUY5MDk1MDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcCAq
LywKIAkJCQkwRkZGQzk1NDE0RUY5MDk1MDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxs
b2NhdGlvblBoYXNlLmggKi8sCiAJCQkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wZXJhbmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wZXJhbmRzLmgJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNyArMTkzLDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHJhaXRzPgogdm9pZCBkdW1wT3BlcmFu
ZHMoY29uc3QgT3BlcmFuZHM8VCwgVHJhaXRzPiYgb3BlcmFuZHMsIFByaW50U3RyZWFtJiBvdXQp
CiB7CiAgICAgZm9yIChzaXplX3QgYXJndW1lbnQgPSBvcGVyYW5kcy5udW1iZXJPZkFyZ3VtZW50
cygpOyBhcmd1bWVudC0tOykgewotICAgICAgICBpZiAoYXJndW1lbnQpCisgICAgICAgIGlmIChh
cmd1bWVudCAhPSBvcGVyYW5kcy5udW1iZXJPZkFyZ3VtZW50cygpIC0gMSkKICAgICAgICAgICAg
IG91dC5wcmludGYoIiAiKTsKICAgICAgICAgb3V0LnByaW50KCJhcmciLCBhcmd1bWVudCwgIjoi
KTsKICAgICAgICAgVHJhaXRzOjpkdW1wKG9wZXJhbmRzLmFyZ3VtZW50KGFyZ3VtZW50KSwgb3V0
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5o
CShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkamFj
ZW5jeUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDYgKzE2Miw5IEBAIHB1YmxpYzoKICAg
ICAgICAgbV93b3Jkc1sxXS5tX2VuY29kZWRXb3JkID0gbnVtQ2hpbGRyZW47CiAgICAgfQogICAg
IAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBt
X2tpbmQ7IH0KKyNlbmRpZgogcHJpdmF0ZToKICAgICBFZGdlIG1fd29yZHNbU2l6ZV07CiAjaWYg
IUFTU0VSVF9ESVNBQkxFRApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1
bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDcsNyArNDA3LDcgQEAgcHVi
bGljOgogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgCi0gICAgICAgIEluc2VydGlvblNldDxO
b2RlSW5kZXg+IGluc2VydGlvblNldDsKKyAgICAgICAgSW5zZXJ0aW9uU2V0IGluc2VydGlvblNl
dChtX2dyYXBoKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4
ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrSW5kZXgp
IHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nrc1tibG9j
a0luZGV4XS5nZXQoKTsKQEAgLTUzMiwxMSArNTMyLDkgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8gV2Uga25vdyBleGFjdGx5IHdoYXQgdGhp
cyB3aWxsIHJldHVybi4gQnV0IG9ubHkgYWZ0ZXIgd2UgaGF2ZSBjaGVja2VkCiAgICAgICAgICAg
ICAgICAgICAgIC8vIHRoYXQgbm9ib2R5IGhhcyBlc2NhcGVkIG91ciBhcmd1bWVudHMuCi0gICAg
ICAgICAgICAgICAgICAgIE5vZGUgY2hlY2soQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkLCBjb2Rl
T3JpZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgY2hlY2sucmVmKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIE5vZGVJbmRleCBjaGVja0luZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGNoZWNrKTsKLSAgICAgICAgICAgICAgICAgICAgaW5z
ZXJ0aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2ssIGNoZWNrSW5kZXgpOworICAgICAgICAgICAg
ICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
IGluZGV4SW5CbG9jaywgRG9udFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUsIAor
ICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkLCBjb2RlT3Jp
Z2luKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
Y29udmVydFRvQ29uc3RhbnQoCiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXgsIGpz
TnVtYmVyKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkp
OwpAQCAtNTc2LDI0ICs1NzQsMjAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAvLyBo
YXMgcnVuIC0gdGhlcmVmb3JlIGl0IG1ha2VzIGxpdHRsZSBzZW5zZSB0byBsaW5rIHRoZSBHZXRM
b2NhbCBvcGVyYXRpb24KICAgICAgICAgICAgICAgICAgICAgLy8gaW50byB0aGUgVmFyaWFibGVB
Y2Nlc3NEYXRhIGFuZCBQaGkgZ3JhcGhzLgogCi0gICAgICAgICAgICAgICAgICAgIE5vZGUgY2hl
Y2soQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkLCBub2RlLmNvZGVPcmlnaW4pOwotICAgICAgICAg
ICAgICAgICAgICBjaGVjay5yZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIE5vZGUgcGhhbnRvbShQaGFudG9tLCBub2RlLmNvZGVPcmlnaW4pOwotICAgICAg
ICAgICAgICAgICAgICBwaGFudG9tLnJlZigpOwotICAgICAgICAgICAgICAgICAgICBwaGFudG9t
LmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjsKKyAgICAgICAgICAgICAgICAgICAgQ29kZU9yaWdp
biBjb2RlT3JpZ2luID0gbm9kZS5jb2RlT3JpZ2luOworICAgICAgICAgICAgICAgICAgICBBZGph
Y2VuY3lMaXN0IGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjsKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUuY29udmVydFRvR2V0TG9jYWxVbmxpbmtlZCgKICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYmFzZWxp
bmVDb2RlQmxvY2tGb3Iobm9kZS5jb2RlT3JpZ2luKS0+YXJndW1lbnRJbmRleEFmdGVyQ2FwdHVy
ZShpbmRleCkpKTsKIAotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggY2hlY2tOb2RlSW5k
ZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQo
Y2hlY2spOwotICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuYXBwZW5kKGluZGV4SW5C
bG9jaywgY2hlY2tOb2RlSW5kZXgpOwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggcGhh
bnRvbU5vZGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLmFwcGVuZChwaGFudG9tKTsKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmFw
cGVuZChpbmRleEluQmxvY2ssIHBoYW50b21Ob2RlSW5kZXgpOworICAgICAgICAgICAgICAgICAg
ICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4
SW5CbG9jaywgRG9udFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUsIENoZWNrQXJn
dW1lbnRzTm90Q3JlYXRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4pOwor
ICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgRG9udFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwg
U3BlY05vbmUsIFBoYW50b20sIGNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBj
aGlsZHJlbik7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC02MTQsNyArNjA4LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgqYmxvY2sp
OworICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5k
ZXggPCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKytibG9ja0luZGV4KSB7CkBAIC02MzQsMTkg
KzYyOCwxNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKG1fY3JlYXRlc0FyZ3VtZW50
cy5jb250YWlucyhub2RlUHRyLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkpCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChub2RlUHRyLT5zaG91
bGRHZW5lcmF0ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUgcGhhbnRvbShQaGFudG9t
LCBub2RlUHRyLT5jb2RlT3JpZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgcGhhbnRvbS5jaGls
ZHJlbiA9IG5vZGVQdHItPmNoaWxkcmVuOwotICAgICAgICAgICAgICAgICAgICBwaGFudG9tLnJl
ZigpOwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggcGhhbnRvbU5vZGVJbmRleCA9IG1f
Z3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChwaGFudG9t
KTsKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2ss
IHBoYW50b21Ob2RlSW5kZXgpOworICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgRG9udFJlZkNo
aWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUsIFBoYW50b20sCisgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlUHRyLT5jb2RlT3JpZ2luLCBub2RlUHRyLT5jaGlsZHJlbik7CiAgICAgICAg
ICAgICAgICAgICAgIG5vZGVQdHIgPSAmbV9ncmFwaFtub2RlSW5kZXhdOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBub2RlUHRyLT5zZXRPcEFuZERlZmF1bHRGbGFncyhQaGFu
dG9tQXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICBub2RlUHRyLT5jaGlsZHJlbi5yZXNldCgp
OwogICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKmJsb2NrKTsKKyAgICAgICAgICAgIGluc2VydGlv
blNldC5leGVjdXRlKGJsb2NrKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGNo
YW5nZWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAko
cmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDEyICszMSwxNSBAQAogI2luY2x1ZGUgIkRGR0Fic3Ry
YWN0VmFsdWUuaCIKICNpbmNsdWRlICJERkdCcmFuY2hEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJE
RkdOb2RlLmgiCisjaW5jbHVkZSAiREZHVmFyaWFkaWNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk9w
ZXJhbmRzLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCitjbGFzcyBHcmFwaDsKKwog
dHlwZWRlZiBWZWN0b3IgPEJsb2NrSW5kZXgsIDI+IFByZWRlY2Vzc29yTGlzdDsKIAogc3RydWN0
IEJhc2ljQmxvY2sgOiBWZWN0b3I8Tm9kZUluZGV4LCA4PiB7CkBAIC05Nyw3ICsxMDAsMTIgQEAg
c3RydWN0IEJhc2ljQmxvY2sgOiBWZWN0b3I8Tm9kZUluZGV4LCA4PgogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KKyAgICAKKyNkZWZpbmUgREZHX0RFRklORV9BUFBF
TkRfTk9ERSh0ZW1wbGF0ZVByZSwgdGVtcGxhdGVQb3N0LCB0eXBlUGFyYW1zLCB2YWx1ZVBhcmFt
c0NvbW1hLCB2YWx1ZVBhcmFtcywgdmFsdWVBcmdzKSBcCisgICAgdGVtcGxhdGVQcmUgdHlwZVBh
cmFtcyB0ZW1wbGF0ZVBvc3QgTm9kZUluZGV4IGFwcGVuZE5vZGUoR3JhcGgmIGdyYXBoLCBSZWZD
aGlsZHJlbk1vZGUgcmVmQ2hpbGRyZW5Nb2RlLCBSZWZOb2RlTW9kZSByZWZOb2RlTW9kZSwgU3Bl
Y3VsYXRlZFR5cGUgdHlwZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlUGFyYW1zKTsKKyAgICBERkdf
VkFSSUFESUNfVEVNUExBVEVfRlVOQ1RJT04oREZHX0RFRklORV9BUFBFTkRfTk9ERSkKKyN1bmRl
ZiBERkdfREVGSU5FX0FQUEVORF9OT0RFCisgICAgCiAgICAgLy8gVGhpcyB2YWx1ZSBpcyB1c2Vk
IGludGVybmFsbHkgZm9yIGJsb2NrIGxpbmtpbmcgYW5kIE9TUiBlbnRyeS4gSXQgaXMgbW9zdGx5
IG1lYW5pbmdsZXNzCiAgICAgLy8gZm9yIG90aGVyIHB1cnBvc2VzIGR1ZSB0byBpbmxpbmluZy4K
ICAgICB1bnNpZ25lZCBieXRlY29kZUJlZ2luOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFzaWNCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIERGR0Jhc2ljQmxvY2tJbmxpbmVzX2gKKyNkZWZpbmUgREZHQmFzaWNC
bG9ja0lubGluZXNfaAorCisjaW5jbHVkZSAiREZHQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkRG
R0dyYXBoLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgeworCisjZGVmaW5lIERGR19ERUZJTkVfQVBQRU5EX05PREUodGVtcGxhdGVQcmUs
IHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXNDb21tYSwgdmFsdWVQYXJhbXMs
IHZhbHVlQXJncykgXAorICAgIHRlbXBsYXRlUHJlIHR5cGVQYXJhbXMgdGVtcGxhdGVQb3N0IE5v
ZGVJbmRleCBCYXNpY0Jsb2NrOjphcHBlbmROb2RlKEdyYXBoJiBncmFwaCwgUmVmQ2hpbGRyZW5N
b2RlIHJlZkNoaWxkcmVuTW9kZSwgUmVmTm9kZU1vZGUgcmVmTm9kZU1vZGUsIFNwZWN1bGF0ZWRU
eXBlIHR5cGUgdmFsdWVQYXJhbXNDb21tYSB2YWx1ZVBhcmFtcykgXAorICAgIHsgXAorICAgICAg
ICBOb2RlSW5kZXggcmVzdWx0ID0gZ3JhcGguYWRkTm9kZShyZWZDaGlsZHJlbk1vZGUsIHJlZk5v
ZGVNb2RlLCB0eXBlIHZhbHVlUGFyYW1zQ29tbWEgdmFsdWVBcmdzKTsgXAorICAgICAgICBhcHBl
bmQocmVzdWx0KTsgXAorICAgICAgICByZXR1cm4gcmVzdWx0OyBcCisgICAgfQorICAgIERGR19W
QVJJQURJQ19URU1QTEFURV9GVU5DVElPTihERkdfREVGSU5FX0FQUEVORF9OT0RFKQorI3VuZGVm
IERGR19ERUZJTkVfQVBQRU5EX05PREUKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisj
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdCYXNpY0Jsb2NrSW5saW5l
c19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
RkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAi
REZHQWJzdHJhY3RTdGF0ZS5oIgotI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKKyNpbmNsdWRl
ICJERkdCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVk
ZSAiREZHSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiREZHUGhhc2UuaCIKQEAgLTEzNiwxMSAr
MTM2LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgamV0dGlzb25CbG9jayhibG9ja0luZGV4LCBub3RUYWtlbkJsb2NrSW5k
ZXgsIGJvdW5kYXJ5Q29kZU9yaWdpbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXgganVtcE5vZGVJbmRleCA9IG1fZ3JhcGgu
c2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUganVtcChKdW1wLCBib3Vu
ZGFyeUNvZGVPcmlnaW4sIE9wSW5mbyh0YWtlbkJsb2NrSW5kZXgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqdW1wLnJlZigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGguYXBwZW5kKGp1bXApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5h
cHBlbmQoanVtcE5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2st
PmFwcGVuZE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIERv
bnRSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNOb25lLCBKdW1wLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib3VuZGFyeUNvZGVPcmlnaW4sIE9wSW5mbyh0YWtlbkJsb2Nr
SW5kZXgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgIGlubmVyQ2hhbmdlZCA9IG91dGVyQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTE2OSwxMSArMTY3LDkgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyYW5jaC5zZXRPcEFuZERlZmF1bHRGbGFncyhQaGFudG9tKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYnJhbmNoLnJlZkNvdW50KCkgPT0gMSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTm9kZSBqdW1wKEp1bXAsIGJyYW5jaC5jb2RlT3JpZ2luLCBPcEluZm8odGFyZ2V0QmxvY2tJ
bmRleCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAucmVmKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTm9kZUluZGV4IGp1bXBOb2RlSW5kZXggPSBtX2dyYXBoLnNp
emUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChqdW1wKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kKGp1bXBOb2RlSW5kZXgp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROb2RlKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBEb250UmVmQ2hpbGRyZW4sIERvbnRS
ZWZOb2RlLCBTcGVjTm9uZSwgSnVtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJhbmNoLmNvZGVPcmlnaW4sIE9wSW5mbyh0YXJnZXRCbG9ja0luZGV4KSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lckNoYW5nZWQgPSBv
dXRlckNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0y
NzUsMTEgKzI3MSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5lcmF0
ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBBU1NFUlQobV9ncmFwaFtub2RlSW5k
ZXhdLm9wKCkgIT0gU2V0TG9jYWwpOwotICAgICAgICBOb2RlSW5kZXggcGhhbnRvbU5vZGVJbmRl
eCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICBOb2RlIHBoYW50b20oUGhhbnRvbSwgY29kZU9y
aWdpbiwgbm9kZUluZGV4KTsKLSAgICAgICAgbV9ncmFwaC5hcHBlbmQocGhhbnRvbSk7Ci0gICAg
ICAgIG1fZ3JhcGgucmVmKHBoYW50b21Ob2RlSW5kZXgpOwotICAgICAgICBibG9jay0+YXBwZW5k
KHBoYW50b21Ob2RlSW5kZXgpOworICAgICAgICBibG9jay0+YXBwZW5kTm9kZSgKKyAgICAgICAg
ICAgIG1fZ3JhcGgsIFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUsIFBoYW50b20s
IGNvZGVPcmlnaW4sIG5vZGVJbmRleCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZml4UG9zc2li
bGVHZXRMb2NhbChCYXNpY0Jsb2NrKiBibG9jaywgRWRnZSYgZWRnZSwgYm9vbCBjaGFuZ2VSZWYp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHJldmlzaW9uIDE0MDIx
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNSw2ICsxMDUsMjMgQEAgZW51bSBVc2VLaW5kIHsKICAgICBMYXN0VXNlS2luZCAv
LyBNdXN0IGFsd2F5cyBiZSB0aGUgbGFzdCBlbnRyeSBpbiB0aGUgZW51bSwgYXMgaXQgaXMgdXNl
ZCB0byBkZW5vdGUgdGhlIG51bWJlciBvZiBlbnVtIGVsZW1lbnRzLgogfTsKIAorLy8gVXNlIFJl
ZkNoaWxkcmVuIGlmIHRoZSBjaGlsZCByZWYgY291bnRzIGhhdmVuJ3QgYWxyZWFkeSBiZWVuIGFk
anVzdGVkIHVzaW5nCisvLyBvdGhlciBtZWFucyBhbmQgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcg
aXMgdHJ1ZToKKy8vIC0gVGhlIG5vZGUgeW91J3JlIGNyZWF0aW5nIGlzIE11c3RHZW5lcmF0ZS4K
Ky8vIC0gVGhlIHBsYWNlIHdoZXJlIHlvdSdyZSBpbnNlcnRpbmcgYSByZWZlcmVuY2UgdG8gdGhl
IG5vZGUgeW91J3JlIGNyZWF0aW5nCisvLyAgIHdpbGwgbm90IGFsc28gZG8gUmVmQ2hpbGRyZW4u
CitlbnVtIFJlZkNoaWxkcmVuTW9kZSB7CisgICAgUmVmQ2hpbGRyZW4sCisgICAgRG9udFJlZkNo
aWxkcmVuCit9OworCisvLyBVc2UgUmVmTm9kZSBpZiB5b3Uga25vdyB0aGF0IHRoZSBub2RlIHdp
bGwgYmUgdXNlZCBmcm9tIGFub3RoZXIgbm9kZSwgYW5kIHlvdQorLy8gd2lsbCBub3QgYWxyZWFk
eSBiZSByZWYnaW5nIHRoZSBub2RlIHRvIGFjY291bnQgZm9yIHRoYXQgdXNlLgorZW51bSBSZWZO
b2RlTW9kZSB7CisgICAgUmVmTm9kZSwKKyAgICBEb250UmVmTm9kZQorfTsKKwogaW5saW5lIGNv
bnN0IGNoYXIqIHVzZUtpbmRUb1N0cmluZyhVc2VLaW5kIHVzZUtpbmQpCiB7CiAgICAgc3dpdGNo
ICh1c2VLaW5kKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIENvbnN0YW50Rm9sZGluZ1BoYXNl
KEdyYXBoJiBncmFwaCkKICAgICAgICAgOiBQaGFzZShncmFwaCwgImNvbnN0YW50IGZvbGRpbmci
KQogICAgICAgICAsIG1fc3RhdGUoZ3JhcGgpCisgICAgICAgICwgbV9pbnNlcnRpb25TZXQoZ3Jh
cGgpCiAgICAgewogICAgIH0KICAgICAKQEAgLTE3OSwxMiArMTgwLDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobmVlZHNXYXRjaHBvaW50KSB7CiAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX3N0YXRlLmZvck5vZGUoY2hpbGQpLm1fZnV0dXJl
UG9zc2libGVTdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSkpOwot
ICAgICAgICAgICAgICAgICAgICBtX2dyYXBoW2NoaWxkXS5yZWYoKTsKLSAgICAgICAgICAgICAg
ICAgICAgTm9kZSB3YXRjaHBvaW50KFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50LCBjb2Rl
T3JpZ2luLCBPcEluZm8oc3RydWN0dXJlKSwgY2hpbGQpOwotICAgICAgICAgICAgICAgICAgICB3
YXRjaHBvaW50LnJlZigpOwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggd2F0Y2hwb2lu
dEluZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBw
ZW5kKHdhdGNocG9pbnQpOwotICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBl
bmQoaW5kZXhJbkJsb2NrLCB3YXRjaHBvaW50SW5kZXgpOworICAgICAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJ
bkJsb2NrLCBSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNOb25lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQsIGNvZGVPcmlnaW4sIE9w
SW5mbyhzdHJ1Y3R1cmUpLCBjaGlsZCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2VJbmRleDsKQEAg
LTE5MywxMSArMTkxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQoc3RhdHVzLm9mZnNldCgpKSkKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9y
YWdlSW5kZXggPSBjaGlsZDsKICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgTm9kZSBnZXRCdXR0ZXJmbHkoR2V0QnV0dGVyZmx5LCBjb2RlT3JpZ2luLCBjaGlsZCk7
Ci0gICAgICAgICAgICAgICAgICAgIGdldEJ1dHRlcmZseS5yZWYoKTsKLSAgICAgICAgICAgICAg
ICAgICAgcHJvcGVydHlTdG9yYWdlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5hcHBlbmQoZ2V0QnV0dGVyZmx5KTsKLSAgICAgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuYXBwZW5kKGluZGV4SW5CbG9jaywgcHJvcGVydHlTdG9yYWdlSW5k
ZXgpOworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2VJbmRleCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ss
IERvbnRSZWZDaGlsZHJlbiwgUmVmTm9kZSwgU3BlY05vbmUsIEdldEJ1dHRlcmZseSwgY29kZU9y
aWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9ncmFwaFtub2RlSW5kZXhdLmNv
bnZlcnRUb0dldEJ5T2Zmc2V0KG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5zaXplKCksIHBy
b3BlcnR5U3RvcmFnZUluZGV4KTsKQEAgLTI0MSwxMiArMjM3LDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobmVlZHNXYXRjaHBvaW50KSB7CiAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChtX3N0YXRlLmZvck5vZGUoY2hpbGQpLm1fZnV0dXJlUG9z
c2libGVTdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSkpOwotICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoW2NoaWxkXS5yZWYoKTsKLSAgICAgICAgICAgICAgICAg
ICAgTm9kZSB3YXRjaHBvaW50KFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50LCBjb2RlT3Jp
Z2luLCBPcEluZm8oc3RydWN0dXJlKSwgY2hpbGQpOwotICAgICAgICAgICAgICAgICAgICB3YXRj
aHBvaW50LnJlZigpOwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggd2F0Y2hwb2ludElu
ZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5k
KHdhdGNocG9pbnQpOwotICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQo
aW5kZXhJbkJsb2NrLCB3YXRjaHBvaW50SW5kZXgpOworICAgICAgICAgICAgICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJs
b2NrLCBSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNOb25lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQsIGNvZGVPcmlnaW4sIE9wSW5m
byhzdHJ1Y3R1cmUpLCBjaGlsZCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIFN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKiB0cmFuc2l0aW9uRGF0
YSA9IDA7CkBAIC0yNzQsNTEgKzI2NywzNiBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAg
Tm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZUluZGV4OwogICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIG1fZ3JhcGhbY2hpbGRdLnJlZigpOwotICAgICAgICAgICAgICAgIGlmIChpc0lu
bGluZU9mZnNldChzdGF0dXMub2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgIGlmIChpc0lubGlu
ZU9mZnNldChzdGF0dXMub2Zmc2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGhb
Y2hpbGRdLnJlZigpOyAvLyBUaGUgY2hpbGQgd2lsbCBiZSB1c2VkIGFzIHRoZSBwcm9wZXJ0eSBp
bmRleCwgc28gcmVmIGl0IHRvIHJlZmxlY3QgdGhlIGRvdWJsZSB1c2UuCiAgICAgICAgICAgICAg
ICAgICAgIHByb3BlcnR5U3RvcmFnZUluZGV4ID0gY2hpbGQ7Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAoc3RhdHVzLmlzU2ltcGxlUmVwbGFjZSgpIHx8IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSA9PSBzdGF0dXMubmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgTm9kZSBnZXRCdXR0ZXJmbHkoR2V0QnV0dGVyZmx5LCBjb2Rl
T3JpZ2luLCBjaGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgIGdldEJ1dHRlcmZseS5yZWYoKTsK
LSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlSW5kZXggPSBtX2dyYXBoLnNpemUo
KTsKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQoZ2V0QnV0dGVyZmx5KTsKLSAg
ICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBwZW5kKGluZGV4SW5CbG9jaywgcHJv
cGVydHlTdG9yYWdlSW5kZXgpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzLmlz
U2ltcGxlUmVwbGFjZSgpIHx8IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBzdGF0
dXMubmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcHJvcGVydHlTdG9yYWdlSW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAor
ICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBSZWZDaGlsZHJlbiwgUmVmTm9k
ZSwgU3BlY05vbmUsIEdldEJ1dHRlcmZseSwgY29kZU9yaWdpbiwgY2hpbGQpOwogICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewogICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoc3RhdHVzLm5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVD
YXBhY2l0eSgpKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFpc0lubGluZU9mZnNldChz
dGF0dXMub2Zmc2V0KCkpKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSBhbGxvY2F0ZVN0b3Jh
Z2UoQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIGNvZGVPcmlnaW4sIE9wSW5mbyh0cmFuc2l0aW9u
RGF0YSksIGNoaWxkKTsKLSAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGVTdG9yYWdlLnJlZigp
OyAvLyBPbmNlIGZvciB0aGUgdXNlLgotICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZVN0b3Jh
Z2UucmVmKCk7IC8vIFR3aWNlIGJlY2F1c2UgaXQncyBtdXN0LWdlbmVyYXRlLgotICAgICAgICAg
ICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2VJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChhbGxvY2F0ZVN0b3JhZ2UpOwotICAgICAgICAg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQoaW5kZXhJbkJsb2NrLCBwcm9wZXJ0eVN0
b3JhZ2VJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZUluZGV4ID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4
SW5CbG9jaywgUmVmQ2hpbGRyZW4sIFJlZk5vZGUsIFNwZWNOb25lLCBBbGxvY2F0ZVByb3BlcnR5
U3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4sIE9wSW5mbyh0cmFu
c2l0aW9uRGF0YSksIGNoaWxkKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHN0YXR1cy5uZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSA+IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVCghaXNJbmxpbmVPZmZzZXQoc3RhdHVzLm9mZnNldCgpKSk7CiAgICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBOb2RlIGdldEJ1dHRlcmZseShHZXRC
dXR0ZXJmbHksIGNvZGVPcmlnaW4sIGNoaWxkKTsKLSAgICAgICAgICAgICAgICAgICAgZ2V0QnV0
dGVyZmx5LnJlZigpOwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggZ2V0QnV0dGVyZmx5
SW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBl
bmQoZ2V0QnV0dGVyZmx5KTsKLSAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBw
ZW5kKGluZGV4SW5CbG9jaywgZ2V0QnV0dGVyZmx5SW5kZXgpOwotICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaFtjaGlsZF0ucmVmKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIE5vZGUgcmVhbGxvY2F0ZVN0b3JhZ2UoUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZSwgY29kZU9yaWdpbiwgT3BJbmZvKHRyYW5zaXRpb25EYXRhKSwgY2hpbGQsIGdldEJ1dHRlcmZs
eUluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgcmVhbGxvY2F0ZVN0b3JhZ2UucmVmKCk7IC8v
IE9uY2UgZm9yIHRoZSB1c2UuCi0gICAgICAgICAgICAgICAgICAgIHJlYWxsb2NhdGVTdG9yYWdl
LnJlZigpOyAvLyBUd2ljZSBiZWNhdXNlIGl0J3MgbXVzdC1nZW5lcmF0ZS4KLSAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydHlTdG9yYWdlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQocmVhbGxvY2F0ZVN0b3JhZ2UpOwotICAgICAgICAg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQoaW5kZXhJbkJsb2NrLCBwcm9wZXJ0eVN0
b3JhZ2VJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZUluZGV4ID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4
SW5CbG9jaywgUmVmQ2hpbGRyZW4sIFJlZk5vZGUsIFNwZWNOb25lLCBSZWFsbG9jYXRlUHJvcGVy
dHlTdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgY29kZU9yaWdpbiwgT3BJbmZvKHRy
YW5zaXRpb25EYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIERvbnRSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUs
IFNwZWNOb25lLCBHZXRCdXR0ZXJmbHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29k
ZU9yaWdpbiwgY2hpbGQpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5pc1NpbXBsZVRyYW5zaXRpb24oKSkgewotICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoW2NoaWxkXS5yZWYoKTsKLSAgICAgICAgICAgICAgICAgICAg
Tm9kZSBwdXRTdHJ1Y3R1cmUoUHV0U3RydWN0dXJlLCBjb2RlT3JpZ2luLCBPcEluZm8odHJhbnNp
dGlvbkRhdGEpLCBjaGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgIHB1dFN0cnVjdHVyZS5yZWYo
KTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZUluZGV4IHB1dFN0cnVjdHVyZUluZGV4ID0gbV9n
cmFwaC5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKHB1dFN0cnVj
dHVyZSk7Ci0gICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmFwcGVuZChpbmRleElu
QmxvY2ssIHB1dFN0cnVjdHVyZUluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywg
UmVmQ2hpbGRyZW4sIERvbnRSZWZOb2RlLCBTcGVjTm9uZSwgUHV0U3RydWN0dXJlLCBjb2RlT3Jp
Z2luLAorICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHRyYW5zaXRpb25EYXRhKSwgY2hp
bGQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBtX2dyYXBoW25vZGVJbmRleF0uY29udmVydFRvUHV0QnlPZmZzZXQobV9ncmFwaC5tX3N0b3Jh
Z2VBY2Nlc3NEYXRhLnNpemUoKSwgcHJvcGVydHlTdG9yYWdlSW5kZXgpOwpAQCAtMzQ2LDggKzMy
NCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgTm9kZSBwaGFudG9tKFBo
YW50b20sIG5vZGUuY29kZU9yaWdpbik7Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBp
ZiAobm9kZS5vcCgpID09IEdldExvY2FsKSB7CiAgICAgICAgICAgICAgICAgTm9kZUluZGV4IHBy
ZXZpb3VzTG9jYWxBY2Nlc3MgPSBOb05vZGU7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT52
YXJpYWJsZXNBdEhlYWQub3BlcmFuZChub2RlLmxvY2FsKCkpID09IG5vZGVJbmRleApAQCAtNDAy
LDQ2ICszNzgsMzggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUu
dmFyaWFibGVBY2Nlc3NEYXRhKCktPmlzQ2FwdHVyZWQoKSk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgcGhhbnRvbS5jaGls
ZHJlbiA9IG5vZGUuY2hpbGRyZW47Ci0gICAgICAgICAgICBwaGFudG9tLnJlZigpOwogICAgICAg
ICAgICAgCisgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLmNvZGVPcmln
aW47CisgICAgICAgICAgICBBZGphY2VuY3lMaXN0IGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjsK
KyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQo
bm9kZUluZGV4LCB2YWx1ZSk7Ci0gICAgICAgICAgICBOb2RlSW5kZXggcGhhbnRvbU5vZGVJbmRl
eCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQocGhhbnRvbSk7
Ci0gICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQoaW5kZXhJbkJsb2NrLCBwaGFudG9t
Tm9kZUluZGV4KTsKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAg
ICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBEb250UmVmQ2hpbGRyZW4sIERvbnRSZWZOb2RlLCBT
cGVjTm9uZSwgUGhhbnRvbSwgY29kZU9yaWdpbiwgY2hpbGRyZW4pOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgbV9zdGF0
ZS5yZXNldCgpOwotICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKCpibG9jayk7CisgICAg
ICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogICAgICAgICAKICAgICAgICAgcmV0
dXJuIGNoYW5nZWQ7CiAgICAgfQogICAgIAogICAgIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlv
bkNoZWNrKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgdW5zaWduZWQgaW5kZXhJbkJsb2NrLCBKU0Nl
bGwqIGNlbGwpCiAgICAgewotICAgICAgICBOb2RlIHdlYWtDb25zdGFudChXZWFrSlNDb25zdGFu
dCwgY29kZU9yaWdpbiwgT3BJbmZvKGNlbGwpKTsKLSAgICAgICAgd2Vha0NvbnN0YW50LnJlZigp
OwotICAgICAgICB3ZWFrQ29uc3RhbnQucHJlZGljdChzcGVjdWxhdGlvbkZyb21WYWx1ZShjZWxs
KSk7Ci0gICAgICAgIE5vZGVJbmRleCB3ZWFrQ29uc3RhbnRJbmRleCA9IG1fZ3JhcGguc2l6ZSgp
OwotICAgICAgICBtX2dyYXBoLmFwcGVuZCh3ZWFrQ29uc3RhbnQpOwotICAgICAgICBtX2luc2Vy
dGlvblNldC5hcHBlbmQoaW5kZXhJbkJsb2NrLCB3ZWFrQ29uc3RhbnRJbmRleCk7CisgICAgICAg
IE5vZGVJbmRleCB3ZWFrQ29uc3RhbnRJbmRleCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
CisgICAgICAgICAgICBpbmRleEluQmxvY2ssIERvbnRSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUs
IHNwZWN1bGF0aW9uRnJvbVZhbHVlKGNlbGwpLAorICAgICAgICAgICAgV2Vha0pTQ29uc3RhbnQs
IGNvZGVPcmlnaW4sIE9wSW5mbyhjZWxsKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoY2VsbC0+
c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SXNTdGlsbFZhbGlkKCkpIHsKLSAg
ICAgICAgICAgIE5vZGUgd2F0Y2hwb2ludChTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludCwg
Y29kZU9yaWdpbiwgT3BJbmZvKGNlbGwtPnN0cnVjdHVyZSgpKSwgd2Vha0NvbnN0YW50SW5kZXgp
OwotICAgICAgICAgICAgd2F0Y2hwb2ludC5yZWYoKTsKLSAgICAgICAgICAgIE5vZGVJbmRleCB3
YXRjaHBvaW50SW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAgICAgIG1fZ3JhcGguYXBw
ZW5kKHdhdGNocG9pbnQpOwotICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBwZW5kKGluZGV4
SW5CbG9jaywgd2F0Y2hwb2ludEluZGV4KTsKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCisgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBSZWZDaGlsZHJlbiwgRG9u
dFJlZk5vZGUsIFNwZWNOb25lLCBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludCwKKyAgICAg
ICAgICAgICAgICBjb2RlT3JpZ2luLCBPcEluZm8oY2VsbC0+c3RydWN0dXJlKCkpLCB3ZWFrQ29u
c3RhbnRJbmRleCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIE5vZGUgY2hlY2soQ2hlY2tTdHJ1Y3R1cmUsIGNvZGVPcmlnaW4sIE9wSW5mbyhtX2dy
YXBoLmFkZFN0cnVjdHVyZVNldChjZWxsLT5zdHJ1Y3R1cmUoKSkpLCB3ZWFrQ29uc3RhbnRJbmRl
eCk7Ci0gICAgICAgIGNoZWNrLnJlZigpOwotICAgICAgICBOb2RlSW5kZXggY2hlY2tJbmRleCA9
IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICBtX2dyYXBoLmFwcGVuZChjaGVjayk7Ci0gICAgICAg
IG1faW5zZXJ0aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2ssIGNoZWNrSW5kZXgpOworCisgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICBpbmRleEluQmxvY2ss
IFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUsIENoZWNrU3RydWN0dXJlLCBjb2Rl
T3JpZ2luLAorICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGNlbGwt
PnN0cnVjdHVyZSgpKSksIHdlYWtDb25zdGFudEluZGV4KTsKICAgICB9CiAgICAgCiAgICAgLy8g
VGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgQ0ZBIG1heSByZWFjaCBjb25jbHVzaW9ucyBh
Ym91dCBjb25zdGFudHMgYmFzZWQgb24gaXRzCkBAIC00NzcsMjQgKzQ0NSwyMiBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBOb2RlIGZvcmNlT1NSRXhpdChGb3JjZU9TUkV4aXQs
IG5vZGUuY29kZU9yaWdpbik7Ci0gICAgICAgICAgICAgICAgZm9yY2VPU1JFeGl0LnJlZigpOwot
ICAgICAgICAgICAgICAgIE5vZGVJbmRleCBmb3JjZU9TUkV4aXRJbmRleCA9IG1fZ3JhcGguc2l6
ZSgpOwotICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGZvcmNlT1NSRXhpdCk7Ci0gICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBwZW5kKGluZGV4SW5CbG9jaywgZm9yY2VPU1JF
eGl0SW5kZXgpOworICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisg
ICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgRG9udFJlZkNoaWxkcmVuLCBEb250UmVm
Tm9kZSwgU3BlY05vbmUsIEZvcmNlT1NSRXhpdCwKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5j
b2RlT3JpZ2luKTsKICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIG1fc3RhdGUucmVzZXQoKTsKLSAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0
ZSgqYmxvY2spOworICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICAg
ICAgCiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KIAogICAgIEFic3RyYWN0U3RhdGUg
bV9zdGF0ZTsKLSAgICBJbnNlcnRpb25TZXQ8Tm9kZUluZGV4PiBtX2luc2VydGlvblNldDsKKyAg
ICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CiB9OwogCiBib29sIHBlcmZvcm1Db25zdGFu
dEZvbGRpbmcoR3JhcGgmIGdyYXBoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3
IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGljOgogICAgIEZpeHVw
UGhhc2UoR3JhcGgmIGdyYXBoKQogICAgICAgICA6IFBoYXNlKGdyYXBoLCAiZml4dXAiKQorICAg
ICAgICAsIG1faW5zZXJ0aW9uU2V0KGdyYXBoKQogICAgIHsKICAgICB9CiAgICAgCkBAIC02MCw3
ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2NvbXBpbGVJbmRleCA9IGJsb2NrLT5h
dChtX2luZGV4SW5CbG9jayk7CiAgICAgICAgICAgICBmaXh1cE5vZGUobV9ncmFwaFttX2NvbXBp
bGVJbmRleF0pOwogICAgICAgICB9Ci0gICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKmJs
b2NrKTsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CiAgICAgfQogICAg
IAogICAgIHZvaWQgZml4dXBOb2RlKE5vZGUmIG5vZGUpCkBAIC05NiwxMiArOTcsMTAgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0
aW9uKCksCiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLnByZWRp
Y3Rpb24oKSk7CiAgICAgICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5zdXBwb3J0c0xlbmd0aCgp
ICYmIGFycmF5UHJvZmlsZS0+aGFzRGVmaW5pdGVTdHJ1Y3R1cmUoKSkgewotICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLnJlZihub2RlUHRyLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIE5vZGUgY2hlY2tTdHJ1Y3R1cmUoQ2hlY2tTdHJ1Y3R1cmUsIG5vZGVQdHItPmNvZGVPcmln
aW4sIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChhcnJheVByb2ZpbGUtPmV4cGVjdGVk
U3RydWN0dXJlKCkpKSwgbm9kZVB0ci0+Y2hpbGQxKCkuaW5kZXgoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGNoZWNrU3RydWN0dXJlLnJlZigpOwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5k
ZXggY2hlY2tTdHJ1Y3R1cmVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLmFwcGVuZChjaGVja1N0cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0LmFwcGVuZChtX2luZGV4SW5CbG9jaywgY2hlY2tTdHJ1Y3R1cmVJbmRl
eCk7CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAg
ICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgUmVmQ2hpbGRyZW4sIERvbnRSZWZO
b2RlLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlUHRyLT5jb2RlT3JpZ2luLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoYXJyYXlQ
cm9maWxlLT5leHBlY3RlZFN0cnVjdHVyZSgpKSksCisgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlUHRyLT5jaGlsZDEoKS5pbmRleCgpKTsKICAgICAgICAgICAgICAgICAgICAgbm9kZVB0ciA9
ICZtX2dyYXBoW21fY29tcGlsZUluZGV4XTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9IGVsc2UgewpAQCAtMzIyLDE5ICszMjEsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoMCk7
CiAgICAgICAgICAgICAgICAgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoMSk7CisKKyAgICAgICAg
ICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGRvIHJlZidpbmcgb24gdGhlIGNoaWxkcmVuIGJl
Y2F1c2Ugd2UncmUgc3RlYWxpbmcgdGhlbSBmcm9tCisgICAgICAgICAgICAgICAgLy8gdGhlIG9y
aWdpbmFsIGRpdmlzaW9uLgorICAgICAgICAgICAgICAgIE5vZGVJbmRleCBuZXdEaXZpc2lvbklu
ZGV4ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9p
bmRleEluQmxvY2ssIERvbnRSZWZDaGlsZHJlbiwgUmVmTm9kZSwgU3BlY0RvdWJsZSwgbV9ncmFw
aFttX2NvbXBpbGVJbmRleF0pOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIE5v
ZGUmIG9sZERpdmlzaW9uID0gbV9ncmFwaFttX2NvbXBpbGVJbmRleF07Ci0gICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgTm9kZSBuZXdEaXZpc2lvbiA9IG9sZERpdmlzaW9uOwotICAg
ICAgICAgICAgICAgIG5ld0RpdmlzaW9uLnNldFJlZkNvdW50KDIpOwotICAgICAgICAgICAgICAg
IG5ld0RpdmlzaW9uLnByZWRpY3QoU3BlY0RvdWJsZSk7Ci0gICAgICAgICAgICAgICAgTm9kZUlu
ZGV4IG5ld0RpdmlzaW9uSW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBvbGREaXZpc2lvbi5zZXRPcChEb3VibGVBc0ludDMyKTsKLSAgICAg
ICAgICAgICAgICBvbGREaXZpc2lvbi5jaGlsZHJlbi5pbml0aWFsaXplKEVkZ2UobmV3RGl2aXNp
b25JbmRleCwgRG91YmxlVXNlKSwgRWRnZSgpLCBFZGdlKCkpOwotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKG5ld0RpdmlzaW9uKTsKLSAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5hcHBlbmQobV9pbmRleEluQmxvY2ssIG5ld0RpdmlzaW9uSW5k
ZXgpOworICAgICAgICAgICAgICAgIG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLnNldE9wKERvdWJs
ZUFzSW50MzIpOworICAgICAgICAgICAgICAgIG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLmNoaWxk
cmVuLmluaXRpYWxpemUoRWRnZShuZXdEaXZpc2lvbkluZGV4LCBEb3VibGVVc2UpLCBFZGdlKCks
IEVkZ2UoKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CkBAIC00MjIsMjggKzQxNiwxMyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgfQog
ICAgIAotICAgIE5vZGVJbmRleCBhZGROb2RlKGNvbnN0IE5vZGUmIG5vZGUsIGJvb2wgc2hvdWxk
R2VuZXJhdGUpCi0gICAgewotICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gbV9ncmFwaC5z
aXplKCk7Ci0gICAgICAgIG1fZ3JhcGguYXBwZW5kKG5vZGUpOwotICAgICAgICBtX2luc2VydGlv
blNldC5hcHBlbmQobV9pbmRleEluQmxvY2ssIG5vZGVJbmRleCk7Ci0gICAgICAgIGlmIChzaG91
bGRHZW5lcmF0ZSkKLSAgICAgICAgICAgIG1fZ3JhcGhbbm9kZUluZGV4XS5yZWYoKTsKLSAgICAg
ICAgcmV0dXJuIG5vZGVJbmRleDsKLSAgICB9Ci0gICAgCiAgICAgTm9kZUluZGV4IGNoZWNrQXJy
YXkoQXJyYXlNb2RlIGFycmF5TW9kZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBOb2RlSW5kZXgg
YXJyYXksIE5vZGVJbmRleCBpbmRleCwgYm9vbCAoKnN0b3JhZ2VDaGVjaykoY29uc3QgQXJyYXlN
b2RlJikgPSBjYW5DU0VTdG9yYWdlLCBib29sIHNob3VsZEdlbmVyYXRlID0gdHJ1ZSkKICAgICB7
CiAgICAgICAgIEFTU0VSVChhcnJheU1vZGUuaXNTcGVjaWZpYygpKTsKICAgICAgICAgCi0gICAg
ICAgIG1fZ3JhcGgucmVmKGFycmF5KTsKLQogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGFycmF5TW9kZS5vcmlnaW5hbEFycmF5U3RydWN0dXJlKG1fZ3JhcGgsIGNvZGVPcmlnaW4pOwog
ICAgICAgICAKICAgICAgICAgaWYgKGFycmF5TW9kZS5kb2VzQ29udmVyc2lvbigpKSB7Ci0gICAg
ICAgICAgICBpZiAoaW5kZXggIT0gTm9Ob2RlKQotICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVm
KGluZGV4KTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHN0cnVjdHVyZSkgewogICAg
ICAgICAgICAgICAgIGlmIChtX2luZGV4SW5CbG9jayA+IDApIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gSWYgdGhlIHByZXZpb3VzIG5vZGUgd2FzIGEgQ2hlY2tTdHJ1Y3R1cmUgaW5zZXJ0ZWQg
YmVjYXVzZSBvZiBzdHVmZgpAQCAtNDU1LDQ0ICs0MzQsNDIgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgICAgIHByZXZpb3VzTm9kZS5zZXRPcEFuZERlZmF1bHRGbGFncyhQaGFudG9t
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
Tm9kZSBhcnJheWlmeShBcnJheWlmeVRvU3RydWN0dXJlLCBjb2RlT3JpZ2luLCBPcEluZm8oc3Ry
dWN0dXJlKSwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGFycmF5LCBpbmRleCk7Ci0gICAg
ICAgICAgICAgICAgYXJyYXlpZnkucmVmKCk7Ci0gICAgICAgICAgICAgICAgTm9kZUluZGV4IGFy
cmF5aWZ5SW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmFw
cGVuZChhcnJheWlmeSk7Ci0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBwZW5kKG1f
aW5kZXhJbkJsb2NrLCBhcnJheWlmeUluZGV4KTsKKyAgICAgICAgICAgICAgICBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgUmVm
Q2hpbGRyZW4sIERvbnRSZWZOb2RlLCBTcGVjTm9uZSwgQXJyYXlpZnlUb1N0cnVjdHVyZSwgY29k
ZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHN0cnVjdHVyZSksIE9wSW5mbyhh
cnJheU1vZGUuYXNXb3JkKCkpLCBhcnJheSwgaW5kZXgpOwogICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBOb2RlIGFycmF5aWZ5KEFycmF5aWZ5LCBjb2RlT3JpZ2luLCBPcElu
Zm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgYXJyYXksIGluZGV4KTsKLSAgICAgICAgICAgICAgICBh
cnJheWlmeS5yZWYoKTsKLSAgICAgICAgICAgICAgICBOb2RlSW5kZXggYXJyYXlpZnlJbmRleCA9
IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGFycmF5aWZ5
KTsKLSAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQobV9pbmRleEluQmxvY2ss
IGFycmF5aWZ5SW5kZXgpOworICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBSZWZDaGlsZHJlbiwgRG9u
dFJlZk5vZGUsIFNwZWNOb25lLCBBcnJheWlmeSwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAg
ICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGFycmF5LCBpbmRleCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoc3RydWN0dXJlKSB7Ci0g
ICAgICAgICAgICAgICAgTm9kZSBjaGVja1N0cnVjdHVyZShDaGVja1N0cnVjdHVyZSwgY29kZU9y
aWdpbiwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSkpLCBhcnJheSk7
Ci0gICAgICAgICAgICAgICAgY2hlY2tTdHJ1Y3R1cmUucmVmKCk7Ci0gICAgICAgICAgICAgICAg
Tm9kZUluZGV4IGNoZWNrU3RydWN0dXJlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAg
ICAgICAgICBtX2dyYXBoLmFwcGVuZChjaGVja1N0cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuYXBwZW5kKG1faW5kZXhJbkJsb2NrLCBjaGVja1N0cnVjdHVyZUluZGV4
KTsKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAg
ICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgUmVmQ2hpbGRyZW4sIERvbnRSZWZOb2RlLCBTcGVj
Tm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIGNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9w
SW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpKSwgYXJyYXkpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBOb2RlIGNoZWNrQXJyYXkoQ2hlY2tBcnJh
eSwgY29kZU9yaWdpbiwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGFycmF5KTsKLSAgICAg
ICAgICAgICAgICBjaGVja0FycmF5LnJlZigpOwotICAgICAgICAgICAgICAgIE5vZGVJbmRleCBj
aGVja0FycmF5SW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAgICAgICAgICBtX2dyYXBo
LmFwcGVuZChjaGVja0FycmF5KTsKLSAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBl
bmQobV9pbmRleEluQmxvY2ssIGNoZWNrQXJyYXlJbmRleCk7CisgICAgICAgICAgICAgICAgbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxv
Y2ssIFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUsIENoZWNrQXJyYXksIGNvZGVP
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBh
cnJheSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICgh
c3RvcmFnZUNoZWNrKGFycmF5TW9kZSkpCiAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAg
ICAgICAKLSAgICAgICAgaWYgKHNob3VsZEdlbmVyYXRlKQotICAgICAgICAgICAgbV9ncmFwaC5y
ZWYoYXJyYXkpOwotICAgICAgICAKLSAgICAgICAgaWYgKGFycmF5TW9kZS51c2VzQnV0dGVyZmx5
KCkpCi0gICAgICAgICAgICByZXR1cm4gYWRkTm9kZShOb2RlKEdldEJ1dHRlcmZseSwgY29kZU9y
aWdpbiwgYXJyYXkpLCBzaG91bGRHZW5lcmF0ZSk7CisgICAgICAgIGlmIChhcnJheU1vZGUudXNl
c0J1dHRlcmZseSgpKSB7CisgICAgICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywKKyAgICAgICAgICAgICAgICBz
aG91bGRHZW5lcmF0ZSA/IFJlZkNoaWxkcmVuIDogRG9udFJlZkNoaWxkcmVuLAorICAgICAgICAg
ICAgICAgIHNob3VsZEdlbmVyYXRlID8gUmVmTm9kZSA6IERvbnRSZWZOb2RlLAorICAgICAgICAg
ICAgICAgIFNwZWNOb25lLCBHZXRCdXR0ZXJmbHksIGNvZGVPcmlnaW4sIGFycmF5KTsKKyAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgcmV0dXJuIGFkZE5vZGUoTm9kZShHZXRJbmRleGVkUHJv
cGVydHlTdG9yYWdlLCBjb2RlT3JpZ2luLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgYXJy
YXkpLCBzaG91bGRHZW5lcmF0ZSk7CisgICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAorICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssCisgICAgICAgICAgICBzaG91bGRH
ZW5lcmF0ZSA/IFJlZkNoaWxkcmVuIDogRG9udFJlZkNoaWxkcmVuLAorICAgICAgICAgICAgc2hv
dWxkR2VuZXJhdGUgPyBSZWZOb2RlIDogRG9udFJlZk5vZGUsCisgICAgICAgICAgICBTcGVjTm9u
ZSwgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSwgY29kZU9yaWdpbiwgT3BJbmZvKGFycmF5TW9k
ZS5hc1dvcmQoKSksIGFycmF5KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBibGVzc0FycmF5T3Bl
cmF0aW9uKEVkZ2UgYmFzZSwgRWRnZSBpbmRleCwgdW5zaWduZWQgc3RvcmFnZUNoaWxkSWR4KQpA
QCAtNTA0LDExICs0ODEsOSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgc3dpdGNoIChu
b2RlUHRyLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VF
eGl0OiB7Ci0gICAgICAgICAgICBOb2RlIGZvcmNlRXhpdChGb3JjZU9TUkV4aXQsIG5vZGVQdHIt
PmNvZGVPcmlnaW4pOwotICAgICAgICAgICAgZm9yY2VFeGl0LnJlZigpOwotICAgICAgICAgICAg
Tm9kZUluZGV4IGZvcmNlRXhpdEluZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAgICAgICBt
X2dyYXBoLmFwcGVuZChmb3JjZUV4aXQpOwotICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBw
ZW5kKG1faW5kZXhJbkJsb2NrLCBmb3JjZUV4aXRJbmRleCk7CisgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBEb250
UmVmQ2hpbGRyZW4sIERvbnRSZWZOb2RlLCBTcGVjTm9uZSwgRm9yY2VPU1JFeGl0LAorICAgICAg
ICAgICAgICAgIG5vZGVQdHItPmNvZGVPcmlnaW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKQEAgLTU2MywzMyArNTM4LDIzIEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGluamVjdEludDMyVG9Eb3VibGVOb2RlKHVuc2lnbmVkIGNoaWxkSW5kZXgpCiAgICAg
ewotICAgICAgICBOb2RlJiBzb3VyY2UgPSBtX2dyYXBoW21fY29tcGlsZUluZGV4XTsKLSAgICAg
ICAgRWRnZSYgZWRnZSA9IG1fZ3JhcGguY2hpbGQoc291cmNlLCBjaGlsZEluZGV4KTsKLSAgICAg
ICAgCi0gICAgICAgIE5vZGVJbmRleCByZXN1bHRJbmRleCA9IChOb2RlSW5kZXgpbV9ncmFwaC5z
aXplKCk7CisgICAgICAgIE5vZGVJbmRleCByZXN1bHRJbmRleCA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCisgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgRG9udFJlZkNoaWxkcmVuLCBS
ZWZOb2RlLCBTcGVjRG91YmxlLCBJbnQzMlRvRG91YmxlLAorICAgICAgICAgICAgbV9ncmFwaFtt
X2NvbXBpbGVJbmRleF0uY29kZU9yaWdpbiwKKyAgICAgICAgICAgIG1fZ3JhcGguY2hpbGQobV9n
cmFwaFttX2NvbXBpbGVJbmRleF0sIGNoaWxkSW5kZXgpLmluZGV4KCkpOwogICAgICAgICAKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIGRhdGFMb2dG
KCIocmVwbGFjaW5nIEAldS0+QCV1IHdpdGggQCV1LT5AJXUpICIsCi0gICAgICAgICAgICAgICAg
bV9jb21waWxlSW5kZXgsIGVkZ2UuaW5kZXgoKSwgbV9jb21waWxlSW5kZXgsIHJlc3VsdEluZGV4
KTsKKyAgICAgICAgICAgICAgICAgbV9jb21waWxlSW5kZXgsIG1fZ3JhcGguY2hpbGQobV9ncmFw
aFttX2NvbXBpbGVJbmRleF0sIGNoaWxkSW5kZXgpLmluZGV4KCksIG1fY29tcGlsZUluZGV4LCBy
ZXN1bHRJbmRleCk7CiAjZW5kaWYKLSAgICAgICAgCi0gICAgICAgIC8vIEZpeCB0aGUgZWRnZSB1
cCBoZXJlIGJlY2F1c2UgaXQncyBhIHJlZmVyZW5jZSB0aGF0IHdpbGwgYmUgY2xvYmJlcmVkIGJ5
Ci0gICAgICAgIC8vIHRoZSBhcHBlbmQoKSBiZWxvdy4KLSAgICAgICAgTm9kZUluZGV4IG9sZElu
ZGV4ID0gZWRnZS5pbmRleCgpOwotICAgICAgICBlZGdlID0gRWRnZShyZXN1bHRJbmRleCwgRG91
YmxlVXNlKTsKLQotICAgICAgICBtX2dyYXBoLmFwcGVuZChOb2RlKEludDMyVG9Eb3VibGUsIHNv
dXJjZS5jb2RlT3JpZ2luLCBvbGRJbmRleCkpOwotICAgICAgICBtX2luc2VydGlvblNldC5hcHBl
bmQobV9pbmRleEluQmxvY2ssIHJlc3VsdEluZGV4KTsKLSAgICAgICAgCi0gICAgICAgIE5vZGUm
IGludDMyVG9Eb3VibGUgPSBtX2dyYXBoW3Jlc3VsdEluZGV4XTsKLSAgICAgICAgaW50MzJUb0Rv
dWJsZS5wcmVkaWN0KFNwZWNEb3VibGUpOwotICAgICAgICBpbnQzMlRvRG91YmxlLnJlZigpOwor
CisgICAgICAgIG1fZ3JhcGguY2hpbGQobV9ncmFwaFttX2NvbXBpbGVJbmRleF0sIGNoaWxkSW5k
ZXgpID0gRWRnZShyZXN1bHRJbmRleCwgRG91YmxlVXNlKTsKICAgICB9CiAKICAgICBCYXNpY0Js
b2NrKiBtX2Jsb2NrOwogICAgIHVuc2lnbmVkIG1faW5kZXhJbkJsb2NrOwogICAgIE5vZGVJbmRl
eCBtX2NvbXBpbGVJbmRleDsKLSAgICBJbnNlcnRpb25TZXQ8Tm9kZUluZGV4PiBtX2luc2VydGlv
blNldDsKKyAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CiB9OwogICAgIAogYm9vbCBw
ZXJmb3JtRml4dXAoR3JhcGgmIGdyYXBoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZH
QmFzaWNCbG9jay5oIgogI2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJERkdO
b2RlLmgiCisjaW5jbHVkZSAiREZHVmFyaWFkaWNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3Rh
Y2suaCIKICNpbmNsdWRlICJNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVk
ZSA8d3RmL0JpdFZlY3Rvci5oPgpAQCAtOTksMTYgKzEwMCwxOCBAQCBwdWJsaWM6CiAgICAgY29u
c3QgTm9kZSYgYXQoRWRnZSBub2RlVXNlKSBjb25zdCB7IHJldHVybiBhdChub2RlVXNlLmluZGV4
KCkpOyB9CiAgICAgCiAgICAgLy8gTWFyayBhIG5vZGUgYXMgYmVpbmcgcmVmZXJlbmNlZC4KLSAg
ICB2b2lkIHJlZihOb2RlSW5kZXggbm9kZUluZGV4KQorICAgIE5vZGVJbmRleCByZWYoTm9kZUlu
ZGV4IG5vZGVJbmRleCkKICAgICB7CiAgICAgICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5kZXgp
OwogICAgICAgICAvLyBJZiB0aGUgdmFsdWUgKGJlZm9yZSBpbmNyZW1lbnRpbmcpIHdhcyBhdCBy
ZWZDb3VudCB6ZXJvIHRoZW4gd2UgbmVlZCB0byByZWYgaXRzIGNoaWxkcmVuLgogICAgICAgICBp
ZiAoIW5vZGUucG9zdGZpeFJlZigpKQogICAgICAgICAgICAgcmVmQ2hpbGRyZW4obm9kZUluZGV4
KTsKKyAgICAgICAgcmV0dXJuIG5vZGVJbmRleDsKICAgICB9Ci0gICAgdm9pZCByZWYoRWRnZSBu
b2RlVXNlKQorICAgIEVkZ2UgcmVmKEVkZ2Ugbm9kZVVzZSkKICAgICB7CiAgICAgICAgIHJlZihu
b2RlVXNlLmluZGV4KCkpOworICAgICAgICByZXR1cm4gbm9kZVVzZTsKICAgICB9CiAgICAgCiAg
ICAgdm9pZCBkZXJlZihOb2RlSW5kZXggbm9kZUluZGV4KQpAQCAtMTc3LDYgKzE4MCwyNCBAQCBw
dWJsaWM6CiAgICAgICAgIG5vZGUuY2hpbGRyZW4uY2hpbGQzKCkgPSBFZGdlKCk7CiAgICAgfQog
ICAgIAorI2RlZmluZSBERkdfREVGSU5FX0FERF9OT0RFKHRlbXBsYXRlUHJlLCB0ZW1wbGF0ZVBv
c3QsIHR5cGVQYXJhbXMsIHZhbHVlUGFyYW1zQ29tbWEsIHZhbHVlUGFyYW1zLCB2YWx1ZUFyZ3Mp
IFwKKyAgICB0ZW1wbGF0ZVByZSB0eXBlUGFyYW1zIHRlbXBsYXRlUG9zdCBOb2RlSW5kZXggYWRk
Tm9kZShSZWZDaGlsZHJlbk1vZGUgcmVmQ2hpbGRyZW5Nb2RlLCBSZWZOb2RlTW9kZSByZWZOb2Rl
TW9kZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlUGFyYW1zKSBc
CisgICAgeyBcCisgICAgICAgIE5vZGUgbm9kZSA9IE5vZGUodmFsdWVBcmdzKTsgXAorICAgICAg
ICBub2RlLnByZWRpY3QodHlwZSk7IFwKKyAgICAgICAgaWYgKG5vZGUuZmxhZ3MoKSAmIE5vZGVN
dXN0R2VuZXJhdGUpIFwKKyAgICAgICAgICAgIG5vZGUucmVmKCk7IFwKKyAgICAgICAgaWYgKHJl
Zk5vZGVNb2RlID09IFJlZk5vZGUpIFwKKyAgICAgICAgICAgIG5vZGUucmVmKCk7IFwKKyAgICAg
ICAgTm9kZUluZGV4IHJlc3VsdCA9IHNpemUoKTsgXAorICAgICAgICBhcHBlbmQobm9kZSk7IFwK
KyAgICAgICAgaWYgKHJlZkNoaWxkcmVuTW9kZSA9PSBSZWZDaGlsZHJlbikgXAorICAgICAgICAg
ICAgcmVmQ2hpbGRyZW4ocmVzdWx0KTsgXAorICAgICAgICByZXR1cm4gcmVzdWx0OyBcCisgICAg
fQorICAgIERGR19WQVJJQURJQ19URU1QTEFURV9GVU5DVElPTihERkdfREVGSU5FX0FERF9OT0RF
KQorI3VuZGVmIERGR19ERUZJTkVfQUREX05PREUKKwogICAgIC8vIENhbGwgdGhpcyBpZiB5b3Un
dmUgbW9kaWZpZWQgdGhlIHJlZmVyZW5jZSBjb3VudHMgb2Ygbm9kZXMgdGhhdCBkZWFsIHdpdGgK
ICAgICAvLyBsb2NhbCB2YXJpYWJsZXMuIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgbG9jYWwg
dmFyaWFibGUgcmVmZXJlbmNlcyBjYW4gZm9ybQogICAgIC8vIGN5Y2xlcywgYW5kIGhlbmNlIHJl
ZmVyZW5jZSBjb3VudGluZyBpcyBub3QgZW5vdWdoLiBUaGlzIHdpbGwgcmVzZXQgdGhlCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9u
IDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMwLDY0ICszMCw3NSBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAK
KyNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KIGNsYXNzIEluc2VydGlvbiB7CiBwdWJsaWM6CiAgICAgSW5zZXJ0aW9uKCkgeyB9CiAgICAg
Ci0gICAgSW5zZXJ0aW9uKHNpemVfdCBpbmRleCwgY29uc3QgRWxlbWVudFR5cGUmIGVsZW1lbnQp
CisgICAgSW5zZXJ0aW9uKHNpemVfdCBpbmRleCwgTm9kZUluZGV4IGVsZW1lbnQpCiAgICAgICAg
IDogbV9pbmRleChpbmRleCkKICAgICAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKICAgICB7CiAg
ICAgfQogICAgIAogICAgIHNpemVfdCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0K
LSAgICBjb25zdCBFbGVtZW50VHlwZSYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVu
dDsgfQorICAgIE5vZGVJbmRleCBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9
CiBwcml2YXRlOgogICAgIHNpemVfdCBtX2luZGV4OwotICAgIEVsZW1lbnRUeXBlIG1fZWxlbWVu
dDsKKyAgICBOb2RlSW5kZXggbV9lbGVtZW50OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxl
bWVudFR5cGU+CiBjbGFzcyBJbnNlcnRpb25TZXQgewogcHVibGljOgotICAgIEluc2VydGlvblNl
dCgpIHsgfQorICAgIEluc2VydGlvblNldChHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogbV9ncmFw
aChncmFwaCkKKyAgICB7CisgICAgfQogICAgIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IEluc2Vy
dGlvbjxFbGVtZW50VHlwZT4mIGluc2VydGlvbikKKyAgICBOb2RlSW5kZXggaW5zZXJ0KGNvbnN0
IEluc2VydGlvbiYgaW5zZXJ0aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX2luc2VydGlv
bnMuc2l6ZSgpIHx8IG1faW5zZXJ0aW9ucy5sYXN0KCkuaW5kZXgoKSA8PSBpbnNlcnRpb24uaW5k
ZXgoKSk7CiAgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoaW5zZXJ0aW9uKTsKKyAgICAgICAg
cmV0dXJuIGluc2VydGlvbi5lbGVtZW50KCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgYXBwZW5k
KHNpemVfdCBpbmRleCwgY29uc3QgRWxlbWVudFR5cGUmIGVsZW1lbnQpCisgICAgTm9kZUluZGV4
IGluc2VydChzaXplX3QgaW5kZXgsIE5vZGVJbmRleCBlbGVtZW50KQogICAgIHsKLSAgICAgICAg
YXBwZW5kKEluc2VydGlvbjxFbGVtZW50VHlwZT4oaW5kZXgsIGVsZW1lbnQpKTsKKyAgICAgICAg
cmV0dXJuIGluc2VydChJbnNlcnRpb24oaW5kZXgsIGVsZW1lbnQpKTsKKyAgICB9CisKKyNkZWZp
bmUgREZHX0RFRklORV9JTlNFUlRfTk9ERSh0ZW1wbGF0ZVByZSwgdGVtcGxhdGVQb3N0LCB0eXBl
UGFyYW1zLCB2YWx1ZVBhcmFtc0NvbW1hLCB2YWx1ZVBhcmFtcywgdmFsdWVBcmdzKSBcCisgICAg
dGVtcGxhdGVQcmUgdHlwZVBhcmFtcyB0ZW1wbGF0ZVBvc3QgTm9kZUluZGV4IGluc2VydE5vZGUo
c2l6ZV90IGluZGV4LCBSZWZDaGlsZHJlbk1vZGUgcmVmQ2hpbGRyZW5Nb2RlLCBSZWZOb2RlTW9k
ZSByZWZOb2RlTW9kZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVl
UGFyYW1zKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBpbnNlcnQoaW5kZXgsIG1fZ3JhcGgu
YWRkTm9kZShyZWZDaGlsZHJlbk1vZGUsIHJlZk5vZGVNb2RlLCB0eXBlIHZhbHVlUGFyYW1zQ29t
bWEgdmFsdWVBcmdzKSk7IFwKICAgICB9CisgICAgREZHX1ZBUklBRElDX1RFTVBMQVRFX0ZVTkNU
SU9OKERGR19ERUZJTkVfSU5TRVJUX05PREUpCisjdW5kZWYgREZHX0RFRklORV9JTlNFUlRfTk9E
RQogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlPgotICAgIHZvaWQg
ZXhlY3V0ZShDb2xsZWN0aW9uVHlwZSYgY29sbGVjdGlvbikKKyAgICB2b2lkIGV4ZWN1dGUoQmFz
aWNCbG9jayogYmxvY2spCiAgICAgewogICAgICAgICBpZiAoIW1faW5zZXJ0aW9ucy5zaXplKCkp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNvbGxlY3Rpb24uZ3Jvdyhjb2xsZWN0aW9u
LnNpemUoKSArIG1faW5zZXJ0aW9ucy5zaXplKCkpOwotICAgICAgICBzaXplX3QgbGFzdEluZGV4
ID0gY29sbGVjdGlvbi5zaXplKCk7CisgICAgICAgIGJsb2NrLT5ncm93KGJsb2NrLT5zaXplKCkg
KyBtX2luc2VydGlvbnMuc2l6ZSgpKTsKKyAgICAgICAgc2l6ZV90IGxhc3RJbmRleCA9IGJsb2Nr
LT5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4SW5JbnNlcnRpb25zID0gbV9pbnNl
cnRpb25zLnNpemUoKTsgaW5kZXhJbkluc2VydGlvbnMtLTspIHsKLSAgICAgICAgICAgIEluc2Vy
dGlvbjxFbGVtZW50VHlwZT4mIGluc2VydGlvbiA9IG1faW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0
aW9uc107CisgICAgICAgICAgICBJbnNlcnRpb24mIGluc2VydGlvbiA9IG1faW5zZXJ0aW9uc1tp
bmRleEluSW5zZXJ0aW9uc107CiAgICAgICAgICAgICBzaXplX3QgZmlyc3RJbmRleCA9IGluc2Vy
dGlvbi5pbmRleCgpICsgaW5kZXhJbkluc2VydGlvbnM7CiAgICAgICAgICAgICBzaXplX3QgaW5k
ZXhPZmZzZXQgPSBpbmRleEluSW5zZXJ0aW9ucyArIDE7CiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gbGFzdEluZGV4OyAtLWkgPiBmaXJzdEluZGV4OykKLSAgICAgICAgICAgICAgICBjb2xs
ZWN0aW9uW2ldID0gY29sbGVjdGlvbltpIC0gaW5kZXhPZmZzZXRdOwotICAgICAgICAgICAgY29s
bGVjdGlvbltmaXJzdEluZGV4XSA9IGluc2VydGlvbi5lbGVtZW50KCk7CisgICAgICAgICAgICAg
ICAgYmxvY2stPmF0KGkpID0gYmxvY2stPmF0KGkgLSBpbmRleE9mZnNldCk7CisgICAgICAgICAg
ICBibG9jay0+YXQoZmlyc3RJbmRleCkgPSBpbnNlcnRpb24uZWxlbWVudCgpOwogICAgICAgICAg
ICAgbGFzdEluZGV4ID0gZmlyc3RJbmRleDsKICAgICAgICAgfQogICAgICAgICBtX2luc2VydGlv
bnMucmVzaXplKDApOwogICAgIH0KIHByaXZhdGU6Ci0gICAgVmVjdG9yPEluc2VydGlvbjxFbGVt
ZW50VHlwZT4sIDg+IG1faW5zZXJ0aW9uczsKKyAgICBHcmFwaCYgbV9ncmFwaDsKKyAgICBWZWN0
b3I8SW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTQw
MjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg3LDYgKzg3LDE3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAKICAgICBOb2RlKCkgeyB9
CiAgICAgCisgICAgTm9kZShOb2RlVHlwZSBvcCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBjb25z
dCBBZGphY2VuY3lMaXN0JiBjaGlsZHJlbikKKyAgICAgICAgOiBjb2RlT3JpZ2luKGNvZGVPcmln
aW4pCisgICAgICAgICwgY2hpbGRyZW4oY2hpbGRyZW4pCisgICAgICAgICwgbV92aXJ0dWFsUmVn
aXN0ZXIoSW52YWxpZFZpcnR1YWxSZWdpc3RlcikKKyAgICAgICAgLCBtX3JlZkNvdW50KDApCisg
ICAgICAgICwgbV9wcmVkaWN0aW9uKFNwZWNOb25lKQorICAgIHsKKyAgICAgICAgc2V0T3BBbmRE
ZWZhdWx0RmxhZ3Mob3ApOworICAgICAgICBBU1NFUlQoISEobV9mbGFncyAmIE5vZGVIYXNWYXJB
cmdzKSA9PSAoY2hpbGRyZW4ua2luZCgpID09IEFkamFjZW5jeUxpc3Q6OlZhcmlhYmxlKSk7Cisg
ICAgfQorICAgIAogICAgIC8vIENvbnN0cnVjdCBhIG5vZGUgd2l0aCB1cCB0byAzIGNoaWxkcmVu
LCBubyBpbW1lZGlhdGUgdmFsdWUuCiAgICAgTm9kZShOb2RlVHlwZSBvcCwgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBOb2RlSW5kZXggY2hpbGQxID0gTm9Ob2RlLCBOb2RlSW5kZXggY2hpbGQyID0g
Tm9Ob2RlLCBOb2RlSW5kZXggY2hpbGQzID0gTm9Ob2RlKQogICAgICAgICA6IGNvZGVPcmlnaW4o
Y29kZU9yaWdpbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE0MDIx
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQ2hlY2tIb2lzdGlu
Z1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDcgKzI1OSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgCiAgICAgICAgIC8vIFBsYWNlIENoZWNrU3RydWN0dXJlJ3MgYXQgU2V0TG9jYWwgc2l0
ZXMuCiAgICAgICAgIAotICAgICAgICBJbnNlcnRpb25TZXQ8Tm9kZUluZGV4PiBpbnNlcnRpb25T
ZXQ7CisgICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7CiAgICAgICAg
IGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubV9i
bG9ja3Muc2l6ZSgpOyArK2Jsb2NrSW5kZXgpIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJs
b2NrID0gbV9ncmFwaC5tX2Jsb2Nrc1tibG9ja0luZGV4XS5nZXQoKTsKICAgICAgICAgICAgIGlm
ICghYmxvY2spCkBAIC0yODYsMjMgKzI4NiwxNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIG5vZGUu
cmVmKCk7Ci0KICAgICAgICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9k
ZS5jb2RlT3JpZ2luOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
Tm9kZSBnZXRMb2NhbChHZXRMb2NhbCwgY29kZU9yaWdpbiwgT3BJbmZvKHZhcmlhYmxlKSwgbm9k
ZUluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgZ2V0TG9jYWwucHJlZGljdCh2YXJpYWJsZS0+
cHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgICAgICAgICAgZ2V0TG9jYWwucmVmKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIE5vZGVJbmRleCBnZXRMb2NhbEluZGV4ID0gbV9ncmFwaC5zaXplKCk7
Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGdldExvY2FsKTsKLSAgICAgICAg
ICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2sgKyAxLCBnZXRMb2Nh
bEluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIE5vZGUg
Y2hlY2tTdHJ1Y3R1cmUoQ2hlY2tTdHJ1Y3R1cmUsIGNvZGVPcmlnaW4sIE9wSW5mbyhtX2dyYXBo
LmFkZFN0cnVjdHVyZVNldChpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSkpLCBnZXRMb2NhbEluZGV4
KTsKLSAgICAgICAgICAgICAgICAgICAgY2hlY2tTdHJ1Y3R1cmUucmVmKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIE5vZGVJbmRleCBjaGVja1N0cnVjdHVyZUluZGV4ID0gbV9ncmFwaC5zaXplKCk7
Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGNoZWNrU3RydWN0dXJlKTsKLSAg
ICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2sgKyAxLCBj
aGVja1N0cnVjdHVyZUluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgICAgIE5vZGVJbmRleCBnZXRMb2NhbEluZGV4ID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
CisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2sgKyAxLCBEb250UmVmQ2hpbGRy
ZW4sIERvbnRSZWZOb2RlLCB2YXJpYWJsZS0+cHJlZGljdGlvbigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgR2V0TG9jYWwsIGNvZGVPcmlnaW4sIE9wSW5mbyh2YXJpYWJsZSksIG5vZGVJbmRl
eCk7CisgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAg
ICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrICsgMSwgUmVmQ2hpbGRyZW4sIERvbnRSZWZO
b2RlLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICBj
b2RlT3JpZ2luLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoaXRlci0+dmFsdWUubV9z
dHJ1Y3R1cmUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldExvY2FsSW5kZXgpOworCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChibG9jay0+dmFyaWFibGVzQXRUYWlsLm9wZXJhbmQodmFy
aWFibGUtPmxvY2FsKCkpID09IG5vZGVJbmRleCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJs
b2NrLT52YXJpYWJsZXNBdFRhaWwub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkgPSBnZXRMb2Nh
bEluZGV4OwogICAgICAgICAgICAgICAgICAgICAKQEAgLTMyNywxOCArMzIwLDE1IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS5jb2Rl
T3JpZ2luOwogICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggY2hpbGQxID0gbm9kZS5jaGls
ZDEoKS5pbmRleCgpOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
Tm9kZSBzZXRMb2NhbChTZXRMb2NhbCwgY29kZU9yaWdpbiwgT3BJbmZvKHZhcmlhYmxlKSwgY2hp
bGQxKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZUluZGV4IHNldExvY2FsSW5kZXggPSBtX2dy
YXBoLnNpemUoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQoc2V0TG9jYWwp
OwotICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuYXBwZW5kKGluZGV4SW5CbG9jaywg
c2V0TG9jYWxJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGhbY2hpbGQxXS5yZWYo
KTsKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAg
ICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIERvbnRSZWZDaGlsZHJlbiwgRG9udFJlZk5v
ZGUsIFNwZWNOb25lLCBTZXRMb2NhbCwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIE9wSW5mbyh2YXJpYWJsZSksIGNoaWxkMSk7CisKICAgICAgICAgICAgICAgICAgICAgLy8g
VXNlIGEgRm9yd2FyZENoZWNrU3RydWN0dXJlIHRvIGluZGljYXRlIHRoYXQgd2Ugc2hvdWxkIGV4
aXQgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgIC8vIG5leHQgYnl0ZWNvZGUgaW5zdHJ1Y3Rp
b24gcmF0aGVyIHRoYW4gcmVleGVjdXRpbmcgdGhlIGN1cnJlbnQgb25lLgotICAgICAgICAgICAg
ICAgICAgICBOb2RlIGNoZWNrU3RydWN0dXJlKEZvcndhcmRDaGVja1N0cnVjdHVyZSwgY29kZU9y
aWdpbiwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGl0ZXItPnZhbHVlLm1fc3RydWN0
dXJlKSksIGNoaWxkMSk7Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrU3RydWN0dXJlLnJlZigp
OwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggY2hlY2tTdHJ1Y3R1cmVJbmRleCA9IG1f
Z3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChjaGVja1N0
cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5hcHBlbmQoaW5kZXhJ
bkJsb2NrLCBjaGVja1N0cnVjdHVyZUluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ss
IFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUsIEZvcndhcmRDaGVja1N0cnVjdHVy
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmFk
ZFN0cnVjdHVyZVNldChpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSkpLCBjaGlsZDEpOwogICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQpAQCAtMzQ3LDcgKzMzNyw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKmJsb2NrKTsKKyAgICAgICAgICAgIGluc2Vy
dGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcmV0
dXJuIGNoYW5nZWQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhZGlj
RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
cmlhZGljRnVuY3Rpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFyaWFkaWNGdW5jdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZH
VmFyaWFkaWNGdW5jdGlvbl9oCisjZGVmaW5lIERGR1ZhcmlhZGljRnVuY3Rpb25faAorCisjZGVm
aW5lIERGR19DT01NQSAsCisKKy8vIFRoZSBzaWduYXR1cmUgb2YgdiBpcyAodGVtcGxhdGVQcmUs
IHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykKKy8vCisv
LyBZb3Ugd291bGQgdXNlIGl0IGxpa2U6CisvLyAjZGVmaW5lIERFRklORV9GVU5DVElPTih0ZW1w
bGF0ZVByZSwgdGVtcGxhdGVQb3N0LCB0eXBlUGFyYW1zLCB2YWx1ZVBhcmFtc0NvbW1hLCB2YWx1
ZVBhcmFtcywgdmFsdWVBcmdzKSBcCisvLyAgICAgdGVtcGxhdGVQcmUgdHlwZVBhcmFtcyB0ZW1w
bGF0ZVBvc3Qgdm9pZCBmKHZhbHVlUGFyYW1zKSB7IGcodmFsdWVBcmdzKTsgfQorLy8gREZHX1ZB
UklBRElDX1RFTVBMQVRFX0ZVTkNUSU9OKERFRklORV9GVU5DVElPTikKKy8vICN1bmRlZiBERUZJ
TkVfRlVOQ1RJT04KKy8vCisvLyBPciBpZiB5b3Ugd2FudGVkIHRoZSBkZWZpbmVkIGZ1bmN0aW9u
IHRvIHRha2UgYW4gYWRkaXRpb25hbCB0ZW1wbGF0ZSBhcmcsIHlvdSB3b3VsZCBkbzoKKy8vICNk
ZWZpbmUgREVGSU5FX0ZVTkNUSU9OKHRlbXBsYXRlUHJlLCB0ZW1wbGF0ZVBvc3QsIHR5cGVQYXJh
bXMsIHZhbHVlUGFyYW1zQ29tbWEsIHZhbHVlUGFyYW1zLCB2YWx1ZUFyZ3MpIFwKKy8vICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUIHZhbHVlUGFyYW1zQ29tbWEgdHlwZVBhcmFtcz4gdm9pZCBmKFQg
dmFsdWUgdmFsdWVQYXJhbXNDb21tYSB2YWx1ZVBhcmFtcykgeyBnKHZhbHVlLCB2YWx1ZUFyZ3Mp
OyB9CisvLyBERkdfVkFSSUFESUNfVEVNUExBVEVfRlVOQ1RJT04oREVGSU5FX0ZVTkNUSU9OKQor
Ly8gI3VuZGVmIERFRklORV9GVU5DVElPTgorCisjZGVmaW5lIERGR19WQVJJQURJQ19URU1QTEFU
RV9GVU5DVElPTih2KSBcCisgICAgdigsICwgLCAsICwgKSBcCisgICAgdih0ZW1wbGF0ZTwsID4s
IHR5cGVuYW1lIF9ERkdfVDEsIERGR19DT01NQSwgY29uc3QgX0RGR19UMSYgX0RGR192YWx1ZTEs
IF9ERkdfdmFsdWUxKSBcCisgICAgdih0ZW1wbGF0ZTwsID4sIHR5cGVuYW1lIF9ERkdfVDEgREZH
X0NPTU1BIHR5cGVuYW1lIF9ERkdfVDIsIERGR19DT01NQSwgY29uc3QgX0RGR19UMSYgX0RGR192
YWx1ZTEgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDImIF9ERkdfdmFsdWUyLCBfREZHX3ZhbHVlMSBE
RkdfQ09NTUEgX0RGR192YWx1ZTIpIFwKKyAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RG
R19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19U
MywgREZHX0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3Qg
X0RGR19UMiYgX0RGR192YWx1ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUz
LCBfREZHX3ZhbHVlMSBERkdfQ09NTUEgX0RGR192YWx1ZTIgREZHX0NPTU1BIF9ERkdfdmFsdWUz
KSBcCisgICAgdih0ZW1wbGF0ZTwsID4sIHR5cGVuYW1lIF9ERkdfVDEgREZHX0NPTU1BIHR5cGVu
YW1lIF9ERkdfVDIgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDMgREZHX0NPTU1BIHR5cGVuYW1l
IF9ERkdfVDQsIERGR19DT01NQSwgY29uc3QgX0RGR19UMSYgX0RGR192YWx1ZTEgREZHX0NPTU1B
IGNvbnN0IF9ERkdfVDImIF9ERkdfdmFsdWUyIERGR19DT01NQSBjb25zdCBfREZHX1QzJiBfREZH
X3ZhbHVlMyBERkdfQ09NTUEgY29uc3QgX0RGR19UNCYgX0RGR192YWx1ZTQsIF9ERkdfdmFsdWUx
IERGR19DT01NQSBfREZHX3ZhbHVlMiBERkdfQ09NTUEgX0RGR192YWx1ZTMgREZHX0NPTU1BIF9E
RkdfdmFsdWU0KSBcCisgICAgdih0ZW1wbGF0ZTwsID4sIHR5cGVuYW1lIF9ERkdfVDEgREZHX0NP
TU1BIHR5cGVuYW1lIF9ERkdfVDIgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDMgREZHX0NPTU1B
IHR5cGVuYW1lIF9ERkdfVDQgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDUsIERGR19DT01NQSwg
Y29uc3QgX0RGR19UMSYgX0RGR192YWx1ZTEgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDImIF9ERkdf
dmFsdWUyIERGR19DT01NQSBjb25zdCBfREZHX1QzJiBfREZHX3ZhbHVlMyBERkdfQ09NTUEgY29u
c3QgX0RGR19UNCYgX0RGR192YWx1ZTQgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDUmIF9ERkdfdmFs
dWU1LCBfREZHX3ZhbHVlMSBERkdfQ09NTUEgX0RGR192YWx1ZTIgREZHX0NPTU1BIF9ERkdfdmFs
dWUzIERGR19DT01NQSBfREZHX3ZhbHVlNCBERkdfQ09NTUEgX0RGR192YWx1ZTUpIFwKKyAgICB2
KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19U
MiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNCBE
RkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNiwgREZH
X0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19U
MiYgX0RGR192YWx1ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzIERGR19D
T01NQSBjb25zdCBfREZHX1Q0JiBfREZHX3ZhbHVlNCBERkdfQ09NTUEgY29uc3QgX0RGR19UNSYg
X0RGR192YWx1ZTUgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDYmIF9ERkdfdmFsdWU2LCBfREZHX3Zh
bHVlMSBERkdfQ09NTUEgX0RGR192YWx1ZTIgREZHX0NPTU1BIF9ERkdfdmFsdWUzIERGR19DT01N
QSBfREZHX3ZhbHVlNCBERkdfQ09NTUEgX0RGR192YWx1ZTUgREZHX0NPTU1BIF9ERkdfdmFsdWU2
KSBcCisgICAgdih0ZW1wbGF0ZTwsID4sIHR5cGVuYW1lIF9ERkdfVDEgREZHX0NPTU1BIHR5cGVu
YW1lIF9ERkdfVDIgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDMgREZHX0NPTU1BIHR5cGVuYW1l
IF9ERkdfVDQgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDUgREZHX0NPTU1BIHR5cGVuYW1lIF9E
RkdfVDYgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDcsIERGR19DT01NQSwgY29uc3QgX0RGR19U
MSYgX0RGR192YWx1ZTEgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDImIF9ERkdfdmFsdWUyIERGR19D
T01NQSBjb25zdCBfREZHX1QzJiBfREZHX3ZhbHVlMyBERkdfQ09NTUEgY29uc3QgX0RGR19UNCYg
X0RGR192YWx1ZTQgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDUmIF9ERkdfdmFsdWU1IERGR19DT01N
QSBjb25zdCBfREZHX1Q2JiBfREZHX3ZhbHVlNiBERkdfQ09NTUEgY29uc3QgX0RGR19UNyYgX0RG
R192YWx1ZTcsIF9ERkdfdmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVlMiBERkdfQ09NTUEgX0RG
R192YWx1ZTMgREZHX0NPTU1BIF9ERkdfdmFsdWU0IERGR19DT01NQSBfREZHX3ZhbHVlNSBERkdf
Q09NTUEgX0RGR192YWx1ZTYgREZHX0NPTU1BIF9ERkdfdmFsdWU3KSBcCisgICAgdih0ZW1wbGF0
ZTwsID4sIHR5cGVuYW1lIF9ERkdfVDEgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDIgREZHX0NP
TU1BIHR5cGVuYW1lIF9ERkdfVDMgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDQgREZHX0NPTU1B
IHR5cGVuYW1lIF9ERkdfVDUgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDYgREZHX0NPTU1BIHR5
cGVuYW1lIF9ERkdfVDcgREZHX0NPTU1BIHR5cGVuYW1lIF9ERkdfVDgsIERGR19DT01NQSwgY29u
c3QgX0RGR19UMSYgX0RGR192YWx1ZTEgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDImIF9ERkdfdmFs
dWUyIERGR19DT01NQSBjb25zdCBfREZHX1QzJiBfREZHX3ZhbHVlMyBERkdfQ09NTUEgY29uc3Qg
X0RGR19UNCYgX0RGR192YWx1ZTQgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDUmIF9ERkdfdmFsdWU1
IERGR19DT01NQSBjb25zdCBfREZHX1Q2JiBfREZHX3ZhbHVlNiBERkdfQ09NTUEgY29uc3QgX0RG
R19UNyYgX0RGR192YWx1ZTcgREZHX0NPTU1BIF9ERkdfVDgmIF9ERkdfdmFsdWU4LCBfREZHX3Zh
bHVlMSBERkdfQ09NTUEgX0RGR192YWx1ZTIgREZHX0NPTU1BIF9ERkdfdmFsdWUzIERGR19DT01N
QSBfREZHX3ZhbHVlNCBERkdfQ09NTUEgX0RGR192YWx1ZTUgREZHX0NPTU1BIF9ERkdfdmFsdWU2
IERGR19DT01NQSBfREZHX3ZhbHVlNyBERkdfQ09NTUEgX0RGR192YWx1ZTgpCisKKyNlbmRpZiAv
LyBERkdWYXJpYWRpY0Z1bmN0aW9uX2gKKwo=
</data>
<flag name="commit-queue"
          id="202093"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183650</attachid>
            <date>2013-01-19 18:36:02 -0800</date>
            <delta_ts>2013-01-20 11:27:34 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>60355</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwMjY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDEzLTAxLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW5zZXJ0aW5nIGEgbm9kZSBpbnRvIHRoZSBERkcgZ3JhcGggc2hvdWxkIG5vdCByZXF1aXJlIGZp
dmUgbGluZXMgb2YgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA3MzgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisg
ICAgICAgIAorICAgICAgICBUaGlzIGFkZHMgZmFpcmx5IGNvbXByZWhlbnNpdmUgc3VwcG9ydCBm
b3IgaW5zZXJ0aW5nIGEgbm9kZSBpbnRvIGEgREZHIGdyYXBoIGluIG9uZQorICAgICAgICBtZXRo
b2QgY2FsbC4gQSBjb21tb24gZXhhbXBsZSBvZiB0aGlzIGlzOgorICAgICAgICAKKyAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIERvbnRSZWZDaGlsZHJlbiwg
RG9udFJlZk5vZGUsIFNwZWNOb25lLCBGb3JjZU9TUkV4aXQsIGNvZGVPcmlnaW4pOworICAgICAg
ICAKKyAgICAgICAgVGhlIGFyZ3VtZW50cyB0byBpbnNlcnQoKSBzcGVjaWZ5IHdoYXQgcmVmZXJl
bmNlIGNvdW50aW5nIHlvdSBuZWVkIHRvIGhhdmUgaGFwcGVuCisgICAgICAgIChSZWZDaGlsZHJl
biA9PiByZWN1cnNpdmVseSByZWZzIGFsbCBjaGlsZHJlbiwgUmVmTm9kZSA9PiBub24tcmVjdXJz
aXZlbHkgcmVmcyB0aGUgbm9kZQorICAgICAgICB0aGF0IHdhcyBjcmVhdGVkKSwgdGhlIHByZWRp
Y3Rpb24gdG8gc2V0IChTcGVjTm9uZSBpcyBhIGNvbW1vbiBkZWZhdWx0KSwgZm9sbG93ZWQgYnkK
KyAgICAgICAgdGhlIGFyZ3VtZW50cyB0byB0aGUgTm9kZSgpIGNvbnN0cnVjdG9yLiBJbnNlcnRp
b25TZXQ6Omluc2VydE5vZGUoKSBhbmQgc2ltaWxhciBtZXRob2RzCisgICAgICAgIChHcmFwaDo6
YWRkTm9kZSgpIGFuZCBCYXNpY0Jsb2NrOjphcHBlbmROb2RlKCkpIGFsbCB1c2UgYSBjb21tb24g
dmFyaWFkaWMgdGVtcGxhdGUKKyAgICAgICAgZnVuY3Rpb24gbWFjcm8gZnJvbSBERkdWYXJpYWRp
Y0Z1bmN0aW9uLmguIEFsc28sIGFsbCBvZiB0aGVzZSBtZXRob2RzIHdpbGwgYXV0b21hdGljYWxs
eQorICAgICAgICBub24tcmVjdXJzaXZlbHkgcmVmKCkgdGhlIG5vZGUgYmVpbmcgY3JlYXRlZCBp
ZiB0aGUgZmxhZ3Mgc2F5IE5vZGVNdXN0R2VuZXJhdGUuCisgICAgICAgIAorICAgICAgICBJbiBh
bGwsIHRoaXMgbmV3IG1lY2hhbmlzbSByZXRhaW5zIHRoZSBmbGV4aWJpbGl0eSBvZiB0aGUgb2xk
IGFwcHJvYWNoICh5b3UgZ2V0IHRvCisgICAgICAgIG1hbmFnZSByZWYgY291bnRzIHlvdXJzZWxm
LCBhbGJlaXQgaW4gbGVzcyBjb2RlKSB3aGlsZSBlbnN1cmluZyB0aGF0IG1vc3QgY29kZSB0aGF0
IGFkZHMKKyAgICAgICAgbm9kZXMgdG8gdGhlIGdyYXBoIG5vdyBuZWVkcyBsZXNzIGNvZGUgdG8g
ZG8gaXQuCisgICAgICAgIAorICAgICAgICBJbiB0aGUgZnV0dXJlLCB3ZSBzaG91bGQgcmV2aXNp
dCB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIG1ldGhvZG9sb2d5IGluIHRoZSBERkc6IHdlIGNvdWxk
CisgICAgICAgIGRvIGxpa2UgbW9zdCBjb21waWxlcnMgYW5kIGdldCByaWQgb2YgaXQgZW50aXJl
bHksIG9yIHdlIGNvdWxkIG1ha2UgaXQgYXV0b21hdGljLiBUaGlzCisgICAgICAgIHBhdGNoIGRv
ZXNuJ3QgYXR0ZW1wdCB0byBtYWtlIGFueSBzdWNoIG1ham9yIGNoYW5nZXMsIGFuZCBvbmx5IHNl
ZWtzIHRvIHNpbXBsaWZ5IHRoZQorICAgICAgICB0ZWNobmlxdWUgd2Ugd2VyZSBhbHJlYWR5IHVz
aW5nIChtYW51YWwgcmVmIGNvdW50aW5nKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvT3BlcmFuZHMuaDoK
KyAgICAgICAgKEpTQzo6ZHVtcE9wZXJhbmRzKToKKyAgICAgICAgKiBkZmcvREZHQWRqYWNlbmN5
TGlzdC5oOgorICAgICAgICAoQWRqYWNlbmN5TGlzdCk6CisgICAgICAgIChKU0M6OkRGRzo6QWRq
YWNlbmN5TGlzdDo6a2luZCk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0
aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFyZ3VtZW50c1NpbXBsaWZpY2F0aW9u
UGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suaDoKKyAgICAgICAgKERG
Ryk6CisgICAgICAgIChCYXNpY0Jsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQmFzaWNCbG9ja0lu
bGluZXMuaDogQWRkZWQuCisgICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdDRkdTaW1w
bGlmaWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlv
blBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6
OmtlZXBPcGVyYW5kQWxpdmUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAg
KiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNv
bnN0YW50Rm9sZGluZ1BoYXNlOjpDb25zdGFudEZvbGRpbmdQaGFzZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAoSlND
OjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2sp
OgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpwYWludFVucmVhY2hh
YmxlQ29kZSk6CisgICAgICAgIChDb25zdGFudEZvbGRpbmdQaGFzZSk6CisgICAgICAgICogZGZn
L0RGR0RyaXZlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OkZp
eHVwUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwQmxvY2spOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChGaXh1
cFBoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpjaGVja0FycmF5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpibGVzc0FycmF5T3BlcmF0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjppbmplY3RJbnQzMlRvRG91YmxlTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnJlZik6Cisg
ICAgICAgIChHcmFwaCk6CisgICAgICAgICogZGZnL0RGR0luc2VydGlvblNldC5oOgorICAgICAg
ICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb246Okluc2VydGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uOjplbGVtZW50KToKKyAgICAgICAgKEluc2VydGlvbik6
CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjpJbnNlcnRpb25TZXQpOgorICAgICAg
ICAoSlNDOjpERkc6Okluc2VydGlvblNldDo6aW5zZXJ0KToKKyAgICAgICAgKEluc2VydGlvblNl
dCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjpleGVjdXRlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok5vZGUpOgorICAgICAg
ICAoTm9kZSk6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlOjpydW4p
OgorICAgICAgICAqIGRmZy9ERkdWYXJpYWRpY0Z1bmN0aW9uLmg6IEFkZGVkLgorCiAyMDEzLTAx
LTE5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVHJhY2sg
aW5oZXJpdGFuY2Ugc3RydWN0dXJlcyBpbiBhIHNpZGUgdGFibGUsIGluc3RlYWQgb2YgdXNpbmcg
YSBwcml2YXRlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQw
MjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMzUsNiArMTAzNSw3IEBACiAJCTBG
ODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQz
QjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnJhbmNoRGlyZWN0aW9uLmg7IHBh
dGggPSBkZmcvREZHQnJhbmNoRGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGODVBMzFFMTZBQjc2QUUwMDc3NTcxRSAvKiBERkdWYXJpYWRpY0Z1bmN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ZhcmlhZGljRnVuY3Rpb24uaDsgcGF0
aCA9IGRmZy9ERkdWYXJpYWRpY0Z1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGOEY5NDNBMTY2NzYzMTEwMEQ2MTk3MSAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVTcGVjaWFsaXphdGlv
bktpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhGOTQzRDE2Njc2MzJE
MDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb2RlQmxvY2tIYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY4Rjk0M0UxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUJsb2NrSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTEwOCw2ICsxMTA5LDcgQEAKIAkJMEZDQjQwODUxNUMwQTNDMzAwNDg5
MzJCIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTbG90VmlzaXRvcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZEM0M4MjAxNDExNUNGODAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEcml2ZXIuY3BwOyBwYXRoID0gZGZnL0RGR0RyaXZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDNDODIyMTQxMTVEMEUwMEZE
ODFDQiAvKiBERkdEcml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
RHJpdmVyLmg7IHBhdGggPSBkZmcvREZHRHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGRDU2NTIyMTZBQjc4MEEwMDE5NzY1MyAvKiBERkdCYXNpY0Jsb2NrSW5saW5lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCYXNpY0Jsb2NrSW5saW5lcy5o
OyBwYXRoID0gZGZnL0RGR0Jhc2ljQmxvY2tJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRDgxQUNGMTU0RkI0RUIwMDk4M0U3MiAvKiBERkdEb21pbmF0b3JzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0RvbWluYXRvcnMuY3BwOyBw
YXRoID0gZGZnL0RGR0RvbWluYXRvcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkQ4MUFEMDE1NEZCNEVCMDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEb21pbmF0b3JzLmg7IHBhdGggPSBkZmcvREZHRG9t
aW5hdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MkUxRTE0MTcyQzJG
MDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0NhcGFiaWxpdGllcy5jcHA7IHBhdGggPSBkZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NDMsNiArMjU0NSw3IEBA
CiAJCQkJMEZDMDk3NkIxNDY4QUI0QTAwQ0YyNDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5jcHAg
Ki8sCiAJCQkJMEZDMDk3NkMxNDY4QUI0QTAwQ0YyNDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5o
ICovLAogCQkJCTBGNjIwMTcwMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdCYXNpY0Jsb2NrLmggKi8s
CisJCQkJMEZENTY1MjIxNkFCNzgwQTAwMTk3NjUzIC8qIERGR0Jhc2ljQmxvY2tJbmxpbmVzLmgg
Ki8sCiAJCQkJMEY4MzY0QjUxNjRCMEMwRTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5o
ICovLAogCQkJCTg2RUM5REI0MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5j
cHAgKi8sCiAJCQkJODZFQzlEQjUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2Vy
LmggKi8sCkBAIC0yNjMwLDYgKzI2MzMsNyBAQAogCQkJCTBGMkJEQzQxMTUyMjgwMTcwMENEODkx
MCAvKiBERkdWYXJpYWJsZUV2ZW50LmggKi8sCiAJCQkJMEYyQkRDNDIxNTIyODAxNzAwQ0Q4OTEw
IC8qIERGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwICovLAogCQkJCTBGMkJEQzQzMTUyMjgwMTcw
MENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmggKi8sCisJCQkJMEY4NUEzMUUxNkFC
NzZBRTAwNzc1NzFFIC8qIERGR1ZhcmlhZGljRnVuY3Rpb24uaCAqLywKIAkJCQkwRkZGQzk1MzE0
RUY5MDk1MDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcCAq
LywKIAkJCQkwRkZGQzk1NDE0RUY5MDk1MDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxs
b2NhdGlvblBoYXNlLmggKi8sCiAJCQkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wZXJhbmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wZXJhbmRzLmgJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNyArMTkzLDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHJhaXRzPgogdm9pZCBkdW1wT3BlcmFu
ZHMoY29uc3QgT3BlcmFuZHM8VCwgVHJhaXRzPiYgb3BlcmFuZHMsIFByaW50U3RyZWFtJiBvdXQp
CiB7CiAgICAgZm9yIChzaXplX3QgYXJndW1lbnQgPSBvcGVyYW5kcy5udW1iZXJPZkFyZ3VtZW50
cygpOyBhcmd1bWVudC0tOykgewotICAgICAgICBpZiAoYXJndW1lbnQpCisgICAgICAgIGlmIChh
cmd1bWVudCAhPSBvcGVyYW5kcy5udW1iZXJPZkFyZ3VtZW50cygpIC0gMSkKICAgICAgICAgICAg
IG91dC5wcmludGYoIiAiKTsKICAgICAgICAgb3V0LnByaW50KCJhcmciLCBhcmd1bWVudCwgIjoi
KTsKICAgICAgICAgVHJhaXRzOjpkdW1wKG9wZXJhbmRzLmFyZ3VtZW50KGFyZ3VtZW50KSwgb3V0
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5o
CShyZXZpc2lvbiAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkamFj
ZW5jeUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDYgKzE2Miw5IEBAIHB1YmxpYzoKICAg
ICAgICAgbV93b3Jkc1sxXS5tX2VuY29kZWRXb3JkID0gbnVtQ2hpbGRyZW47CiAgICAgfQogICAg
IAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBt
X2tpbmQ7IH0KKyNlbmRpZgogcHJpdmF0ZToKICAgICBFZGdlIG1fd29yZHNbU2l6ZV07CiAjaWYg
IUFTU0VSVF9ESVNBQkxFRApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1
bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAxNDAyMTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDcsNyArNDA3LDcgQEAgcHVi
bGljOgogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgCi0gICAgICAgIEluc2VydGlvblNldDxO
b2RlSW5kZXg+IGluc2VydGlvblNldDsKKyAgICAgICAgSW5zZXJ0aW9uU2V0IGluc2VydGlvblNl
dChtX2dyYXBoKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4
ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrSW5kZXgp
IHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nrc1tibG9j
a0luZGV4XS5nZXQoKTsKQEAgLTUzMiwxMSArNTMyLDkgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8gV2Uga25vdyBleGFjdGx5IHdoYXQgdGhp
cyB3aWxsIHJldHVybi4gQnV0IG9ubHkgYWZ0ZXIgd2UgaGF2ZSBjaGVja2VkCiAgICAgICAgICAg
ICAgICAgICAgIC8vIHRoYXQgbm9ib2R5IGhhcyBlc2NhcGVkIG91ciBhcmd1bWVudHMuCi0gICAg
ICAgICAgICAgICAgICAgIE5vZGUgY2hlY2soQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkLCBjb2Rl
T3JpZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgY2hlY2sucmVmKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIE5vZGVJbmRleCBjaGVja0luZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGNoZWNrKTsKLSAgICAgICAgICAgICAgICAgICAgaW5z
ZXJ0aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2ssIGNoZWNrSW5kZXgpOworICAgICAgICAgICAg
ICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
IGluZGV4SW5CbG9jaywgRG9udFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUsIAor
ICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkLCBjb2RlT3Jp
Z2luKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
Y29udmVydFRvQ29uc3RhbnQoCiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXgsIGpz
TnVtYmVyKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkp
OwpAQCAtNTc2LDI0ICs1NzQsMjAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAvLyBo
YXMgcnVuIC0gdGhlcmVmb3JlIGl0IG1ha2VzIGxpdHRsZSBzZW5zZSB0byBsaW5rIHRoZSBHZXRM
b2NhbCBvcGVyYXRpb24KICAgICAgICAgICAgICAgICAgICAgLy8gaW50byB0aGUgVmFyaWFibGVB
Y2Nlc3NEYXRhIGFuZCBQaGkgZ3JhcGhzLgogCi0gICAgICAgICAgICAgICAgICAgIE5vZGUgY2hl
Y2soQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkLCBub2RlLmNvZGVPcmlnaW4pOwotICAgICAgICAg
ICAgICAgICAgICBjaGVjay5yZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIE5vZGUgcGhhbnRvbShQaGFudG9tLCBub2RlLmNvZGVPcmlnaW4pOwotICAgICAg
ICAgICAgICAgICAgICBwaGFudG9tLnJlZigpOwotICAgICAgICAgICAgICAgICAgICBwaGFudG9t
LmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjsKKyAgICAgICAgICAgICAgICAgICAgQ29kZU9yaWdp
biBjb2RlT3JpZ2luID0gbm9kZS5jb2RlT3JpZ2luOworICAgICAgICAgICAgICAgICAgICBBZGph
Y2VuY3lMaXN0IGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjsKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUuY29udmVydFRvR2V0TG9jYWxVbmxpbmtlZCgKICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYmFzZWxp
bmVDb2RlQmxvY2tGb3Iobm9kZS5jb2RlT3JpZ2luKS0+YXJndW1lbnRJbmRleEFmdGVyQ2FwdHVy
ZShpbmRleCkpKTsKIAotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggY2hlY2tOb2RlSW5k
ZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQo
Y2hlY2spOwotICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuYXBwZW5kKGluZGV4SW5C
bG9jaywgY2hlY2tOb2RlSW5kZXgpOwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggcGhh
bnRvbU5vZGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLmFwcGVuZChwaGFudG9tKTsKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmFw
cGVuZChpbmRleEluQmxvY2ssIHBoYW50b21Ob2RlSW5kZXgpOworICAgICAgICAgICAgICAgICAg
ICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4
SW5CbG9jaywgRG9udFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUsIENoZWNrQXJn
dW1lbnRzTm90Q3JlYXRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4pOwor
ICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgRG9udFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwg
U3BlY05vbmUsIFBoYW50b20sIGNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBj
aGlsZHJlbik7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC02MTQsNyArNjA4LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgqYmxvY2sp
OworICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5k
ZXggPCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKytibG9ja0luZGV4KSB7CkBAIC02MzQsMTkg
KzYyOCwxNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKG1fY3JlYXRlc0FyZ3VtZW50
cy5jb250YWlucyhub2RlUHRyLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkpCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChub2RlUHRyLT5zaG91
bGRHZW5lcmF0ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUgcGhhbnRvbShQaGFudG9t
LCBub2RlUHRyLT5jb2RlT3JpZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgcGhhbnRvbS5jaGls
ZHJlbiA9IG5vZGVQdHItPmNoaWxkcmVuOwotICAgICAgICAgICAgICAgICAgICBwaGFudG9tLnJl
ZigpOwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggcGhhbnRvbU5vZGVJbmRleCA9IG1f
Z3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChwaGFudG9t
KTsKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2ss
IHBoYW50b21Ob2RlSW5kZXgpOworICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgRG9udFJlZkNo
aWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUsIFBoYW50b20sCisgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlUHRyLT5jb2RlT3JpZ2luLCBub2RlUHRyLT5jaGlsZHJlbik7CiAgICAgICAg
ICAgICAgICAgICAgIG5vZGVQdHIgPSAmbV9ncmFwaFtub2RlSW5kZXhdOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBub2RlUHRyLT5zZXRPcEFuZERlZmF1bHRGbGFncyhQaGFu
dG9tQXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICBub2RlUHRyLT5jaGlsZHJlbi5yZXNldCgp
OwogICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKmJsb2NrKTsKKyAgICAgICAgICAgIGluc2VydGlv
blNldC5leGVjdXRlKGJsb2NrKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGNo
YW5nZWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAko
cmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDEyICszMSwxNSBAQAogI2luY2x1ZGUgIkRGR0Fic3Ry
YWN0VmFsdWUuaCIKICNpbmNsdWRlICJERkdCcmFuY2hEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJE
RkdOb2RlLmgiCisjaW5jbHVkZSAiREZHVmFyaWFkaWNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk9w
ZXJhbmRzLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCitjbGFzcyBHcmFwaDsKKwog
dHlwZWRlZiBWZWN0b3IgPEJsb2NrSW5kZXgsIDI+IFByZWRlY2Vzc29yTGlzdDsKIAogc3RydWN0
IEJhc2ljQmxvY2sgOiBWZWN0b3I8Tm9kZUluZGV4LCA4PiB7CkBAIC05Nyw3ICsxMDAsMTIgQEAg
c3RydWN0IEJhc2ljQmxvY2sgOiBWZWN0b3I8Tm9kZUluZGV4LCA4PgogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KKyAgICAKKyNkZWZpbmUgREZHX0RFRklORV9BUFBF
TkRfTk9ERSh0ZW1wbGF0ZVByZSwgdGVtcGxhdGVQb3N0LCB0eXBlUGFyYW1zLCB2YWx1ZVBhcmFt
c0NvbW1hLCB2YWx1ZVBhcmFtcywgdmFsdWVBcmdzKSBcCisgICAgdGVtcGxhdGVQcmUgdHlwZVBh
cmFtcyB0ZW1wbGF0ZVBvc3QgTm9kZUluZGV4IGFwcGVuZE5vZGUoR3JhcGgmLCBSZWZDaGlsZHJl
bk1vZGUsIFJlZk5vZGVNb2RlLCBTcGVjdWxhdGVkVHlwZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVl
UGFyYW1zKTsKKyAgICBERkdfVkFSSUFESUNfVEVNUExBVEVfRlVOQ1RJT04oREZHX0RFRklORV9B
UFBFTkRfTk9ERSkKKyN1bmRlZiBERkdfREVGSU5FX0FQUEVORF9OT0RFCisgICAgCiAgICAgLy8g
VGhpcyB2YWx1ZSBpcyB1c2VkIGludGVybmFsbHkgZm9yIGJsb2NrIGxpbmtpbmcgYW5kIE9TUiBl
bnRyeS4gSXQgaXMgbW9zdGx5IG1lYW5pbmdsZXNzCiAgICAgLy8gZm9yIG90aGVyIHB1cnBvc2Vz
IGR1ZSB0byBpbmxpbmluZy4KICAgICB1bnNpZ25lZCBieXRlY29kZUJlZ2luOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrSW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9ja0lubGluZXMuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9ja0lubGlu
ZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR0Jhc2ljQmxvY2tJbmxpbmVzX2gK
KyNkZWZpbmUgREZHQmFzaWNCbG9ja0lubGluZXNfaAorCisjaW5jbHVkZSAiREZHQmFzaWNCbG9j
ay5oIgorI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCisjZGVmaW5lIERGR19ERUZJTkVfQVBQRU5E
X05PREUodGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFsdWVQYXJhbXND
b21tYSwgdmFsdWVQYXJhbXMsIHZhbHVlQXJncykgXAorICAgIHRlbXBsYXRlUHJlIHR5cGVQYXJh
bXMgdGVtcGxhdGVQb3N0IE5vZGVJbmRleCBCYXNpY0Jsb2NrOjphcHBlbmROb2RlKEdyYXBoJiBn
cmFwaCwgUmVmQ2hpbGRyZW5Nb2RlIHJlZkNoaWxkcmVuTW9kZSwgUmVmTm9kZU1vZGUgcmVmTm9k
ZU1vZGUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgdmFsdWVQYXJhbXNDb21tYSB2YWx1ZVBhcmFtcykg
XAorICAgIHsgXAorICAgICAgICBOb2RlSW5kZXggcmVzdWx0ID0gZ3JhcGguYWRkTm9kZShyZWZD
aGlsZHJlbk1vZGUsIHJlZk5vZGVNb2RlLCB0eXBlIHZhbHVlUGFyYW1zQ29tbWEgdmFsdWVBcmdz
KTsgXAorICAgICAgICBhcHBlbmQocmVzdWx0KTsgXAorICAgICAgICByZXR1cm4gcmVzdWx0OyBc
CisgICAgfQorICAgIERGR19WQVJJQURJQ19URU1QTEFURV9GVU5DVElPTihERkdfREVGSU5FX0FQ
UEVORF9OT0RFKQorI3VuZGVmIERGR19ERUZJTkVfQVBQRU5EX05PREUKKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBE
RkdCYXNpY0Jsb2NrSW5saW5lc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTQw
MjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShERkdf
SklUKQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RTdGF0ZS5oIgotI2luY2x1ZGUgIkRGR0Jhc2lj
QmxvY2suaCIKKyNpbmNsdWRlICJERkdCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkRG
R0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiREZHUGhh
c2UuaCIKQEAgLTEzNiwxMSArMTM2LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamV0dGlzb25CbG9jayhibG9ja0luZGV4
LCBub3RUYWtlbkJsb2NrSW5kZXgsIGJvdW5kYXJ5Q29kZU9yaWdpbik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXgganVtcE5v
ZGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5v
ZGUganVtcChKdW1wLCBib3VuZGFyeUNvZGVPcmlnaW4sIE9wSW5mbyh0YWtlbkJsb2NrSW5kZXgp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdW1wLnJlZigpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGp1bXApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJsb2NrLT5hcHBlbmQoanVtcE5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmxvY2stPmFwcGVuZE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgsIERvbnRSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNOb25lLCBK
dW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyeUNvZGVPcmlnaW4s
IE9wSW5mbyh0YWtlbkJsb2NrSW5kZXgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgIGlubmVyQ2hhbmdlZCA9IG91dGVyQ2hhbmdlZCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE2OSwxMSArMTY3LDkgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaC5zZXRPcEFuZERlZmF1bHRG
bGFncyhQaGFudG9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYnJhbmNo
LnJlZkNvdW50KCkgPT0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTm9kZSBqdW1wKEp1bXAsIGJyYW5jaC5jb2RlT3JpZ2luLCBP
cEluZm8odGFyZ2V0QmxvY2tJbmRleCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1
bXAucmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZUluZGV4IGp1bXBOb2Rl
SW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLmFwcGVuZChqdW1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBw
ZW5kKGp1bXBOb2RlSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5h
cHBlbmROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBEb250
UmVmQ2hpbGRyZW4sIERvbnRSZWZOb2RlLCBTcGVjTm9uZSwgSnVtcCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJhbmNoLmNvZGVPcmlnaW4sIE9wSW5mbyh0YXJnZXRCbG9ja0lu
ZGV4KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpbm5lckNoYW5nZWQgPSBvdXRlckNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC0yNzUsMTEgKzI3MSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICgh
bm9kZS5zaG91bGRHZW5lcmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBBU1NF
UlQobV9ncmFwaFtub2RlSW5kZXhdLm9wKCkgIT0gU2V0TG9jYWwpOwotICAgICAgICBOb2RlSW5k
ZXggcGhhbnRvbU5vZGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICBOb2RlIHBoYW50
b20oUGhhbnRvbSwgY29kZU9yaWdpbiwgbm9kZUluZGV4KTsKLSAgICAgICAgbV9ncmFwaC5hcHBl
bmQocGhhbnRvbSk7Ci0gICAgICAgIG1fZ3JhcGgucmVmKHBoYW50b21Ob2RlSW5kZXgpOwotICAg
ICAgICBibG9jay0+YXBwZW5kKHBoYW50b21Ob2RlSW5kZXgpOworICAgICAgICBibG9jay0+YXBw
ZW5kTm9kZSgKKyAgICAgICAgICAgIG1fZ3JhcGgsIFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwg
U3BlY05vbmUsIFBoYW50b20sIGNvZGVPcmlnaW4sIG5vZGVJbmRleCk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgZml4UG9zc2libGVHZXRMb2NhbChCYXNpY0Jsb2NrKiBibG9jaywgRWRnZSYgZWRn
ZSwgYm9vbCBjaGFuZ2VSZWYpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
LmgJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29t
bW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsMjMgQEAgZW51bSBVc2VLaW5kIHsK
ICAgICBMYXN0VXNlS2luZCAvLyBNdXN0IGFsd2F5cyBiZSB0aGUgbGFzdCBlbnRyeSBpbiB0aGUg
ZW51bSwgYXMgaXQgaXMgdXNlZCB0byBkZW5vdGUgdGhlIG51bWJlciBvZiBlbnVtIGVsZW1lbnRz
LgogfTsKIAorLy8gVXNlIFJlZkNoaWxkcmVuIGlmIHRoZSBjaGlsZCByZWYgY291bnRzIGhhdmVu
J3QgYWxyZWFkeSBiZWVuIGFkanVzdGVkIHVzaW5nCisvLyBvdGhlciBtZWFucyBhbmQgZWl0aGVy
IG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZToKKy8vIC0gVGhlIG5vZGUgeW91J3JlIGNyZWF0aW5n
IGlzIE11c3RHZW5lcmF0ZS4KKy8vIC0gVGhlIHBsYWNlIHdoZXJlIHlvdSdyZSBpbnNlcnRpbmcg
YSByZWZlcmVuY2UgdG8gdGhlIG5vZGUgeW91J3JlIGNyZWF0aW5nCisvLyAgIHdpbGwgbm90IGFs
c28gZG8gUmVmQ2hpbGRyZW4uCitlbnVtIFJlZkNoaWxkcmVuTW9kZSB7CisgICAgUmVmQ2hpbGRy
ZW4sCisgICAgRG9udFJlZkNoaWxkcmVuCit9OworCisvLyBVc2UgUmVmTm9kZSBpZiB5b3Uga25v
dyB0aGF0IHRoZSBub2RlIHdpbGwgYmUgdXNlZCBmcm9tIGFub3RoZXIgbm9kZSwgYW5kIHlvdQor
Ly8gd2lsbCBub3QgYWxyZWFkeSBiZSByZWYnaW5nIHRoZSBub2RlIHRvIGFjY291bnQgZm9yIHRo
YXQgdXNlLgorZW51bSBSZWZOb2RlTW9kZSB7CisgICAgUmVmTm9kZSwKKyAgICBEb250UmVmTm9k
ZQorfTsKKwogaW5saW5lIGNvbnN0IGNoYXIqIHVzZUtpbmRUb1N0cmluZyhVc2VLaW5kIHVzZUtp
bmQpCiB7CiAgICAgc3dpdGNoICh1c2VLaW5kKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24g
MTQwMjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIENv
bnN0YW50Rm9sZGluZ1BoYXNlKEdyYXBoJiBncmFwaCkKICAgICAgICAgOiBQaGFzZShncmFwaCwg
ImNvbnN0YW50IGZvbGRpbmciKQogICAgICAgICAsIG1fc3RhdGUoZ3JhcGgpCisgICAgICAgICwg
bV9pbnNlcnRpb25TZXQoZ3JhcGgpCiAgICAgewogICAgIH0KICAgICAKQEAgLTE3OSwxMiArMTgw
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobmVl
ZHNXYXRjaHBvaW50KSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX3N0YXRlLmZvck5v
ZGUoY2hpbGQpLm1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVT
ZXQoc3RydWN0dXJlKSkpOwotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoW2NoaWxkXS5yZWYo
KTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSB3YXRjaHBvaW50KFN0cnVjdHVyZVRyYW5zaXRp
b25XYXRjaHBvaW50LCBjb2RlT3JpZ2luLCBPcEluZm8oc3RydWN0dXJlKSwgY2hpbGQpOwotICAg
ICAgICAgICAgICAgICAgICB3YXRjaHBvaW50LnJlZigpOwotICAgICAgICAgICAgICAgICAgICBO
b2RlSW5kZXggd2F0Y2hwb2ludEluZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGguYXBwZW5kKHdhdGNocG9pbnQpOwotICAgICAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5hcHBlbmQoaW5kZXhJbkJsb2NrLCB3YXRjaHBvaW50SW5kZXgpOworICAg
ICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAg
ICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNO
b25lLAorICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnQsIGNvZGVPcmlnaW4sIE9wSW5mbyhzdHJ1Y3R1cmUpLCBjaGlsZCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0
eVN0b3JhZ2VJbmRleDsKQEAgLTE5MywxMSArMTkxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc3RhdHVzLm9mZnNldCgpKSkKICAgICAgICAgICAgICAg
ICAgICAgcHJvcGVydHlTdG9yYWdlSW5kZXggPSBjaGlsZDsKICAgICAgICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSBnZXRCdXR0ZXJmbHkoR2V0QnV0dGVyZmx5LCBj
b2RlT3JpZ2luLCBjaGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgIGdldEJ1dHRlcmZseS5yZWYo
KTsKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlSW5kZXggPSBtX2dyYXBoLnNp
emUoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQoZ2V0QnV0dGVyZmx5KTsK
LSAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBwZW5kKGluZGV4SW5CbG9jaywg
cHJvcGVydHlTdG9yYWdlSW5kZXgpOworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3Jh
Z2VJbmRleCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAg
ICAgICBpbmRleEluQmxvY2ssIERvbnRSZWZDaGlsZHJlbiwgUmVmTm9kZSwgU3BlY05vbmUsIEdl
dEJ1dHRlcmZseSwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9n
cmFwaFtub2RlSW5kZXhdLmNvbnZlcnRUb0dldEJ5T2Zmc2V0KG1fZ3JhcGgubV9zdG9yYWdlQWNj
ZXNzRGF0YS5zaXplKCksIHByb3BlcnR5U3RvcmFnZUluZGV4KTsKQEAgLTI0MSwxMiArMjM3LDkg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobmVlZHNX
YXRjaHBvaW50KSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX3N0YXRlLmZvck5vZGUo
Y2hpbGQpLm1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQo
c3RydWN0dXJlKSkpOwotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoW2NoaWxkXS5yZWYoKTsK
LSAgICAgICAgICAgICAgICAgICAgTm9kZSB3YXRjaHBvaW50KFN0cnVjdHVyZVRyYW5zaXRpb25X
YXRjaHBvaW50LCBjb2RlT3JpZ2luLCBPcEluZm8oc3RydWN0dXJlKSwgY2hpbGQpOwotICAgICAg
ICAgICAgICAgICAgICB3YXRjaHBvaW50LnJlZigpOwotICAgICAgICAgICAgICAgICAgICBOb2Rl
SW5kZXggd2F0Y2hwb2ludEluZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGguYXBwZW5kKHdhdGNocG9pbnQpOwotICAgICAgICAgICAgICAgICAgICBtX2lu
c2VydGlvblNldC5hcHBlbmQoaW5kZXhJbkJsb2NrLCB3YXRjaHBvaW50SW5kZXgpOworICAgICAg
ICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXhJbkJsb2NrLCBSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNOb25l
LAorICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQs
IGNvZGVPcmlnaW4sIE9wSW5mbyhzdHJ1Y3R1cmUpLCBjaGlsZCk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFN0cnVjdHVyZVRyYW5zaXRpb25E
YXRhKiB0cmFuc2l0aW9uRGF0YSA9IDA7CkBAIC0yNzQsNTEgKzI2NywzNiBAQCBwcml2YXRlOgog
CiAgICAgICAgICAgICAgICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZUluZGV4OwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fZ3JhcGhbY2hpbGRdLnJlZigpOwotICAgICAg
ICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzdGF0dXMub2Zmc2V0KCkpKQorICAgICAgICAg
ICAgICAgIGlmIChpc0lubGluZU9mZnNldChzdGF0dXMub2Zmc2V0KCkpKSB7CisgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGhbY2hpbGRdLnJlZigpOyAvLyBUaGUgY2hpbGQgd2lsbCBiZSB1c2Vk
IGFzIHRoZSBwcm9wZXJ0eSBpbmRleCwgc28gcmVmIGl0IHRvIHJlZmxlY3QgdGhlIGRvdWJsZSB1
c2UuCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZUluZGV4ID0gY2hpbGQ7Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhdHVzLmlzU2ltcGxlUmVwbGFjZSgpIHx8IHN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBzdGF0dXMubmV3U3RydWN0dXJlKCktPm91dE9m
TGluZUNhcGFjaXR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSBnZXRCdXR0ZXJmbHko
R2V0QnV0dGVyZmx5LCBjb2RlT3JpZ2luLCBjaGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgIGdl
dEJ1dHRlcmZseS5yZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlSW5k
ZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQo
Z2V0QnV0dGVyZmx5KTsKLSAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBwZW5k
KGluZGV4SW5CbG9jaywgcHJvcGVydHlTdG9yYWdlSW5kZXgpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoc3RhdHVzLmlzU2ltcGxlUmVwbGFjZSgpIHx8IHN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSA9PSBzdGF0dXMubmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlSW5kZXggPSBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBS
ZWZDaGlsZHJlbiwgUmVmTm9kZSwgU3BlY05vbmUsIEdldEJ1dHRlcmZseSwgY29kZU9yaWdpbiwg
Y2hpbGQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RhdHVzLm5ld1N0cnVj
dHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KCFpc0lubGluZU9mZnNldChzdGF0dXMub2Zmc2V0KCkpKTsKLSAgICAgICAgICAgICAgICAgICAg
Tm9kZSBhbGxvY2F0ZVN0b3JhZ2UoQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIGNvZGVPcmlnaW4s
IE9wSW5mbyh0cmFuc2l0aW9uRGF0YSksIGNoaWxkKTsKLSAgICAgICAgICAgICAgICAgICAgYWxs
b2NhdGVTdG9yYWdlLnJlZigpOyAvLyBPbmNlIGZvciB0aGUgdXNlLgotICAgICAgICAgICAgICAg
ICAgICBhbGxvY2F0ZVN0b3JhZ2UucmVmKCk7IC8vIFR3aWNlIGJlY2F1c2UgaXQncyBtdXN0LWdl
bmVyYXRlLgotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2VJbmRleCA9IG1fZ3Jh
cGguc2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChhbGxvY2F0ZVN0
b3JhZ2UpOwotICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQoaW5kZXhJ
bkJsb2NrLCBwcm9wZXJ0eVN0b3JhZ2VJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIHByb3Bl
cnR5U3RvcmFnZUluZGV4ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgUmVmQ2hpbGRyZW4sIFJlZk5vZGUsIFNwZWNOb25l
LCBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVP
cmlnaW4sIE9wSW5mbyh0cmFuc2l0aW9uRGF0YSksIGNoaWxkKTsKICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXR1cy5uZXdTdHJ1Y3R1
cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA+IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghaXNJbmxpbmVPZmZzZXQoc3RhdHVzLm9m
ZnNldCgpKSk7CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBOb2Rl
IGdldEJ1dHRlcmZseShHZXRCdXR0ZXJmbHksIGNvZGVPcmlnaW4sIGNoaWxkKTsKLSAgICAgICAg
ICAgICAgICAgICAgZ2V0QnV0dGVyZmx5LnJlZigpOwotICAgICAgICAgICAgICAgICAgICBOb2Rl
SW5kZXggZ2V0QnV0dGVyZmx5SW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5hcHBlbmQoZ2V0QnV0dGVyZmx5KTsKLSAgICAgICAgICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuYXBwZW5kKGluZGV4SW5CbG9jaywgZ2V0QnV0dGVyZmx5SW5kZXgpOwot
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaFtjaGlsZF0u
cmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUgcmVhbGxvY2F0ZVN0b3JhZ2UoUmVhbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZSwgY29kZU9yaWdpbiwgT3BJbmZvKHRyYW5zaXRpb25EYXRhKSwg
Y2hpbGQsIGdldEJ1dHRlcmZseUluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgcmVhbGxvY2F0
ZVN0b3JhZ2UucmVmKCk7IC8vIE9uY2UgZm9yIHRoZSB1c2UuCi0gICAgICAgICAgICAgICAgICAg
IHJlYWxsb2NhdGVTdG9yYWdlLnJlZigpOyAvLyBUd2ljZSBiZWNhdXNlIGl0J3MgbXVzdC1nZW5l
cmF0ZS4KLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlSW5kZXggPSBtX2dyYXBo
LnNpemUoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQocmVhbGxvY2F0ZVN0
b3JhZ2UpOwotICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQoaW5kZXhJ
bkJsb2NrLCBwcm9wZXJ0eVN0b3JhZ2VJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIHByb3Bl
cnR5U3RvcmFnZUluZGV4ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgUmVmQ2hpbGRyZW4sIFJlZk5vZGUsIFNwZWNOb25l
LCBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgY29k
ZU9yaWdpbiwgT3BJbmZvKHRyYW5zaXRpb25EYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNoaWxkLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIERvbnRSZWZDaGls
ZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNOb25lLCBHZXRCdXR0ZXJmbHksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29kZU9yaWdpbiwgY2hpbGQpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5pc1NpbXBsZVRyYW5z
aXRpb24oKSkgewotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoW2NoaWxkXS5yZWYoKTsKLSAg
ICAgICAgICAgICAgICAgICAgTm9kZSBwdXRTdHJ1Y3R1cmUoUHV0U3RydWN0dXJlLCBjb2RlT3Jp
Z2luLCBPcEluZm8odHJhbnNpdGlvbkRhdGEpLCBjaGlsZCk7Ci0gICAgICAgICAgICAgICAgICAg
IHB1dFN0cnVjdHVyZS5yZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZUluZGV4IHB1dFN0
cnVjdHVyZUluZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGguYXBwZW5kKHB1dFN0cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0LmFwcGVuZChpbmRleEluQmxvY2ssIHB1dFN0cnVjdHVyZUluZGV4KTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4SW5CbG9jaywgUmVmQ2hpbGRyZW4sIERvbnRSZWZOb2RlLCBTcGVjTm9uZSwgUHV0
U3RydWN0dXJlLCBjb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHRy
YW5zaXRpb25EYXRhKSwgY2hpbGQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBtX2dyYXBoW25vZGVJbmRleF0uY29udmVydFRvUHV0QnlPZmZz
ZXQobV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSwgcHJvcGVydHlTdG9yYWdlSW5k
ZXgpOwpAQCAtMzQ2LDggKzMyNCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoIXZhbHVl
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgTm9kZSBwaGFudG9tKFBoYW50b20sIG5vZGUuY29kZU9yaWdpbik7Ci0gICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpZiAobm9kZS5vcCgpID09IEdldExvY2FsKSB7CiAgICAgICAgICAg
ICAgICAgTm9kZUluZGV4IHByZXZpb3VzTG9jYWxBY2Nlc3MgPSBOb05vZGU7CiAgICAgICAgICAg
ICAgICAgaWYgKGJsb2NrLT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZChub2RlLmxvY2FsKCkpID09
IG5vZGVJbmRleApAQCAtNDAyLDQ2ICszNzgsMzggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgICAgIHx8IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPmlzQ2FwdHVyZWQoKSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgcGhhbnRvbS5jaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47Ci0gICAgICAgICAgICBwaGFu
dG9tLnJlZigpOwogICAgICAgICAgICAgCisgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW4gPSBub2RlLmNvZGVPcmlnaW47CisgICAgICAgICAgICBBZGphY2VuY3lMaXN0IGNoaWxkcmVu
ID0gbm9kZS5jaGlsZHJlbjsKKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fZ3JhcGgu
Y29udmVydFRvQ29uc3RhbnQobm9kZUluZGV4LCB2YWx1ZSk7Ci0gICAgICAgICAgICBOb2RlSW5k
ZXggcGhhbnRvbU5vZGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgbV9ncmFw
aC5hcHBlbmQocGhhbnRvbSk7Ci0gICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQoaW5k
ZXhJbkJsb2NrLCBwaGFudG9tTm9kZUluZGV4KTsKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBEb250UmVmQ2hpbGRy
ZW4sIERvbnRSZWZOb2RlLCBTcGVjTm9uZSwgUGhhbnRvbSwgY29kZU9yaWdpbiwgY2hpbGRyZW4p
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgbV9zdGF0ZS5yZXNldCgpOwotICAgICAgICBtX2luc2VydGlvblNldC5leGVj
dXRlKCpibG9jayk7CisgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogICAg
ICAgICAKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAgfQogICAgIAogICAgIHZvaWQgYWRk
U3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgdW5zaWduZWQg
aW5kZXhJbkJsb2NrLCBKU0NlbGwqIGNlbGwpCiAgICAgewotICAgICAgICBOb2RlIHdlYWtDb25z
dGFudChXZWFrSlNDb25zdGFudCwgY29kZU9yaWdpbiwgT3BJbmZvKGNlbGwpKTsKLSAgICAgICAg
d2Vha0NvbnN0YW50LnJlZigpOwotICAgICAgICB3ZWFrQ29uc3RhbnQucHJlZGljdChzcGVjdWxh
dGlvbkZyb21WYWx1ZShjZWxsKSk7Ci0gICAgICAgIE5vZGVJbmRleCB3ZWFrQ29uc3RhbnRJbmRl
eCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICBtX2dyYXBoLmFwcGVuZCh3ZWFrQ29uc3RhbnQp
OwotICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQoaW5kZXhJbkJsb2NrLCB3ZWFrQ29uc3Rh
bnRJbmRleCk7CisgICAgICAgIE5vZGVJbmRleCB3ZWFrQ29uc3RhbnRJbmRleCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICBpbmRleEluQmxvY2ssIERvbnRSZWZDaGls
ZHJlbiwgRG9udFJlZk5vZGUsIHNwZWN1bGF0aW9uRnJvbVZhbHVlKGNlbGwpLAorICAgICAgICAg
ICAgV2Vha0pTQ29uc3RhbnQsIGNvZGVPcmlnaW4sIE9wSW5mbyhjZWxsKSk7CiAgICAgICAgIAog
ICAgICAgICBpZiAoY2VsbC0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SXNT
dGlsbFZhbGlkKCkpIHsKLSAgICAgICAgICAgIE5vZGUgd2F0Y2hwb2ludChTdHJ1Y3R1cmVUcmFu
c2l0aW9uV2F0Y2hwb2ludCwgY29kZU9yaWdpbiwgT3BJbmZvKGNlbGwtPnN0cnVjdHVyZSgpKSwg
d2Vha0NvbnN0YW50SW5kZXgpOwotICAgICAgICAgICAgd2F0Y2hwb2ludC5yZWYoKTsKLSAgICAg
ICAgICAgIE5vZGVJbmRleCB3YXRjaHBvaW50SW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAg
ICAgICAgIG1fZ3JhcGguYXBwZW5kKHdhdGNocG9pbnQpOwotICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuYXBwZW5kKGluZGV4SW5CbG9jaywgd2F0Y2hwb2ludEluZGV4KTsKKyAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2Nr
LCBSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNOb25lLCBTdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludCwKKyAgICAgICAgICAgICAgICBjb2RlT3JpZ2luLCBPcEluZm8oY2VsbC0+c3Ry
dWN0dXJlKCkpLCB3ZWFrQ29uc3RhbnRJbmRleCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIE5vZGUgY2hlY2soQ2hlY2tTdHJ1Y3R1cmUsIGNvZGVP
cmlnaW4sIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChjZWxsLT5zdHJ1Y3R1cmUoKSkp
LCB3ZWFrQ29uc3RhbnRJbmRleCk7Ci0gICAgICAgIGNoZWNrLnJlZigpOwotICAgICAgICBOb2Rl
SW5kZXggY2hlY2tJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICBtX2dyYXBoLmFwcGVu
ZChjaGVjayk7Ci0gICAgICAgIG1faW5zZXJ0aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2ssIGNo
ZWNrSW5kZXgpOworCisgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAg
ICAgICBpbmRleEluQmxvY2ssIFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUsIENo
ZWNrU3RydWN0dXJlLCBjb2RlT3JpZ2luLAorICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRk
U3RydWN0dXJlU2V0KGNlbGwtPnN0cnVjdHVyZSgpKSksIHdlYWtDb25zdGFudEluZGV4KTsKICAg
ICB9CiAgICAgCiAgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgQ0ZBIG1heSBy
ZWFjaCBjb25jbHVzaW9ucyBhYm91dCBjb25zdGFudHMgYmFzZWQgb24gaXRzCkBAIC00NzcsMjQg
KzQ0NSwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBOb2RlIGZvcmNlT1NS
RXhpdChGb3JjZU9TUkV4aXQsIG5vZGUuY29kZU9yaWdpbik7Ci0gICAgICAgICAgICAgICAgZm9y
Y2VPU1JFeGl0LnJlZigpOwotICAgICAgICAgICAgICAgIE5vZGVJbmRleCBmb3JjZU9TUkV4aXRJ
bmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGZv
cmNlT1NSRXhpdCk7Ci0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBwZW5kKGluZGV4
SW5CbG9jaywgZm9yY2VPU1JFeGl0SW5kZXgpOworICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgRG9udFJl
ZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUsIEZvcmNlT1NSRXhpdCwKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZS5jb2RlT3JpZ2luKTsKICAgICAgICAgICAgICAgICBjaGFuZ2VkID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIG1fc3RhdGUucmVzZXQoKTsKLSAgICAgICAgbV9p
bnNlcnRpb25TZXQuZXhlY3V0ZSgqYmxvY2spOworICAgICAgICBtX2luc2VydGlvblNldC5leGVj
dXRlKGJsb2NrKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KIAog
ICAgIEFic3RyYWN0U3RhdGUgbV9zdGF0ZTsKLSAgICBJbnNlcnRpb25TZXQ8Tm9kZUluZGV4PiBt
X2luc2VydGlvblNldDsKKyAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CiB9OwogCiBi
b29sIHBlcmZvcm1Db25zdGFudEZvbGRpbmcoR3JhcGgmIGdyYXBoKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNDAyMTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
cHVibGljOgogICAgIEZpeHVwUGhhc2UoR3JhcGgmIGdyYXBoKQogICAgICAgICA6IFBoYXNlKGdy
YXBoLCAiZml4dXAiKQorICAgICAgICAsIG1faW5zZXJ0aW9uU2V0KGdyYXBoKQogICAgIHsKICAg
ICB9CiAgICAgCkBAIC02MCw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2NvbXBp
bGVJbmRleCA9IGJsb2NrLT5hdChtX2luZGV4SW5CbG9jayk7CiAgICAgICAgICAgICBmaXh1cE5v
ZGUobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOwogICAgICAgICB9Ci0gICAgICAgIG1faW5zZXJ0
aW9uU2V0LmV4ZWN1dGUoKmJsb2NrKTsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShi
bG9jayk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZml4dXBOb2RlKE5vZGUmIG5vZGUpCkBAIC05
NiwxMiArOTcsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaFtub2Rl
LmNoaWxkMSgpXS5wcmVkaWN0aW9uKCksCiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGhbbV9j
b21waWxlSW5kZXhdLnByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICAgICAgaWYgKGFycmF5TW9k
ZS5zdXBwb3J0c0xlbmd0aCgpICYmIGFycmF5UHJvZmlsZS0+aGFzRGVmaW5pdGVTdHJ1Y3R1cmUo
KSkgewotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZihub2RlUHRyLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUgY2hlY2tTdHJ1Y3R1cmUoQ2hlY2tTdHJ1Y3R1cmUs
IG5vZGVQdHItPmNvZGVPcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChhcnJh
eVByb2ZpbGUtPmV4cGVjdGVkU3RydWN0dXJlKCkpKSwgbm9kZVB0ci0+Y2hpbGQxKCkuaW5kZXgo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrU3RydWN0dXJlLnJlZigpOwotICAgICAgICAg
ICAgICAgICAgICBOb2RlSW5kZXggY2hlY2tTdHJ1Y3R1cmVJbmRleCA9IG1fZ3JhcGguc2l6ZSgp
OwotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChjaGVja1N0cnVjdHVyZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmFwcGVuZChtX2luZGV4SW5CbG9jaywg
Y2hlY2tTdHJ1Y3R1cmVJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgUmVm
Q2hpbGRyZW4sIERvbnRSZWZOb2RlLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlUHRyLT5jb2RlT3JpZ2luLCBPcEluZm8obV9ncmFwaC5hZGRT
dHJ1Y3R1cmVTZXQoYXJyYXlQcm9maWxlLT5leHBlY3RlZFN0cnVjdHVyZSgpKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlUHRyLT5jaGlsZDEoKS5pbmRleCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgbm9kZVB0ciA9ICZtX2dyYXBoW21fY29tcGlsZUluZGV4XTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzIyLDE5ICszMjEsMTQgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgaW5qZWN0SW50
MzJUb0RvdWJsZU5vZGUoMCk7CiAgICAgICAgICAgICAgICAgaW5qZWN0SW50MzJUb0RvdWJsZU5v
ZGUoMSk7CisKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGRvIHJlZidpbmcg
b24gdGhlIGNoaWxkcmVuIGJlY2F1c2Ugd2UncmUgc3RlYWxpbmcgdGhlbSBmcm9tCisgICAgICAg
ICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIGRpdmlzaW9uLgorICAgICAgICAgICAgICAgIE5vZGVJ
bmRleCBuZXdEaXZpc2lvbkluZGV4ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAg
ICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIERvbnRSZWZDaGlsZHJlbiwgUmVmTm9kZSwg
U3BlY0RvdWJsZSwgbV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOwogICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIE5vZGUmIG9sZERpdmlzaW9uID0gbV9ncmFwaFttX2NvbXBpbGVJbmRl
eF07Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgTm9kZSBuZXdEaXZpc2lvbiA9
IG9sZERpdmlzaW9uOwotICAgICAgICAgICAgICAgIG5ld0RpdmlzaW9uLnNldFJlZkNvdW50KDIp
OwotICAgICAgICAgICAgICAgIG5ld0RpdmlzaW9uLnByZWRpY3QoU3BlY0RvdWJsZSk7Ci0gICAg
ICAgICAgICAgICAgTm9kZUluZGV4IG5ld0RpdmlzaW9uSW5kZXggPSBtX2dyYXBoLnNpemUoKTsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBvbGREaXZpc2lvbi5zZXRPcChEb3Vi
bGVBc0ludDMyKTsKLSAgICAgICAgICAgICAgICBvbGREaXZpc2lvbi5jaGlsZHJlbi5pbml0aWFs
aXplKEVkZ2UobmV3RGl2aXNpb25JbmRleCwgRG91YmxlVXNlKSwgRWRnZSgpLCBFZGdlKCkpOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKG5ld0Rpdmlz
aW9uKTsKLSAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQobV9pbmRleEluQmxv
Y2ssIG5ld0RpdmlzaW9uSW5kZXgpOworICAgICAgICAgICAgICAgIG1fZ3JhcGhbbV9jb21waWxl
SW5kZXhdLnNldE9wKERvdWJsZUFzSW50MzIpOworICAgICAgICAgICAgICAgIG1fZ3JhcGhbbV9j
b21waWxlSW5kZXhdLmNoaWxkcmVuLmluaXRpYWxpemUoRWRnZShuZXdEaXZpc2lvbkluZGV4LCBE
b3VibGVVc2UpLCBFZGdlKCksIEVkZ2UoKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00MjIsMjggKzQxNiwxMyBAQCBwcml2YXRl
OgogI2VuZGlmCiAgICAgfQogICAgIAotICAgIE5vZGVJbmRleCBhZGROb2RlKGNvbnN0IE5vZGUm
IG5vZGUsIGJvb2wgc2hvdWxkR2VuZXJhdGUpCi0gICAgewotICAgICAgICBOb2RlSW5kZXggbm9k
ZUluZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAgIG1fZ3JhcGguYXBwZW5kKG5vZGUpOwot
ICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQobV9pbmRleEluQmxvY2ssIG5vZGVJbmRleCk7
Ci0gICAgICAgIGlmIChzaG91bGRHZW5lcmF0ZSkKLSAgICAgICAgICAgIG1fZ3JhcGhbbm9kZUlu
ZGV4XS5yZWYoKTsKLSAgICAgICAgcmV0dXJuIG5vZGVJbmRleDsKLSAgICB9Ci0gICAgCiAgICAg
Tm9kZUluZGV4IGNoZWNrQXJyYXkoQXJyYXlNb2RlIGFycmF5TW9kZSwgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBOb2RlSW5kZXggYXJyYXksIE5vZGVJbmRleCBpbmRleCwgYm9vbCAoKnN0b3JhZ2VD
aGVjaykoY29uc3QgQXJyYXlNb2RlJikgPSBjYW5DU0VTdG9yYWdlLCBib29sIHNob3VsZEdlbmVy
YXRlID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChhcnJheU1vZGUuaXNTcGVjaWZpYygp
KTsKICAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgucmVmKGFycmF5KTsKLQogICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGFycmF5TW9kZS5vcmlnaW5hbEFycmF5U3RydWN0dXJlKG1fZ3Jh
cGgsIGNvZGVPcmlnaW4pOwogICAgICAgICAKICAgICAgICAgaWYgKGFycmF5TW9kZS5kb2VzQ29u
dmVyc2lvbigpKSB7Ci0gICAgICAgICAgICBpZiAoaW5kZXggIT0gTm9Ob2RlKQotICAgICAgICAg
ICAgICAgIG1fZ3JhcGgucmVmKGluZGV4KTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KHN0cnVjdHVyZSkgewogICAgICAgICAgICAgICAgIGlmIChtX2luZGV4SW5CbG9jayA+IDApIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHByZXZpb3VzIG5vZGUgd2FzIGEgQ2hlY2tT
dHJ1Y3R1cmUgaW5zZXJ0ZWQgYmVjYXVzZSBvZiBzdHVmZgpAQCAtNDU1LDQ0ICs0MzQsNDIgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzTm9kZS5zZXRPcEFuZERl
ZmF1bHRGbGFncyhQaGFudG9tKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgTm9kZSBhcnJheWlmeShBcnJheWlmeVRvU3RydWN0dXJlLCBjb2Rl
T3JpZ2luLCBPcEluZm8oc3RydWN0dXJlKSwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGFy
cmF5LCBpbmRleCk7Ci0gICAgICAgICAgICAgICAgYXJyYXlpZnkucmVmKCk7Ci0gICAgICAgICAg
ICAgICAgTm9kZUluZGV4IGFycmF5aWZ5SW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAg
ICAgICAgICBtX2dyYXBoLmFwcGVuZChhcnJheWlmeSk7Ci0gICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuYXBwZW5kKG1faW5kZXhJbkJsb2NrLCBhcnJheWlmeUluZGV4KTsKKyAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgUmVmQ2hpbGRyZW4sIERvbnRSZWZOb2RlLCBTcGVjTm9uZSwgQXJyYXlp
ZnlUb1N0cnVjdHVyZSwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHN0
cnVjdHVyZSksIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBhcnJheSwgaW5kZXgpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBOb2RlIGFycmF5aWZ5KEFycmF5aWZ5
LCBjb2RlT3JpZ2luLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgYXJyYXksIGluZGV4KTsK
LSAgICAgICAgICAgICAgICBhcnJheWlmeS5yZWYoKTsKLSAgICAgICAgICAgICAgICBOb2RlSW5k
ZXggYXJyYXlpZnlJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAgIG1fZ3Jh
cGguYXBwZW5kKGFycmF5aWZ5KTsKLSAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBl
bmQobV9pbmRleEluQmxvY2ssIGFycmF5aWZ5SW5kZXgpOworICAgICAgICAgICAgICAgIG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2Nr
LCBSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNOb25lLCBBcnJheWlmeSwgY29kZU9yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGFycmF5
LCBpbmRleCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBp
ZiAoc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgTm9kZSBjaGVja1N0cnVjdHVyZShDaGVj
a1N0cnVjdHVyZSwgY29kZU9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0
cnVjdHVyZSkpLCBhcnJheSk7Ci0gICAgICAgICAgICAgICAgY2hlY2tTdHJ1Y3R1cmUucmVmKCk7
Ci0gICAgICAgICAgICAgICAgTm9kZUluZGV4IGNoZWNrU3RydWN0dXJlSW5kZXggPSBtX2dyYXBo
LnNpemUoKTsKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChjaGVja1N0cnVjdHVyZSk7
Ci0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBwZW5kKG1faW5kZXhJbkJsb2NrLCBj
aGVja1N0cnVjdHVyZUluZGV4KTsKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgUmVmQ2hpbGRyZW4s
IERvbnRSZWZOb2RlLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIGNvZGVPcmlnaW4sCisgICAg
ICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUp
KSwgYXJyYXkpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBOb2RlIGNo
ZWNrQXJyYXkoQ2hlY2tBcnJheSwgY29kZU9yaWdpbiwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQo
KSksIGFycmF5KTsKLSAgICAgICAgICAgICAgICBjaGVja0FycmF5LnJlZigpOwotICAgICAgICAg
ICAgICAgIE5vZGVJbmRleCBjaGVja0FycmF5SW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAg
ICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChjaGVja0FycmF5KTsKLSAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5hcHBlbmQobV9pbmRleEluQmxvY2ssIGNoZWNrQXJyYXlJbmRleCk7Cisg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAg
ICAgICAgbV9pbmRleEluQmxvY2ssIFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgU3BlY05vbmUs
IENoZWNrQXJyYXksIGNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhhcnJh
eU1vZGUuYXNXb3JkKCkpLCBhcnJheSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGlmICghc3RvcmFnZUNoZWNrKGFycmF5TW9kZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gTm9Ob2RlOwogICAgICAgICAKLSAgICAgICAgaWYgKHNob3VsZEdlbmVyYXRlKQotICAg
ICAgICAgICAgbV9ncmFwaC5yZWYoYXJyYXkpOwotICAgICAgICAKLSAgICAgICAgaWYgKGFycmF5
TW9kZS51c2VzQnV0dGVyZmx5KCkpCi0gICAgICAgICAgICByZXR1cm4gYWRkTm9kZShOb2RlKEdl
dEJ1dHRlcmZseSwgY29kZU9yaWdpbiwgYXJyYXkpLCBzaG91bGRHZW5lcmF0ZSk7CisgICAgICAg
IGlmIChhcnJheU1vZGUudXNlc0J1dHRlcmZseSgpKSB7CisgICAgICAgICAgICByZXR1cm4gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywK
KyAgICAgICAgICAgICAgICBzaG91bGRHZW5lcmF0ZSA/IFJlZkNoaWxkcmVuIDogRG9udFJlZkNo
aWxkcmVuLAorICAgICAgICAgICAgICAgIHNob3VsZEdlbmVyYXRlID8gUmVmTm9kZSA6IERvbnRS
ZWZOb2RlLAorICAgICAgICAgICAgICAgIFNwZWNOb25lLCBHZXRCdXR0ZXJmbHksIGNvZGVPcmln
aW4sIGFycmF5KTsKKyAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgcmV0dXJuIGFkZE5vZGUo
Tm9kZShHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlLCBjb2RlT3JpZ2luLCBPcEluZm8oYXJyYXlN
b2RlLmFzV29yZCgpKSwgYXJyYXkpLCBzaG91bGRHZW5lcmF0ZSk7CisgICAgICAgIHJldHVybiBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssCisg
ICAgICAgICAgICBzaG91bGRHZW5lcmF0ZSA/IFJlZkNoaWxkcmVuIDogRG9udFJlZkNoaWxkcmVu
LAorICAgICAgICAgICAgc2hvdWxkR2VuZXJhdGUgPyBSZWZOb2RlIDogRG9udFJlZk5vZGUsCisg
ICAgICAgICAgICBTcGVjTm9uZSwgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSwgY29kZU9yaWdp
biwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGFycmF5KTsKICAgICB9CiAgICAgCiAgICAg
dm9pZCBibGVzc0FycmF5T3BlcmF0aW9uKEVkZ2UgYmFzZSwgRWRnZSBpbmRleCwgdW5zaWduZWQg
c3RvcmFnZUNoaWxkSWR4KQpAQCAtNTA0LDExICs0ODEsOSBAQCBwcml2YXRlOgogICAgICAgICAK
ICAgICAgICAgc3dpdGNoIChub2RlUHRyLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAg
Y2FzZSBBcnJheTo6Rm9yY2VFeGl0OiB7Ci0gICAgICAgICAgICBOb2RlIGZvcmNlRXhpdChGb3Jj
ZU9TUkV4aXQsIG5vZGVQdHItPmNvZGVPcmlnaW4pOwotICAgICAgICAgICAgZm9yY2VFeGl0LnJl
ZigpOwotICAgICAgICAgICAgTm9kZUluZGV4IGZvcmNlRXhpdEluZGV4ID0gbV9ncmFwaC5zaXpl
KCk7Ci0gICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChmb3JjZUV4aXQpOwotICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuYXBwZW5kKG1faW5kZXhJbkJsb2NrLCBmb3JjZUV4aXRJbmRleCk7Cisg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1f
aW5kZXhJbkJsb2NrLCBEb250UmVmQ2hpbGRyZW4sIERvbnRSZWZOb2RlLCBTcGVjTm9uZSwgRm9y
Y2VPU1JFeGl0LAorICAgICAgICAgICAgICAgIG5vZGVQdHItPmNvZGVPcmlnaW4pOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTU2MywzMyArNTM4LDI0
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGluamVjdEludDMyVG9Eb3VibGVOb2RlKHVuc2lnbmVk
IGNoaWxkSW5kZXgpCiAgICAgewotICAgICAgICBOb2RlJiBzb3VyY2UgPSBtX2dyYXBoW21fY29t
cGlsZUluZGV4XTsKLSAgICAgICAgRWRnZSYgZWRnZSA9IG1fZ3JhcGguY2hpbGQoc291cmNlLCBj
aGlsZEluZGV4KTsKLSAgICAgICAgCi0gICAgICAgIE5vZGVJbmRleCByZXN1bHRJbmRleCA9IChO
b2RlSW5kZXgpbV9ncmFwaC5zaXplKCk7CisgICAgICAgIE5vZGVJbmRleCByZXN1bHRJbmRleCA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywg
RG9udFJlZkNoaWxkcmVuLCBSZWZOb2RlLCBTcGVjRG91YmxlLCBJbnQzMlRvRG91YmxlLAorICAg
ICAgICAgICAgbV9ncmFwaFttX2NvbXBpbGVJbmRleF0uY29kZU9yaWdpbiwKKyAgICAgICAgICAg
IG1fZ3JhcGguY2hpbGQobV9ncmFwaFttX2NvbXBpbGVJbmRleF0sIGNoaWxkSW5kZXgpLmluZGV4
KCkpOwogICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0Up
Ci0gICAgICAgIGRhdGFMb2dGKCIocmVwbGFjaW5nIEAldS0+QCV1IHdpdGggQCV1LT5AJXUpICIs
Ci0gICAgICAgICAgICAgICAgbV9jb21waWxlSW5kZXgsIGVkZ2UuaW5kZXgoKSwgbV9jb21waWxl
SW5kZXgsIHJlc3VsdEluZGV4KTsKKyAgICAgICAgZGF0YUxvZ0YoCisgICAgICAgICAgICAiKHJl
cGxhY2luZyBAJXUtPkAldSB3aXRoIEAldS0+QCV1KSAiLAorICAgICAgICAgICAgbV9jb21waWxl
SW5kZXgsIG1fZ3JhcGguY2hpbGQobV9ncmFwaFttX2NvbXBpbGVJbmRleF0sIGNoaWxkSW5kZXgp
LmluZGV4KCksIG1fY29tcGlsZUluZGV4LCByZXN1bHRJbmRleCk7CiAjZW5kaWYKLSAgICAgICAg
Ci0gICAgICAgIC8vIEZpeCB0aGUgZWRnZSB1cCBoZXJlIGJlY2F1c2UgaXQncyBhIHJlZmVyZW5j
ZSB0aGF0IHdpbGwgYmUgY2xvYmJlcmVkIGJ5Ci0gICAgICAgIC8vIHRoZSBhcHBlbmQoKSBiZWxv
dy4KLSAgICAgICAgTm9kZUluZGV4IG9sZEluZGV4ID0gZWRnZS5pbmRleCgpOwotICAgICAgICBl
ZGdlID0gRWRnZShyZXN1bHRJbmRleCwgRG91YmxlVXNlKTsKLQotICAgICAgICBtX2dyYXBoLmFw
cGVuZChOb2RlKEludDMyVG9Eb3VibGUsIHNvdXJjZS5jb2RlT3JpZ2luLCBvbGRJbmRleCkpOwot
ICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQobV9pbmRleEluQmxvY2ssIHJlc3VsdEluZGV4
KTsKLSAgICAgICAgCi0gICAgICAgIE5vZGUmIGludDMyVG9Eb3VibGUgPSBtX2dyYXBoW3Jlc3Vs
dEluZGV4XTsKLSAgICAgICAgaW50MzJUb0RvdWJsZS5wcmVkaWN0KFNwZWNEb3VibGUpOwotICAg
ICAgICBpbnQzMlRvRG91YmxlLnJlZigpOworCisgICAgICAgIG1fZ3JhcGguY2hpbGQobV9ncmFw
aFttX2NvbXBpbGVJbmRleF0sIGNoaWxkSW5kZXgpID0gRWRnZShyZXN1bHRJbmRleCwgRG91Ymxl
VXNlKTsKICAgICB9CiAKICAgICBCYXNpY0Jsb2NrKiBtX2Jsb2NrOwogICAgIHVuc2lnbmVkIG1f
aW5kZXhJbkJsb2NrOwogICAgIE5vZGVJbmRleCBtX2NvbXBpbGVJbmRleDsKLSAgICBJbnNlcnRp
b25TZXQ8Tm9kZUluZGV4PiBtX2luc2VydGlvblNldDsKKyAgICBJbnNlcnRpb25TZXQgbV9pbnNl
cnRpb25TZXQ7CiB9OwogICAgIAogYm9vbCBwZXJmb3JtRml4dXAoR3JhcGgmIGdyYXBoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTQwMjE1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZHQmFzaWNCbG9jay5oIgogI2luY2x1ZGUgIkRGR0Rv
bWluYXRvcnMuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVkZSAiREZHVmFyaWFkaWNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RhY2suaCIKICNpbmNsdWRlICJNZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgpAQCAtOTksMTYg
KzEwMCwxOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgTm9kZSYgYXQoRWRnZSBub2RlVXNlKSBjb25z
dCB7IHJldHVybiBhdChub2RlVXNlLmluZGV4KCkpOyB9CiAgICAgCiAgICAgLy8gTWFyayBhIG5v
ZGUgYXMgYmVpbmcgcmVmZXJlbmNlZC4KLSAgICB2b2lkIHJlZihOb2RlSW5kZXggbm9kZUluZGV4
KQorICAgIE5vZGVJbmRleCByZWYoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICB7CiAgICAgICAg
IE5vZGUmIG5vZGUgPSBhdChub2RlSW5kZXgpOwogICAgICAgICAvLyBJZiB0aGUgdmFsdWUgKGJl
Zm9yZSBpbmNyZW1lbnRpbmcpIHdhcyBhdCByZWZDb3VudCB6ZXJvIHRoZW4gd2UgbmVlZCB0byBy
ZWYgaXRzIGNoaWxkcmVuLgogICAgICAgICBpZiAoIW5vZGUucG9zdGZpeFJlZigpKQogICAgICAg
ICAgICAgcmVmQ2hpbGRyZW4obm9kZUluZGV4KTsKKyAgICAgICAgcmV0dXJuIG5vZGVJbmRleDsK
ICAgICB9Ci0gICAgdm9pZCByZWYoRWRnZSBub2RlVXNlKQorICAgIEVkZ2UgcmVmKEVkZ2Ugbm9k
ZVVzZSkKICAgICB7CiAgICAgICAgIHJlZihub2RlVXNlLmluZGV4KCkpOworICAgICAgICByZXR1
cm4gbm9kZVVzZTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBkZXJlZihOb2RlSW5kZXggbm9kZUlu
ZGV4KQpAQCAtMTc3LDYgKzE4MCwyNCBAQCBwdWJsaWM6CiAgICAgICAgIG5vZGUuY2hpbGRyZW4u
Y2hpbGQzKCkgPSBFZGdlKCk7CiAgICAgfQogICAgIAorI2RlZmluZSBERkdfREVGSU5FX0FERF9O
T0RFKHRlbXBsYXRlUHJlLCB0ZW1wbGF0ZVBvc3QsIHR5cGVQYXJhbXMsIHZhbHVlUGFyYW1zQ29t
bWEsIHZhbHVlUGFyYW1zLCB2YWx1ZUFyZ3MpIFwKKyAgICB0ZW1wbGF0ZVByZSB0eXBlUGFyYW1z
IHRlbXBsYXRlUG9zdCBOb2RlSW5kZXggYWRkTm9kZShSZWZDaGlsZHJlbk1vZGUgcmVmQ2hpbGRy
ZW5Nb2RlLCBSZWZOb2RlTW9kZSByZWZOb2RlTW9kZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSB2YWx1
ZVBhcmFtc0NvbW1hIHZhbHVlUGFyYW1zKSBcCisgICAgeyBcCisgICAgICAgIE5vZGUgbm9kZSA9
IE5vZGUodmFsdWVBcmdzKTsgXAorICAgICAgICBub2RlLnByZWRpY3QodHlwZSk7IFwKKyAgICAg
ICAgaWYgKG5vZGUuZmxhZ3MoKSAmIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICAgICAgICAgIG5v
ZGUucmVmKCk7IFwKKyAgICAgICAgaWYgKHJlZk5vZGVNb2RlID09IFJlZk5vZGUpIFwKKyAgICAg
ICAgICAgIG5vZGUucmVmKCk7IFwKKyAgICAgICAgTm9kZUluZGV4IHJlc3VsdCA9IHNpemUoKTsg
XAorICAgICAgICBhcHBlbmQobm9kZSk7IFwKKyAgICAgICAgaWYgKHJlZkNoaWxkcmVuTW9kZSA9
PSBSZWZDaGlsZHJlbikgXAorICAgICAgICAgICAgcmVmQ2hpbGRyZW4ocmVzdWx0KTsgXAorICAg
ICAgICByZXR1cm4gcmVzdWx0OyBcCisgICAgfQorICAgIERGR19WQVJJQURJQ19URU1QTEFURV9G
VU5DVElPTihERkdfREVGSU5FX0FERF9OT0RFKQorI3VuZGVmIERGR19ERUZJTkVfQUREX05PREUK
KwogICAgIC8vIENhbGwgdGhpcyBpZiB5b3UndmUgbW9kaWZpZWQgdGhlIHJlZmVyZW5jZSBjb3Vu
dHMgb2Ygbm9kZXMgdGhhdCBkZWFsIHdpdGgKICAgICAvLyBsb2NhbCB2YXJpYWJsZXMuIFRoaXMg
aXMgbmVjZXNzYXJ5IGJlY2F1c2UgbG9jYWwgdmFyaWFibGUgcmVmZXJlbmNlcyBjYW4gZm9ybQog
ICAgIC8vIGN5Y2xlcywgYW5kIGhlbmNlIHJlZmVyZW5jZSBjb3VudGluZyBpcyBub3QgZW5vdWdo
LiBUaGlzIHdpbGwgcmVzZXQgdGhlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDY0ICszMCw3NSBA
QAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGNsYXNzIEluc2VydGlvbiB7CiBwdWJsaWM6
CiAgICAgSW5zZXJ0aW9uKCkgeyB9CiAgICAgCi0gICAgSW5zZXJ0aW9uKHNpemVfdCBpbmRleCwg
Y29uc3QgRWxlbWVudFR5cGUmIGVsZW1lbnQpCisgICAgSW5zZXJ0aW9uKHNpemVfdCBpbmRleCwg
Tm9kZUluZGV4IGVsZW1lbnQpCiAgICAgICAgIDogbV9pbmRleChpbmRleCkKICAgICAgICAgLCBt
X2VsZW1lbnQoZWxlbWVudCkKICAgICB7CiAgICAgfQogICAgIAogICAgIHNpemVfdCBpbmRleCgp
IGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KLSAgICBjb25zdCBFbGVtZW50VHlwZSYgZWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQorICAgIE5vZGVJbmRleCBlbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CiBwcml2YXRlOgogICAgIHNpemVfdCBtX2luZGV4
OwotICAgIEVsZW1lbnRUeXBlIG1fZWxlbWVudDsKKyAgICBOb2RlSW5kZXggbV9lbGVtZW50Owog
fTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBjbGFzcyBJbnNlcnRpb25TZXQg
ewogcHVibGljOgotICAgIEluc2VydGlvblNldCgpIHsgfQorICAgIEluc2VydGlvblNldChHcmFw
aCYgZ3JhcGgpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAgICB7CisgICAgfQogICAgIAot
ICAgIHZvaWQgYXBwZW5kKGNvbnN0IEluc2VydGlvbjxFbGVtZW50VHlwZT4mIGluc2VydGlvbikK
KyAgICBOb2RlSW5kZXggaW5zZXJ0KGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9uKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKCFtX2luc2VydGlvbnMuc2l6ZSgpIHx8IG1faW5zZXJ0aW9ucy5sYXN0
KCkuaW5kZXgoKSA8PSBpbnNlcnRpb24uaW5kZXgoKSk7CiAgICAgICAgIG1faW5zZXJ0aW9ucy5h
cHBlbmQoaW5zZXJ0aW9uKTsKKyAgICAgICAgcmV0dXJuIGluc2VydGlvbi5lbGVtZW50KCk7CiAg
ICAgfQogICAgIAotICAgIHZvaWQgYXBwZW5kKHNpemVfdCBpbmRleCwgY29uc3QgRWxlbWVudFR5
cGUmIGVsZW1lbnQpCisgICAgTm9kZUluZGV4IGluc2VydChzaXplX3QgaW5kZXgsIE5vZGVJbmRl
eCBlbGVtZW50KQogICAgIHsKLSAgICAgICAgYXBwZW5kKEluc2VydGlvbjxFbGVtZW50VHlwZT4o
aW5kZXgsIGVsZW1lbnQpKTsKKyAgICAgICAgcmV0dXJuIGluc2VydChJbnNlcnRpb24oaW5kZXgs
IGVsZW1lbnQpKTsKKyAgICB9CisKKyNkZWZpbmUgREZHX0RFRklORV9JTlNFUlRfTk9ERSh0ZW1w
bGF0ZVByZSwgdGVtcGxhdGVQb3N0LCB0eXBlUGFyYW1zLCB2YWx1ZVBhcmFtc0NvbW1hLCB2YWx1
ZVBhcmFtcywgdmFsdWVBcmdzKSBcCisgICAgdGVtcGxhdGVQcmUgdHlwZVBhcmFtcyB0ZW1wbGF0
ZVBvc3QgTm9kZUluZGV4IGluc2VydE5vZGUoc2l6ZV90IGluZGV4LCBSZWZDaGlsZHJlbk1vZGUg
cmVmQ2hpbGRyZW5Nb2RlLCBSZWZOb2RlTW9kZSByZWZOb2RlTW9kZSwgU3BlY3VsYXRlZFR5cGUg
dHlwZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlUGFyYW1zKSBcCisgICAgeyBcCisgICAgICAgIHJl
dHVybiBpbnNlcnQoaW5kZXgsIG1fZ3JhcGguYWRkTm9kZShyZWZDaGlsZHJlbk1vZGUsIHJlZk5v
ZGVNb2RlLCB0eXBlIHZhbHVlUGFyYW1zQ29tbWEgdmFsdWVBcmdzKSk7IFwKICAgICB9CisgICAg
REZHX1ZBUklBRElDX1RFTVBMQVRFX0ZVTkNUSU9OKERGR19ERUZJTkVfSU5TRVJUX05PREUpCisj
dW5kZWYgREZHX0RFRklORV9JTlNFUlRfTk9ERQogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENvbGxlY3Rpb25UeXBlPgotICAgIHZvaWQgZXhlY3V0ZShDb2xsZWN0aW9uVHlwZSYgY29sbGVj
dGlvbikKKyAgICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiAgICAgewogICAgICAg
ICBpZiAoIW1faW5zZXJ0aW9ucy5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IGNvbGxlY3Rpb24uZ3Jvdyhjb2xsZWN0aW9uLnNpemUoKSArIG1faW5zZXJ0aW9ucy5zaXplKCkp
OwotICAgICAgICBzaXplX3QgbGFzdEluZGV4ID0gY29sbGVjdGlvbi5zaXplKCk7CisgICAgICAg
IGJsb2NrLT5ncm93KGJsb2NrLT5zaXplKCkgKyBtX2luc2VydGlvbnMuc2l6ZSgpKTsKKyAgICAg
ICAgc2l6ZV90IGxhc3RJbmRleCA9IGJsb2NrLT5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90
IGluZGV4SW5JbnNlcnRpb25zID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5kZXhJbkluc2VydGlv
bnMtLTspIHsKLSAgICAgICAgICAgIEluc2VydGlvbjxFbGVtZW50VHlwZT4mIGluc2VydGlvbiA9
IG1faW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc107CisgICAgICAgICAgICBJbnNlcnRpb24m
IGluc2VydGlvbiA9IG1faW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc107CiAgICAgICAgICAg
ICBzaXplX3QgZmlyc3RJbmRleCA9IGluc2VydGlvbi5pbmRleCgpICsgaW5kZXhJbkluc2VydGlv
bnM7CiAgICAgICAgICAgICBzaXplX3QgaW5kZXhPZmZzZXQgPSBpbmRleEluSW5zZXJ0aW9ucyAr
IDE7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gbGFzdEluZGV4OyAtLWkgPiBmaXJzdElu
ZGV4OykKLSAgICAgICAgICAgICAgICBjb2xsZWN0aW9uW2ldID0gY29sbGVjdGlvbltpIC0gaW5k
ZXhPZmZzZXRdOwotICAgICAgICAgICAgY29sbGVjdGlvbltmaXJzdEluZGV4XSA9IGluc2VydGlv
bi5lbGVtZW50KCk7CisgICAgICAgICAgICAgICAgYmxvY2stPmF0KGkpID0gYmxvY2stPmF0KGkg
LSBpbmRleE9mZnNldCk7CisgICAgICAgICAgICBibG9jay0+YXQoZmlyc3RJbmRleCkgPSBpbnNl
cnRpb24uZWxlbWVudCgpOwogICAgICAgICAgICAgbGFzdEluZGV4ID0gZmlyc3RJbmRleDsKICAg
ICAgICAgfQogICAgICAgICBtX2luc2VydGlvbnMucmVzaXplKDApOwogICAgIH0KIHByaXZhdGU6
Ci0gICAgVmVjdG9yPEluc2VydGlvbjxFbGVtZW50VHlwZT4sIDg+IG1faW5zZXJ0aW9uczsKKyAg
ICBHcmFwaCYgbV9ncmFwaDsKKyAgICBWZWN0b3I8SW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7
CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTQwMjE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDE3IEBAIHN0cnVjdCBO
b2RlIHsKICAgICAKICAgICBOb2RlKCkgeyB9CiAgICAgCisgICAgTm9kZShOb2RlVHlwZSBvcCwg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBjb25zdCBBZGphY2VuY3lMaXN0JiBjaGlsZHJlbikKKyAg
ICAgICAgOiBjb2RlT3JpZ2luKGNvZGVPcmlnaW4pCisgICAgICAgICwgY2hpbGRyZW4oY2hpbGRy
ZW4pCisgICAgICAgICwgbV92aXJ0dWFsUmVnaXN0ZXIoSW52YWxpZFZpcnR1YWxSZWdpc3RlcikK
KyAgICAgICAgLCBtX3JlZkNvdW50KDApCisgICAgICAgICwgbV9wcmVkaWN0aW9uKFNwZWNOb25l
KQorICAgIHsKKyAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3Mob3ApOworICAgICAgICBBU1NF
UlQoISEobV9mbGFncyAmIE5vZGVIYXNWYXJBcmdzKSA9PSAoY2hpbGRyZW4ua2luZCgpID09IEFk
amFjZW5jeUxpc3Q6OlZhcmlhYmxlKSk7CisgICAgfQorICAgIAogICAgIC8vIENvbnN0cnVjdCBh
IG5vZGUgd2l0aCB1cCB0byAzIGNoaWxkcmVuLCBubyBpbW1lZGlhdGUgdmFsdWUuCiAgICAgTm9k
ZShOb2RlVHlwZSBvcCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBOb2RlSW5kZXggY2hpbGQxID0g
Tm9Ob2RlLCBOb2RlSW5kZXggY2hpbGQyID0gTm9Ob2RlLCBOb2RlSW5kZXggY2hpbGQzID0gTm9O
b2RlKQogICAgICAgICA6IGNvZGVPcmlnaW4oY29kZU9yaWdpbikKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3Rp
bmdQaGFzZS5jcHAJKHJldmlzaW9uIDE0MDIxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjU5LDcgKzI1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIC8vIFBsYWNlIENoZWNr
U3RydWN0dXJlJ3MgYXQgU2V0TG9jYWwgc2l0ZXMuCiAgICAgICAgIAotICAgICAgICBJbnNlcnRp
b25TZXQ8Tm9kZUluZGV4PiBpbnNlcnRpb25TZXQ7CisgICAgICAgIEluc2VydGlvblNldCBpbnNl
cnRpb25TZXQobV9ncmFwaCk7CiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0g
MDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrSW5kZXgpIHsK
ICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nrc1tibG9ja0lu
ZGV4XS5nZXQoKTsKICAgICAgICAgICAgIGlmICghYmxvY2spCkBAIC0yODYsMjMgKzI4NiwxNiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGlmICghaXRlci0+dmFsdWUubV9zdHJ1Y3R1
cmUpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUucmVmKCk7Ci0KICAgICAgICAgICAgICAgICAgICAg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS5jb2RlT3JpZ2luOwogICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgTm9kZSBnZXRMb2NhbChHZXRMb2NhbCwgY29kZU9y
aWdpbiwgT3BJbmZvKHZhcmlhYmxlKSwgbm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAg
Z2V0TG9jYWwucHJlZGljdCh2YXJpYWJsZS0+cHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgICAg
ICAgICAgZ2V0TG9jYWwucmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGVJbmRleCBnZXRM
b2NhbEluZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
YXBwZW5kKGdldExvY2FsKTsKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmFwcGVu
ZChpbmRleEluQmxvY2sgKyAxLCBnZXRMb2NhbEluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUgY2hlY2tTdHJ1Y3R1cmUoQ2hlY2tTdHJ1Y3R1cmUs
IGNvZGVPcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChpdGVyLT52YWx1ZS5t
X3N0cnVjdHVyZSkpLCBnZXRMb2NhbEluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgY2hlY2tT
dHJ1Y3R1cmUucmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGVJbmRleCBjaGVja1N0cnVj
dHVyZUluZGV4ID0gbV9ncmFwaC5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
YXBwZW5kKGNoZWNrU3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0
LmFwcGVuZChpbmRleEluQmxvY2sgKyAxLCBjaGVja1N0cnVjdHVyZUluZGV4KTsKLSAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIE5vZGVJbmRleCBnZXRMb2NhbEluZGV4
ID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRl
eEluQmxvY2sgKyAxLCBEb250UmVmQ2hpbGRyZW4sIERvbnRSZWZOb2RlLCB2YXJpYWJsZS0+cHJl
ZGljdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgR2V0TG9jYWwsIGNvZGVPcmlnaW4s
IE9wSW5mbyh2YXJpYWJsZSksIG5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGluc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2Nr
ICsgMSwgUmVmQ2hpbGRyZW4sIERvbnRSZWZOb2RlLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUs
CisgICAgICAgICAgICAgICAgICAgICAgICBjb2RlT3JpZ2luLCBPcEluZm8obV9ncmFwaC5hZGRT
dHJ1Y3R1cmVTZXQoaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdldExvY2FsSW5kZXgpOworCiAgICAgICAgICAgICAgICAgICAgIGlmIChibG9jay0+
dmFyaWFibGVzQXRUYWlsLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpID09IG5vZGVJbmRleCkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT52YXJpYWJsZXNBdFRhaWwub3BlcmFuZCh2
YXJpYWJsZS0+bG9jYWwoKSkgPSBnZXRMb2NhbEluZGV4OwogICAgICAgICAgICAgICAgICAgICAK
QEAgLTMyNywxOCArMzIwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luID0gbm9kZS5jb2RlT3JpZ2luOwogICAgICAgICAgICAgICAgICAgICBO
b2RlSW5kZXggY2hpbGQxID0gbm9kZS5jaGlsZDEoKS5pbmRleCgpOwogICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgTm9kZSBzZXRMb2NhbChTZXRMb2NhbCwgY29kZU9y
aWdpbiwgT3BJbmZvKHZhcmlhYmxlKSwgY2hpbGQxKTsKLSAgICAgICAgICAgICAgICAgICAgTm9k
ZUluZGV4IHNldExvY2FsSW5kZXggPSBtX2dyYXBoLnNpemUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5hcHBlbmQoc2V0TG9jYWwpOwotICAgICAgICAgICAgICAgICAgICBpbnNlcnRp
b25TZXQuYXBwZW5kKGluZGV4SW5CbG9jaywgc2V0TG9jYWxJbmRleCk7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGhbY2hpbGQxXS5yZWYoKTsKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ss
IERvbnRSZWZDaGlsZHJlbiwgRG9udFJlZk5vZGUsIFNwZWNOb25lLCBTZXRMb2NhbCwgY29kZU9y
aWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyh2YXJpYWJsZSksIGNoaWxkMSk7
CisKICAgICAgICAgICAgICAgICAgICAgLy8gVXNlIGEgRm9yd2FyZENoZWNrU3RydWN0dXJlIHRv
IGluZGljYXRlIHRoYXQgd2Ugc2hvdWxkIGV4aXQgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAg
IC8vIG5leHQgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb24gcmF0aGVyIHRoYW4gcmVleGVjdXRpbmcgdGhl
IGN1cnJlbnQgb25lLgotICAgICAgICAgICAgICAgICAgICBOb2RlIGNoZWNrU3RydWN0dXJlKEZv
cndhcmRDaGVja1N0cnVjdHVyZSwgY29kZU9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0
dXJlU2V0KGl0ZXItPnZhbHVlLm1fc3RydWN0dXJlKSksIGNoaWxkMSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGNoZWNrU3RydWN0dXJlLnJlZigpOwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5k
ZXggY2hlY2tTdHJ1Y3R1cmVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwotICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLmFwcGVuZChjaGVja1N0cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAgICAg
IGluc2VydGlvblNldC5hcHBlbmQoaW5kZXhJbkJsb2NrLCBjaGVja1N0cnVjdHVyZUluZGV4KTsK
KyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAg
ICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFJlZkNoaWxkcmVuLCBEb250UmVmTm9kZSwgU3Bl
Y05vbmUsIEZvcndhcmRDaGVja1N0cnVjdHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
ZGVPcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChpdGVyLT52YWx1ZS5tX3N0
cnVjdHVyZSkpLCBjaGlsZDEpOwogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzQ3LDcg
KzMzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUo
KmJsb2NrKTsKKyAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhZGljRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhZGljRnVuY3Rpb24uaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFkaWNGdW5jdGlvbi5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHVmFyaWFkaWNGdW5jdGlvbl9oCisjZGVmaW5lIERG
R1ZhcmlhZGljRnVuY3Rpb25faAorCisjZGVmaW5lIERGR19DT01NQSAsCisKKy8vIFRoZSBzaWdu
YXR1cmUgb2YgdiBpcyAodGVtcGxhdGVQcmUsIHRlbXBsYXRlUG9zdCwgdHlwZVBhcmFtcywgdmFs
dWVQYXJhbXMsIHZhbHVlQXJncykKKy8vCisvLyBZb3Ugd291bGQgdXNlIGl0IGxpa2U6CisvLyAj
ZGVmaW5lIERFRklORV9GVU5DVElPTih0ZW1wbGF0ZVByZSwgdGVtcGxhdGVQb3N0LCB0eXBlUGFy
YW1zLCB2YWx1ZVBhcmFtc0NvbW1hLCB2YWx1ZVBhcmFtcywgdmFsdWVBcmdzKQorLy8gICAgIHRl
bXBsYXRlUHJlIHR5cGVQYXJhbXMgdGVtcGxhdGVQb3N0IHZvaWQgZih2YWx1ZVBhcmFtcykgeyBn
KHZhbHVlQXJncyk7IH0KKy8vIERGR19WQVJJQURJQ19URU1QTEFURV9GVU5DVElPTihERUZJTkVf
RlVOQ1RJT04pCisvLyAjdW5kZWYgREVGSU5FX0ZVTkNUSU9OCisvLworLy8gT3IgaWYgeW91IHdh
bnRlZCB0aGUgZGVmaW5lZCBmdW5jdGlvbiB0byB0YWtlIGFuIGFkZGl0aW9uYWwgdGVtcGxhdGUg
YXJnLCB5b3Ugd291bGQgZG86CisvLyAjZGVmaW5lIERFRklORV9GVU5DVElPTih0ZW1wbGF0ZVBy
ZSwgdGVtcGxhdGVQb3N0LCB0eXBlUGFyYW1zLCB2YWx1ZVBhcmFtc0NvbW1hLCB2YWx1ZVBhcmFt
cywgdmFsdWVBcmdzKQorLy8gICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgdmFsdWVQYXJhbXNDb21t
YSB0eXBlUGFyYW1zPiB2b2lkIGYoVCB2YWx1ZSB2YWx1ZVBhcmFtc0NvbW1hIHZhbHVlUGFyYW1z
KSB7IGcodmFsdWUsIHZhbHVlQXJncyk7IH0KKy8vIERGR19WQVJJQURJQ19URU1QTEFURV9GVU5D
VElPTihERUZJTkVfRlVOQ1RJT04pCisvLyAjdW5kZWYgREVGSU5FX0ZVTkNUSU9OCisKKyNkZWZp
bmUgREZHX1ZBUklBRElDX1RFTVBMQVRFX0ZVTkNUSU9OKHYpIFwKKyAgICB2KCwgLCAsICwgLCAp
IFwKKyAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RGR19UMSwgREZHX0NPTU1BLCBjb25z
dCBfREZHX1QxJiBfREZHX3ZhbHVlMSwgX0RGR192YWx1ZTEpIFwKKyAgICB2KHRlbXBsYXRlPCwg
PiwgdHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMiwgREZHX0NPTU1B
LCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RG
R192YWx1ZTIsIF9ERkdfdmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVlMikgXAorICAgIHYodGVt
cGxhdGU8LCA+LCB0eXBlbmFtZSBfREZHX1QxIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1QyIERG
R19DT01NQSB0eXBlbmFtZSBfREZHX1QzLCBERkdfQ09NTUEsIGNvbnN0IF9ERkdfVDEmIF9ERkdf
dmFsdWUxIERGR19DT01NQSBjb25zdCBfREZHX1QyJiBfREZHX3ZhbHVlMiBERkdfQ09NTUEgY29u
c3QgX0RGR19UMyYgX0RGR192YWx1ZTMsIF9ERkdfdmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVl
MiBERkdfQ09NTUEgX0RGR192YWx1ZTMpIFwKKyAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUg
X0RGR19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMiBERkdfQ09NTUEgdHlwZW5hbWUgX0RG
R19UMyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNCwgREZHX0NPTU1BLCBjb25zdCBfREZHX1Qx
JiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RGR19UMiYgX0RGR192YWx1ZTIgREZHX0NP
TU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzIERGR19DT01NQSBjb25zdCBfREZHX1Q0JiBf
REZHX3ZhbHVlNCwgX0RGR192YWx1ZTEgREZHX0NPTU1BIF9ERkdfdmFsdWUyIERGR19DT01NQSBf
REZHX3ZhbHVlMyBERkdfQ09NTUEgX0RGR192YWx1ZTQpIFwKKyAgICB2KHRlbXBsYXRlPCwgPiwg
dHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMiBERkdfQ09NTUEgdHlw
ZW5hbWUgX0RGR19UMyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNCBERkdfQ09NTUEgdHlwZW5h
bWUgX0RGR19UNSwgREZHX0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09N
TUEgY29uc3QgX0RGR19UMiYgX0RGR192YWx1ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9E
RkdfdmFsdWUzIERGR19DT01NQSBjb25zdCBfREZHX1Q0JiBfREZHX3ZhbHVlNCBERkdfQ09NTUEg
Y29uc3QgX0RGR19UNSYgX0RGR192YWx1ZTUsIF9ERkdfdmFsdWUxIERGR19DT01NQSBfREZHX3Zh
bHVlMiBERkdfQ09NTUEgX0RGR192YWx1ZTMgREZHX0NPTU1BIF9ERkdfdmFsdWU0IERGR19DT01N
QSBfREZHX3ZhbHVlNSkgXAorICAgIHYodGVtcGxhdGU8LCA+LCB0eXBlbmFtZSBfREZHX1QxIERG
R19DT01NQSB0eXBlbmFtZSBfREZHX1QyIERGR19DT01NQSB0eXBlbmFtZSBfREZHX1QzIERGR19D
T01NQSB0eXBlbmFtZSBfREZHX1Q0IERGR19DT01NQSB0eXBlbmFtZSBfREZHX1Q1IERGR19DT01N
QSB0eXBlbmFtZSBfREZHX1Q2LCBERkdfQ09NTUEsIGNvbnN0IF9ERkdfVDEmIF9ERkdfdmFsdWUx
IERGR19DT01NQSBjb25zdCBfREZHX1QyJiBfREZHX3ZhbHVlMiBERkdfQ09NTUEgY29uc3QgX0RG
R19UMyYgX0RGR192YWx1ZTMgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDQmIF9ERkdfdmFsdWU0IERG
R19DT01NQSBjb25zdCBfREZHX1Q1JiBfREZHX3ZhbHVlNSBERkdfQ09NTUEgY29uc3QgX0RGR19U
NiYgX0RGR192YWx1ZTYsIF9ERkdfdmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVlMiBERkdfQ09N
TUEgX0RGR192YWx1ZTMgREZHX0NPTU1BIF9ERkdfdmFsdWU0IERGR19DT01NQSBfREZHX3ZhbHVl
NSBERkdfQ09NTUEgX0RGR192YWx1ZTYpIFwKKyAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUg
X0RGR19UMSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMiBERkdfQ09NTUEgdHlwZW5hbWUgX0RG
R19UMyBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNCBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19U
NSBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNywg
REZHX0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEgY29uc3QgX0RG
R19UMiYgX0RGR192YWx1ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdfdmFsdWUzIERG
R19DT01NQSBjb25zdCBfREZHX1Q0JiBfREZHX3ZhbHVlNCBERkdfQ09NTUEgY29uc3QgX0RGR19U
NSYgX0RGR192YWx1ZTUgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDYmIF9ERkdfdmFsdWU2IERGR19D
T01NQSBjb25zdCBfREZHX1Q3JiBfREZHX3ZhbHVlNywgX0RGR192YWx1ZTEgREZHX0NPTU1BIF9E
RkdfdmFsdWUyIERGR19DT01NQSBfREZHX3ZhbHVlMyBERkdfQ09NTUEgX0RGR192YWx1ZTQgREZH
X0NPTU1BIF9ERkdfdmFsdWU1IERGR19DT01NQSBfREZHX3ZhbHVlNiBERkdfQ09NTUEgX0RGR192
YWx1ZTcpIFwKKyAgICB2KHRlbXBsYXRlPCwgPiwgdHlwZW5hbWUgX0RGR19UMSBERkdfQ09NTUEg
dHlwZW5hbWUgX0RGR19UMiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UMyBERkdfQ09NTUEgdHlw
ZW5hbWUgX0RGR19UNCBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNSBERkdfQ09NTUEgdHlwZW5h
bWUgX0RGR19UNiBERkdfQ09NTUEgdHlwZW5hbWUgX0RGR19UNyBERkdfQ09NTUEgdHlwZW5hbWUg
X0RGR19UOCwgREZHX0NPTU1BLCBjb25zdCBfREZHX1QxJiBfREZHX3ZhbHVlMSBERkdfQ09NTUEg
Y29uc3QgX0RGR19UMiYgX0RGR192YWx1ZTIgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDMmIF9ERkdf
dmFsdWUzIERGR19DT01NQSBjb25zdCBfREZHX1Q0JiBfREZHX3ZhbHVlNCBERkdfQ09NTUEgY29u
c3QgX0RGR19UNSYgX0RGR192YWx1ZTUgREZHX0NPTU1BIGNvbnN0IF9ERkdfVDYmIF9ERkdfdmFs
dWU2IERGR19DT01NQSBjb25zdCBfREZHX1Q3JiBfREZHX3ZhbHVlNyBERkdfQ09NTUEgX0RGR19U
OCYgX0RGR192YWx1ZTgsIF9ERkdfdmFsdWUxIERGR19DT01NQSBfREZHX3ZhbHVlMiBERkdfQ09N
TUEgX0RGR192YWx1ZTMgREZHX0NPTU1BIF9ERkdfdmFsdWU0IERGR19DT01NQSBfREZHX3ZhbHVl
NSBERkdfQ09NTUEgX0RGR192YWx1ZTYgREZHX0NPTU1BIF9ERkdfdmFsdWU3IERGR19DT01NQSBf
REZHX3ZhbHVlOCkKKworI2VuZGlmIC8vIERGR1ZhcmlhZGljRnVuY3Rpb25faAorCg==
</data>
<flag name="review"
          id="202094"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>