<?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>128635</bug_id>
          
          <creation_ts>2014-02-11 16:42:26 -0800</creation_ts>
          <short_desc>Inserting a node with a codeOrigin &quot;like&quot; another node should copy both the codeOrigin and codeOriginForExitTarget</short_desc>
          <delta_ts>2014-02-11 21:49:37 -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>125433</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>979660</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-11 16:42:26 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979661</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-11 16:43:20 -0800</bug_when>
    <thetext>I suspect that the best way to do this is to have the Node constructor somehow take both codeOrigins, so if you really want to copy the codeOrigin from one node as both the codeOrigin and codeOriginForExitTarget, then you have to say that explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979688</commentid>
    <comment_count>2</comment_count>
      <attachid>223924</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-11 17:45:28 -0800</bug_when>
    <thetext>Created attachment 223924
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979704</commentid>
    <comment_count>3</comment_count>
      <attachid>223926</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-11 18:34:50 -0800</bug_when>
    <thetext>Created attachment 223926
more!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979705</commentid>
    <comment_count>4</comment_count>
      <attachid>223927</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-11 18:45:08 -0800</bug_when>
    <thetext>Created attachment 223927
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979707</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-11 18:47:14 -0800</bug_when>
    <thetext>Attachment 223927 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:349:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 41 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>979755</commentid>
    <comment_count>6</comment_count>
      <attachid>223927</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-02-11 20:53:16 -0800</bug_when>
    <thetext>Comment on attachment 223927
the patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979761</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-11 21:38:07 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/163946</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979764</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-11 21:48:11 -0800</bug_when>
    <thetext>I broke the debug build.  Fix on the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979765</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-11 21:49:37 -0800</bug_when>
    <thetext>Fixed debug build in http://trac.webkit.org/changeset/163948.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223924</attachid>
            <date>2014-02-11 17:45:28 -0800</date>
            <delta_ts>2014-02-11 18:34:50 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>72368</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjM5MTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCw3IEBACiAJCTBGMkZDQ0ZEMThBNjAw
NzAwMDFBMjdGOCAvKiBERkdTY2FubmFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkZDQ0Y2MThBNjAwNzAwMDFBMjdGOCAvKiBERkdTY2FubmFi
bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjJGQ0NGRTE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJGQ0NGNzE4QTYwMDcwMDAxQTI3
RjggLyogREZHVGhyZWFkRGF0YS5jcHAgKi87IH07CiAJCTBGMkZDQ0ZGMThBNjAwNzAwMDFBMjdG
OCAvKiBERkdUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjJGQ0NGODE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhyZWFkRGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMzAwQjc4
MThBQjA1MTEwMEE2RDcyRSAvKiBERkdOb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMwMEI3NzE4QUIwNTExMDBBNkQ3MkUgLyogREZH
Tm9kZU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMzRCMTQ5MTZENDIwMTAwMDFDREE1QSAvKiBERkdVc2VLaW5kLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzRCMTQ3MTZENDIwMEUw
MDFDREE1QSAvKiBERkdVc2VLaW5kLmNwcCAqLzsgfTsKIAkJMEYzNEIxNEExNkQ0MjAxMzAwMUNE
QTVBIC8qIERGR1VzZUtpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMzRCMTQ4MTZENDIwMEUwMDFDREE1QSAvKiBERkdVc2VLaW5kLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYzNEIxNEMxNkQ0
M0UwRDAwMUNEQTVBIC8qIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNEIxNEIxNkQ0M0UwQzAw
MUNEQTVBIC8qIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjY0LDYgKzE2NjUsNyBAQAog
CQkwRjJGQ0NGNjE4QTYwMDcwMDAxQTI3RjggLyogREZHU2Nhbm5hYmxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1NjYW5uYWJsZS5oOyBwYXRoID0gZGZnL0RGR1NjYW5u
YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJGQ0NGNzE4QTYwMDcwMDAx
QTI3RjggLyogREZHVGhyZWFkRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdUaHJlYWREYXRhLmNwcDsgcGF0aCA9IGRmZy9ERkdUaHJlYWREYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRkNDRjgxOEE2MDA3MDAwMUEyN0Y4IC8q
IERGR1RocmVhZERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVGhy
ZWFkRGF0YS5oOyBwYXRoID0gZGZnL0RGR1RocmVhZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYzMDBCNzcxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZU9yaWdpbi5oOyBwYXRoID0g
ZGZnL0RGR05vZGVPcmlnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzNEIx
NDcxNkQ0MjAwRTAwMUNEQTVBIC8qIERGR1VzZUtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHVXNlS2luZC5jcHA7IHBhdGggPSBkZmcvREZHVXNlS2luZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMzRCMTQ4MTZENDIwMEUwMDFDREE1
QSAvKiBERkdVc2VLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1Vz
ZUtpbmQuaDsgcGF0aCA9IGRmZy9ERkdVc2VLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMzRCMTRCMTZENDNFMEMwMDFDREE1QSAvKiBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9seW1vcnBoaWNB
Y2Nlc3NTdHJ1Y3R1cmVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjYw
LDYgKzQyNjIsNyBAQAogCQkJCTBGQjRCNTFGMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdOb2RlQWxs
b2NhdG9yLmggKi8sCiAJCQkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFn
cy5jcHAgKi8sCiAJCQkJMEZBNTgxQjgxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5o
ICovLAorCQkJCTBGMzAwQjc3MThBQjA1MTEwMEE2RDcyRSAvKiBERkdOb2RlT3JpZ2luLmggKi8s
CiAJCQkJMEZBNTgxQjkxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmggKi8sCiAJCQkJ
ODZFQzlEQkYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuY3BwICovLAogCQkJCTg2
RUM5REMwMTMyOERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmggKi8sCkBAIC00ODAxLDYg
KzQ4MDQsNyBAQAogCQkJCTk1RTNCQzA1MEUxQUU2ODIwMEIyRDFDMSAvKiBDYWxsSWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1QjRGIC8qIENhbGxM
aW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyOUUxNENBN0RDNTAwODVGM0M2IC8q
IENhbGxMaW5rU3RhdHVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjMwMEI3ODE4QUIwNTExMDBB
NkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJD
Rjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjI0RTU0MjE3RUE5RjU5MDBBQkIyMTcgLyogQ0NhbGxIZWxwZXJzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzZBQUFFNTBFMUY0MjY1MDBBRDg3RDggLyogQ2xhc3NJbmZv
LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE2Mzkx
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6CiB7CiAgICAgSlNWYWx1ZSBjaGlsZENvbnN0ID0gdmFs
dWUudmFsdWUoKTsKICAgICBpZiAoY2hpbGRDb25zdCkgewotICAgICAgICBpZiAoY2hpbGRDb25z
dC50b0Jvb2xlYW4obV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2lu
KS0+Z2xvYmFsRXhlYygpKSkKKyAgICAgICAgaWYgKGNoaWxkQ29uc3QudG9Cb29sZWFuKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2xvYmFsRXhl
YygpKSkKICAgICAgICAgICAgIHJldHVybiBEZWZpbml0ZWx5VHJ1ZTsKICAgICAgICAgcmV0dXJu
IERlZmluaXRlbHlGYWxzZTsKICAgICB9CkBAIC02Nyw3ICs2Nyw3IEBAIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjoKICAgICBpZiAoaXNDZWxsU3BlY3VsYXRpb24odmFs
dWUubV90eXBlKQogICAgICAgICAmJiB2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5oYXNT
aW5nbGV0b24oKSkgewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLm1fY3Vy
cmVudEtub3duU3RydWN0dXJlLnNpbmdsZXRvbigpOwotICAgICAgICBpZiAoIXN0cnVjdHVyZS0+
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
PmNvZGVPcmlnaW4pKQorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+bWFzcXVlcmFkZXNBc1VuZGVm
aW5lZChtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
CiAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpICE9IFN0cmluZ1R5
cGUpCiAgICAgICAgICAgICByZXR1cm4gRGVmaW5pdGVseVRydWU7CiAgICAgfQpAQCAtMzQzLDcg
KzM0Myw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAg
ICAgCiAgICAgY2FzZSBWYWx1ZUFkZDogewogICAgICAgICBBU1NFUlQobm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IFVudHlwZWRVc2UpOwotICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9y
aWdpbiwgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNTdHJpbmcgfCBTcGVjQnl0ZWNvZGVOdW1iZXIpOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC03ODIsNyArNzgyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgIGNhc2UgSXNGdW5jdGlvbjogewogICAgICAgICBub2RlLT5zZXRDYW5FeGl0KAogICAg
ICAgICAgICAgbm9kZS0+b3AoKSA9PSBJc1VuZGVmaW5lZAotICAgICAgICAgICAgJiYgbV9ncmFw
aC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZChub2RlLT5jb2Rl
T3JpZ2luKSk7CisgICAgICAgICAgICAmJiBtX2dyYXBoLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRX
YXRjaHBvaW50SXNTdGlsbFZhbGlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpOwogICAgICAgICBK
U1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAg
aWYgKGNoaWxkKSB7CiAgICAgICAgICAgICBib29sIGNvbnN0YW50V2FzU2V0ID0gdHJ1ZTsKQEAg
LTc5MCw3ICs3OTAsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgICAgICBjYXNlIElzVW5kZWZpbmVkOgogICAgICAgICAgICAgICAgIHNldENvbnN0
YW50KG5vZGUsIGpzQm9vbGVhbigKICAgICAgICAgICAgICAgICAgICAgY2hpbGQuaXNDZWxsKCkK
LSAgICAgICAgICAgICAgICAgICAgPyBjaGlsZC5hc0NlbGwoKS0+c3RydWN0dXJlKCktPm1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2Rl
T3JpZ2luKSkKKyAgICAgICAgICAgICAgICAgICAgPyBjaGlsZC5hc0NlbGwoKS0+c3RydWN0dXJl
KCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKQogICAgICAgICAgICAgICAgICAgICA6IGNoaWxkLmlzVW5k
ZWZpbmVkKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgSXNC
b29sZWFuOgpAQCAtODI2LDcgKzgyNiw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLnZhbHVlKCk7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIGFic3RyYWN0Q2hpbGQgPSBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKGNoaWxkKSB7Ci0gICAgICAgICAgICBK
U1ZhbHVlIHR5cGVTdHJpbmcgPSBqc1R5cGVTdHJpbmdGb3JWYWx1ZSgqdm0sIG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiksIGNoaWxkKTsKKyAgICAgICAgICAg
IEpTVmFsdWUgdHlwZVN0cmluZyA9IGpzVHlwZVN0cmluZ0ZvclZhbHVlKCp2bSwgbV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBjaGlsZCk7CiAgICAg
ICAgICAgICBzZXRDb25zdGFudChub2RlLCB0eXBlU3RyaW5nKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC05ODksNyArOTg5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpHZW5lcmljOgotICAgICAg
ICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7CisgICAg
ICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQp
OwogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OlN0cmluZzoKQEAgLTEwMDQsNyArMTAwNCw3IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAg
ICAvLyBpbXBsaWVzIGFuIGluLWJvdW5kcyBhY2Nlc3MpLiBOb25lIG9mIHRoaXMgZmVlbHMgbGlr
ZSBpdCdzIHdvcnRoIGl0LAogICAgICAgICAgICAgICAgIC8vIHNvIHdlJ3JlIGdvaW5nIHdpdGgg
VE9QIGZvciBub3cuIFRoZSBzYW1lIHRoaW5nIGFwcGxpZXMgdG8KICAgICAgICAgICAgICAgICAv
LyBjbG9iYmVyaW5nIHRoZSB3b3JsZC4KLSAgICAgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9k
ZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgICAgICAgICBjbG9iYmVyV29y
bGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwogICAgICAgICAgICAgICAg
IGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGgubV92bS5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpOwpAQCAtMTAxNCwxNCArMTAxNCwxNCBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBcnJheTo6SW50MzI6CiAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRP
ZkJvdW5kcygpKSB7Ci0gICAgICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmln
aW4sIGNsb2JiZXJMaW1pdCk7CisgICAgICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2Rl
KCkuaXNPdXRPZkJvdW5kcygpKSB7Ci0gICAgICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUt
PmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7CisgICAgICAgICAgICAgICAgY2xvYmJlcldvcmxk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUt
PmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKFNwZWNEb3VibGUpOwpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0
b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2U6CiAgICAgICAg
ICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kcygpKQotICAgICAgICAgICAg
ICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOworICAgICAg
ICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1p
dCk7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6SW50OEFycmF5OgpAQCAtMTA4MywyNCArMTA4
MywyNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAg
ICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQXJyYXk6OkdlbmVyaWM6Ci0gICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+
Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBBcnJheTo6SW50MzI6CiAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2Rl
KCkuaXNPdXRPZkJvdW5kcygpKQotICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5j
b2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOworICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5
TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkKLSAgICAgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9k
ZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgICAgICAgICBjbG9iYmVyV29y
bGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAgICAgICAgIGNhc2UgQXJyYXk6
OkFycmF5U3RvcmFnZToKICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9m
Qm91bmRzKCkpCi0gICAgICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4s
IGNsb2JiZXJMaW1pdCk7CisgICAgICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOgogICAgICAgICAgICAgaWYgKG5vZGUtPmFy
cmF5TW9kZSgpLm1heVN0b3JlVG9Ib2xlKCkpCi0gICAgICAgICAgICAgICAgY2xvYmJlcldvcmxk
KG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7CisgICAgICAgICAgICAgICAgY2xvYmJl
cldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTEwLDEz
ICsxMTEwLDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAg
ICAgICAgICAgIAogICAgIGNhc2UgQXJyYXlQdXNoOgogICAgICAgICBub2RlLT5zZXRDYW5FeGl0
KHRydWUpOwotICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxp
bWl0KTsKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJl
ckxpbWl0KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNCeXRlY29kZU51bWJl
cik7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBBcnJheVBvcDoKICAg
ICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKLSAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUt
PmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFr
ZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTEyMDAsNyArMTIw
MCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAg
Ly8gVG9QcmltaXRpdmUgd2lsbCBjdXJyZW50bHkgZm9yZ2V0IHN0cmluZyBjb25zdGFudHMuIEJ1
dCB0aGF0J3Mgbm90IGEgYmlnCiAgICAgICAgIC8vIGRlYWwgc2luY2Ugd2UgZG9uJ3QgZG8gYW55
IG9wdGltaXphdGlvbiBvbiB0aG9zZSBjdXJyZW50bHkuCiAgICAgICAgIAotICAgICAgICBjbG9i
YmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgY2xvYmJl
cldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgCiAg
ICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBzb3VyY2UubV90eXBlOwogICAgICAgICBpZiAo
dHlwZSAmIH4oU3BlY0Z1bGxOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xlYW4pKQpAQCAt
MTIxOSw3ICsxMjE5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAgICAgLy8gc3RydWN0dXJlLgogICAgICAgICAgICAgZmlsdGVyKAogICAgICAg
ICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLAotICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSk7Cisg
ICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgbm9kZS0+c2V0Q2Fu
RXhpdCh0cnVlKTsgLy8gV2UgY291bGQgYmUgbW9yZSBwcmVjaXNlIGJ1dCBpdCdzIGxpa2VseSBu
b3Qgd29ydGggaXQuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdHJpbmdPclN0
cmluZ09iamVjdFVzZToKQEAgLTEyMjcsNyArMTIyNyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENl
bGxVc2U6CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKLSAgICAgICAgICAgIGNsb2JiZXJXb3Js
ZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOworICAgICAgICAgICAgY2xvYmJlcldv
cmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTEyNDcsNyArMTI0Nyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHkKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXQoCiAgICAgICAgICAgICBtX2dyYXBoLAotICAgICAgICAgICAgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPmFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpOworICAg
ICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4
aW5nVHlwZSgpKSk7CiAgICAgICAgIG1fc3RhdGUuc2V0SGF2ZVN0cnVjdHVyZXModHJ1ZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgICAgICAKQEAgLTEyNTUsNyArMTI1NSw3IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0
cnVlKTsKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoCiAgICAgICAgICAgICBtX2dyYXBoLAot
ICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGlu
Z1R5cGUoKSkpOworICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgIG1fc3RhdGUuc2V0SGF2ZVN0cnVj
dHVyZXModHJ1ZSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC0xMjcwLDcgKzEyNzAsNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGNhc2UgSW50MzJV
c2U6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgotICAgICAg
ICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7CisgICAg
ICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTI3OCwxMyArMTI3OCwxMyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIH0KICAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXQoCiAgICAgICAgICAgICBtX2dyYXBoLAotICAgICAgICAgICAgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPnR5cGVkQXJyYXlTdHJ1Y3R1cmUo
CisgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLT50eXBlZEFycmF5U3RydWN0dXJlKAogICAgICAgICAgICAgICAgIG5vZGUtPnR5cGVkQXJy
YXlUeXBlKCkpKTsKICAgICAgICAgbV9zdGF0ZS5zZXRIYXZlU3RydWN0dXJlcyh0cnVlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIE5ld1JlZ2V4cDoKLSAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
Y29kZU9yaWdpbiktPnJlZ0V4cFN0cnVjdHVyZSgpKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICBtX3N0YXRlLnNldEhhdmVTdHJ1Y3R1cmVz
KHRydWUpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtMTI5Miw3ICsxMjkyLDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBBYnN0
cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgQWJz
dHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSBmb3JOb2RlKG5vZGUpOwogICAgICAgICAgICAgCi0g
ICAgICAgIGlmIChtX2dyYXBoLmV4ZWN1dGFibGVGb3Iobm9kZS0+Y29kZU9yaWdpbiktPmlzU3Ry
aWN0TW9kZSgpKQorICAgICAgICBpZiAobV9ncmFwaC5leGVjdXRhYmxlRm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgZGVzdGluYXRpb24ubWFr
ZUhlYXBUb3AoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IHNv
dXJjZTsKQEAgLTEzMTgsNyArMTMxOCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgogICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldCgKLSAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPmFjdGl2YXRpb25TdHJ1Y3R1cmUoKSk7
CisgICAgICAgICAgICBtX2dyYXBoLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmFjdGl2YXRpb25TdHJ1Y3R1cmUoKSk7CiAgICAgICAgIG1fc3Rh
dGUuc2V0SGF2ZVN0cnVjdHVyZXModHJ1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKQEAg
LTEzNDAsNyArMTM0MCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKICAgICAgICAgaWYgKGlzRW1w
dHlTcGVjdWxhdGlvbigKICAgICAgICAgICAgICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJh
bmQoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9k
ZS0+Y29kZU9yaWdpbikub2Zmc2V0KCkpLm1fdHlwZSkpCisgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS5vZmZzZXQo
KSkubV90eXBlKSkKICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CkBAIC0x
MzUxLDIxICsxMzUxLDIxIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgLy8gdGhlIGFyZ3VtZW50cyBhIGJpdC4gTm90ZSB0aGF0IHRoaXMgaXMgbm90
IHN1ZmZpY2llbnQgdG8gZm9yY2UgY29uc3RhbnQgZm9sZGluZwogICAgICAgICAvLyBvZiBHZXRN
eUFyZ3VtZW50c0xlbmd0aCwgYmVjYXVzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aCBpcyBhIGNsb2Ji
ZXJpbmcgb3BlcmF0aW9uLgogICAgICAgICAvLyBXZSBwZXJmb3JtIGZ1cnRoZXIgb3B0aW1pemF0
aW9ucyBvbiB0aGlzIGxhdGVyIG9uLgotICAgICAgICBpZiAobm9kZS0+Y29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUpIHsKKyAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWUpIHsKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KAotICAgICAgICAgICAg
ICAgIG1fZ3JhcGgsIGpzTnVtYmVyKG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHMuc2l6ZSgpIC0gMSkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgsIGpzTnVtYmVy
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkg
LSAxKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNJbnQzMik7CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQoCiAgICAgICAgICAgICAhaXNF
bXB0eVNwZWN1bGF0aW9uKAogICAgICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3Bl
cmFuZCgKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihu
b2RlLT5jb2RlT3JpZ2luKSkubV90eXBlKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
YXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkubV90eXBlKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoU2Fm
ZToKICAgICAgICAgLy8gVGhpcyBwb3RlbnRpYWxseSBjbG9iYmVycyBhbGwgc3RydWN0dXJlcyBp
ZiB0aGUgYXJndW1lbnRzIG9iamVjdCBoYWQgYSBnZXR0ZXIKICAgICAgICAgLy8gaW5zdGFsbGVk
IG9uIHRoZSBsZW5ndGggcHJvcGVydHkuCi0gICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2Rl
T3JpZ2luLCBjbG9iYmVyTGltaXQpOworICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwogICAgICAgICAvLyBXZSBjdXJyZW50bHkgbWFrZSBu
byBndWFyYW50ZWUgYWJvdXQgd2hhdCB0aGlzIHJldHVybnMgYmVjYXVzZSBpdCBkb2VzIG5vdAog
ICAgICAgICAvLyBzcGVjdWxhdGUgdGhhdCB0aGUgbGVuZ3RoIHByb3BlcnR5IGlzIGFjdHVhbGx5
IGEgbGVuZ3RoLgogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CkBAIC0xMzgz
LDcgKzEzODMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAg
ICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIC8vIFRoaXMgcG90ZW50aWFs
bHkgY2xvYmJlcnMgYWxsIHN0cnVjdHVyZXMgaWYgdGhlIHByb3BlcnR5IHdlJ3JlIGFjY2Vzc2lu
ZyBoYXMKICAgICAgICAgLy8gYSBnZXR0ZXIuIFdlIGRvbid0IHNwZWN1bGF0ZSBhZ2FpbnN0IHRo
aXMuCi0gICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQp
OworICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGlt
aXQpOwogICAgICAgICAvLyBBbmQgdGhlIHJlc3VsdCBpcyB1bmtub3duLgogICAgICAgICBmb3JO
b2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTQwNCw3ICsxNDA0
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2Ug
TmV3RnVuY3Rpb25FeHByZXNzaW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb25Ob0NoZWNrOgogICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldCgKLSAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPmZ1bmN0aW9uU3RydWN0dXJlKCkp
OworICAgICAgICAgICAgbV9ncmFwaCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgICAgIAogICAgIGNhc2UgR2V0Q2FsbGVlOgpAQCAtMTQzNiw3ICsxNDM2LDcgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIAogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKLSAgICAgICAgY2xvYmJlckNhcHR1
cmVkVmFycyhub2RlLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgY2xvYmJlckNhcHR1cmVkVmFycyhu
b2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAg
IGNhc2UgR2V0QnlJZDoKQEAgLTE0NjksNyArMTQ2OSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJM
aW1pdCk7CisgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2Ji
ZXJMaW1pdCk7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKQEAgLTE2NjksNyArMTY2OSw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0
dXJlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuYmVzdFByb3ZlblN0cnVjdHVyZSgpKSB7CiAg
ICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3IoCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZtLAotICAgICAgICAgICAgICAgIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLAorICAgICAgICAgICAgICAgIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCiAgICAgICAgICAg
ICAgICAgc3RydWN0dXJlLAogICAgICAgICAgICAgICAgIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtu
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCldLAogICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0g
UHV0QnlJZERpcmVjdCk7CkBAIC0xNjg3LDEzICsxNjg3LDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwg
Y2xvYmJlckxpbWl0KTsKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgSW46
CiAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZGV0ZXJtaW5lIHdoZW4gdGhlIHByb3BlcnR5IGRl
ZmluaXRlbHkgZXhpc3RzIGJhc2VkIG9uIGFic3RyYWN0CiAgICAgICAgIC8vIHZhbHVlIGluZm9y
bWF0aW9uLgotICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxp
bWl0KTsKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJl
ckxpbWl0KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTE3NDEsNyArMTc0MSw3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIENhbGw6CiAgICAgY2Fz
ZSBDb25zdHJ1Y3Q6CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7Ci0gICAgICAgIGNs
b2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOworICAgICAgICBjbG9i
YmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwogICAgICAgICBm
b3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzU2lt
cGxpZmljYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIHNvdXJjZSA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAgICAgICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50
c1JlZ2lzdGVyID0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudW5jaGVja2VkQXJn
dW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9yaWdpbik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLnVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UtPm9wKCkgIT0gQ3JlYXRl
QXJndW1lbnRzICYmIHNvdXJjZS0+b3AoKSAhPSBQaGFudG9tQXJndW1lbnRzKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc291cmNlIG9mIHRoZSBTZXRM
b2NhbCBrbm93cyB0aGF0IGlmIGl0J3MKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgdmFy
aWFibGUgdGhhdCB3ZSB0aGluayBpcyBhbGlhc2VkIHRvIHRoZSBhcmd1bWVudHMsIHRoZW4gaXQK
QEAgLTIyMCw3ICsyMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
YXJndW1lbnRzUmVnaXN0ZXIuaXNWYWxpZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JiYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKSA9PSBhcmd1bWVudHNSZWdpc3RlcgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCB2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2Fs
KCkgPT0gdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NyZWF0ZXNBcmd1bWVudHMuYWRkKG5vZGUt
PmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2NyZWF0ZXNBcmd1bWVudHMuYWRkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxs
RnJhbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogCkBAIC0yMzIsMTkgKzIzMiwxOSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBBcmd1bWVudHNBbGlhc2luZ0RhdGEmIGRhdGEgPQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzQWxpYXNpbmcuZmluZCh2YXJpYWJsZUFjY2Vzc0Rh
dGEpLT52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVyZ2VOb25Bcmd1bWVu
dHNBc3NpZ25tZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLm1lcmdlQ2FsbENv
bnRleHQobm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxp
bmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c1JlZ2lzdGVyLmlz
VmFsaWQoKQogICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+
bG9jYWwoKSA9PSBhcmd1bWVudHNSZWdpc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHx8IHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKSA9PSB1bm1vZGlmaWVkQXJndW1lbnRzUmVn
aXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lID09IHNvdXJjZS0+Y29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3JpZ2lu
LnNlbWFudGljLmlubGluZUNhbGxGcmFtZSA9PSBzb3VyY2UtPm9yaWdpbi5zZW1hbnRpYy5pbmxp
bmVDYWxsRnJhbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX2NyZWF0ZXNBcmd1bWVudHMuYWRkKHNvdXJjZS0+Y29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9jcmVhdGVzQXJn
dW1lbnRzLmFkZChzb3VyY2UtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtX2NyZWF0ZXNBcmd1bWVudHMuYWRkKHNvdXJjZS0+Y29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9jcmVh
dGVzQXJndW1lbnRzLmFkZChzb3VyY2UtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUp
OwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgQXJndW1lbnRzQWxpYXNpbmdEYXRhJiBkYXRhID0KQEAgLTI1
Miw4ICsyNTIsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVyZ2VBcmd1
bWVudHNBc3NpZ25tZW50KCk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZW5zdXJlcyB0
aGF0IHRoZSB2YXJpYWJsZSdzIHVzZXMgYXJlIGluIHRoZSBzYW1lIGNvbnRleHQgYXMKICAgICAg
ICAgICAgICAgICAgICAgLy8gdGhlIGFyZ3VtZW50cyBpdCBpcyBhbGlhc2luZy4KLSAgICAgICAg
ICAgICAgICAgICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0KG5vZGUtPmNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0KHNv
dXJjZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgICAgICAgICBk
YXRhLm1lcmdlQ2FsbENvbnRleHQobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFt
ZSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEubWVyZ2VDYWxsQ29udGV4dChzb3VyY2UtPm9y
aWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApAQCAtMjY0LDcgKzI2
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICBBcmd1bWVudHNBbGlhc2luZ0RhdGEmIGRhdGEgPQogICAgICAgICAgICAgICAg
ICAgICAgICAgbV9hcmd1bWVudHNBbGlhc2luZy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnZh
bHVlOwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1lcmdlQ2FsbENvbnRleHQobm9kZS0+Y29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgICAgICAgICBkYXRhLm1lcmdl
Q2FsbENvbnRleHQobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSk7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgCkBAIC0yNzQsNyArMjc0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIEFyZ3VtZW50c0FsaWFzaW5nRGF0YSYgZGF0
YSA9CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50c0FsaWFzaW5nLmZpbmQodmFy
aWFibGVBY2Nlc3NEYXRhKS0+dmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubWVyZ2VD
YWxsQ29udGV4dChub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CisgICAgICAgICAg
ICAgICAgICAgIGRhdGEubWVyZ2VDYWxsQ29udGV4dChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5s
aW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
IC8vIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhIGZsdXNoIHRoZW4gYnkgZGVmaW5pdGlvbiBp
dCBlc2NhcGVzLgogICAgICAgICAgICAgICAgICAgICBkYXRhLmVzY2FwZXMgPSB0cnVlOwpAQCAt
Mjg4LDcgKzI4OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgQXJndW1lbnRzQWxp
YXNpbmdEYXRhJiBkYXRhID0KICAgICAgICAgICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzQWxp
YXNpbmcuZmluZCh2YXJpYWJsZUFjY2Vzc0RhdGEpLT52YWx1ZTsKICAgICAgICAgICAgICAgICAg
ICAgZGF0YS5tZXJnZU5vbkFyZ3VtZW50c0Fzc2lnbm1lbnQoKTsKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0KG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0KG5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApAQCAtMzc0LDcgKzM3NCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc1ZhbGlkKCkpCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IG1fY3JlYXRlc0FyZ3VtZW50cy5hZGQoc291cmNlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZSk7CisgICAgICAgICAgICAgICAgbV9jcmVhdGVzQXJndW1lbnRzLmFkZChzb3VyY2UtPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIApAQCAtMzkyLDEzICszOTIsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBpZiAoc291cmNlLT5vcCgpICE9IENyZWF0ZUFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
aWYgKG1fY3JlYXRlc0FyZ3VtZW50cy5jb250YWlucyhzb3VyY2UtPmNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fY3JlYXRlc0FyZ3VtZW50cy5j
b250YWlucyhzb3VyY2UtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9yaWdp
bikgPT0gdmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpCi0gICAgICAgICAgICAgICAgICAgICAg
ICB8fCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIobV9ncmFwaC5hcmd1bWVudHNSZWdpc3Rl
ckZvcihub2RlLT5jb2RlT3JpZ2luKSkgPT0gdmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpKQor
ICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpID09IHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKQorICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKG1fZ3JhcGgu
YXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkgPT0gdmFyaWFibGVB
Y2Nlc3NEYXRhLT5sb2NhbCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VJc0FyZ3VtZW50
c0FsaWFzKHRydWUpKSB7CkBAIC00MjEsNyArNDIxLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+aXND
YXB0dXJlZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhbV9hcmd1bWVudHNBbGlhc2lu
Zy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnZhbHVlLmlzVmFsaWQoKQotICAgICAgICAgICAg
ICAgICAgICAgICAgfHwgbV9jcmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKG5vZGUtPmNvZGVPcmln
aW4uaW5saW5lQ2FsbEZyYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IG1fY3JlYXRl
c0FyZ3VtZW50cy5jb250YWlucyhub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1l
KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ2
OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNl
cnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwg
UGhhbnRvbSwgbm9kZS0+Y29kZU9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2lu
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICBub2RlLT5jaGlsZDEoKSA9IG5vZGUtPmNoaWxkMigpOwogICAgICAgICAgICAgICAgICAg
ICBub2RlLT5jaGlsZDIoKSA9IEVkZ2UoKTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+Y29kZU9yaWdp
biwgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2Nr
LCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IEVk
Z2UoKTsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoR2V0
TXlBcmd1bWVudHNMZW5ndGgpOwpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoK
ICAgICAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoU2FmZTogewotICAgICAg
ICAgICAgICAgICAgICBpZiAobV9jcmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKG5vZGUtPmNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobV9jcmVh
dGVzQXJndW1lbnRzLmNvbnRhaW5zKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJh
bWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBHZXRN
eUFyZ3VtZW50c0xlbmd0aFNhZmUpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgIH0KQEAgLTUwNiwyNCArNTA2LDI0IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4gPSBub2RlLT5jb2RlT3JpZ2luOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgICAgICAgICBOb2RlT3JpZ2lu
IG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFvcmlnaW4u
c2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAvLyBXZSBrbm93IGV4
YWN0bHkgd2hhdCB0aGlzIHdpbGwgcmV0dXJuLiBCdXQgb25seSBhZnRlciB3ZSBoYXZlIGNoZWNr
ZWQKICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBub2JvZHkgaGFzIGVzY2FwZWQgb3VyIGFy
Z3VtZW50cy4KICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVja0FyZ3Vt
ZW50c05vdENyZWF0ZWQsIGNvZGVPcmlnaW4pOworICAgICAgICAgICAgICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkLCBvcmlnaW4pOwog
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0
VG9Db25zdGFudCgKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUsIGpzTnVtYmVyKGNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZSwganNOdW1iZXIob3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpKTsKICAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50
QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxTYWZlOiB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMobm9kZS0+
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICht
X2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNh
bGxGcmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09
IEdldE15QXJndW1lbnRCeVZhbFNhZmUpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTUzMSw3ICs1MzEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChHZXRNeUFyZ3VtZW50QnlWYWwpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5s
aW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCktPmhhc0NvbnN0YW50KCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTU0MSw3ICs1NDEsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QgaW5kZXggPSB2YWx1ZS5hc0ludDMyKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChpbmRleCA8IDAKICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXRp
Y19jYXN0PHNpemVfdD4oaW5kZXggKyAxKSA+PQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgd2hp
Y2ggYXJndW1lbnQgdGhpcyBpcyBhY2Nlc3NpbmcuIEJ1dCBvbmx5IGFmdGVyIHdlIGhhdmUgY2hl
Y2tlZApAQCAtNTUzLDI2ICs1NTMsMjUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAv
LyBoYXMgcnVuIC0gdGhlcmVmb3JlIGl0IG1ha2VzIGxpdHRsZSBzZW5zZSB0byBsaW5rIHRoZSBH
ZXRMb2NhbCBvcGVyYXRpb24KICAgICAgICAgICAgICAgICAgICAgLy8gaW50byB0aGUgVmFyaWFi
bGVBY2Nlc3NEYXRhIGFuZCBQaGkgZ3JhcGhzLgogCi0gICAgICAgICAgICAgICAgICAgIENvZGVP
cmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPmNvZGVPcmlnaW47CisgICAgICAgICAgICAgICAgICAg
IE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOwogICAgICAgICAgICAgICAgICAgICBB
ZGphY2VuY3lMaXN0IGNoaWxkcmVuID0gbm9kZS0+Y2hpbGRyZW47CiAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9HZXRMb2NhbFVubGlua2Vk
KAogICAgICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5iYXNlbGluZUNvZGVC
bG9ja0Zvcihub2RlLT5jb2RlT3JpZ2luKS0+YXJndW1lbnRJbmRleEFmdGVyQ2FwdHVyZShpbmRl
eCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihvcmlnaW4uc2VtYW50aWMpLT5hcmd1bWVudEluZGV4
QWZ0ZXJDYXB0dXJlKGluZGV4KSkpOwogCiAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNl
dC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVj
Tm9uZSwgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y29kZU9yaWdpbik7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNO
b25lLCBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQsIG9yaWdpbik7CiAgICAgICAgICAgICAgICAg
ICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgY29kZU9yaWdpbiwgY2hpbGRyZW4pOworICAg
ICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgb3Jp
Z2luLCBjaGlsZHJlbik7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIFRlYXJP
ZmZBcmd1bWVudHM6IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fY3JlYXRlc0FyZ3VtZW50
cy5jb250YWlucyhub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkpCisgICAgICAgICAg
ICAgICAgICAgIGlmIChtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMobm9kZS0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb1BoYW50b20oKTsKQEAgLTU5OSwxMCArNTk4LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAvLyBQaGFudG9tQXJndW1lbnRzIGlzIGEgbm9uLWV4ZWN1dGluZyBub2RlIHRoYXQganVz
dCBpbmRpY2F0ZXMKICAgICAgICAgICAgICAgICAvLyB0aGF0IHRoZSBub2RlIHNob3VsZCBiZSBy
ZWlmaWVkIGFzIGFuIGFyZ3VtZW50cyBvYmplY3Qgb24gT1NSCiAgICAgICAgICAgICAgICAgLy8g
ZXhpdC4KLSAgICAgICAgICAgICAgICBpZiAobV9jcmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKG5v
ZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSkKKyAgICAgICAgICAgICAgICBpZiAobV9j
cmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxs
RnJhbWUpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBp
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2Nr
LCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+Y29kZU9yaWdpbiwgbm9kZS0+Y2hpbGRyZW4pOwor
ICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2Rl
LT5vcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFu
ZERlZmF1bHRGbGFncyhQaGFudG9tQXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICBub2RlLT5j
aGlsZHJlbi5yZXNldCgpOwogICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwpAQCAtNjU1
LDE2ICs2NTQsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAobm9kZS0+
b3AoKSkgewogICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50czogewotICAgICAgICAgICAgbV9j
cmVhdGVzQXJndW1lbnRzLmFkZChub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7Cisg
ICAgICAgICAgICBtX2NyZWF0ZXNBcmd1bWVudHMuYWRkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIEdldExvY2FsOiB7Ci0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYXJndW1lbnRzUmVnaXN0ZXIgPSBtX2dyYXBoLnVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVy
Rm9yKG5vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3Vt
ZW50c1JlZ2lzdGVyID0KKyAgICAgICAgICAgICAgICBtX2dyYXBoLnVuY2hlY2tlZEFyZ3VtZW50
c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAgICBpZiAoYXJn
dW1lbnRzUmVnaXN0ZXIuaXNWYWxpZCgpCiAgICAgICAgICAgICAgICAgJiYgKG5vZGUtPmxvY2Fs
KCkgPT0gYXJndW1lbnRzUmVnaXN0ZXIKICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZS0+bG9j
YWwoKSA9PSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIpKSkg
ewotICAgICAgICAgICAgICAgIG1fY3JlYXRlc0FyZ3VtZW50cy5hZGQobm9kZS0+Y29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgICAgIG1fY3JlYXRlc0FyZ3VtZW50cy5h
ZGQobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTcwMywxNyArNzAzLDE3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyAyKSBJZiB3ZSdyZSBhY2Nlc3NpbmcgYXJndW1l
bnRzIHdlIGdvdCBmcm9tIHRoZSBoZWFwIQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKGVkZ2UtPm9wKCkgPT0gQ3JlYXRlQXJndW1lbnRzCi0gICAgICAgICAg
ICAgICAgJiYgbm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUKLSAgICAgICAgICAgICAg
ICAgICAgIT0gZWRnZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICAg
ICAgbV9jcmVhdGVzQXJndW1lbnRzLmFkZChlZGdlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZSk7CisgICAgICAgICAgICAgICAgJiYgbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxG
cmFtZQorICAgICAgICAgICAgICAgICAgICAhPSBlZGdlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lKQorICAgICAgICAgICAgICAgIG1fY3JlYXRlc0FyZ3VtZW50cy5hZGQoZWRnZS0+
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
IFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gZWRnZS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCk7Ci0gICAgICAgIGlmIChlZGdlLT5sb2NhbCgpID09IG1fZ3JhcGgudW5jaGVj
a2VkQXJndW1lbnRzUmVnaXN0ZXJGb3IoZWRnZS0+Y29kZU9yaWdpbikKLSAgICAgICAgICAgICYm
IG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lICE9IGVkZ2UtPmNvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lKSB7Ci0gICAgICAgICAgICBtX2NyZWF0ZXNBcmd1bWVudHMuYWRkKGVkZ2Ut
PmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKKyAgICAgICAgaWYgKGVkZ2UtPmxvY2FsKCkg
PT0gbV9ncmFwaC51bmNoZWNrZWRBcmd1bWVudHNSZWdpc3RlckZvcihlZGdlLT5vcmlnaW4uc2Vt
YW50aWMpCisgICAgICAgICAgICAmJiBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZy
YW1lICE9IGVkZ2UtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICAgICAg
ICAgIG1fY3JlYXRlc0FyZ3VtZW50cy5hZGQoZWRnZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNh
bGxGcmFtZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNzIxLDE4ICs3
MjEsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAg
IEFyZ3VtZW50c0FsaWFzaW5nRGF0YSYgZGF0YSA9IG1fYXJndW1lbnRzQWxpYXNpbmcuZmluZCh2
YXJpYWJsZUFjY2Vzc0RhdGEpLT52YWx1ZTsKLSAgICAgICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0
KG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKKyAgICAgICAgZGF0YS5tZXJnZUNh
bGxDb250ZXh0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgIH0K
ICAgICAKICAgICBib29sIGlzT0tUb09wdGltaXplKE5vZGUqIHNvdXJjZSkKICAgICB7Ci0gICAg
ICAgIGlmIChtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMoc291cmNlLT5jb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZSkpCisgICAgICAgIGlmIChtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMo
c291cmNlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAoc291cmNlLT5vcCgpKSB7CiAg
ICAgICAgIGNhc2UgR2V0TG9jYWw6IHsKICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
dmFyaWFibGVBY2Nlc3NEYXRhID0gc291cmNlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNSZWdpc3RlciA9IG1fZ3JhcGgudW5jaGVj
a2VkQXJndW1lbnRzUmVnaXN0ZXJGb3Ioc291cmNlLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNSZWdpc3RlciA9CisgICAgICAgICAgICAgICAgbV9n
cmFwaC51bmNoZWNrZWRBcmd1bWVudHNSZWdpc3RlckZvcihzb3VyY2UtPm9yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50c1JlZ2lzdGVyLmlzVmFsaWQoKSkKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChhcmd1bWVudHNSZWdpc3RlciA9PSB2
YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Niw3ICsy
NzYsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5TW9kZTo6b3JpZ2luYWxBcnJheVN0cnVjCiAKIFN0cnVj
dHVyZSogQXJyYXlNb2RlOjpvcmlnaW5hbEFycmF5U3RydWN0dXJlKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4gb3JpZ2luYWxBcnJheVN0cnVjdHVyZShncmFw
aCwgbm9kZS0+Y29kZU9yaWdpbik7CisgICAgcmV0dXJuIG9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUo
Z3JhcGgsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiB9CiAKIGJvb2wgQXJyYXlNb2RlOjphbHJl
YWR5Q2hlY2tlZChHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIEFic3RyYWN0VmFsdWUmIHZhbHVl
LCBJbmRleGluZ1R5cGUgc2hhcGUpIGNvbnN0CkBAIC0yODYsNyArMjg2LDcgQEAgYm9vbCBBcnJh
eU1vZGU6OmFscmVhZHlDaGVja2VkKEdyYXBoJiBncgogICAgICAgICByZXR1cm4gdmFsdWUubV9j
dXJyZW50S25vd25TdHJ1Y3R1cmUuaGFzU2luZ2xldG9uKCkKICAgICAgICAgICAgICYmICh2YWx1
ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5zaW5nbGV0b24oKS0+aW5kZXhpbmdUeXBlKCkgJiBJ
bmRleGluZ1NoYXBlTWFzaykgPT0gc2hhcGUKICAgICAgICAgICAgICYmICh2YWx1ZS5tX2N1cnJl
bnRLbm93blN0cnVjdHVyZS5zaW5nbGV0b24oKS0+aW5kZXhpbmdUeXBlKCkgJiBJc0FycmF5KQot
ICAgICAgICAgICAgJiYgZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5p
c09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUodmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuc2lu
Z2xldG9uKCkpOworICAgICAgICAgICAgJiYgZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyktPmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZSh2YWx1ZS5tX2N1cnJlbnRL
bm93blN0cnVjdHVyZS5zaW5nbGV0b24oKSk7CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXk6OkFy
cmF5OgogICAgICAgICBpZiAoYXJyYXlNb2Rlc0FscmVhZHlDaGVja2VkKHZhbHVlLm1fYXJyYXlN
b2RlcywgYXNBcnJheU1vZGVzKHNoYXBlIHwgSXNBcnJheSkpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE2Mzkx
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MjYsNyArNzI2LDggQEAgcHJpdmF0ZToKICAgICBOb2RlKiBhZGRU
b0dyYXBoKE5vZGVUeXBlIG9wLCBOb2RlKiBjaGlsZDEgPSAwLCBOb2RlKiBjaGlsZDIgPSAwLCBO
b2RlKiBjaGlsZDMgPSAwKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5h
ZGROb2RlKAotICAgICAgICAgICAgU3BlY05vbmUsIG9wLCBjdXJyZW50Q29kZU9yaWdpbigpLCBF
ZGdlKGNoaWxkMSksIEVkZ2UoY2hpbGQyKSwgRWRnZShjaGlsZDMpKTsKKyAgICAgICAgICAgIFNw
ZWNOb25lLCBvcCwgTm9kZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpKSwgRWRnZShjaGlsZDEp
LCBFZGdlKGNoaWxkMiksCisgICAgICAgICAgICBFZGdlKGNoaWxkMykpOwogICAgICAgICBBU1NF
UlQob3AgIT0gUGhpKTsKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZChyZXN1bHQpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzM0LDcgKzczNSw3IEBAIHByaXZhdGU6CiAgICAg
Tm9kZSogYWRkVG9HcmFwaChOb2RlVHlwZSBvcCwgRWRnZSBjaGlsZDEsIEVkZ2UgY2hpbGQyID0g
RWRnZSgpLCBFZGdlIGNoaWxkMyA9IEVkZ2UoKSkKICAgICB7CiAgICAgICAgIE5vZGUqIHJlc3Vs
dCA9IG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgIFNwZWNOb25lLCBvcCwgY3VycmVudENv
ZGVPcmlnaW4oKSwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CisgICAgICAgICAgICBTcGVjTm9u
ZSwgb3AsIE5vZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKSksIGNoaWxkMSwgY2hpbGQyLCBj
aGlsZDMpOwogICAgICAgICBBU1NFUlQob3AgIT0gUGhpKTsKICAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZChyZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzQyLDcgKzc0
Myw4IEBAIHByaXZhdGU6CiAgICAgTm9kZSogYWRkVG9HcmFwaChOb2RlVHlwZSBvcCwgT3BJbmZv
IGluZm8sIE5vZGUqIGNoaWxkMSA9IDAsIE5vZGUqIGNoaWxkMiA9IDAsIE5vZGUqIGNoaWxkMyA9
IDApCiAgICAgewogICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2dyYXBoLmFkZE5vZGUoCi0gICAg
ICAgICAgICBTcGVjTm9uZSwgb3AsIGN1cnJlbnRDb2RlT3JpZ2luKCksIGluZm8sIEVkZ2UoY2hp
bGQxKSwgRWRnZShjaGlsZDIpLCBFZGdlKGNoaWxkMykpOworICAgICAgICAgICAgU3BlY05vbmUs
IG9wLCBOb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkpLCBpbmZvLCBFZGdlKGNoaWxkMSks
IEVkZ2UoY2hpbGQyKSwKKyAgICAgICAgICAgIEVkZ2UoY2hpbGQzKSk7CiAgICAgICAgIEFTU0VS
VChvcCAhPSBQaGkpOwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kKHJlc3VsdCk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC03NTAsNyArNzUyLDcgQEAgcHJpdmF0ZToKICAgICBO
b2RlKiBhZGRUb0dyYXBoKE5vZGVUeXBlIG9wLCBPcEluZm8gaW5mbzEsIE9wSW5mbyBpbmZvMiwg
Tm9kZSogY2hpbGQxID0gMCwgTm9kZSogY2hpbGQyID0gMCwgTm9kZSogY2hpbGQzID0gMCkKICAg
ICB7CiAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAg
IFNwZWNOb25lLCBvcCwgY3VycmVudENvZGVPcmlnaW4oKSwgaW5mbzEsIGluZm8yLAorICAgICAg
ICAgICAgU3BlY05vbmUsIG9wLCBOb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkpLCBpbmZv
MSwgaW5mbzIsCiAgICAgICAgICAgICBFZGdlKGNoaWxkMSksIEVkZ2UoY2hpbGQyKSwgRWRnZShj
aGlsZDMpKTsKICAgICAgICAgQVNTRVJUKG9wICE9IFBoaSk7CiAgICAgICAgIG1fY3VycmVudEJs
b2NrLT5hcHBlbmQocmVzdWx0KTsKQEAgLTc2MCw3ICs3NjIsNyBAQCBwcml2YXRlOgogICAgIE5v
ZGUqIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnVGFnLCBOb2RlVHlwZSBvcCwgT3BJbmZvIGluZm8x
LCBPcEluZm8gaW5mbzIpCiAgICAgewogICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2dyYXBoLmFk
ZE5vZGUoCi0gICAgICAgICAgICBTcGVjTm9uZSwgTm9kZTo6VmFyQXJnLCBvcCwgY3VycmVudENv
ZGVPcmlnaW4oKSwgaW5mbzEsIGluZm8yLAorICAgICAgICAgICAgU3BlY05vbmUsIE5vZGU6OlZh
ckFyZywgb3AsIE5vZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKSksIGluZm8xLCBpbmZvMiwK
ICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCkgLSBtX251bVBhc3Nl
ZFZhckFyZ3MsIG1fbnVtUGFzc2VkVmFyQXJncyk7CiAgICAgICAgIEFTU0VSVChvcCAhPSBQaGkp
OwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kKHJlc3VsdCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiwxNCArMTAy
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmRldGhy
ZWFkKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoYmxvY2stPmxhc3QoKS0+aXNUZXJtaW5hbCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDb2RlT3JpZ2luIGJvdW5kYXJ5Q29kZU9yaWdpbiA9IGJsb2NrLT5sYXN0
KCktPmNvZGVPcmlnaW47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdpbiBi
b3VuZGFyeU5vZGVPcmlnaW4gPSBibG9jay0+bGFzdCgpLT5vcmlnaW47CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYmxvY2stPmxhc3QoKS0+Y29udmVydFRvUGhhbnRvbSgpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChibG9jay0+bGFzdCgpLT5yZWZDb3VudCgpID09
IDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgamV0dGlzb25CbG9jayhibG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeUNvZGVPcmln
aW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpldHRpc29uQmxvY2soYmxvY2ssIGpl
dHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROb2RlKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwgYm91
bmRhcnlDb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LCBTcGVjTm9uZSwgSnVtcCwgYm91bmRhcnlOb2RlT3JpZ2luLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBPcEluZm8odGFyZ2V0QmxvY2spKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyQ2hhbmdlZCA9IG91dGVyQ2hhbmdl
ZCA9IHRydWU7CkBAIC0xODEsMTIgKzE4MSwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGguZGV0aHJlYWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlT3JpZ2luIGJvdW5kYXJ5Q29kZU9yaWdpbiA9
IGJsb2NrLT5sYXN0KCktPmNvZGVPcmlnaW47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Tm9kZU9yaWdpbiBib3VuZGFyeU5vZGVPcmlnaW4gPSBibG9jay0+bGFzdCgpLT5vcmlnaW47CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmxhc3QoKS0+Y29udmVydFRvUGhhbnRv
bSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGpldHRp
c29uZWRCbG9ja3Muc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqZXR0aXNvbkJsb2NrKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2tzW2ldLCBib3VuZGFyeUNvZGVP
cmlnaW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqZXR0aXNvbkJsb2NrKGJs
b2NrLCBqZXR0aXNvbmVkQmxvY2tzW2ldLCBib3VuZGFyeU5vZGVPcmlnaW4pOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROb2RlKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwgYm91bmRhcnlDb2RlT3JpZ2lu
LCBPcEluZm8odGFyZ2V0QmxvY2spKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaCwgU3BlY05vbmUsIEp1bXAsIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgT3BJbmZvKHRhcmdl
dEJsb2NrKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpbm5lckNoYW5nZWQgPSBvdXRlckNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CkBAIC0yNTgsMTIgKzI1OCwxMSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgQVNTRVJUKGJyYW5jaC0+cmVmQ291bnQoKSA9PSAxKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgYmxvY2stPmFwcGVuZE5vZGUoCi0gICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05v
bmUsIEp1bXAsIGJyYW5jaC0+Y29kZU9yaWdpbiwKLSAgICAgICAgICAgICAgICBPcEluZm8odGFy
Z2V0QmxvY2spKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwgYnJh
bmNoLT5vcmlnaW4sIE9wSW5mbyh0YXJnZXRCbG9jaykpOwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgdm9pZCBrZWVwT3BlcmFuZEFsaXZlKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBq
ZXR0aXNvbmVkQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQpCisgICAgdm9pZCBrZWVwT3BlcmFuZEFsaXZlKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNp
Y0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gbm9kZU9yaWdpbiwgVmlydHVhbFJl
Z2lzdGVyIG9wZXJhbmQpCiAgICAgewogICAgICAgICBOb2RlKiBsaXZlbmVzc05vZGUgPSBqZXR0
aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICBp
ZiAoIWxpdmVuZXNzTm9kZSkKQEAgLTI3MSwxNiArMjcwLDE2IEBAIHByaXZhdGU6CiAgICAgICAg
IGlmIChsaXZlbmVzc05vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5pc0NhcHR1cmVkKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGJsb2NrLT5hcHBlbmROb2RlKAotICAgICAgICAg
ICAgbV9ncmFwaCwgU3BlY05vbmUsIFBoYW50b21Mb2NhbCwgY29kZU9yaWdpbiwgCisgICAgICAg
ICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgUGhhbnRvbUxvY2FsLCBub2RlT3JpZ2luLCAKICAgICAg
ICAgICAgIE9wSW5mbyhsaXZlbmVzc05vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSk7CiAgICAg
fQogICAgIAotICAgIHZvaWQgamV0dGlzb25CbG9jayhCYXNpY0Jsb2NrKiBibG9jaywgQmFzaWNC
bG9jayogamV0dGlzb25lZEJsb2NrLCBDb2RlT3JpZ2luIGJvdW5kYXJ5Q29kZU9yaWdpbikKKyAg
ICB2b2lkIGpldHRpc29uQmxvY2soQmFzaWNCbG9jayogYmxvY2ssIEJhc2ljQmxvY2sqIGpldHRp
c29uZWRCbG9jaywgTm9kZU9yaWdpbiBib3VuZGFyeU5vZGVPcmlnaW4pCiAgICAgewogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFk
Lm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkKLSAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUo
YmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlDb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudChpKSk7CisgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBq
ZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoaSkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9j
ay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkKLSAgICAgICAgICAgIGtl
ZXBPcGVyYW5kQWxpdmUoYmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlDb2RlT3JpZ2lu
LCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSk7CisgICAgICAgICAgICBrZWVwT3BlcmFuZEFs
aXZlKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaSkpOwogICAgICAgICAKICAgICAgICAgZml4SmV0dGlzb25lZFByZWRl
Y2Vzc29ycyhibG9jaywgamV0dGlzb25lZEJsb2NrKTsKICAgICB9CkBAIC0zMTUsNyArMzE0LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgLy8gUmVtb3ZlIHRoZSB0ZXJtaW5hbCBvZiBmaXJzdEJsb2Nr
IHNpbmNlIHdlIGRvbid0IG5lZWQgaXQgYW55bW9yZS4gV2VsbCwgd2UgZG9uJ3QKICAgICAgICAg
Ly8gcmVhbGx5IHJlbW92ZSBpdDsgd2UgYWN0dWFsbHkgdHVybiBpdCBpbnRvIGEgUGhhbnRvbS4K
ICAgICAgICAgQVNTRVJUKGZpcnN0QmxvY2stPmxhc3QoKS0+aXNUZXJtaW5hbCgpKTsKLSAgICAg
ICAgQ29kZU9yaWdpbiBib3VuZGFyeUNvZGVPcmlnaW4gPSBmaXJzdEJsb2NrLT5sYXN0KCktPmNv
ZGVPcmlnaW47CisgICAgICAgIE5vZGVPcmlnaW4gYm91bmRhcnlOb2RlT3JpZ2luID0gZmlyc3RC
bG9jay0+bGFzdCgpLT5vcmlnaW47CiAgICAgICAgIGZpcnN0QmxvY2stPmxhc3QoKS0+Y29udmVy
dFRvUGhhbnRvbSgpOwogICAgICAgICBBU1NFUlQoZmlyc3RCbG9jay0+bGFzdCgpLT5yZWZDb3Vu
dCgpID09IDEpOwogICAgICAgICAKQEAgLTMyNyw5ICszMjYsOSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgLy8gZGlmZmVyZW50IHBhdGggdGhhbiBzZWNvbmRCbG9jay4KICAgICAgICAgICAgIAog
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpCi0gICAgICAgICAgICAgICAga2Vl
cE9wZXJhbmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Q29kZU9y
aWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpOworICAgICAgICAgICAgICAgIGtl
ZXBPcGVyYW5kQWxpdmUoZmlyc3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVP
cmlnaW4sIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVy
T2ZMb2NhbHMoKTsgKytpKQotICAgICAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoZmlyc3RC
bG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeUNvZGVPcmlnaW4sIHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKGkpKTsKKyAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0Qmxv
Y2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChpKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2Vjb25kQmxvY2stPnBoaXMuc2l6ZSgpOyArK2kpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJl
dmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJl
YWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNywyNSArMTI3LDI1IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgQUxXQVlTX0lOTElORSBOb2RlKiBhZGRQ
aGlTaWxlbnRseShCYXNpY0Jsb2NrKiBibG9jaywgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdp
biwgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSkKKyAgICBBTFdBWVNfSU5MSU5FIE5vZGUq
IGFkZFBoaVNpbGVudGx5KEJhc2ljQmxvY2sqIGJsb2NrLCBjb25zdCBOb2RlT3JpZ2luJiBvcmln
aW4sIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUpCiAgICAgewotICAgICAgICBOb2RlKiBy
ZXN1bHQgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY05vbmUsIFBoaSwgY29kZU9yaWdpbiwgT3BJbmZv
KHZhcmlhYmxlKSk7CisgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1fZ3JhcGguYWRkTm9kZShTcGVj
Tm9uZSwgUGhpLCBvcmlnaW4sIE9wSW5mbyh2YXJpYWJsZSkpOwogICAgICAgICBibG9jay0+cGhp
cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAg
ICAgdGVtcGxhdGU8T3BlcmFuZEtpbmQgb3BlcmFuZEtpbmQ+Ci0gICAgQUxXQVlTX0lOTElORSBO
b2RlKiBhZGRQaGkoQmFzaWNCbG9jayogYmxvY2ssIGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4sIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIHNpemVfdCBpbmRleCkKKyAgICBBTFdB
WVNfSU5MSU5FIE5vZGUqIGFkZFBoaShCYXNpY0Jsb2NrKiBibG9jaywgY29uc3QgTm9kZU9yaWdp
biYgb3JpZ2luLCBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBzaXplX3QgaW5kZXgpCiAg
ICAgewotICAgICAgICBOb2RlKiByZXN1bHQgPSBhZGRQaGlTaWxlbnRseShibG9jaywgY29kZU9y
aWdpbiwgdmFyaWFibGUpOworICAgICAgICBOb2RlKiByZXN1bHQgPSBhZGRQaGlTaWxlbnRseShi
bG9jaywgb3JpZ2luLCB2YXJpYWJsZSk7CiAgICAgICAgIHBoaVN0YWNrRm9yPG9wZXJhbmRLaW5k
PigpLmFwcGVuZChQaGlTdGFja0VudHJ5KGJsb2NrLCBpbmRleCwgcmVzdWx0KSk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPE9wZXJhbmRLaW5kIG9w
ZXJhbmRLaW5kPgotICAgIEFMV0FZU19JTkxJTkUgTm9kZSogYWRkUGhpKGNvbnN0IENvZGVPcmln
aW4mIGNvZGVPcmlnaW4sIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIHNpemVfdCBpbmRl
eCkKKyAgICBBTFdBWVNfSU5MSU5FIE5vZGUqIGFkZFBoaShjb25zdCBOb2RlT3JpZ2luJiBvcmln
aW4sIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIHNpemVfdCBpbmRleCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZGRQaGk8b3BlcmFuZEtpbmQ+KG1fYmxvY2ssIGNvZGVPcmlnaW4sIHZh
cmlhYmxlLCBpbmRleCk7CisgICAgICAgIHJldHVybiBhZGRQaGk8b3BlcmFuZEtpbmQ+KG1fYmxv
Y2ssIG9yaWdpbiwgdmFyaWFibGUsIGluZGV4KTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8
T3BlcmFuZEtpbmQgb3BlcmFuZEtpbmQ+CkBAIC0yMDksNyArMjA5LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgdmFyaWFibGUtPnNldElzTG9hZGVkRnJvbSh0cnVl
KTsKLSAgICAgICAgTm9kZSogcGhpID0gYWRkUGhpPG9wZXJhbmRLaW5kPihub2RlLT5jb2RlT3Jp
Z2luLCB2YXJpYWJsZSwgaWR4KTsKKyAgICAgICAgTm9kZSogcGhpID0gYWRkUGhpPG9wZXJhbmRL
aW5kPihub2RlLT5vcmlnaW4sIHZhcmlhYmxlLCBpZHgpOwogICAgICAgICBub2RlLT5jaGlsZHJl
bi5zZXRDaGlsZDEoRWRnZShwaGkpKTsKICAgICAgICAgbV9ibG9jay0+dmFyaWFibGVzQXRIZWFk
LmF0Rm9yPG9wZXJhbmRLaW5kPihpZHgpID0gcGhpOwogICAgICAgICBtX2Jsb2NrLT52YXJpYWJs
ZXNBdFRhaWwuYXRGb3I8b3BlcmFuZEtpbmQ+KGlkeCkgPSBub2RlOwpAQCAtMjc3LDcgKzI3Nyw3
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZhcmlhYmxlLT5zZXRJ
c0xvYWRlZEZyb20odHJ1ZSk7Ci0gICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxkMShFZGdl
KGFkZFBoaTxvcGVyYW5kS2luZD4obm9kZS0+Y29kZU9yaWdpbiwgdmFyaWFibGUsIGlkeCkpKTsK
KyAgICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQxKEVkZ2UoYWRkUGhpPG9wZXJhbmRLaW5k
Pihub2RlLT5vcmlnaW4sIHZhcmlhYmxlLCBpZHgpKSk7CiAgICAgICAgIG1fYmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC5hdEZvcjxvcGVyYW5kS2luZD4oaWR4KSA9IG5vZGU7CiAgICAgICAgIG1fYmxv
Y2stPnZhcmlhYmxlc0F0VGFpbC5hdEZvcjxvcGVyYW5kS2luZD4oaWR4KSA9IG5vZGU7CiAgICAg
fQpAQCAtNDE5LDcgKzQxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgTm9kZSogdmFyaWFibGVJblByZXZpb3VzID0gcHJlZGVjZXNzb3JCbG9jay0+dmFy
aWFibGVzQXRUYWlsLmF0Rm9yPG9wZXJhbmRLaW5kPihpbmRleCk7CiAgICAgICAgICAgICAgICAg
aWYgKCF2YXJpYWJsZUluUHJldmlvdXMpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVJ
blByZXZpb3VzID0gYWRkUGhpPG9wZXJhbmRLaW5kPihwcmVkZWNlc3NvckJsb2NrLCBjdXJyZW50
UGhpLT5jb2RlT3JpZ2luLCB2YXJpYWJsZSwgaW5kZXgpOworICAgICAgICAgICAgICAgICAgICB2
YXJpYWJsZUluUHJldmlvdXMgPSBhZGRQaGk8b3BlcmFuZEtpbmQ+KHByZWRlY2Vzc29yQmxvY2ss
IGN1cnJlbnRQaGktPm9yaWdpbiwgdmFyaWFibGUsIGluZGV4KTsKICAgICAgICAgICAgICAgICAg
ICAgcHJlZGVjZXNzb3JCbG9jay0+dmFyaWFibGVzQXRUYWlsLmF0Rm9yPG9wZXJhbmRLaW5kPihp
bmRleCkgPSB2YXJpYWJsZUluUHJldmlvdXM7CiAgICAgICAgICAgICAgICAgICAgIHByZWRlY2Vz
c29yQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5hdEZvcjxvcGVyYW5kS2luZD4oaW5kZXgpID0gdmFy
aWFibGVJblByZXZpb3VzOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC00NTMsNyArNDUz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIE5vZGUqIG5ld1BoaSA9
IGFkZFBoaVNpbGVudGx5KGJsb2NrLCBjdXJyZW50UGhpLT5jb2RlT3JpZ2luLCB2YXJpYWJsZSk7
CisgICAgICAgICAgICAgICAgTm9kZSogbmV3UGhpID0gYWRkUGhpU2lsZW50bHkoYmxvY2ssIGN1
cnJlbnRQaGktPm9yaWdpbiwgdmFyaWFibGUpOwogICAgICAgICAgICAgICAgIG5ld1BoaS0+Y2hp
bGRyZW4gPSBjdXJyZW50UGhpLT5jaGlsZHJlbjsKICAgICAgICAgICAgICAgICBjdXJyZW50UGhp
LT5jaGlsZHJlbi5pbml0aWFsaXplKG5ld1BoaSwgdmFyaWFibGVJblByZXZpb3VzLCAwKTsKICAg
ICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NT
RVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYzLDcgKzk2Myw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEdldE15U2NvcGU6CiAgICAgICAgICAg
ICBjYXNlIFNraXBUb3BTY29wZToKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYy5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIGlmIChtX2dyYXBoLnVuY2hlY2tlZEFjdGl2YXRpb25SZWdpc3RlcigpID09IGxv
Y2FsKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF5QmVBY2Nlc3NlZCA9IHRydWU7CkBA
IC05NzIsNyArOTcyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcmd1bWVu
dHNOb3RDcmVhdGVkOgogICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKICAg
ICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGhTYWZlOgotICAgICAgICAgICAgICAg
IGlmIChtX2dyYXBoLnVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmln
aW4pID09IGxvY2FsKQorICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnVuY2hlY2tlZEFyZ3Vt
ZW50c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPT0gbG9jYWwpCiAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5tYXlCZUFjY2Vzc2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNjA0LDcgKzYwNCw3
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgcmV0
dXJuOwogICAgICAgICAKICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoOgotICAgICAgICBy
ZWFkKEFic3RyYWN0SGVhcChWYXJpYWJsZXMsIGdyYXBoLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5v
ZGUtPmNvZGVPcmlnaW4pKSk7CisgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKFZhcmlhYmxlcywg
Z3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkpOwogICAg
ICAgICByZWFkKEFic3RyYWN0SGVhcChWYXJpYWJsZXMsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQp
KTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTYxMyw3ICs2MTMsNyBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCiAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6Ci0gICAgICAgIHJlYWQoQWJz
dHJhY3RIZWFwKFZhcmlhYmxlcywgZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29k
ZU9yaWdpbikpKTsKKyAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoVmFyaWFibGVzLCBncmFwaC5h
cmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSk7CiAgICAgICAgIHJl
dHVybjsKIAogICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAkocmV2aXNpb24gMTYzOTE5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNyArNDEsNyBAQCB2b2lkIENvbW1vbkRhdGE6Om5vdGlmeUNvbXBpbGluZ1N0cnVj
dHVyCiB7CiAgICAgcGxhbi50cmFuc2l0aW9ucy5hZGRMYXppbHkoCiAgICAgICAgIGNvZGVCbG9j
aywKLSAgICAgICAgbm9kZS0+Y29kZU9yaWdpbi5jb2RlT3JpZ2luT3duZXIoKSwKKyAgICAgICAg
bm9kZS0+b3JpZ2luLnNlbWFudGljLmNvZGVPcmlnaW5Pd25lcigpLAogICAgICAgICBub2RlLT5z
dHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLnByZXZpb3VzU3RydWN0dXJlLAogICAgICAgICBub2Rl
LT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSk7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcAkocmV2aXNpb24gMTYzOTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOiB7CiAg
ICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5U3BlY3VsYXRpb24oCiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5jb2RlT3JpZ2luKSku
bV90eXBlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFyZ3VtZW50c1Jl
Z2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLm1fdHlwZSkpCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsK
ICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKQEAgLTExMiw3ICsxMTIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBBZGphY2VuY3lMaXN0IGNoaWxkcmVuID0gbm9k
ZS0+Y2hpbGRyZW47CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnJlbW92ZUVkZ2UoMCk7
CiAgICAgICAgICAgICAgICAgICAgIGlmICghIWNoaWxkcmVuLmNoaWxkMSgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNw
ZWNOb25lLCBQaGFudG9tLCBub2RlLT5jb2RlT3JpZ2luLCBjaGlsZHJlbik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKGluZGV4SW5CbG9jaywgU3Bl
Y05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdpbiwgY2hpbGRyZW4pOwogICAgICAgICAgICAgICAg
ICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDIoRWRnZSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQzKEVkZ2UoKSk7CiAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb1N0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50KHN0cnVjdHVyZSk7
CkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgICAgICBjYXNl
IEdldEJ5SWQ6CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDogewotICAgICAgICAgICAg
ICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPmNvZGVPcmlnaW47CisgICAgICAgICAg
ICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47CiAgICAgICAgICAgICAgICAg
RWRnZSBjaGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgICAgICBOb2RlKiBj
aGlsZCA9IGNoaWxkRWRnZS5ub2RlKCk7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciA9IG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKTsKQEAgLTE5MCwxMSArMTkwLDEx
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKG5lZWRz
V2F0Y2hwb2ludCkgewogICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgU3Ry
dWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQsIGNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludCwgb3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHN0cnVjdHVyZSks
IGNoaWxkRWRnZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuZWVkc0NlbGxDaGVjaykg
ewogICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAg
ICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgY29kZU9y
aWdpbiwgY2hpbGRFZGdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywg
U3BlY05vbmUsIFBoYW50b20sIG9yaWdpbiwgY2hpbGRFZGdlKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2hpbGRFZGdlLnNldFVzZUtpbmQo
S25vd25DZWxsVXNlKTsKQEAgLTIwNSw3ICsyMDUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBjaGlsZEVkZ2U7CiAgICAgICAgICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IEVkZ2UobV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywg
U3BlY05vbmUsIEdldEJ1dHRlcmZseSwgY29kZU9yaWdpbiwgY2hpbGRFZGdlKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBHZXRCdXR0ZXJmbHksIG9y
aWdpbiwgY2hpbGRFZGdlKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0dldEJ5T2Zmc2V0KG1fZ3JhcGgubV9zdG9y
YWdlQWNjZXNzRGF0YS5zaXplKCksIHByb3BlcnR5U3RvcmFnZSk7CkBAIC0yMTksNyArMjE5LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoK
ICAgICAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDogewotICAgICAgICAgICAgICAgIENvZGVP
cmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPmNvZGVPcmlnaW47CisgICAgICAgICAgICAgICAgTm9k
ZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47CiAgICAgICAgICAgICAgICAgRWRnZSBjaGls
ZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgICAgICBOb2RlKiBjaGlsZCA9IGNo
aWxkRWRnZS5ub2RlKCk7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciA9IG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKTsKQEAgLTIzNSw3ICsyMzUsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgc3RhdHVz
ID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICAgICAgdm0oKSwK
LSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbiks
CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG9yaWdpbi5zZW1h
bnRpYyksCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSwKICAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdLAogICAgICAgICAgICAg
ICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOwpAQCAtMjUzLDExICsyNTMsMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobmVlZHNX
YXRjaHBvaW50KSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBTdHJ1
Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludCwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50LCBvcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8oc3RydWN0dXJlKSwg
Y2hpbGRFZGdlKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5lZWRzQ2VsbENoZWNrKSB7
CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBjb2RlT3Jp
Z2luLCBjaGlsZEVkZ2UpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBT
cGVjTm9uZSwgUGhhbnRvbSwgb3JpZ2luLCBjaGlsZEVkZ2UpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjaGlsZEVkZ2Uuc2V0VXNlS2luZChL
bm93bkNlbGxVc2UpOwpAQCAtMjcwLDcgKzI3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5SWQpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKS5pc051bGwoKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZU9yaWdpbiwgaW5kZXhJbkJsb2NrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW4sIGluZGV4SW5CbG9jaywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKS5h
c0NlbGwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAKQEAgLTI4Miw3ICsyODIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
cHJvdG90eXBlLmlzQ2VsbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRTdHJ1
Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
ZGVPcmlnaW4sIGluZGV4SW5CbG9jaywgcHJvdG90eXBlLmFzQ2VsbCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3JpZ2luLCBpbmRleEluQmxvY2ssIHByb3RvdHlwZS5hc0Nl
bGwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9CkBAIC0yOTMsMTQgKzI5MywxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBjaGlsZEVkZ2U7CiAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoc3RhdHVzLmlzU2ltcGxlUmVwbGFjZSgpIHx8IHN0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSA9PSBzdGF0dXMubmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gRWRnZShtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2Nr
LCBTcGVjTm9uZSwgR2V0QnV0dGVyZmx5LCBjb2RlT3JpZ2luLCBjaGlsZEVkZ2UpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIEdldEJ1dHRlcmZseSwg
b3JpZ2luLCBjaGlsZEVkZ2UpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJ1Y3R1
cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0
YXR1cy5uZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVCghaXNJbmxpbmVPZmZzZXQoc3RhdHVzLm9mZnNldCgpKSk7CiAgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3Bl
Y05vbmUsIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y29kZU9yaWdpbiwgT3BJbmZvKHRyYW5zaXRpb25EYXRhKSwgY2hpbGRFZGdlKTsKLSAgICAgICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNO
b25lLCBTdG9yZUJhcnJpZXIsIGNvZGVPcmlnaW4sIEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgp
LCBLbm93bkNlbGxVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbiwgT3BJbmZv
KHRyYW5zaXRpb25EYXRhKSwgY2hpbGRFZGdlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNOb25lLCBTdG9yZUJhcnJpZXIs
IG9yaWdpbiwgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIEtub3duQ2VsbFVzZSkpOwogICAg
ICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBFZGdlKGFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKQEAgLTMwOCwyMiArMzA4LDIy
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghaXNJbmxpbmVPZmZzZXQo
c3RhdHVzLm9mZnNldCgpKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICBOb2RlKiByZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUs
IFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIGNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
LCBvcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8odHJhbnNpdGlvbkRhdGEp
LCBjaGlsZEVkZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBT
cGVjTm9uZSwgR2V0QnV0dGVyZmx5LCBjb2RlT3JpZ2luLCBjaGlsZEVkZ2UpKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVj
Tm9uZSwgU3RvcmVCYXJyaWVyLCBjb2RlT3JpZ2luLCBFZGdlKG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJs
b2NrLCBTcGVjTm9uZSwgR2V0QnV0dGVyZmx5LCBvcmlnaW4sIGNoaWxkRWRnZSkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNw
ZWNOb25lLCBTdG9yZUJhcnJpZXIsIG9yaWdpbiwgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCks
IEtub3duQ2VsbFVzZSkpOwogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBF
ZGdlKHJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLmlzU2ltcGxlVHJhbnNpdGlv
bigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIHB1dFN0cnVjdHVyZSA9IG1fZ3JhcGgu
YWRkTm9kZShTcGVjTm9uZSwgUHV0U3RydWN0dXJlLCBjb2RlT3JpZ2luLCBPcEluZm8odHJhbnNp
dGlvbkRhdGEpLCBjaGlsZEVkZ2UpOwotICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFN0b3JlQmFycmllciwgY29kZU9y
aWdpbiwgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIEtub3duQ2VsbFVzZSkpOworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBwdXRTdHJ1Y3R1cmUgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY05v
bmUsIFB1dFN0cnVjdHVyZSwgb3JpZ2luLCBPcEluZm8odHJhbnNpdGlvbkRhdGEpLCBjaGlsZEVk
Z2UpOworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKGluZGV4
SW5CbG9jaywgU3BlY05vbmUsIFN0b3JlQmFycmllciwgb3JpZ2luLCBFZGdlKG5vZGUtPmNoaWxk
MSgpLm5vZGUoKSwgS25vd25DZWxsVXNlKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydChpbmRleEluQmxvY2ssIHB1dFN0cnVjdHVyZSk7CiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUHV0QnlPZmZzZXQobV9ncmFw
aC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSwgcHJvcGVydHlTdG9yYWdlKTsKLSAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKGluZGV4SW5CbG9jaywgU3BlY05vbmUs
IENvbmRpdGlvbmFsU3RvcmVCYXJyaWVyLCBjb2RlT3JpZ2luLCAKKyAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKGluZGV4SW5CbG9jaywgU3BlY05vbmUsIENvbmRpdGlv
bmFsU3RvcmVCYXJyaWVyLCBvcmlnaW4sIAogICAgICAgICAgICAgICAgICAgICBFZGdlKG5vZGUt
PmNoaWxkMigpLm5vZGUoKSwgS25vd25DZWxsVXNlKSwgRWRnZShub2RlLT5jaGlsZDMoKS5ub2Rl
KCksIFVudHlwZWRVc2UpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBTdG9y
YWdlQWNjZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsKQEAgLTM4Nyw3ICszODcsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgaWYgKG9sZFZhbHVlLm1lcmdlKGNvbnN0YW50VmFsdWUpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+Y29kZU9yaWdpbjsKKyAgICAgICAgICAgIE5vZGVP
cmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOwogICAgICAgICAgICAgQWRqYWNlbmN5TGlzdCBj
aGlsZHJlbiA9IG5vZGUtPmNoaWxkcmVuOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
bm9kZS0+b3AoKSA9PSBHZXRMb2NhbCkKQEAgLTM5Nyw3ICszOTcsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIHZh
bHVlKTsKICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAg
ICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgY29kZU9yaWdpbiwgY2hpbGRy
ZW4pOworICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG9y
aWdpbiwgY2hpbGRyZW4pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1
ZTsKICAgICAgICAgfQpAQCAtNDA3LDIwICs0MDcsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIGNoYW5nZWQ7CiAgICAgfQogCi0gICAgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hl
Y2soQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCB1bnNpZ25lZCBpbmRleEluQmxvY2ssIEpTQ2VsbCog
Y2VsbCkKKyAgICB2b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjayhOb2RlT3JpZ2luIG9y
aWdpbiwgdW5zaWduZWQgaW5kZXhJbkJsb2NrLCBKU0NlbGwqIGNlbGwpCiAgICAgewogICAgICAg
ICBOb2RlKiB3ZWFrQ29uc3RhbnQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAg
ICAgICAgaW5kZXhJbkJsb2NrLCBzcGVjdWxhdGlvbkZyb21WYWx1ZShjZWxsKSwgV2Vha0pTQ29u
c3RhbnQsIGNvZGVPcmlnaW4sIE9wSW5mbyhjZWxsKSk7CisgICAgICAgICAgICBpbmRleEluQmxv
Y2ssIHNwZWN1bGF0aW9uRnJvbVZhbHVlKGNlbGwpLCBXZWFrSlNDb25zdGFudCwgb3JpZ2luLCBP
cEluZm8oY2VsbCkpOwogICAgICAgICAKICAgICAgICAgaWYgKG1fZ3JhcGgud2F0Y2hwb2ludHMo
KS5pc1N0aWxsVmFsaWQoY2VsbC0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0
KCkpKSB7CiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAg
ICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50LCBjb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUs
IFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50LCBvcmlnaW4sCiAgICAgICAgICAgICAgICAg
T3BJbmZvKGNlbGwtPnN0cnVjdHVyZSgpKSwgRWRnZSh3ZWFrQ29uc3RhbnQsIENlbGxVc2UpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVja1N0
cnVjdHVyZSwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUs
IENoZWNrU3RydWN0dXJlLCBvcmlnaW4sCiAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRT
dHJ1Y3R1cmVTZXQoY2VsbC0+c3RydWN0dXJlKCkpKSwgRWRnZSh3ZWFrQ29uc3RhbnQsIENlbGxV
c2UpKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ny
aXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE2
MzkxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgICAgIEJhc2ljQmxvY2sqIHBhZCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydEJlZm9y
ZSgqc3VjY2Vzc29yKTsKICAgICAgICAgcGFkLT5hcHBlbmROb2RlKAotICAgICAgICAgICAgbV9n
cmFwaCwgU3BlY05vbmUsIEp1bXAsICgqc3VjY2Vzc29yKS0+YXQoMCktPmNvZGVPcmlnaW4sIE9w
SW5mbygqc3VjY2Vzc29yKSk7CisgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwg
KCpzdWNjZXNzb3IpLT5hdCgwKS0+b3JpZ2luLCBPcEluZm8oKnN1Y2Nlc3NvcikpOwogICAgICAg
ICBwYWQtPnByZWRlY2Vzc29ycy5hcHBlbmQocHJlZGVjZXNzb3IpOwogICAgICAgICAoKnN1Y2Nl
c3NvciktPnJlcGxhY2VQcmVkZWNlc3NvcihwcmVkZWNlc3NvciwgcGFkKTsKICAgICAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxNjM5MTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1OSw3ICs0NTksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBoYXNFeGl0U2l0ZShOb2Rl
KiBub2RlLCBFeGl0S2luZCBleGl0S2luZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBoYXNFeGl0
U2l0ZShub2RlLT5jb2RlT3JpZ2luLCBleGl0S2luZCk7CisgICAgICAgIHJldHVybiBoYXNFeGl0
U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4aXRLaW5kKTsKICAgICB9CiAgICAgCiAgICAg
VmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c1JlZ2lzdGVyRm9yKElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lKQpAQCAtNTMzLDcgKzUzMyw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFu
b2RlKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIAotICAgICAgICBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5jb2RlT3JpZ2luKTsK
KyAgICAgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IEdldEFyZ3VtZW50KQogICAgICAgICAgICAgcmV0dXJuIHByb2ZpbGVkQmxvY2stPnZhbHVl
UHJvZmlsZUZvckFyZ3VtZW50KG5vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpKTsKQEAgLTU1MCw3
ICs1NTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChub2Rl
LT5oYXNIZWFwUHJlZGljdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHByb2ZpbGVkQmxvY2st
PnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPmNvZGVPcmlnaW4uYnl0ZWNvZGVJ
bmRleCk7CisgICAgICAgICAgICByZXR1cm4gcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgpOwogICAg
ICAgICAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNTYwLDEzICs1NjAsMTMgQEAgcHVi
bGljOgogICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICByZXR1cm4gTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZSgpOwogICAgICAgICAKLSAgICAgICAgQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+Y29kZU9yaWdpbik7CisgICAgICAg
IENvZGVCbG9jayogcHJvZmlsZWRCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRM
b2NhbCkgewogICAgICAgICAgICAgcmV0dXJuIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6
OmZyb21MYXp5T3BlcmFuZCgKICAgICAgICAgICAgICAgICBwcm9maWxlZEJsb2NrLAogICAgICAg
ICAgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5KAotICAgICAgICAgICAgICAgICAg
ICBub2RlLT5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIG5vZGUtPmxvY2FsKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgsIG5vZGUt
PmxvY2FsKCkpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcmV0dXJuIE1ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUodmFsdWVQcm9maWxlRm9yKG5vZGUpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBA
QAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVk
ZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUuaCIKICNpbmNsdWRl
ICJERkdBZGphY2VuY3lMaXN0LmgiCiAjaW5jbHVkZSAiREZHQXJpdGhNb2RlLmgiCkBAIC0zOSw2
ICszOCw3IEBACiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHTGF6eUpTVmFs
dWUuaCIKICNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIKKyNpbmNsdWRlICJERkdOb2RlT3JpZ2lu
LmgiCiAjaW5jbHVkZSAiREZHTm9kZVR5cGUuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vz
c0RhdGEuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCkBAIC0xNjEsOSArMTYxLDggQEAgc3Ry
dWN0IE5vZGUgewogICAgIAogICAgIE5vZGUoKSB7IH0KICAgICAKLSAgICBOb2RlKE5vZGVUeXBl
IG9wLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0IEFkamFjZW5jeUxpc3QmIGNoaWxkcmVu
KQotICAgICAgICA6IGNvZGVPcmlnaW4oY29kZU9yaWdpbikKLSAgICAgICAgLCBjb2RlT3JpZ2lu
Rm9yRXhpdFRhcmdldChjb2RlT3JpZ2luKQorICAgIE5vZGUoTm9kZVR5cGUgb3AsIE5vZGVPcmln
aW4gbm9kZU9yaWdpbiwgY29uc3QgQWRqYWNlbmN5TGlzdCYgY2hpbGRyZW4pCisgICAgICAgIDog
b3JpZ2luKG5vZGVPcmlnaW4pCiAgICAgICAgICwgY2hpbGRyZW4oY2hpbGRyZW4pCiAgICAgICAg
ICwgbV92aXJ0dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKCkpCiAgICAgICAgICwgbV9yZWZD
b3VudCgxKQpAQCAtMTc0LDkgKzE3Myw4IEBAIHN0cnVjdCBOb2RlIHsKICAgICB9CiAgICAgCiAg
ICAgLy8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIHVwIHRvIDMgY2hpbGRyZW4sIG5vIGltbWVkaWF0
ZSB2YWx1ZS4KLSAgICBOb2RlKE5vZGVUeXBlIG9wLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEVk
Z2UgY2hpbGQxID0gRWRnZSgpLCBFZGdlIGNoaWxkMiA9IEVkZ2UoKSwgRWRnZSBjaGlsZDMgPSBF
ZGdlKCkpCi0gICAgICAgIDogY29kZU9yaWdpbihjb2RlT3JpZ2luKQotICAgICAgICAsIGNvZGVP
cmlnaW5Gb3JFeGl0VGFyZ2V0KGNvZGVPcmlnaW4pCisgICAgTm9kZShOb2RlVHlwZSBvcCwgTm9k
ZU9yaWdpbiBub2RlT3JpZ2luLCBFZGdlIGNoaWxkMSA9IEVkZ2UoKSwgRWRnZSBjaGlsZDIgPSBF
ZGdlKCksIEVkZ2UgY2hpbGQzID0gRWRnZSgpKQorICAgICAgICA6IG9yaWdpbihub2RlT3JpZ2lu
KQogICAgICAgICAsIGNoaWxkcmVuKEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBjaGlsZDEsIGNoaWxk
MiwgY2hpbGQzKQogICAgICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcigp
KQogICAgICAgICAsIG1fcmVmQ291bnQoMSkKQEAgLTE5MCw5ICsxODgsOCBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgfQogCiAgICAgLy8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIHVwIHRvIDMgY2hpbGRy
ZW4gYW5kIGFuIGltbWVkaWF0ZSB2YWx1ZS4KLSAgICBOb2RlKE5vZGVUeXBlIG9wLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIE9wSW5mbyBpbW0sIEVkZ2UgY2hpbGQxID0gRWRnZSgpLCBFZGdlIGNo
aWxkMiA9IEVkZ2UoKSwgRWRnZSBjaGlsZDMgPSBFZGdlKCkpCi0gICAgICAgIDogY29kZU9yaWdp
bihjb2RlT3JpZ2luKQotICAgICAgICAsIGNvZGVPcmlnaW5Gb3JFeGl0VGFyZ2V0KGNvZGVPcmln
aW4pCisgICAgTm9kZShOb2RlVHlwZSBvcCwgTm9kZU9yaWdpbiBub2RlT3JpZ2luLCBPcEluZm8g
aW1tLCBFZGdlIGNoaWxkMSA9IEVkZ2UoKSwgRWRnZSBjaGlsZDIgPSBFZGdlKCksIEVkZ2UgY2hp
bGQzID0gRWRnZSgpKQorICAgICAgICA6IG9yaWdpbihub2RlT3JpZ2luKQogICAgICAgICAsIGNo
aWxkcmVuKEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBjaGlsZDEsIGNoaWxkMiwgY2hpbGQzKQogICAg
ICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlcigpKQogICAgICAgICAsIG1f
cmVmQ291bnQoMSkKQEAgLTIwNiw5ICsyMDMsOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgfQogCiAg
ICAgLy8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIHVwIHRvIDMgY2hpbGRyZW4gYW5kIHR3byBpbW1l
ZGlhdGUgdmFsdWVzLgotICAgIE5vZGUoTm9kZVR5cGUgb3AsIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgT3BJbmZvIGltbTEsIE9wSW5mbyBpbW0yLCBFZGdlIGNoaWxkMSA9IEVkZ2UoKSwgRWRnZSBj
aGlsZDIgPSBFZGdlKCksIEVkZ2UgY2hpbGQzID0gRWRnZSgpKQotICAgICAgICA6IGNvZGVPcmln
aW4oY29kZU9yaWdpbikKLSAgICAgICAgLCBjb2RlT3JpZ2luRm9yRXhpdFRhcmdldChjb2RlT3Jp
Z2luKQorICAgIE5vZGUoTm9kZVR5cGUgb3AsIE5vZGVPcmlnaW4gbm9kZU9yaWdpbiwgT3BJbmZv
IGltbTEsIE9wSW5mbyBpbW0yLCBFZGdlIGNoaWxkMSA9IEVkZ2UoKSwgRWRnZSBjaGlsZDIgPSBF
ZGdlKCksIEVkZ2UgY2hpbGQzID0gRWRnZSgpKQorICAgICAgICA6IG9yaWdpbihub2RlT3JpZ2lu
KQogICAgICAgICAsIGNoaWxkcmVuKEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBjaGlsZDEsIGNoaWxk
MiwgY2hpbGQzKQogICAgICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcigp
KQogICAgICAgICAsIG1fcmVmQ291bnQoMSkKQEAgLTIyMiw5ICsyMTgsOCBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgfQogICAgIAogICAgIC8vIENvbnN0cnVjdCBhIG5vZGUgd2l0aCBhIHZhcmlhYmxl
IG51bWJlciBvZiBjaGlsZHJlbiBhbmQgdHdvIGltbWVkaWF0ZSB2YWx1ZXMuCi0gICAgTm9kZShW
YXJBcmdUYWcsIE5vZGVUeXBlIG9wLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIE9wSW5mbyBpbW0x
LCBPcEluZm8gaW1tMiwgdW5zaWduZWQgZmlyc3RDaGlsZCwgdW5zaWduZWQgbnVtQ2hpbGRyZW4p
Ci0gICAgICAgIDogY29kZU9yaWdpbihjb2RlT3JpZ2luKQotICAgICAgICAsIGNvZGVPcmlnaW5G
b3JFeGl0VGFyZ2V0KGNvZGVPcmlnaW4pCisgICAgTm9kZShWYXJBcmdUYWcsIE5vZGVUeXBlIG9w
LCBOb2RlT3JpZ2luIG5vZGVPcmlnaW4sIE9wSW5mbyBpbW0xLCBPcEluZm8gaW1tMiwgdW5zaWdu
ZWQgZmlyc3RDaGlsZCwgdW5zaWduZWQgbnVtQ2hpbGRyZW4pCisgICAgICAgIDogb3JpZ2luKG5v
ZGVPcmlnaW4pCiAgICAgICAgICwgY2hpbGRyZW4oQWRqYWNlbmN5TGlzdDo6VmFyaWFibGUsIGZp
cnN0Q2hpbGQsIG51bUNoaWxkcmVuKQogICAgICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKFZpcnR1
YWxSZWdpc3RlcigpKQogICAgICAgICAsIG1fcmVmQ291bnQoMSkKQEAgLTMzMiw3ICszMjcsNyBA
QCBzdHJ1Y3QgTm9kZSB7CiAgICAgYm9vbCBpc1N0cm9uZ2x5UHJvdmVkQ29uc3RhbnRJbihJbmxp
bmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIHJldHVybiAhIShm
bGFncygpICYgTm9kZUlzU3RhdGljQ29uc3RhbnQpCi0gICAgICAgICAgICAmJiBjb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZSA9PSBpbmxpbmVDYWxsRnJhbWU7CisgICAgICAgICAgICAmJiBvcmln
aW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lID09IGlubGluZUNhbGxGcmFtZTsKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBpc1N0cm9uZ2x5UHJvdmVkQ29uc3RhbnRJbihjb25zdCBDb2RlT3JpZ2lu
JiBjb2RlT3JpZ2luKQpAQCAtMTUzNywxMiArMTUzMiw5IEBAIHN0cnVjdCBOb2RlIHsKICAgICB9
CiAgICAgCiAgICAgLy8gTkIuIFRoaXMgY2xhc3MgbXVzdCBoYXZlIGEgdHJpdmlhbCBkZXN0cnVj
dG9yLgotICAgIAotICAgIC8vIFVzZWQgZm9yIGRldGVybWluaW5nIHdoYXQgYnl0ZWNvZGUgdGhp
cyBjYW1lIGZyb20uIFRoaXMgaXMgaW1wb3J0YW50IGZvcgotICAgIC8vIGRlYnVnZ2luZywgZXhj
ZXB0aW9ucywgYW5kIGV2ZW4gYmFzaWMgZXhlY3V0aW9uIHNlbWFudGljcy4KLSAgICBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW47Ci0gICAgLy8gQ29kZSBvcmlnaW4gZm9yIHdoZXJlIHRoZSBub2RlIGV4
aXRzIHRvLgotICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbkZvckV4aXRUYXJnZXQ7CisKKyAgICBO
b2RlT3JpZ2luIG9yaWdpbjsKKwogICAgIC8vIFJlZmVyZW5jZXMgdG8gdXAgdG8gMyBjaGlsZHJl
biwgb3IgbGlua3MgdG8gYSB2YXJpYWJsZSBsZW5ndGggc2V0IG9mIGNoaWxkcmVuLgogICAgIEFk
amFjZW5jeUxpc3QgY2hpbGRyZW47CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZU9yaWdpbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR05vZGVP
cmlnaW5faAorI2RlZmluZSBERkdOb2RlT3JpZ2luX2gKKworI2lmIEVOQUJMRShERkdfSklUKQor
CisjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CisKK3N0cnVjdCBOb2RlT3JpZ2luIHsKKyAgICBOb2RlT3JpZ2luKCkgeyB9CisgICAgCisg
ICAgZXhwbGljaXQgTm9kZU9yaWdpbihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCisgICAgICAgIDog
c2VtYW50aWMoY29kZU9yaWdpbikKKyAgICAgICAgLCBmb3JFeGl0KGNvZGVPcmlnaW4pCisgICAg
eworICAgIH0KKyAgICAKKyAgICBOb2RlT3JpZ2luKENvZGVPcmlnaW4gc2VtYW50aWMsIENvZGVP
cmlnaW4gZm9yRXhpdCkKKyAgICAgICAgOiBzZW1hbnRpYyhzZW1hbnRpYykKKyAgICAgICAgLCBm
b3JFeGl0KGZvckV4aXQpCisgICAgeworICAgIH0KKyAgICAKKyAgICAvLyBVc2VkIGZvciBkZXRl
cm1pbmluZyB3aGF0IGJ5dGVjb2RlIHRoaXMgY2FtZSBmcm9tLiBUaGlzIGlzIGltcG9ydGFudCBm
b3IKKyAgICAvLyBkZWJ1Z2dpbmcsIGV4Y2VwdGlvbnMsIGFuZCBldmVuIGJhc2ljIGV4ZWN1dGlv
biBzZW1hbnRpY3MuCisgICAgQ29kZU9yaWdpbiBzZW1hbnRpYzsKKyAgICAvLyBDb2RlIG9yaWdp
biBmb3Igd2hlcmUgdGhlIG5vZGUgZXhpdHMgdG8uCisgICAgQ29kZU9yaWdpbiBmb3JFeGl0Owor
fTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCisKKyNlbmRpZiAvLyBERkdOb2RlT3JpZ2luX2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223926</attachid>
            <date>2014-02-11 18:34:50 -0800</date>
            <delta_ts>2014-02-11 18:45:08 -0800</delta_ts>
            <desc>more!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>167376</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjM5MTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCw3IEBACiAJCTBGMkZDQ0ZEMThBNjAw
NzAwMDFBMjdGOCAvKiBERkdTY2FubmFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkZDQ0Y2MThBNjAwNzAwMDFBMjdGOCAvKiBERkdTY2FubmFi
bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjJGQ0NGRTE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJGQ0NGNzE4QTYwMDcwMDAxQTI3
RjggLyogREZHVGhyZWFkRGF0YS5jcHAgKi87IH07CiAJCTBGMkZDQ0ZGMThBNjAwNzAwMDFBMjdG
OCAvKiBERkdUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjJGQ0NGODE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhyZWFkRGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMzAwQjc4
MThBQjA1MTEwMEE2RDcyRSAvKiBERkdOb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMwMEI3NzE4QUIwNTExMDBBNkQ3MkUgLyogREZH
Tm9kZU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMzRCMTQ5MTZENDIwMTAwMDFDREE1QSAvKiBERkdVc2VLaW5kLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzRCMTQ3MTZENDIwMEUw
MDFDREE1QSAvKiBERkdVc2VLaW5kLmNwcCAqLzsgfTsKIAkJMEYzNEIxNEExNkQ0MjAxMzAwMUNE
QTVBIC8qIERGR1VzZUtpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMzRCMTQ4MTZENDIwMEUwMDFDREE1QSAvKiBERkdVc2VLaW5kLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYzNEIxNEMxNkQ0
M0UwRDAwMUNEQTVBIC8qIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNEIxNEIxNkQ0M0UwQzAw
MUNEQTVBIC8qIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjY0LDYgKzE2NjUsNyBAQAog
CQkwRjJGQ0NGNjE4QTYwMDcwMDAxQTI3RjggLyogREZHU2Nhbm5hYmxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1NjYW5uYWJsZS5oOyBwYXRoID0gZGZnL0RGR1NjYW5u
YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJGQ0NGNzE4QTYwMDcwMDAx
QTI3RjggLyogREZHVGhyZWFkRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdUaHJlYWREYXRhLmNwcDsgcGF0aCA9IGRmZy9ERkdUaHJlYWREYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRkNDRjgxOEE2MDA3MDAwMUEyN0Y4IC8q
IERGR1RocmVhZERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVGhy
ZWFkRGF0YS5oOyBwYXRoID0gZGZnL0RGR1RocmVhZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYzMDBCNzcxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZU9yaWdpbi5oOyBwYXRoID0g
ZGZnL0RGR05vZGVPcmlnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzNEIx
NDcxNkQ0MjAwRTAwMUNEQTVBIC8qIERGR1VzZUtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHVXNlS2luZC5jcHA7IHBhdGggPSBkZmcvREZHVXNlS2luZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMzRCMTQ4MTZENDIwMEUwMDFDREE1
QSAvKiBERkdVc2VLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1Vz
ZUtpbmQuaDsgcGF0aCA9IGRmZy9ERkdVc2VLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMzRCMTRCMTZENDNFMEMwMDFDREE1QSAvKiBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9seW1vcnBoaWNB
Y2Nlc3NTdHJ1Y3R1cmVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjYw
LDYgKzQyNjIsNyBAQAogCQkJCTBGQjRCNTFGMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdOb2RlQWxs
b2NhdG9yLmggKi8sCiAJCQkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFn
cy5jcHAgKi8sCiAJCQkJMEZBNTgxQjgxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5o
ICovLAorCQkJCTBGMzAwQjc3MThBQjA1MTEwMEE2RDcyRSAvKiBERkdOb2RlT3JpZ2luLmggKi8s
CiAJCQkJMEZBNTgxQjkxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmggKi8sCiAJCQkJ
ODZFQzlEQkYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuY3BwICovLAogCQkJCTg2
RUM5REMwMTMyOERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmggKi8sCkBAIC00ODAxLDYg
KzQ4MDQsNyBAQAogCQkJCTk1RTNCQzA1MEUxQUU2ODIwMEIyRDFDMSAvKiBDYWxsSWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1QjRGIC8qIENhbGxM
aW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyOUUxNENBN0RDNTAwODVGM0M2IC8q
IENhbGxMaW5rU3RhdHVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjMwMEI3ODE4QUIwNTExMDBB
NkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJD
Rjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjI0RTU0MjE3RUE5RjU5MDBBQkIyMTcgLyogQ0NhbGxIZWxwZXJzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzZBQUFFNTBFMUY0MjY1MDBBRDg3RDggLyogQ2xhc3NJbmZv
LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE2Mzkx
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6CiB7CiAgICAgSlNWYWx1ZSBjaGlsZENvbnN0ID0gdmFs
dWUudmFsdWUoKTsKICAgICBpZiAoY2hpbGRDb25zdCkgewotICAgICAgICBpZiAoY2hpbGRDb25z
dC50b0Jvb2xlYW4obV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2lu
KS0+Z2xvYmFsRXhlYygpKSkKKyAgICAgICAgaWYgKGNoaWxkQ29uc3QudG9Cb29sZWFuKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2xvYmFsRXhl
YygpKSkKICAgICAgICAgICAgIHJldHVybiBEZWZpbml0ZWx5VHJ1ZTsKICAgICAgICAgcmV0dXJu
IERlZmluaXRlbHlGYWxzZTsKICAgICB9CkBAIC02Nyw3ICs2Nyw3IEBAIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjoKICAgICBpZiAoaXNDZWxsU3BlY3VsYXRpb24odmFs
dWUubV90eXBlKQogICAgICAgICAmJiB2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5oYXNT
aW5nbGV0b24oKSkgewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLm1fY3Vy
cmVudEtub3duU3RydWN0dXJlLnNpbmdsZXRvbigpOwotICAgICAgICBpZiAoIXN0cnVjdHVyZS0+
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
PmNvZGVPcmlnaW4pKQorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+bWFzcXVlcmFkZXNBc1VuZGVm
aW5lZChtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
CiAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpICE9IFN0cmluZ1R5
cGUpCiAgICAgICAgICAgICByZXR1cm4gRGVmaW5pdGVseVRydWU7CiAgICAgfQpAQCAtMzQzLDcg
KzM0Myw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAg
ICAgCiAgICAgY2FzZSBWYWx1ZUFkZDogewogICAgICAgICBBU1NFUlQobm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IFVudHlwZWRVc2UpOwotICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9y
aWdpbiwgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNTdHJpbmcgfCBTcGVjQnl0ZWNvZGVOdW1iZXIpOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC03ODIsNyArNzgyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgIGNhc2UgSXNGdW5jdGlvbjogewogICAgICAgICBub2RlLT5zZXRDYW5FeGl0KAogICAg
ICAgICAgICAgbm9kZS0+b3AoKSA9PSBJc1VuZGVmaW5lZAotICAgICAgICAgICAgJiYgbV9ncmFw
aC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZChub2RlLT5jb2Rl
T3JpZ2luKSk7CisgICAgICAgICAgICAmJiBtX2dyYXBoLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRX
YXRjaHBvaW50SXNTdGlsbFZhbGlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpOwogICAgICAgICBK
U1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAg
aWYgKGNoaWxkKSB7CiAgICAgICAgICAgICBib29sIGNvbnN0YW50V2FzU2V0ID0gdHJ1ZTsKQEAg
LTc5MCw3ICs3OTAsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgICAgICBjYXNlIElzVW5kZWZpbmVkOgogICAgICAgICAgICAgICAgIHNldENvbnN0
YW50KG5vZGUsIGpzQm9vbGVhbigKICAgICAgICAgICAgICAgICAgICAgY2hpbGQuaXNDZWxsKCkK
LSAgICAgICAgICAgICAgICAgICAgPyBjaGlsZC5hc0NlbGwoKS0+c3RydWN0dXJlKCktPm1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2Rl
T3JpZ2luKSkKKyAgICAgICAgICAgICAgICAgICAgPyBjaGlsZC5hc0NlbGwoKS0+c3RydWN0dXJl
KCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKQogICAgICAgICAgICAgICAgICAgICA6IGNoaWxkLmlzVW5k
ZWZpbmVkKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgSXNC
b29sZWFuOgpAQCAtODI2LDcgKzgyNiw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLnZhbHVlKCk7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIGFic3RyYWN0Q2hpbGQgPSBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKGNoaWxkKSB7Ci0gICAgICAgICAgICBK
U1ZhbHVlIHR5cGVTdHJpbmcgPSBqc1R5cGVTdHJpbmdGb3JWYWx1ZSgqdm0sIG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiksIGNoaWxkKTsKKyAgICAgICAgICAg
IEpTVmFsdWUgdHlwZVN0cmluZyA9IGpzVHlwZVN0cmluZ0ZvclZhbHVlKCp2bSwgbV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBjaGlsZCk7CiAgICAg
ICAgICAgICBzZXRDb25zdGFudChub2RlLCB0eXBlU3RyaW5nKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC05ODksNyArOTg5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpHZW5lcmljOgotICAgICAg
ICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7CisgICAg
ICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQp
OwogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OlN0cmluZzoKQEAgLTEwMDQsNyArMTAwNCw3IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAg
ICAvLyBpbXBsaWVzIGFuIGluLWJvdW5kcyBhY2Nlc3MpLiBOb25lIG9mIHRoaXMgZmVlbHMgbGlr
ZSBpdCdzIHdvcnRoIGl0LAogICAgICAgICAgICAgICAgIC8vIHNvIHdlJ3JlIGdvaW5nIHdpdGgg
VE9QIGZvciBub3cuIFRoZSBzYW1lIHRoaW5nIGFwcGxpZXMgdG8KICAgICAgICAgICAgICAgICAv
LyBjbG9iYmVyaW5nIHRoZSB3b3JsZC4KLSAgICAgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9k
ZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgICAgICAgICBjbG9iYmVyV29y
bGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwogICAgICAgICAgICAgICAg
IGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGgubV92bS5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpOwpAQCAtMTAxNCwxNCArMTAxNCwxNCBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBcnJheTo6SW50MzI6CiAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRP
ZkJvdW5kcygpKSB7Ci0gICAgICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmln
aW4sIGNsb2JiZXJMaW1pdCk7CisgICAgICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2Rl
KCkuaXNPdXRPZkJvdW5kcygpKSB7Ci0gICAgICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUt
PmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7CisgICAgICAgICAgICAgICAgY2xvYmJlcldvcmxk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUt
PmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKFNwZWNEb3VibGUpOwpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0
b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2U6CiAgICAgICAg
ICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kcygpKQotICAgICAgICAgICAg
ICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOworICAgICAg
ICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1p
dCk7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6SW50OEFycmF5OgpAQCAtMTA4MywyNCArMTA4
MywyNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAg
ICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQXJyYXk6OkdlbmVyaWM6Ci0gICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+
Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBBcnJheTo6SW50MzI6CiAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2Rl
KCkuaXNPdXRPZkJvdW5kcygpKQotICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5j
b2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOworICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5
TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkKLSAgICAgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9k
ZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgICAgICAgICBjbG9iYmVyV29y
bGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAgICAgICAgIGNhc2UgQXJyYXk6
OkFycmF5U3RvcmFnZToKICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9m
Qm91bmRzKCkpCi0gICAgICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4s
IGNsb2JiZXJMaW1pdCk7CisgICAgICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOgogICAgICAgICAgICAgaWYgKG5vZGUtPmFy
cmF5TW9kZSgpLm1heVN0b3JlVG9Ib2xlKCkpCi0gICAgICAgICAgICAgICAgY2xvYmJlcldvcmxk
KG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7CisgICAgICAgICAgICAgICAgY2xvYmJl
cldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTEwLDEz
ICsxMTEwLDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAg
ICAgICAgICAgIAogICAgIGNhc2UgQXJyYXlQdXNoOgogICAgICAgICBub2RlLT5zZXRDYW5FeGl0
KHRydWUpOwotICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxp
bWl0KTsKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJl
ckxpbWl0KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNCeXRlY29kZU51bWJl
cik7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBBcnJheVBvcDoKICAg
ICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKLSAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUt
PmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFr
ZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTEyMDAsNyArMTIw
MCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAg
Ly8gVG9QcmltaXRpdmUgd2lsbCBjdXJyZW50bHkgZm9yZ2V0IHN0cmluZyBjb25zdGFudHMuIEJ1
dCB0aGF0J3Mgbm90IGEgYmlnCiAgICAgICAgIC8vIGRlYWwgc2luY2Ugd2UgZG9uJ3QgZG8gYW55
IG9wdGltaXphdGlvbiBvbiB0aG9zZSBjdXJyZW50bHkuCiAgICAgICAgIAotICAgICAgICBjbG9i
YmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgY2xvYmJl
cldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgCiAg
ICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBzb3VyY2UubV90eXBlOwogICAgICAgICBpZiAo
dHlwZSAmIH4oU3BlY0Z1bGxOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xlYW4pKQpAQCAt
MTIxOSw3ICsxMjE5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAgICAgLy8gc3RydWN0dXJlLgogICAgICAgICAgICAgZmlsdGVyKAogICAgICAg
ICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLAotICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSk7Cisg
ICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgbm9kZS0+c2V0Q2Fu
RXhpdCh0cnVlKTsgLy8gV2UgY291bGQgYmUgbW9yZSBwcmVjaXNlIGJ1dCBpdCdzIGxpa2VseSBu
b3Qgd29ydGggaXQuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdHJpbmdPclN0
cmluZ09iamVjdFVzZToKQEAgLTEyMjcsNyArMTIyNyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENl
bGxVc2U6CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKLSAgICAgICAgICAgIGNsb2JiZXJXb3Js
ZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOworICAgICAgICAgICAgY2xvYmJlcldv
cmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTEyNDcsNyArMTI0Nyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHkKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXQoCiAgICAgICAgICAgICBtX2dyYXBoLAotICAgICAgICAgICAgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPmFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpOworICAg
ICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4
aW5nVHlwZSgpKSk7CiAgICAgICAgIG1fc3RhdGUuc2V0SGF2ZVN0cnVjdHVyZXModHJ1ZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgICAgICAKQEAgLTEyNTUsNyArMTI1NSw3IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0
cnVlKTsKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoCiAgICAgICAgICAgICBtX2dyYXBoLAot
ICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGlu
Z1R5cGUoKSkpOworICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgIG1fc3RhdGUuc2V0SGF2ZVN0cnVj
dHVyZXModHJ1ZSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC0xMjcwLDcgKzEyNzAsNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGNhc2UgSW50MzJV
c2U6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgotICAgICAg
ICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7CisgICAg
ICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTI3OCwxMyArMTI3OCwxMyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIH0KICAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXQoCiAgICAgICAgICAgICBtX2dyYXBoLAotICAgICAgICAgICAgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPnR5cGVkQXJyYXlTdHJ1Y3R1cmUo
CisgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLT50eXBlZEFycmF5U3RydWN0dXJlKAogICAgICAgICAgICAgICAgIG5vZGUtPnR5cGVkQXJy
YXlUeXBlKCkpKTsKICAgICAgICAgbV9zdGF0ZS5zZXRIYXZlU3RydWN0dXJlcyh0cnVlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIE5ld1JlZ2V4cDoKLSAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
Y29kZU9yaWdpbiktPnJlZ0V4cFN0cnVjdHVyZSgpKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICBtX3N0YXRlLnNldEhhdmVTdHJ1Y3R1cmVz
KHRydWUpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtMTI5Miw3ICsxMjkyLDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBBYnN0
cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgQWJz
dHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSBmb3JOb2RlKG5vZGUpOwogICAgICAgICAgICAgCi0g
ICAgICAgIGlmIChtX2dyYXBoLmV4ZWN1dGFibGVGb3Iobm9kZS0+Y29kZU9yaWdpbiktPmlzU3Ry
aWN0TW9kZSgpKQorICAgICAgICBpZiAobV9ncmFwaC5leGVjdXRhYmxlRm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgZGVzdGluYXRpb24ubWFr
ZUhlYXBUb3AoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IHNv
dXJjZTsKQEAgLTEzMTgsNyArMTMxOCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgogICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldCgKLSAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPmFjdGl2YXRpb25TdHJ1Y3R1cmUoKSk7
CisgICAgICAgICAgICBtX2dyYXBoLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmFjdGl2YXRpb25TdHJ1Y3R1cmUoKSk7CiAgICAgICAgIG1fc3Rh
dGUuc2V0SGF2ZVN0cnVjdHVyZXModHJ1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKQEAg
LTEzNDAsNyArMTM0MCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKICAgICAgICAgaWYgKGlzRW1w
dHlTcGVjdWxhdGlvbigKICAgICAgICAgICAgICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJh
bmQoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9k
ZS0+Y29kZU9yaWdpbikub2Zmc2V0KCkpLm1fdHlwZSkpCisgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS5vZmZzZXQo
KSkubV90eXBlKSkKICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CkBAIC0x
MzUxLDIxICsxMzUxLDIxIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgLy8gdGhlIGFyZ3VtZW50cyBhIGJpdC4gTm90ZSB0aGF0IHRoaXMgaXMgbm90
IHN1ZmZpY2llbnQgdG8gZm9yY2UgY29uc3RhbnQgZm9sZGluZwogICAgICAgICAvLyBvZiBHZXRN
eUFyZ3VtZW50c0xlbmd0aCwgYmVjYXVzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aCBpcyBhIGNsb2Ji
ZXJpbmcgb3BlcmF0aW9uLgogICAgICAgICAvLyBXZSBwZXJmb3JtIGZ1cnRoZXIgb3B0aW1pemF0
aW9ucyBvbiB0aGlzIGxhdGVyIG9uLgotICAgICAgICBpZiAobm9kZS0+Y29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUpIHsKKyAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWUpIHsKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KAotICAgICAgICAgICAg
ICAgIG1fZ3JhcGgsIGpzTnVtYmVyKG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHMuc2l6ZSgpIC0gMSkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgsIGpzTnVtYmVy
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkg
LSAxKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNJbnQzMik7CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQoCiAgICAgICAgICAgICAhaXNF
bXB0eVNwZWN1bGF0aW9uKAogICAgICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3Bl
cmFuZCgKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihu
b2RlLT5jb2RlT3JpZ2luKSkubV90eXBlKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
YXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkubV90eXBlKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoU2Fm
ZToKICAgICAgICAgLy8gVGhpcyBwb3RlbnRpYWxseSBjbG9iYmVycyBhbGwgc3RydWN0dXJlcyBp
ZiB0aGUgYXJndW1lbnRzIG9iamVjdCBoYWQgYSBnZXR0ZXIKICAgICAgICAgLy8gaW5zdGFsbGVk
IG9uIHRoZSBsZW5ndGggcHJvcGVydHkuCi0gICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2Rl
T3JpZ2luLCBjbG9iYmVyTGltaXQpOworICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwogICAgICAgICAvLyBXZSBjdXJyZW50bHkgbWFrZSBu
byBndWFyYW50ZWUgYWJvdXQgd2hhdCB0aGlzIHJldHVybnMgYmVjYXVzZSBpdCBkb2VzIG5vdAog
ICAgICAgICAvLyBzcGVjdWxhdGUgdGhhdCB0aGUgbGVuZ3RoIHByb3BlcnR5IGlzIGFjdHVhbGx5
IGEgbGVuZ3RoLgogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CkBAIC0xMzgz
LDcgKzEzODMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAg
ICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIC8vIFRoaXMgcG90ZW50aWFs
bHkgY2xvYmJlcnMgYWxsIHN0cnVjdHVyZXMgaWYgdGhlIHByb3BlcnR5IHdlJ3JlIGFjY2Vzc2lu
ZyBoYXMKICAgICAgICAgLy8gYSBnZXR0ZXIuIFdlIGRvbid0IHNwZWN1bGF0ZSBhZ2FpbnN0IHRo
aXMuCi0gICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQp
OworICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGlt
aXQpOwogICAgICAgICAvLyBBbmQgdGhlIHJlc3VsdCBpcyB1bmtub3duLgogICAgICAgICBmb3JO
b2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTQwNCw3ICsxNDA0
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2Ug
TmV3RnVuY3Rpb25FeHByZXNzaW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb25Ob0NoZWNrOgogICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldCgKLSAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPmZ1bmN0aW9uU3RydWN0dXJlKCkp
OworICAgICAgICAgICAgbV9ncmFwaCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgICAgIAogICAgIGNhc2UgR2V0Q2FsbGVlOgpAQCAtMTQzNiw3ICsxNDM2LDcgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIAogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKLSAgICAgICAgY2xvYmJlckNhcHR1
cmVkVmFycyhub2RlLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgY2xvYmJlckNhcHR1cmVkVmFycyhu
b2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAg
IGNhc2UgR2V0QnlJZDoKQEAgLTE0NjksNyArMTQ2OSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJM
aW1pdCk7CisgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2Ji
ZXJMaW1pdCk7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKQEAgLTE2NjksNyArMTY2OSw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0
dXJlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuYmVzdFByb3ZlblN0cnVjdHVyZSgpKSB7CiAg
ICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3IoCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZtLAotICAgICAgICAgICAgICAgIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLAorICAgICAgICAgICAgICAgIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCiAgICAgICAgICAg
ICAgICAgc3RydWN0dXJlLAogICAgICAgICAgICAgICAgIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtu
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCldLAogICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0g
UHV0QnlJZERpcmVjdCk7CkBAIC0xNjg3LDEzICsxNjg3LDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwg
Y2xvYmJlckxpbWl0KTsKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgSW46
CiAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZGV0ZXJtaW5lIHdoZW4gdGhlIHByb3BlcnR5IGRl
ZmluaXRlbHkgZXhpc3RzIGJhc2VkIG9uIGFic3RyYWN0CiAgICAgICAgIC8vIHZhbHVlIGluZm9y
bWF0aW9uLgotICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxp
bWl0KTsKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJl
ckxpbWl0KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTE3NDEsNyArMTc0MSw3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIENhbGw6CiAgICAgY2Fz
ZSBDb25zdHJ1Y3Q6CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7Ci0gICAgICAgIGNs
b2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOworICAgICAgICBjbG9i
YmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwogICAgICAgICBm
b3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzU2lt
cGxpZmljYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIHNvdXJjZSA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAgICAgICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50
c1JlZ2lzdGVyID0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudW5jaGVja2VkQXJn
dW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9yaWdpbik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLnVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UtPm9wKCkgIT0gQ3JlYXRl
QXJndW1lbnRzICYmIHNvdXJjZS0+b3AoKSAhPSBQaGFudG9tQXJndW1lbnRzKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc291cmNlIG9mIHRoZSBTZXRM
b2NhbCBrbm93cyB0aGF0IGlmIGl0J3MKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgdmFy
aWFibGUgdGhhdCB3ZSB0aGluayBpcyBhbGlhc2VkIHRvIHRoZSBhcmd1bWVudHMsIHRoZW4gaXQK
QEAgLTIyMCw3ICsyMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
YXJndW1lbnRzUmVnaXN0ZXIuaXNWYWxpZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JiYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKSA9PSBhcmd1bWVudHNSZWdpc3RlcgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCB2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2Fs
KCkgPT0gdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NyZWF0ZXNBcmd1bWVudHMuYWRkKG5vZGUt
PmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2NyZWF0ZXNBcmd1bWVudHMuYWRkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxs
RnJhbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogCkBAIC0yMzIsMTkgKzIzMiwxOSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBBcmd1bWVudHNBbGlhc2luZ0RhdGEmIGRhdGEgPQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzQWxpYXNpbmcuZmluZCh2YXJpYWJsZUFjY2Vzc0Rh
dGEpLT52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVyZ2VOb25Bcmd1bWVu
dHNBc3NpZ25tZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLm1lcmdlQ2FsbENv
bnRleHQobm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxp
bmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c1JlZ2lzdGVyLmlz
VmFsaWQoKQogICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+
bG9jYWwoKSA9PSBhcmd1bWVudHNSZWdpc3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHx8IHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKSA9PSB1bm1vZGlmaWVkQXJndW1lbnRzUmVn
aXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lID09IHNvdXJjZS0+Y29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3JpZ2lu
LnNlbWFudGljLmlubGluZUNhbGxGcmFtZSA9PSBzb3VyY2UtPm9yaWdpbi5zZW1hbnRpYy5pbmxp
bmVDYWxsRnJhbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX2NyZWF0ZXNBcmd1bWVudHMuYWRkKHNvdXJjZS0+Y29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9jcmVhdGVzQXJn
dW1lbnRzLmFkZChzb3VyY2UtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtX2NyZWF0ZXNBcmd1bWVudHMuYWRkKHNvdXJjZS0+Y29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9jcmVh
dGVzQXJndW1lbnRzLmFkZChzb3VyY2UtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUp
OwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgQXJndW1lbnRzQWxpYXNpbmdEYXRhJiBkYXRhID0KQEAgLTI1
Miw4ICsyNTIsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVyZ2VBcmd1
bWVudHNBc3NpZ25tZW50KCk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZW5zdXJlcyB0
aGF0IHRoZSB2YXJpYWJsZSdzIHVzZXMgYXJlIGluIHRoZSBzYW1lIGNvbnRleHQgYXMKICAgICAg
ICAgICAgICAgICAgICAgLy8gdGhlIGFyZ3VtZW50cyBpdCBpcyBhbGlhc2luZy4KLSAgICAgICAg
ICAgICAgICAgICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0KG5vZGUtPmNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0KHNv
dXJjZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgICAgICAgICBk
YXRhLm1lcmdlQ2FsbENvbnRleHQobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFt
ZSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEubWVyZ2VDYWxsQ29udGV4dChzb3VyY2UtPm9y
aWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApAQCAtMjY0LDcgKzI2
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICBBcmd1bWVudHNBbGlhc2luZ0RhdGEmIGRhdGEgPQogICAgICAgICAgICAgICAg
ICAgICAgICAgbV9hcmd1bWVudHNBbGlhc2luZy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnZh
bHVlOwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1lcmdlQ2FsbENvbnRleHQobm9kZS0+Y29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgICAgICAgICBkYXRhLm1lcmdl
Q2FsbENvbnRleHQobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSk7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgCkBAIC0yNzQsNyArMjc0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIEFyZ3VtZW50c0FsaWFzaW5nRGF0YSYgZGF0
YSA9CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50c0FsaWFzaW5nLmZpbmQodmFy
aWFibGVBY2Nlc3NEYXRhKS0+dmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubWVyZ2VD
YWxsQ29udGV4dChub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CisgICAgICAgICAg
ICAgICAgICAgIGRhdGEubWVyZ2VDYWxsQ29udGV4dChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5s
aW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
IC8vIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhIGZsdXNoIHRoZW4gYnkgZGVmaW5pdGlvbiBp
dCBlc2NhcGVzLgogICAgICAgICAgICAgICAgICAgICBkYXRhLmVzY2FwZXMgPSB0cnVlOwpAQCAt
Mjg4LDcgKzI4OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgQXJndW1lbnRzQWxp
YXNpbmdEYXRhJiBkYXRhID0KICAgICAgICAgICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzQWxp
YXNpbmcuZmluZCh2YXJpYWJsZUFjY2Vzc0RhdGEpLT52YWx1ZTsKICAgICAgICAgICAgICAgICAg
ICAgZGF0YS5tZXJnZU5vbkFyZ3VtZW50c0Fzc2lnbm1lbnQoKTsKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0KG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0KG5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApAQCAtMzc0LDcgKzM3NCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc1ZhbGlkKCkpCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IG1fY3JlYXRlc0FyZ3VtZW50cy5hZGQoc291cmNlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZSk7CisgICAgICAgICAgICAgICAgbV9jcmVhdGVzQXJndW1lbnRzLmFkZChzb3VyY2UtPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIApAQCAtMzkyLDEzICszOTIsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBpZiAoc291cmNlLT5vcCgpICE9IENyZWF0ZUFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
aWYgKG1fY3JlYXRlc0FyZ3VtZW50cy5jb250YWlucyhzb3VyY2UtPmNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fY3JlYXRlc0FyZ3VtZW50cy5j
b250YWlucyhzb3VyY2UtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9yaWdp
bikgPT0gdmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpCi0gICAgICAgICAgICAgICAgICAgICAg
ICB8fCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIobV9ncmFwaC5hcmd1bWVudHNSZWdpc3Rl
ckZvcihub2RlLT5jb2RlT3JpZ2luKSkgPT0gdmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpKQor
ICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpID09IHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKQorICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKG1fZ3JhcGgu
YXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkgPT0gdmFyaWFibGVB
Y2Nlc3NEYXRhLT5sb2NhbCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VJc0FyZ3VtZW50
c0FsaWFzKHRydWUpKSB7CkBAIC00MjEsNyArNDIxLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+aXND
YXB0dXJlZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhbV9hcmd1bWVudHNBbGlhc2lu
Zy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnZhbHVlLmlzVmFsaWQoKQotICAgICAgICAgICAg
ICAgICAgICAgICAgfHwgbV9jcmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKG5vZGUtPmNvZGVPcmln
aW4uaW5saW5lQ2FsbEZyYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IG1fY3JlYXRl
c0FyZ3VtZW50cy5jb250YWlucyhub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1l
KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ2
OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNl
cnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwg
UGhhbnRvbSwgbm9kZS0+Y29kZU9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2lu
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICBub2RlLT5jaGlsZDEoKSA9IG5vZGUtPmNoaWxkMigpOwogICAgICAgICAgICAgICAgICAg
ICBub2RlLT5jaGlsZDIoKSA9IEVkZ2UoKTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+Y29kZU9yaWdp
biwgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2Nr
LCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IEVk
Z2UoKTsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoR2V0
TXlBcmd1bWVudHNMZW5ndGgpOwpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoK
ICAgICAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoU2FmZTogewotICAgICAg
ICAgICAgICAgICAgICBpZiAobV9jcmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKG5vZGUtPmNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobV9jcmVh
dGVzQXJndW1lbnRzLmNvbnRhaW5zKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJh
bWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBHZXRN
eUFyZ3VtZW50c0xlbmd0aFNhZmUpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgIH0KQEAgLTUwNiwyNCArNTA2LDI0IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4gPSBub2RlLT5jb2RlT3JpZ2luOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgICAgICAgICBOb2RlT3JpZ2lu
IG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFvcmlnaW4u
c2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAvLyBXZSBrbm93IGV4
YWN0bHkgd2hhdCB0aGlzIHdpbGwgcmV0dXJuLiBCdXQgb25seSBhZnRlciB3ZSBoYXZlIGNoZWNr
ZWQKICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBub2JvZHkgaGFzIGVzY2FwZWQgb3VyIGFy
Z3VtZW50cy4KICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVja0FyZ3Vt
ZW50c05vdENyZWF0ZWQsIGNvZGVPcmlnaW4pOworICAgICAgICAgICAgICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkLCBvcmlnaW4pOwog
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0
VG9Db25zdGFudCgKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUsIGpzTnVtYmVyKGNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZSwganNOdW1iZXIob3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpKTsKICAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50
QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxTYWZlOiB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMobm9kZS0+
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICht
X2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNh
bGxGcmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09
IEdldE15QXJndW1lbnRCeVZhbFNhZmUpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTUzMSw3ICs1MzEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChHZXRNeUFyZ3VtZW50QnlWYWwpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5s
aW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCktPmhhc0NvbnN0YW50KCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTU0MSw3ICs1NDEsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QgaW5kZXggPSB2YWx1ZS5hc0ludDMyKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChpbmRleCA8IDAKICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXRp
Y19jYXN0PHNpemVfdD4oaW5kZXggKyAxKSA+PQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgd2hp
Y2ggYXJndW1lbnQgdGhpcyBpcyBhY2Nlc3NpbmcuIEJ1dCBvbmx5IGFmdGVyIHdlIGhhdmUgY2hl
Y2tlZApAQCAtNTUzLDI2ICs1NTMsMjUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAv
LyBoYXMgcnVuIC0gdGhlcmVmb3JlIGl0IG1ha2VzIGxpdHRsZSBzZW5zZSB0byBsaW5rIHRoZSBH
ZXRMb2NhbCBvcGVyYXRpb24KICAgICAgICAgICAgICAgICAgICAgLy8gaW50byB0aGUgVmFyaWFi
bGVBY2Nlc3NEYXRhIGFuZCBQaGkgZ3JhcGhzLgogCi0gICAgICAgICAgICAgICAgICAgIENvZGVP
cmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPmNvZGVPcmlnaW47CisgICAgICAgICAgICAgICAgICAg
IE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOwogICAgICAgICAgICAgICAgICAgICBB
ZGphY2VuY3lMaXN0IGNoaWxkcmVuID0gbm9kZS0+Y2hpbGRyZW47CiAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9HZXRMb2NhbFVubGlua2Vk
KAogICAgICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5iYXNlbGluZUNvZGVC
bG9ja0Zvcihub2RlLT5jb2RlT3JpZ2luKS0+YXJndW1lbnRJbmRleEFmdGVyQ2FwdHVyZShpbmRl
eCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihvcmlnaW4uc2VtYW50aWMpLT5hcmd1bWVudEluZGV4
QWZ0ZXJDYXB0dXJlKGluZGV4KSkpOwogCiAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNl
dC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVj
Tm9uZSwgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y29kZU9yaWdpbik7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNO
b25lLCBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQsIG9yaWdpbik7CiAgICAgICAgICAgICAgICAg
ICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgY29kZU9yaWdpbiwgY2hpbGRyZW4pOworICAg
ICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgb3Jp
Z2luLCBjaGlsZHJlbik7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIFRlYXJP
ZmZBcmd1bWVudHM6IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fY3JlYXRlc0FyZ3VtZW50
cy5jb250YWlucyhub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkpCisgICAgICAgICAg
ICAgICAgICAgIGlmIChtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMobm9kZS0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb1BoYW50b20oKTsKQEAgLTU5OSwxMCArNTk4LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAvLyBQaGFudG9tQXJndW1lbnRzIGlzIGEgbm9uLWV4ZWN1dGluZyBub2RlIHRoYXQganVz
dCBpbmRpY2F0ZXMKICAgICAgICAgICAgICAgICAvLyB0aGF0IHRoZSBub2RlIHNob3VsZCBiZSBy
ZWlmaWVkIGFzIGFuIGFyZ3VtZW50cyBvYmplY3Qgb24gT1NSCiAgICAgICAgICAgICAgICAgLy8g
ZXhpdC4KLSAgICAgICAgICAgICAgICBpZiAobV9jcmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKG5v
ZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSkKKyAgICAgICAgICAgICAgICBpZiAobV9j
cmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxs
RnJhbWUpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBp
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2Nr
LCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+Y29kZU9yaWdpbiwgbm9kZS0+Y2hpbGRyZW4pOwor
ICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2Rl
LT5vcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFu
ZERlZmF1bHRGbGFncyhQaGFudG9tQXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICBub2RlLT5j
aGlsZHJlbi5yZXNldCgpOwogICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwpAQCAtNjU1
LDE2ICs2NTQsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAobm9kZS0+
b3AoKSkgewogICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50czogewotICAgICAgICAgICAgbV9j
cmVhdGVzQXJndW1lbnRzLmFkZChub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7Cisg
ICAgICAgICAgICBtX2NyZWF0ZXNBcmd1bWVudHMuYWRkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIEdldExvY2FsOiB7Ci0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYXJndW1lbnRzUmVnaXN0ZXIgPSBtX2dyYXBoLnVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVy
Rm9yKG5vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3Vt
ZW50c1JlZ2lzdGVyID0KKyAgICAgICAgICAgICAgICBtX2dyYXBoLnVuY2hlY2tlZEFyZ3VtZW50
c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAgICBpZiAoYXJn
dW1lbnRzUmVnaXN0ZXIuaXNWYWxpZCgpCiAgICAgICAgICAgICAgICAgJiYgKG5vZGUtPmxvY2Fs
KCkgPT0gYXJndW1lbnRzUmVnaXN0ZXIKICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZS0+bG9j
YWwoKSA9PSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIpKSkg
ewotICAgICAgICAgICAgICAgIG1fY3JlYXRlc0FyZ3VtZW50cy5hZGQobm9kZS0+Y29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgICAgIG1fY3JlYXRlc0FyZ3VtZW50cy5h
ZGQobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTcwMywxNyArNzAzLDE3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyAyKSBJZiB3ZSdyZSBhY2Nlc3NpbmcgYXJndW1l
bnRzIHdlIGdvdCBmcm9tIHRoZSBoZWFwIQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKGVkZ2UtPm9wKCkgPT0gQ3JlYXRlQXJndW1lbnRzCi0gICAgICAgICAg
ICAgICAgJiYgbm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUKLSAgICAgICAgICAgICAg
ICAgICAgIT0gZWRnZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICAg
ICAgbV9jcmVhdGVzQXJndW1lbnRzLmFkZChlZGdlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZSk7CisgICAgICAgICAgICAgICAgJiYgbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxG
cmFtZQorICAgICAgICAgICAgICAgICAgICAhPSBlZGdlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lKQorICAgICAgICAgICAgICAgIG1fY3JlYXRlc0FyZ3VtZW50cy5hZGQoZWRnZS0+
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
IFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gZWRnZS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCk7Ci0gICAgICAgIGlmIChlZGdlLT5sb2NhbCgpID09IG1fZ3JhcGgudW5jaGVj
a2VkQXJndW1lbnRzUmVnaXN0ZXJGb3IoZWRnZS0+Y29kZU9yaWdpbikKLSAgICAgICAgICAgICYm
IG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lICE9IGVkZ2UtPmNvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lKSB7Ci0gICAgICAgICAgICBtX2NyZWF0ZXNBcmd1bWVudHMuYWRkKGVkZ2Ut
PmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKKyAgICAgICAgaWYgKGVkZ2UtPmxvY2FsKCkg
PT0gbV9ncmFwaC51bmNoZWNrZWRBcmd1bWVudHNSZWdpc3RlckZvcihlZGdlLT5vcmlnaW4uc2Vt
YW50aWMpCisgICAgICAgICAgICAmJiBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZy
YW1lICE9IGVkZ2UtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICAgICAg
ICAgIG1fY3JlYXRlc0FyZ3VtZW50cy5hZGQoZWRnZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNh
bGxGcmFtZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNzIxLDE4ICs3
MjEsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAg
IEFyZ3VtZW50c0FsaWFzaW5nRGF0YSYgZGF0YSA9IG1fYXJndW1lbnRzQWxpYXNpbmcuZmluZCh2
YXJpYWJsZUFjY2Vzc0RhdGEpLT52YWx1ZTsKLSAgICAgICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0
KG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKKyAgICAgICAgZGF0YS5tZXJnZUNh
bGxDb250ZXh0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgIH0K
ICAgICAKICAgICBib29sIGlzT0tUb09wdGltaXplKE5vZGUqIHNvdXJjZSkKICAgICB7Ci0gICAg
ICAgIGlmIChtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMoc291cmNlLT5jb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZSkpCisgICAgICAgIGlmIChtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMo
c291cmNlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAoc291cmNlLT5vcCgpKSB7CiAg
ICAgICAgIGNhc2UgR2V0TG9jYWw6IHsKICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
dmFyaWFibGVBY2Nlc3NEYXRhID0gc291cmNlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNSZWdpc3RlciA9IG1fZ3JhcGgudW5jaGVj
a2VkQXJndW1lbnRzUmVnaXN0ZXJGb3Ioc291cmNlLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNSZWdpc3RlciA9CisgICAgICAgICAgICAgICAgbV9n
cmFwaC51bmNoZWNrZWRBcmd1bWVudHNSZWdpc3RlckZvcihzb3VyY2UtPm9yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50c1JlZ2lzdGVyLmlzVmFsaWQoKSkKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChhcmd1bWVudHNSZWdpc3RlciA9PSB2
YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Niw3ICsy
NzYsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5TW9kZTo6b3JpZ2luYWxBcnJheVN0cnVjCiAKIFN0cnVj
dHVyZSogQXJyYXlNb2RlOjpvcmlnaW5hbEFycmF5U3RydWN0dXJlKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4gb3JpZ2luYWxBcnJheVN0cnVjdHVyZShncmFw
aCwgbm9kZS0+Y29kZU9yaWdpbik7CisgICAgcmV0dXJuIG9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUo
Z3JhcGgsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiB9CiAKIGJvb2wgQXJyYXlNb2RlOjphbHJl
YWR5Q2hlY2tlZChHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIEFic3RyYWN0VmFsdWUmIHZhbHVl
LCBJbmRleGluZ1R5cGUgc2hhcGUpIGNvbnN0CkBAIC0yODYsNyArMjg2LDcgQEAgYm9vbCBBcnJh
eU1vZGU6OmFscmVhZHlDaGVja2VkKEdyYXBoJiBncgogICAgICAgICByZXR1cm4gdmFsdWUubV9j
dXJyZW50S25vd25TdHJ1Y3R1cmUuaGFzU2luZ2xldG9uKCkKICAgICAgICAgICAgICYmICh2YWx1
ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5zaW5nbGV0b24oKS0+aW5kZXhpbmdUeXBlKCkgJiBJ
bmRleGluZ1NoYXBlTWFzaykgPT0gc2hhcGUKICAgICAgICAgICAgICYmICh2YWx1ZS5tX2N1cnJl
bnRLbm93blN0cnVjdHVyZS5zaW5nbGV0b24oKS0+aW5kZXhpbmdUeXBlKCkgJiBJc0FycmF5KQot
ICAgICAgICAgICAgJiYgZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5p
c09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUodmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuc2lu
Z2xldG9uKCkpOworICAgICAgICAgICAgJiYgZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyktPmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZSh2YWx1ZS5tX2N1cnJlbnRL
bm93blN0cnVjdHVyZS5zaW5nbGV0b24oKSk7CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXk6OkFy
cmF5OgogICAgICAgICBpZiAoYXJyYXlNb2Rlc0FscmVhZHlDaGVja2VkKHZhbHVlLm1fYXJyYXlN
b2RlcywgYXNBcnJheU1vZGVzKHNoYXBlIHwgSXNBcnJheSkpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE2Mzkx
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MjYsNyArNzI2LDggQEAgcHJpdmF0ZToKICAgICBOb2RlKiBhZGRU
b0dyYXBoKE5vZGVUeXBlIG9wLCBOb2RlKiBjaGlsZDEgPSAwLCBOb2RlKiBjaGlsZDIgPSAwLCBO
b2RlKiBjaGlsZDMgPSAwKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5h
ZGROb2RlKAotICAgICAgICAgICAgU3BlY05vbmUsIG9wLCBjdXJyZW50Q29kZU9yaWdpbigpLCBF
ZGdlKGNoaWxkMSksIEVkZ2UoY2hpbGQyKSwgRWRnZShjaGlsZDMpKTsKKyAgICAgICAgICAgIFNw
ZWNOb25lLCBvcCwgTm9kZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpKSwgRWRnZShjaGlsZDEp
LCBFZGdlKGNoaWxkMiksCisgICAgICAgICAgICBFZGdlKGNoaWxkMykpOwogICAgICAgICBBU1NF
UlQob3AgIT0gUGhpKTsKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZChyZXN1bHQpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzM0LDcgKzczNSw3IEBAIHByaXZhdGU6CiAgICAg
Tm9kZSogYWRkVG9HcmFwaChOb2RlVHlwZSBvcCwgRWRnZSBjaGlsZDEsIEVkZ2UgY2hpbGQyID0g
RWRnZSgpLCBFZGdlIGNoaWxkMyA9IEVkZ2UoKSkKICAgICB7CiAgICAgICAgIE5vZGUqIHJlc3Vs
dCA9IG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAgIFNwZWNOb25lLCBvcCwgY3VycmVudENv
ZGVPcmlnaW4oKSwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CisgICAgICAgICAgICBTcGVjTm9u
ZSwgb3AsIE5vZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKSksIGNoaWxkMSwgY2hpbGQyLCBj
aGlsZDMpOwogICAgICAgICBBU1NFUlQob3AgIT0gUGhpKTsKICAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZChyZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzQyLDcgKzc0
Myw4IEBAIHByaXZhdGU6CiAgICAgTm9kZSogYWRkVG9HcmFwaChOb2RlVHlwZSBvcCwgT3BJbmZv
IGluZm8sIE5vZGUqIGNoaWxkMSA9IDAsIE5vZGUqIGNoaWxkMiA9IDAsIE5vZGUqIGNoaWxkMyA9
IDApCiAgICAgewogICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2dyYXBoLmFkZE5vZGUoCi0gICAg
ICAgICAgICBTcGVjTm9uZSwgb3AsIGN1cnJlbnRDb2RlT3JpZ2luKCksIGluZm8sIEVkZ2UoY2hp
bGQxKSwgRWRnZShjaGlsZDIpLCBFZGdlKGNoaWxkMykpOworICAgICAgICAgICAgU3BlY05vbmUs
IG9wLCBOb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkpLCBpbmZvLCBFZGdlKGNoaWxkMSks
IEVkZ2UoY2hpbGQyKSwKKyAgICAgICAgICAgIEVkZ2UoY2hpbGQzKSk7CiAgICAgICAgIEFTU0VS
VChvcCAhPSBQaGkpOwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kKHJlc3VsdCk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC03NTAsNyArNzUyLDcgQEAgcHJpdmF0ZToKICAgICBO
b2RlKiBhZGRUb0dyYXBoKE5vZGVUeXBlIG9wLCBPcEluZm8gaW5mbzEsIE9wSW5mbyBpbmZvMiwg
Tm9kZSogY2hpbGQxID0gMCwgTm9kZSogY2hpbGQyID0gMCwgTm9kZSogY2hpbGQzID0gMCkKICAg
ICB7CiAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1fZ3JhcGguYWRkTm9kZSgKLSAgICAgICAgICAg
IFNwZWNOb25lLCBvcCwgY3VycmVudENvZGVPcmlnaW4oKSwgaW5mbzEsIGluZm8yLAorICAgICAg
ICAgICAgU3BlY05vbmUsIG9wLCBOb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkpLCBpbmZv
MSwgaW5mbzIsCiAgICAgICAgICAgICBFZGdlKGNoaWxkMSksIEVkZ2UoY2hpbGQyKSwgRWRnZShj
aGlsZDMpKTsKICAgICAgICAgQVNTRVJUKG9wICE9IFBoaSk7CiAgICAgICAgIG1fY3VycmVudEJs
b2NrLT5hcHBlbmQocmVzdWx0KTsKQEAgLTc2MCw3ICs3NjIsNyBAQCBwcml2YXRlOgogICAgIE5v
ZGUqIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnVGFnLCBOb2RlVHlwZSBvcCwgT3BJbmZvIGluZm8x
LCBPcEluZm8gaW5mbzIpCiAgICAgewogICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2dyYXBoLmFk
ZE5vZGUoCi0gICAgICAgICAgICBTcGVjTm9uZSwgTm9kZTo6VmFyQXJnLCBvcCwgY3VycmVudENv
ZGVPcmlnaW4oKSwgaW5mbzEsIGluZm8yLAorICAgICAgICAgICAgU3BlY05vbmUsIE5vZGU6OlZh
ckFyZywgb3AsIE5vZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKSksIGluZm8xLCBpbmZvMiwK
ICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCkgLSBtX251bVBhc3Nl
ZFZhckFyZ3MsIG1fbnVtUGFzc2VkVmFyQXJncyk7CiAgICAgICAgIEFTU0VSVChvcCAhPSBQaGkp
OwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kKHJlc3VsdCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiwxNCArMTAy
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmRldGhy
ZWFkKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoYmxvY2stPmxhc3QoKS0+aXNUZXJtaW5hbCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDb2RlT3JpZ2luIGJvdW5kYXJ5Q29kZU9yaWdpbiA9IGJsb2NrLT5sYXN0
KCktPmNvZGVPcmlnaW47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdpbiBi
b3VuZGFyeU5vZGVPcmlnaW4gPSBibG9jay0+bGFzdCgpLT5vcmlnaW47CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYmxvY2stPmxhc3QoKS0+Y29udmVydFRvUGhhbnRvbSgpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChibG9jay0+bGFzdCgpLT5yZWZDb3VudCgpID09
IDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgamV0dGlzb25CbG9jayhibG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeUNvZGVPcmln
aW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpldHRpc29uQmxvY2soYmxvY2ssIGpl
dHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROb2RlKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwgYm91
bmRhcnlDb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LCBTcGVjTm9uZSwgSnVtcCwgYm91bmRhcnlOb2RlT3JpZ2luLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBPcEluZm8odGFyZ2V0QmxvY2spKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyQ2hhbmdlZCA9IG91dGVyQ2hhbmdl
ZCA9IHRydWU7CkBAIC0xODEsMTIgKzE4MSwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGguZGV0aHJlYWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlT3JpZ2luIGJvdW5kYXJ5Q29kZU9yaWdpbiA9
IGJsb2NrLT5sYXN0KCktPmNvZGVPcmlnaW47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Tm9kZU9yaWdpbiBib3VuZGFyeU5vZGVPcmlnaW4gPSBibG9jay0+bGFzdCgpLT5vcmlnaW47CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmxhc3QoKS0+Y29udmVydFRvUGhhbnRv
bSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGpldHRp
c29uZWRCbG9ja3Muc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqZXR0aXNvbkJsb2NrKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2tzW2ldLCBib3VuZGFyeUNvZGVP
cmlnaW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqZXR0aXNvbkJsb2NrKGJs
b2NrLCBqZXR0aXNvbmVkQmxvY2tzW2ldLCBib3VuZGFyeU5vZGVPcmlnaW4pOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROb2RlKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwgYm91bmRhcnlDb2RlT3JpZ2lu
LCBPcEluZm8odGFyZ2V0QmxvY2spKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaCwgU3BlY05vbmUsIEp1bXAsIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgT3BJbmZvKHRhcmdl
dEJsb2NrKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpbm5lckNoYW5nZWQgPSBvdXRlckNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CkBAIC0yNTgsMTIgKzI1OCwxMSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgQVNTRVJUKGJyYW5jaC0+cmVmQ291bnQoKSA9PSAxKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgYmxvY2stPmFwcGVuZE5vZGUoCi0gICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05v
bmUsIEp1bXAsIGJyYW5jaC0+Y29kZU9yaWdpbiwKLSAgICAgICAgICAgICAgICBPcEluZm8odGFy
Z2V0QmxvY2spKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwgYnJh
bmNoLT5vcmlnaW4sIE9wSW5mbyh0YXJnZXRCbG9jaykpOwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgdm9pZCBrZWVwT3BlcmFuZEFsaXZlKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBq
ZXR0aXNvbmVkQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQpCisgICAgdm9pZCBrZWVwT3BlcmFuZEFsaXZlKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNp
Y0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIE5vZGVPcmlnaW4gbm9kZU9yaWdpbiwgVmlydHVhbFJl
Z2lzdGVyIG9wZXJhbmQpCiAgICAgewogICAgICAgICBOb2RlKiBsaXZlbmVzc05vZGUgPSBqZXR0
aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICBp
ZiAoIWxpdmVuZXNzTm9kZSkKQEAgLTI3MSwxNiArMjcwLDE2IEBAIHByaXZhdGU6CiAgICAgICAg
IGlmIChsaXZlbmVzc05vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5pc0NhcHR1cmVkKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGJsb2NrLT5hcHBlbmROb2RlKAotICAgICAgICAg
ICAgbV9ncmFwaCwgU3BlY05vbmUsIFBoYW50b21Mb2NhbCwgY29kZU9yaWdpbiwgCisgICAgICAg
ICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgUGhhbnRvbUxvY2FsLCBub2RlT3JpZ2luLCAKICAgICAg
ICAgICAgIE9wSW5mbyhsaXZlbmVzc05vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSk7CiAgICAg
fQogICAgIAotICAgIHZvaWQgamV0dGlzb25CbG9jayhCYXNpY0Jsb2NrKiBibG9jaywgQmFzaWNC
bG9jayogamV0dGlzb25lZEJsb2NrLCBDb2RlT3JpZ2luIGJvdW5kYXJ5Q29kZU9yaWdpbikKKyAg
ICB2b2lkIGpldHRpc29uQmxvY2soQmFzaWNCbG9jayogYmxvY2ssIEJhc2ljQmxvY2sqIGpldHRp
c29uZWRCbG9jaywgTm9kZU9yaWdpbiBib3VuZGFyeU5vZGVPcmlnaW4pCiAgICAgewogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFk
Lm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkKLSAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUo
YmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlDb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudChpKSk7CisgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBq
ZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoaSkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9j
ay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkKLSAgICAgICAgICAgIGtl
ZXBPcGVyYW5kQWxpdmUoYmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlDb2RlT3JpZ2lu
LCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSk7CisgICAgICAgICAgICBrZWVwT3BlcmFuZEFs
aXZlKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaSkpOwogICAgICAgICAKICAgICAgICAgZml4SmV0dGlzb25lZFByZWRl
Y2Vzc29ycyhibG9jaywgamV0dGlzb25lZEJsb2NrKTsKICAgICB9CkBAIC0zMTUsNyArMzE0LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgLy8gUmVtb3ZlIHRoZSB0ZXJtaW5hbCBvZiBmaXJzdEJsb2Nr
IHNpbmNlIHdlIGRvbid0IG5lZWQgaXQgYW55bW9yZS4gV2VsbCwgd2UgZG9uJ3QKICAgICAgICAg
Ly8gcmVhbGx5IHJlbW92ZSBpdDsgd2UgYWN0dWFsbHkgdHVybiBpdCBpbnRvIGEgUGhhbnRvbS4K
ICAgICAgICAgQVNTRVJUKGZpcnN0QmxvY2stPmxhc3QoKS0+aXNUZXJtaW5hbCgpKTsKLSAgICAg
ICAgQ29kZU9yaWdpbiBib3VuZGFyeUNvZGVPcmlnaW4gPSBmaXJzdEJsb2NrLT5sYXN0KCktPmNv
ZGVPcmlnaW47CisgICAgICAgIE5vZGVPcmlnaW4gYm91bmRhcnlOb2RlT3JpZ2luID0gZmlyc3RC
bG9jay0+bGFzdCgpLT5vcmlnaW47CiAgICAgICAgIGZpcnN0QmxvY2stPmxhc3QoKS0+Y29udmVy
dFRvUGhhbnRvbSgpOwogICAgICAgICBBU1NFUlQoZmlyc3RCbG9jay0+bGFzdCgpLT5yZWZDb3Vu
dCgpID09IDEpOwogICAgICAgICAKQEAgLTMyNyw5ICszMjYsOSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgLy8gZGlmZmVyZW50IHBhdGggdGhhbiBzZWNvbmRCbG9jay4KICAgICAgICAgICAgIAog
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpCi0gICAgICAgICAgICAgICAga2Vl
cE9wZXJhbmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Q29kZU9y
aWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpOworICAgICAgICAgICAgICAgIGtl
ZXBPcGVyYW5kQWxpdmUoZmlyc3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVP
cmlnaW4sIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVy
T2ZMb2NhbHMoKTsgKytpKQotICAgICAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoZmlyc3RC
bG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeUNvZGVPcmlnaW4sIHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKGkpKTsKKyAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0Qmxv
Y2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChpKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2Vjb25kQmxvY2stPnBoaXMuc2l6ZSgpOyArK2kpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJl
dmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJl
YWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNywyNSArMTI3LDI1IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgQUxXQVlTX0lOTElORSBOb2RlKiBhZGRQ
aGlTaWxlbnRseShCYXNpY0Jsb2NrKiBibG9jaywgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdp
biwgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSkKKyAgICBBTFdBWVNfSU5MSU5FIE5vZGUq
IGFkZFBoaVNpbGVudGx5KEJhc2ljQmxvY2sqIGJsb2NrLCBjb25zdCBOb2RlT3JpZ2luJiBvcmln
aW4sIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUpCiAgICAgewotICAgICAgICBOb2RlKiBy
ZXN1bHQgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY05vbmUsIFBoaSwgY29kZU9yaWdpbiwgT3BJbmZv
KHZhcmlhYmxlKSk7CisgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1fZ3JhcGguYWRkTm9kZShTcGVj
Tm9uZSwgUGhpLCBvcmlnaW4sIE9wSW5mbyh2YXJpYWJsZSkpOwogICAgICAgICBibG9jay0+cGhp
cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAg
ICAgdGVtcGxhdGU8T3BlcmFuZEtpbmQgb3BlcmFuZEtpbmQ+Ci0gICAgQUxXQVlTX0lOTElORSBO
b2RlKiBhZGRQaGkoQmFzaWNCbG9jayogYmxvY2ssIGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4sIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIHNpemVfdCBpbmRleCkKKyAgICBBTFdB
WVNfSU5MSU5FIE5vZGUqIGFkZFBoaShCYXNpY0Jsb2NrKiBibG9jaywgY29uc3QgTm9kZU9yaWdp
biYgb3JpZ2luLCBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBzaXplX3QgaW5kZXgpCiAg
ICAgewotICAgICAgICBOb2RlKiByZXN1bHQgPSBhZGRQaGlTaWxlbnRseShibG9jaywgY29kZU9y
aWdpbiwgdmFyaWFibGUpOworICAgICAgICBOb2RlKiByZXN1bHQgPSBhZGRQaGlTaWxlbnRseShi
bG9jaywgb3JpZ2luLCB2YXJpYWJsZSk7CiAgICAgICAgIHBoaVN0YWNrRm9yPG9wZXJhbmRLaW5k
PigpLmFwcGVuZChQaGlTdGFja0VudHJ5KGJsb2NrLCBpbmRleCwgcmVzdWx0KSk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPE9wZXJhbmRLaW5kIG9w
ZXJhbmRLaW5kPgotICAgIEFMV0FZU19JTkxJTkUgTm9kZSogYWRkUGhpKGNvbnN0IENvZGVPcmln
aW4mIGNvZGVPcmlnaW4sIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIHNpemVfdCBpbmRl
eCkKKyAgICBBTFdBWVNfSU5MSU5FIE5vZGUqIGFkZFBoaShjb25zdCBOb2RlT3JpZ2luJiBvcmln
aW4sIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIHNpemVfdCBpbmRleCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZGRQaGk8b3BlcmFuZEtpbmQ+KG1fYmxvY2ssIGNvZGVPcmlnaW4sIHZh
cmlhYmxlLCBpbmRleCk7CisgICAgICAgIHJldHVybiBhZGRQaGk8b3BlcmFuZEtpbmQ+KG1fYmxv
Y2ssIG9yaWdpbiwgdmFyaWFibGUsIGluZGV4KTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8
T3BlcmFuZEtpbmQgb3BlcmFuZEtpbmQ+CkBAIC0yMDksNyArMjA5LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgdmFyaWFibGUtPnNldElzTG9hZGVkRnJvbSh0cnVl
KTsKLSAgICAgICAgTm9kZSogcGhpID0gYWRkUGhpPG9wZXJhbmRLaW5kPihub2RlLT5jb2RlT3Jp
Z2luLCB2YXJpYWJsZSwgaWR4KTsKKyAgICAgICAgTm9kZSogcGhpID0gYWRkUGhpPG9wZXJhbmRL
aW5kPihub2RlLT5vcmlnaW4sIHZhcmlhYmxlLCBpZHgpOwogICAgICAgICBub2RlLT5jaGlsZHJl
bi5zZXRDaGlsZDEoRWRnZShwaGkpKTsKICAgICAgICAgbV9ibG9jay0+dmFyaWFibGVzQXRIZWFk
LmF0Rm9yPG9wZXJhbmRLaW5kPihpZHgpID0gcGhpOwogICAgICAgICBtX2Jsb2NrLT52YXJpYWJs
ZXNBdFRhaWwuYXRGb3I8b3BlcmFuZEtpbmQ+KGlkeCkgPSBub2RlOwpAQCAtMjc3LDcgKzI3Nyw3
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZhcmlhYmxlLT5zZXRJ
c0xvYWRlZEZyb20odHJ1ZSk7Ci0gICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxkMShFZGdl
KGFkZFBoaTxvcGVyYW5kS2luZD4obm9kZS0+Y29kZU9yaWdpbiwgdmFyaWFibGUsIGlkeCkpKTsK
KyAgICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQxKEVkZ2UoYWRkUGhpPG9wZXJhbmRLaW5k
Pihub2RlLT5vcmlnaW4sIHZhcmlhYmxlLCBpZHgpKSk7CiAgICAgICAgIG1fYmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC5hdEZvcjxvcGVyYW5kS2luZD4oaWR4KSA9IG5vZGU7CiAgICAgICAgIG1fYmxv
Y2stPnZhcmlhYmxlc0F0VGFpbC5hdEZvcjxvcGVyYW5kS2luZD4oaWR4KSA9IG5vZGU7CiAgICAg
fQpAQCAtNDE5LDcgKzQxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgTm9kZSogdmFyaWFibGVJblByZXZpb3VzID0gcHJlZGVjZXNzb3JCbG9jay0+dmFy
aWFibGVzQXRUYWlsLmF0Rm9yPG9wZXJhbmRLaW5kPihpbmRleCk7CiAgICAgICAgICAgICAgICAg
aWYgKCF2YXJpYWJsZUluUHJldmlvdXMpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVJ
blByZXZpb3VzID0gYWRkUGhpPG9wZXJhbmRLaW5kPihwcmVkZWNlc3NvckJsb2NrLCBjdXJyZW50
UGhpLT5jb2RlT3JpZ2luLCB2YXJpYWJsZSwgaW5kZXgpOworICAgICAgICAgICAgICAgICAgICB2
YXJpYWJsZUluUHJldmlvdXMgPSBhZGRQaGk8b3BlcmFuZEtpbmQ+KHByZWRlY2Vzc29yQmxvY2ss
IGN1cnJlbnRQaGktPm9yaWdpbiwgdmFyaWFibGUsIGluZGV4KTsKICAgICAgICAgICAgICAgICAg
ICAgcHJlZGVjZXNzb3JCbG9jay0+dmFyaWFibGVzQXRUYWlsLmF0Rm9yPG9wZXJhbmRLaW5kPihp
bmRleCkgPSB2YXJpYWJsZUluUHJldmlvdXM7CiAgICAgICAgICAgICAgICAgICAgIHByZWRlY2Vz
c29yQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5hdEZvcjxvcGVyYW5kS2luZD4oaW5kZXgpID0gdmFy
aWFibGVJblByZXZpb3VzOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC00NTMsNyArNDUz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIE5vZGUqIG5ld1BoaSA9
IGFkZFBoaVNpbGVudGx5KGJsb2NrLCBjdXJyZW50UGhpLT5jb2RlT3JpZ2luLCB2YXJpYWJsZSk7
CisgICAgICAgICAgICAgICAgTm9kZSogbmV3UGhpID0gYWRkUGhpU2lsZW50bHkoYmxvY2ssIGN1
cnJlbnRQaGktPm9yaWdpbiwgdmFyaWFibGUpOwogICAgICAgICAgICAgICAgIG5ld1BoaS0+Y2hp
bGRyZW4gPSBjdXJyZW50UGhpLT5jaGlsZHJlbjsKICAgICAgICAgICAgICAgICBjdXJyZW50UGhp
LT5jaGlsZHJlbi5pbml0aWFsaXplKG5ld1BoaSwgdmFyaWFibGVJblByZXZpb3VzLCAwKTsKICAg
ICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NT
RVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYzLDcgKzk2Myw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEdldE15U2NvcGU6CiAgICAgICAgICAg
ICBjYXNlIFNraXBUb3BTY29wZToKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYy5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIGlmIChtX2dyYXBoLnVuY2hlY2tlZEFjdGl2YXRpb25SZWdpc3RlcigpID09IGxv
Y2FsKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF5QmVBY2Nlc3NlZCA9IHRydWU7CkBA
IC05NzIsNyArOTcyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcmd1bWVu
dHNOb3RDcmVhdGVkOgogICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKICAg
ICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGhTYWZlOgotICAgICAgICAgICAgICAg
IGlmIChtX2dyYXBoLnVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmln
aW4pID09IGxvY2FsKQorICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnVuY2hlY2tlZEFyZ3Vt
ZW50c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPT0gbG9jYWwpCiAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5tYXlCZUFjY2Vzc2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNjA0LDcgKzYwNCw3
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgcmV0
dXJuOwogICAgICAgICAKICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoOgotICAgICAgICBy
ZWFkKEFic3RyYWN0SGVhcChWYXJpYWJsZXMsIGdyYXBoLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5v
ZGUtPmNvZGVPcmlnaW4pKSk7CisgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKFZhcmlhYmxlcywg
Z3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkpOwogICAg
ICAgICByZWFkKEFic3RyYWN0SGVhcChWYXJpYWJsZXMsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQp
KTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTYxMyw3ICs2MTMsNyBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCiAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6Ci0gICAgICAgIHJlYWQoQWJz
dHJhY3RIZWFwKFZhcmlhYmxlcywgZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29k
ZU9yaWdpbikpKTsKKyAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoVmFyaWFibGVzLCBncmFwaC5h
cmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSk7CiAgICAgICAgIHJl
dHVybjsKIAogICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAkocmV2aXNpb24gMTYzOTE5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNyArNDEsNyBAQCB2b2lkIENvbW1vbkRhdGE6Om5vdGlmeUNvbXBpbGluZ1N0cnVj
dHVyCiB7CiAgICAgcGxhbi50cmFuc2l0aW9ucy5hZGRMYXppbHkoCiAgICAgICAgIGNvZGVCbG9j
aywKLSAgICAgICAgbm9kZS0+Y29kZU9yaWdpbi5jb2RlT3JpZ2luT3duZXIoKSwKKyAgICAgICAg
bm9kZS0+b3JpZ2luLnNlbWFudGljLmNvZGVPcmlnaW5Pd25lcigpLAogICAgICAgICBub2RlLT5z
dHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLnByZXZpb3VzU3RydWN0dXJlLAogICAgICAgICBub2Rl
LT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSk7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcAkocmV2aXNpb24gMTYzOTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOiB7CiAg
ICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5U3BlY3VsYXRpb24oCiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5jb2RlT3JpZ2luKSku
bV90eXBlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFyZ3VtZW50c1Jl
Z2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLm1fdHlwZSkpCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsK
ICAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKQEAgLTExMiw3ICsxMTIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBBZGphY2VuY3lMaXN0IGNoaWxkcmVuID0gbm9k
ZS0+Y2hpbGRyZW47CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnJlbW92ZUVkZ2UoMCk7
CiAgICAgICAgICAgICAgICAgICAgIGlmICghIWNoaWxkcmVuLmNoaWxkMSgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNw
ZWNOb25lLCBQaGFudG9tLCBub2RlLT5jb2RlT3JpZ2luLCBjaGlsZHJlbik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKGluZGV4SW5CbG9jaywgU3Bl
Y05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdpbiwgY2hpbGRyZW4pOwogICAgICAgICAgICAgICAg
ICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDIoRWRnZSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQzKEVkZ2UoKSk7CiAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb1N0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50KHN0cnVjdHVyZSk7
CkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgICAgICBjYXNl
IEdldEJ5SWQ6CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDogewotICAgICAgICAgICAg
ICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPmNvZGVPcmlnaW47CisgICAgICAgICAg
ICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47CiAgICAgICAgICAgICAgICAg
RWRnZSBjaGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgICAgICBOb2RlKiBj
aGlsZCA9IGNoaWxkRWRnZS5ub2RlKCk7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciA9IG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKTsKQEAgLTE5MCwxMSArMTkwLDEx
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKG5lZWRz
V2F0Y2hwb2ludCkgewogICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgU3Ry
dWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQsIGNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludCwgb3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHN0cnVjdHVyZSks
IGNoaWxkRWRnZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuZWVkc0NlbGxDaGVjaykg
ewogICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAg
ICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgY29kZU9y
aWdpbiwgY2hpbGRFZGdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywg
U3BlY05vbmUsIFBoYW50b20sIG9yaWdpbiwgY2hpbGRFZGdlKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2hpbGRFZGdlLnNldFVzZUtpbmQo
S25vd25DZWxsVXNlKTsKQEAgLTIwNSw3ICsyMDUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBjaGlsZEVkZ2U7CiAgICAgICAgICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IEVkZ2UobV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywg
U3BlY05vbmUsIEdldEJ1dHRlcmZseSwgY29kZU9yaWdpbiwgY2hpbGRFZGdlKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBHZXRCdXR0ZXJmbHksIG9y
aWdpbiwgY2hpbGRFZGdlKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0dldEJ5T2Zmc2V0KG1fZ3JhcGgubV9zdG9y
YWdlQWNjZXNzRGF0YS5zaXplKCksIHByb3BlcnR5U3RvcmFnZSk7CkBAIC0yMTksNyArMjE5LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoK
ICAgICAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDogewotICAgICAgICAgICAgICAgIENvZGVP
cmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPmNvZGVPcmlnaW47CisgICAgICAgICAgICAgICAgTm9k
ZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47CiAgICAgICAgICAgICAgICAgRWRnZSBjaGls
ZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgICAgICBOb2RlKiBjaGlsZCA9IGNo
aWxkRWRnZS5ub2RlKCk7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciA9IG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKTsKQEAgLTIzNSw3ICsyMzUsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgc3RhdHVz
ID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICAgICAgdm0oKSwK
LSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbiks
CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG9yaWdpbi5zZW1h
bnRpYyksCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSwKICAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdLAogICAgICAgICAgICAg
ICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOwpAQCAtMjUzLDExICsyNTMsMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobmVlZHNX
YXRjaHBvaW50KSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBTdHJ1
Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludCwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50LCBvcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8oc3RydWN0dXJlKSwg
Y2hpbGRFZGdlKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5lZWRzQ2VsbENoZWNrKSB7
CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBjb2RlT3Jp
Z2luLCBjaGlsZEVkZ2UpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBT
cGVjTm9uZSwgUGhhbnRvbSwgb3JpZ2luLCBjaGlsZEVkZ2UpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjaGlsZEVkZ2Uuc2V0VXNlS2luZChL
bm93bkNlbGxVc2UpOwpAQCAtMjcwLDcgKzI3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5SWQpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKS5pc051bGwoKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZU9yaWdpbiwgaW5kZXhJbkJsb2NrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW4sIGluZGV4SW5CbG9jaywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKS5h
c0NlbGwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAKQEAgLTI4Miw3ICsyODIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
cHJvdG90eXBlLmlzQ2VsbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRTdHJ1
Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
ZGVPcmlnaW4sIGluZGV4SW5CbG9jaywgcHJvdG90eXBlLmFzQ2VsbCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3JpZ2luLCBpbmRleEluQmxvY2ssIHByb3RvdHlwZS5hc0Nl
bGwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9CkBAIC0yOTMsMTQgKzI5MywxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBjaGlsZEVkZ2U7CiAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoc3RhdHVzLmlzU2ltcGxlUmVwbGFjZSgpIHx8IHN0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSA9PSBzdGF0dXMubmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gRWRnZShtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2Nr
LCBTcGVjTm9uZSwgR2V0QnV0dGVyZmx5LCBjb2RlT3JpZ2luLCBjaGlsZEVkZ2UpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIEdldEJ1dHRlcmZseSwg
b3JpZ2luLCBjaGlsZEVkZ2UpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJ1Y3R1
cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0
YXR1cy5uZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVCghaXNJbmxpbmVPZmZzZXQoc3RhdHVzLm9mZnNldCgpKSk7CiAgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3Bl
Y05vbmUsIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y29kZU9yaWdpbiwgT3BJbmZvKHRyYW5zaXRpb25EYXRhKSwgY2hpbGRFZGdlKTsKLSAgICAgICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNO
b25lLCBTdG9yZUJhcnJpZXIsIGNvZGVPcmlnaW4sIEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgp
LCBLbm93bkNlbGxVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbiwgT3BJbmZv
KHRyYW5zaXRpb25EYXRhKSwgY2hpbGRFZGdlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNOb25lLCBTdG9yZUJhcnJpZXIs
IG9yaWdpbiwgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIEtub3duQ2VsbFVzZSkpOwogICAg
ICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBFZGdlKGFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKQEAgLTMwOCwyMiArMzA4LDIy
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghaXNJbmxpbmVPZmZzZXQo
c3RhdHVzLm9mZnNldCgpKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICBOb2RlKiByZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUs
IFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIGNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
LCBvcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8odHJhbnNpdGlvbkRhdGEp
LCBjaGlsZEVkZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBT
cGVjTm9uZSwgR2V0QnV0dGVyZmx5LCBjb2RlT3JpZ2luLCBjaGlsZEVkZ2UpKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVj
Tm9uZSwgU3RvcmVCYXJyaWVyLCBjb2RlT3JpZ2luLCBFZGdlKG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJs
b2NrLCBTcGVjTm9uZSwgR2V0QnV0dGVyZmx5LCBvcmlnaW4sIGNoaWxkRWRnZSkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNw
ZWNOb25lLCBTdG9yZUJhcnJpZXIsIG9yaWdpbiwgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCks
IEtub3duQ2VsbFVzZSkpOwogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBF
ZGdlKHJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLmlzU2ltcGxlVHJhbnNpdGlv
bigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIHB1dFN0cnVjdHVyZSA9IG1fZ3JhcGgu
YWRkTm9kZShTcGVjTm9uZSwgUHV0U3RydWN0dXJlLCBjb2RlT3JpZ2luLCBPcEluZm8odHJhbnNp
dGlvbkRhdGEpLCBjaGlsZEVkZ2UpOwotICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFN0b3JlQmFycmllciwgY29kZU9y
aWdpbiwgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIEtub3duQ2VsbFVzZSkpOworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBwdXRTdHJ1Y3R1cmUgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY05v
bmUsIFB1dFN0cnVjdHVyZSwgb3JpZ2luLCBPcEluZm8odHJhbnNpdGlvbkRhdGEpLCBjaGlsZEVk
Z2UpOworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKGluZGV4
SW5CbG9jaywgU3BlY05vbmUsIFN0b3JlQmFycmllciwgb3JpZ2luLCBFZGdlKG5vZGUtPmNoaWxk
MSgpLm5vZGUoKSwgS25vd25DZWxsVXNlKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydChpbmRleEluQmxvY2ssIHB1dFN0cnVjdHVyZSk7CiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUHV0QnlPZmZzZXQobV9ncmFw
aC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSwgcHJvcGVydHlTdG9yYWdlKTsKLSAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKGluZGV4SW5CbG9jaywgU3BlY05vbmUs
IENvbmRpdGlvbmFsU3RvcmVCYXJyaWVyLCBjb2RlT3JpZ2luLCAKKyAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKGluZGV4SW5CbG9jaywgU3BlY05vbmUsIENvbmRpdGlv
bmFsU3RvcmVCYXJyaWVyLCBvcmlnaW4sIAogICAgICAgICAgICAgICAgICAgICBFZGdlKG5vZGUt
PmNoaWxkMigpLm5vZGUoKSwgS25vd25DZWxsVXNlKSwgRWRnZShub2RlLT5jaGlsZDMoKS5ub2Rl
KCksIFVudHlwZWRVc2UpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBTdG9y
YWdlQWNjZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsKQEAgLTM4Nyw3ICszODcsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgaWYgKG9sZFZhbHVlLm1lcmdlKGNvbnN0YW50VmFsdWUpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+Y29kZU9yaWdpbjsKKyAgICAgICAgICAgIE5vZGVP
cmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOwogICAgICAgICAgICAgQWRqYWNlbmN5TGlzdCBj
aGlsZHJlbiA9IG5vZGUtPmNoaWxkcmVuOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
bm9kZS0+b3AoKSA9PSBHZXRMb2NhbCkKQEAgLTM5Nyw3ICszOTcsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIHZh
bHVlKTsKICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAg
ICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgY29kZU9yaWdpbiwgY2hpbGRy
ZW4pOworICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG9y
aWdpbiwgY2hpbGRyZW4pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1
ZTsKICAgICAgICAgfQpAQCAtNDA3LDIwICs0MDcsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIGNoYW5nZWQ7CiAgICAgfQogCi0gICAgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hl
Y2soQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCB1bnNpZ25lZCBpbmRleEluQmxvY2ssIEpTQ2VsbCog
Y2VsbCkKKyAgICB2b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjayhOb2RlT3JpZ2luIG9y
aWdpbiwgdW5zaWduZWQgaW5kZXhJbkJsb2NrLCBKU0NlbGwqIGNlbGwpCiAgICAgewogICAgICAg
ICBOb2RlKiB3ZWFrQ29uc3RhbnQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAg
ICAgICAgaW5kZXhJbkJsb2NrLCBzcGVjdWxhdGlvbkZyb21WYWx1ZShjZWxsKSwgV2Vha0pTQ29u
c3RhbnQsIGNvZGVPcmlnaW4sIE9wSW5mbyhjZWxsKSk7CisgICAgICAgICAgICBpbmRleEluQmxv
Y2ssIHNwZWN1bGF0aW9uRnJvbVZhbHVlKGNlbGwpLCBXZWFrSlNDb25zdGFudCwgb3JpZ2luLCBP
cEluZm8oY2VsbCkpOwogICAgICAgICAKICAgICAgICAgaWYgKG1fZ3JhcGgud2F0Y2hwb2ludHMo
KS5pc1N0aWxsVmFsaWQoY2VsbC0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0
KCkpKSB7CiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAg
ICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50LCBjb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUs
IFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50LCBvcmlnaW4sCiAgICAgICAgICAgICAgICAg
T3BJbmZvKGNlbGwtPnN0cnVjdHVyZSgpKSwgRWRnZSh3ZWFrQ29uc3RhbnQsIENlbGxVc2UpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVja1N0
cnVjdHVyZSwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUs
IENoZWNrU3RydWN0dXJlLCBvcmlnaW4sCiAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRT
dHJ1Y3R1cmVTZXQoY2VsbC0+c3RydWN0dXJlKCkpKSwgRWRnZSh3ZWFrQ29uc3RhbnQsIENlbGxV
c2UpKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ny
aXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE2
MzkxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgICAgIEJhc2ljQmxvY2sqIHBhZCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydEJlZm9y
ZSgqc3VjY2Vzc29yKTsKICAgICAgICAgcGFkLT5hcHBlbmROb2RlKAotICAgICAgICAgICAgbV9n
cmFwaCwgU3BlY05vbmUsIEp1bXAsICgqc3VjY2Vzc29yKS0+YXQoMCktPmNvZGVPcmlnaW4sIE9w
SW5mbygqc3VjY2Vzc29yKSk7CisgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwg
KCpzdWNjZXNzb3IpLT5hdCgwKS0+b3JpZ2luLCBPcEluZm8oKnN1Y2Nlc3NvcikpOwogICAgICAg
ICBwYWQtPnByZWRlY2Vzc29ycy5hcHBlbmQocHJlZGVjZXNzb3IpOwogICAgICAgICAoKnN1Y2Nl
c3NvciktPnJlcGxhY2VQcmVkZWNlc3NvcihwcmVkZWNlc3NvciwgcGFkKTsKICAgICAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24g
MTYzOTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxOSw3ICsyMTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFlZGdlIHx8IGVkZ2Uud2lsbE5vdEhhdmVDaGVjaygpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20s
IG5vZGUtPmNvZGVPcmlnaW4sIGVkZ2UpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2Rl
LT5vcmlnaW4sIGVkZ2UpOwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbVVuY2hlY2tlZCgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMTYzOTE5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjksMTAgKzEyOSwxMCBAQCBWZWN0b3I8RGlzYXNzZW1ibGVyOjpEdW1w
ZWRPcD4gRGlzYXNzZW1iCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkdW1wRGlzYXNzZW1i
bHkob3V0LCBkaXNhc3NlbWJseVByZWZpeCwgbGlua0J1ZmZlciwgcHJldmlvdXNMYWJlbCwgY3Vy
cmVudExhYmVsLCBsYXN0Tm9kZUZvckRpc2Fzc2VtYmx5KTsKICAgICAgICAgICAgIGFwcGVuZChy
ZXN1bHQsIG91dCwgcHJldmlvdXNPcmlnaW4pOwotICAgICAgICAgICAgcHJldmlvdXNPcmlnaW4g
PSBibG9jay0+YXQoaSktPmNvZGVPcmlnaW47CisgICAgICAgICAgICBwcmV2aW91c09yaWdpbiA9
IGJsb2NrLT5hdChpKS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGgu
ZHVtcENvZGVPcmlnaW4ob3V0LCBwcmVmaXgsIGxhc3ROb2RlLCBibG9jay0+YXQoaSksICZtX2R1
bXBDb250ZXh0KSkgewogICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlv
dXNPcmlnaW4pOwotICAgICAgICAgICAgICAgIHByZXZpb3VzT3JpZ2luID0gYmxvY2stPmF0KGkp
LT5jb2RlT3JpZ2luOworICAgICAgICAgICAgICAgIHByZXZpb3VzT3JpZ2luID0gYmxvY2stPmF0
KGkpLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2dyYXBo
LmR1bXAob3V0LCBwcmVmaXgsIGJsb2NrLT5hdChpKSwgJm1fZHVtcENvbnRleHQpOwogICAgICAg
ICAgICAgbGFzdE5vZGUgPSBibG9jay0+YXQoaSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
Myw3ICsyNjMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93QW5kTmVnYXRp
dmVaZXJvKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrICsgMSwgU3BlY05vbmUsIFBoYW50b20sIG5vZGUt
PmNvZGVPcmlnaW4sIGNoaWxkMSwgY2hpbGQyKTsKKyAgICAgICAgICAgICAgICBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrICsgMSwgU3BlY05vbmUsIFBoYW50b20sIG5v
ZGUtPm9yaWdpbiwgY2hpbGQxLCBjaGlsZDIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKQEAgLTQ1Myw3ICs0NTMsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEJ5VmFsOiB7
CiAgICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUoCiAgICAgICAgICAgICAgICAgbm9kZS0+
YXJyYXlNb2RlKCkucmVmaW5lKAotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2RlLT5j
b2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCks
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCksCiAgICAg
ICAgICAgICAgICAgICAgIFNwZWNOb25lLCBub2RlLT5mbGFncygpKSk7CkBAIC00NjUsMTQgKzQ2
NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAg
ICAgICAgICAgIGlmIChhcnJheU1vZGUuYXJyYXlDbGFzcygpID09IEFycmF5OjpPcmlnaW5hbEFy
cmF5CiAgICAgICAgICAgICAgICAgICAgICYmIGFycmF5TW9kZS5zcGVjdWxhdGlvbigpID09IEFy
cmF5OjpJbkJvdW5kcwotICAgICAgICAgICAgICAgICAgICAmJiBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5jb2RlT3JpZ2luKS0+YXJyYXlQcm90b3R5cGVDaGFpbklzU2FuZSgpCisgICAg
ICAgICAgICAgICAgICAgICYmIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyktPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKQogICAgICAgICAgICAgICAgICAg
ICAmJiAhKG5vZGUtPmZsYWdzKCkgJiBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhlcikpCiAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShhcnJheU1vZGUud2l0aFNwZWN1bGF0aW9u
KEFycmF5OjpTYW5lQ2hhaW4pKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlN0cmluZzoKICAgICAgICAgICAgICAgICBp
ZiAoKG5vZGUtPnByZWRpY3Rpb24oKSAmIH5TcGVjU3RyaW5nKQotICAgICAgICAgICAgICAgICAg
ICB8fCBtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPmNvZGVPcmlnaW4sIE91dE9mQm91bmRzKSkK
KyAgICAgICAgICAgICAgICAgICAgfHwgbV9ncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4u
c2VtYW50aWMsIE91dE9mQm91bmRzKSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJy
YXlNb2RlKGFycmF5TW9kZS53aXRoU3BlY3VsYXRpb24oQXJyYXk6Ok91dE9mQm91bmRzKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCkBAIC01MTEsNyArNTExLDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKAogICAgICAgICAg
ICAgICAgIG5vZGUtPmFycmF5TW9kZSgpLnJlZmluZSgKLSAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaCwgbm9kZS0+Y29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgICAgICBjaGlsZDEtPnByZWRpY3Rp
b24oKSwKICAgICAgICAgICAgICAgICAgICAgY2hpbGQyLT5wcmVkaWN0aW9uKCksCiAgICAgICAg
ICAgICAgICAgICAgIGNoaWxkMy0+cHJlZGljdGlvbigpKSk7CkBAIC01OTcsNyArNTk3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIC8vIHRoYXQgd291bGQgYnJlYWsgdGhpbmdzLgogICAgICAg
ICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKAogICAgICAgICAgICAgICAgIG5vZGUtPmFycmF5TW9k
ZSgpLnJlZmluZSgKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZS0+Y29kZU9yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAog
ICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpICYgU3BlY0Nl
bGwsCiAgICAgICAgICAgICAgICAgICAgIFNwZWNJbnQzMiwKICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+Y2hpbGQyKCktPnByZWRpY3Rpb24oKSkpOwpAQCAtNzMyLDcgKzczMiw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIC8vIHdvdWxkIGhhdmUgYWxyZWFkeSBleGl0ZWQgYnkg
bm93LCBidXQgaW5zZXJ0IGEgZm9yY2VkIGV4aXQganVzdCB0bwogICAgICAgICAgICAgICAgICAg
ICAvLyBiZSBzYWZlLgogICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBG
b3JjZU9TUkV4aXQsIG5vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBGb3JjZU9TUkV4aXQsIG5vZGUtPm9yaWdpbik7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CkBAIC03NjgsNyArNzY4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVG9UaGlzOiB7Ci0gICAgICAg
ICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG1fZ3JhcGguZXhlY3V0YWJsZUZvcihub2RlLT5jb2Rl
T3JpZ2luKS0+aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsKKyAg
ICAgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gbV9ncmFwaC5leGVjdXRhYmxlRm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmlj
dE1vZGU7CiAKICAgICAgICAgICAgIGlmIChpc090aGVyU3BlY3VsYXRpb24obm9kZS0+Y2hpbGQx
KCktPnByZWRpY3Rpb24oKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoZWNtYU1vZGUgPT0gU3Ry
aWN0TW9kZSkgewpAQCAtNzc4LDEwICs3NzgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAg
ICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPmNv
ZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwg
UGhhbnRvbSwgbm9kZS0+b3JpZ2luLAogICAgICAgICAgICAgICAgICAgICBFZGdlKG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSwgT3RoZXJVc2UpKTsKICAgICAgICAgICAgICAgICBvYnNlcnZlVXNlS2lu
ZE9uTm9kZTxPdGhlclVzZT4obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKLSAgICAgICAgICAgICAg
ICBub2RlLT5jb252ZXJ0VG9XZWFrQ29uc3RhbnQobV9ncmFwaC5nbG9iYWxUaGlzT2JqZWN0Rm9y
KG5vZGUtPmNvZGVPcmlnaW4pKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9XZWFr
Q29uc3RhbnQobV9ncmFwaC5nbG9iYWxUaGlzT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
CkBAIC05NDgsMTYgKzk0OCwxOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIAogICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjogewotICAgICAgICAgICAgTm9kZSogZ2xv
YmFsT2JqZWN0Tm9kZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ss
IFNwZWNOb25lLCBXZWFrSlNDb25zdGFudCwgbm9kZS0+Y29kZU9yaWdpbiwgCi0gICAgICAgICAg
ICAgICAgT3BJbmZvKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pKSk7
Ci0gICAgICAgICAgICBOb2RlKiBiYXJyaWVyTm9kZSA9IG1fZ3JhcGguYWRkTm9kZShTcGVjTm9u
ZSwgQ29uZGl0aW9uYWxTdG9yZUJhcnJpZXIsIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4sIAor
ICAgICAgICAgICAgTm9kZSogZ2xvYmFsT2JqZWN0Tm9kZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCisgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBXZWFrSlND
b25zdGFudCwgbm9kZS0+b3JpZ2luLCAKKyAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkpOworICAgICAgICAgICAgTm9k
ZSogYmFycmllck5vZGUgPSBtX2dyYXBoLmFkZE5vZGUoCisgICAgICAgICAgICAgICAgU3BlY05v
bmUsIENvbmRpdGlvbmFsU3RvcmVCYXJyaWVyLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4sIAogICAg
ICAgICAgICAgICAgIEVkZ2UoZ2xvYmFsT2JqZWN0Tm9kZSwgS25vd25DZWxsVXNlKSwgRWRnZShu
b2RlLT5jaGlsZDEoKS5ub2RlKCksIFVudHlwZWRVc2UpKTsKICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydChtX2luZGV4SW5CbG9jaywgYmFycmllck5vZGUpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFRlYXJPZmZBY3RpdmF0aW9uOiB7Ci0g
ICAgICAgICAgICBOb2RlKiBiYXJyaWVyTm9kZSA9IG1fZ3JhcGguYWRkTm9kZShTcGVjTm9uZSwg
U3RvcmVCYXJyaWVyV2l0aE51bGxDaGVjaywgbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwgCisg
ICAgICAgICAgICBOb2RlKiBiYXJyaWVyTm9kZSA9IG1fZ3JhcGguYWRkTm9kZSgKKyAgICAgICAg
ICAgICAgICBTcGVjTm9uZSwgU3RvcmVCYXJyaWVyV2l0aE51bGxDaGVjaywgbV9jdXJyZW50Tm9k
ZS0+b3JpZ2luLCAKICAgICAgICAgICAgICAgICBFZGdlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwg
VW50eXBlZFVzZSkpOwogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KG1faW5kZXhJ
bkJsb2NrLCBiYXJyaWVyTm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTk2NSw3ICs5Njgs
OCBAQCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgSXNTdHJpbmc6CiAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7Ci0gICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBo
YW50b20sIG5vZGUtPmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25l
LCBQaGFudG9tLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgIEVkZ2Uobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBTdHJpbmdVc2UpKTsKICAgICAgICAgICAgICAgICBtX2dyYXBoLmNv
bnZlcnRUb0NvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CiAgICAgICAgICAgICAgICAg
b2JzZXJ2ZVVzZUtpbmRPbk5vZGU8U3RyaW5nVXNlPihub2RlKTsKQEAgLTEwNjksNyArMTA3Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVUb1N0cmluZyhOb2RlKiBub2RlLCBFZGdlJiBl
ZGdlKQogICAgIHsKICAgICAgICAgZWRnZS5zZXROb2RlKG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCi0gICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY1N0cmluZywgVG9TdHJpbmcsIG5v
ZGUtPmNvZGVPcmlnaW4sCisgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY1N0cmluZywg
VG9TdHJpbmcsIG5vZGUtPm9yaWdpbiwKICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIHVz
ZUtpbmQpKSk7CiAgICAgfQogICAgIApAQCAtMTA3OCw3ICsxMDgyLDcgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgICAgIEFTU0VSVChhcnJheU1vZGUgPT0gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmlj
KSk7CiAgICAgICAgIAotICAgICAgICBpZiAoIWNhbk9wdGltaXplU3RyaW5nT2JqZWN0QWNjZXNz
KG5vZGUtPmNvZGVPcmlnaW4pKQorICAgICAgICBpZiAoIWNhbk9wdGltaXplU3RyaW5nT2JqZWN0
QWNjZXNzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIAogICAgICAgICBjcmVhdGVUb1N0cmluZzx1c2VLaW5kPihub2RlLCBub2RlLT5jaGlsZDEo
KSk7CkBAIC0xMTA2LDcgKzExMTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gZGVjaXNp
b24gcHJvY2VzcyBtdWNoIGVhc2llci4KICAgICAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2Rl
PFN0cmluZ1VzZT4oZWRnZS5ub2RlKCkpOwogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50
b20sIG5vZGUtPmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNw
ZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgRWRnZShlZGdl
Lm5vZGUoKSwgU3RyaW5nVXNlKSk7CiAgICAgICAgICAgICBlZGdlLnNldFVzZUtpbmQoS25vd25T
dHJpbmdVc2UpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE2NSwxNCArMTE2OSwxNCBAQCBw
cml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZVN0cmluZ09iamVjdCgpCi0gICAgICAgICAgICAmJiBjYW5PcHRpbWl6
ZVN0cmluZ09iamVjdEFjY2Vzcyhub2RlLT5jb2RlT3JpZ2luKSkgeworICAgICAgICAgICAgJiYg
Y2FuT3B0aW1pemVTdHJpbmdPYmplY3RBY2Nlc3Mobm9kZS0+b3JpZ2luLnNlbWFudGljKSkgewog
ICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1RvU3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QoKQotICAgICAgICAgICAgJiYgY2FuT3B0aW1p
emVTdHJpbmdPYmplY3RBY2Nlc3Mobm9kZS0+Y29kZU9yaWdpbikpIHsKKyAgICAgICAgICAgICYm
IGNhbk9wdGltaXplU3RyaW5nT2JqZWN0QWNjZXNzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpIHsK
ICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nT3JTdHJpbmdPYmplY3RVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1RvU3RyaW5nKCk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xMTg4LDEzICsxMTkyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5n
T2JqZWN0KCkKLSAgICAgICAgICAgICYmIGNhbk9wdGltaXplU3RyaW5nT2JqZWN0QWNjZXNzKG5v
ZGUtPmNvZGVPcmlnaW4pKSB7CisgICAgICAgICAgICAmJiBjYW5PcHRpbWl6ZVN0cmluZ09iamVj
dEFjY2Vzcyhub2RlLT5vcmlnaW4uc2VtYW50aWMpKSB7CiAgICAgICAgICAgICBmaXhFZGdlPFN0
cmluZ09iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZVN0cmluZ09yU3RyaW5nT2JqZWN0KCkKLSAgICAgICAgICAgICYmIGNhbk9wdGltaXplU3Ry
aW5nT2JqZWN0QWNjZXNzKG5vZGUtPmNvZGVPcmlnaW4pKSB7CisgICAgICAgICAgICAmJiBjYW5P
cHRpbWl6ZVN0cmluZ09iamVjdEFjY2Vzcyhub2RlLT5vcmlnaW4uc2VtYW50aWMpKSB7CiAgICAg
ICAgICAgICBmaXhFZGdlPFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEyMTMsMTYgKzEyMTcsMTYgQEAg
cHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChsZWZ0VXNlS2luZCA9PSBTdHJpbmdV
c2UgfHwgbGVmdFVzZUtpbmQgPT0gU3RyaW5nT2JqZWN0VXNlIHx8IGxlZnRVc2VLaW5kID09IFN0
cmluZ09yU3RyaW5nT2JqZWN0VXNlKTsKICAgICAgICAgCi0gICAgICAgIGlmIChpc1N0cmluZ09i
amVjdFVzZTxsZWZ0VXNlS2luZD4oKSAmJiAhY2FuT3B0aW1pemVTdHJpbmdPYmplY3RBY2Nlc3Mo
bm9kZS0+Y29kZU9yaWdpbikpCisgICAgICAgIGlmIChpc1N0cmluZ09iamVjdFVzZTxsZWZ0VXNl
S2luZD4oKSAmJiAhY2FuT3B0aW1pemVTdHJpbmdPYmplY3RBY2Nlc3Mobm9kZS0+b3JpZ2luLnNl
bWFudGljKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIGNv
bnZlcnRTdHJpbmdBZGRVc2U8bGVmdFVzZUtpbmQ+KG5vZGUsIGxlZnQpOwogICAgICAgICAKICAg
ICAgICAgaWYgKHJpZ2h0LT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKICAgICAgICAgICAgIGNv
bnZlcnRTdHJpbmdBZGRVc2U8U3RyaW5nVXNlPihub2RlLCByaWdodCk7Ci0gICAgICAgIGVsc2Ug
aWYgKHJpZ2h0LT5zaG91bGRTcGVjdWxhdGVTdHJpbmdPYmplY3QoKSAmJiBjYW5PcHRpbWl6ZVN0
cmluZ09iamVjdEFjY2Vzcyhub2RlLT5jb2RlT3JpZ2luKSkKKyAgICAgICAgZWxzZSBpZiAocmln
aHQtPnNob3VsZFNwZWN1bGF0ZVN0cmluZ09iamVjdCgpICYmIGNhbk9wdGltaXplU3RyaW5nT2Jq
ZWN0QWNjZXNzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpCiAgICAgICAgICAgICBjb252ZXJ0U3Ry
aW5nQWRkVXNlPFN0cmluZ09iamVjdFVzZT4obm9kZSwgcmlnaHQpOwotICAgICAgICBlbHNlIGlm
IChyaWdodC0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QoKSAmJiBjYW5PcHRp
bWl6ZVN0cmluZ09iamVjdEFjY2Vzcyhub2RlLT5jb2RlT3JpZ2luKSkKKyAgICAgICAgZWxzZSBp
ZiAocmlnaHQtPnNob3VsZFNwZWN1bGF0ZVN0cmluZ09yU3RyaW5nT2JqZWN0KCkgJiYgY2FuT3B0
aW1pemVTdHJpbmdPYmplY3RBY2Nlc3Mobm9kZS0+b3JpZ2luLnNlbWFudGljKSkKICAgICAgICAg
ICAgIGNvbnZlcnRTdHJpbmdBZGRVc2U8U3RyaW5nT3JTdHJpbmdPYmplY3RVc2U+KG5vZGUsIHJp
Z2h0KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtu
b3cgdGhhdCB0aGUgb3RoZXIgb3BlcmFuZCBpcyBzb21ldGhpbmcgd2VpcmQuIFRoZSBzZW1hbnRp
Y2FsbHkgY29ycmVjdApAQCAtMTIzNCwxMCArMTIzOCwxMCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgLy8gYW55dGhpbmcgdG8gQHJpZ2h0LCBzaW5jZSBUb1ByaW1pdGl2ZSBtYXkgYmUgZWZmZWN0
ZnVsLgogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlKiB0b1ByaW1pdGl2ZSA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIHJl
c3VsdE9mVG9QcmltaXRpdmUocmlnaHQtPnByZWRpY3Rpb24oKSksIFRvUHJpbWl0aXZlLCBub2Rl
LT5jb2RlT3JpZ2luLAotICAgICAgICAgICAgICAgIEVkZ2UocmlnaHQubm9kZSgpKSk7CisgICAg
ICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIHJlc3VsdE9mVG9QcmltaXRpdmUocmlnaHQtPnBy
ZWRpY3Rpb24oKSksIFRvUHJpbWl0aXZlLAorICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbiwg
RWRnZShyaWdodC5ub2RlKCkpKTsKICAgICAgICAgICAgIE5vZGUqIHRvU3RyaW5nID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y1N0cmluZywgVG9TdHJpbmcsIG5vZGUtPmNvZGVPcmlnaW4sIEVkZ2UodG9QcmltaXRpdmUpKTsK
KyAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY1N0cmluZywgVG9TdHJpbmcsIG5v
ZGUtPm9yaWdpbiwgRWRnZSh0b1ByaW1pdGl2ZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBmaXh1cFRvUHJpbWl0aXZlKHRvUHJpbWl0aXZlKTsKICAgICAgICAgICAgIGZpeHVwVG9TdHJp
bmcodG9TdHJpbmcpOwpAQCAtMTI0OCw3ICsxMjUyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8g
V2UncmUgZG9pbmcgY2hlY2tzIHVwIHRoZXJlLCBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0
IHRoZQogICAgICAgICAvLyAqb3JpZ2luYWwqIGlucHV0cyB0byB0aGUgYWRkaXRpb24gYXJlIGxp
dmUgdXAgdG8gaGVyZS4KICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAg
ICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+Y29kZU9yaWdp
biwKKyAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+
b3JpZ2luLAogICAgICAgICAgICAgRWRnZShvcmlnaW5hbExlZnQpLCBFZGdlKG9yaWdpbmFsUmln
aHQpKTsKICAgICAgICAgCiAgICAgICAgIGNvbnZlcnRUb01ha2VSb3BlKG5vZGUpOwpAQCAtMTM2
NSwzNyArMTM2OSwzNiBAQCBwcml2YXRlOgogICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRl
KGJsb2NrKTsKICAgICB9CiAgICAgCi0gICAgTm9kZSogY2hlY2tBcnJheShBcnJheU1vZGUgYXJy
YXlNb2RlLCBjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBOb2RlKiBhcnJheSwgTm9kZSog
aW5kZXgsIGJvb2wgKCpzdG9yYWdlQ2hlY2spKGNvbnN0IEFycmF5TW9kZSYpID0gY2FuQ1NFU3Rv
cmFnZSkKKyAgICBOb2RlKiBjaGVja0FycmF5KEFycmF5TW9kZSBhcnJheU1vZGUsIGNvbnN0IE5v
ZGVPcmlnaW4mIG9yaWdpbiwgTm9kZSogYXJyYXksIE5vZGUqIGluZGV4LCBib29sICgqc3RvcmFn
ZUNoZWNrKShjb25zdCBBcnJheU1vZGUmKSA9IGNhbkNTRVN0b3JhZ2UpCiAgICAgewogICAgICAg
ICBBU1NFUlQoYXJyYXlNb2RlLmlzU3BlY2lmaWMoKSk7CiAgICAgICAgIAogICAgICAgICBpZiAo
YXJyYXlNb2RlLnR5cGUoKSA9PSBBcnJheTo6U3RyaW5nKSB7CiAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVj
Tm9uZSwgUGhhbnRvbSwgY29kZU9yaWdpbiwKLSAgICAgICAgICAgICAgICBFZGdlKGFycmF5LCBT
dHJpbmdVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBo
YW50b20sIG9yaWdpbiwgRWRnZShhcnJheSwgU3RyaW5nVXNlKSk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFycmF5TW9kZS5vcmlnaW5hbEFy
cmF5U3RydWN0dXJlKG1fZ3JhcGgsIGNvZGVPcmlnaW4pOworICAgICAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBhcnJheU1vZGUub3JpZ2luYWxBcnJheVN0cnVjdHVyZShtX2dyYXBoLCBv
cmlnaW4uc2VtYW50aWMpOwogICAgICAgICAKICAgICAgICAgICAgIEVkZ2UgaW5kZXhFZGdlID0g
aW5kZXggPyBFZGdlKGluZGV4LCBJbnQzMlVzZSkgOiBFZGdlKCk7CiAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKGFycmF5TW9kZS5kb2VzQ29udmVyc2lvbigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKHN0cnVjdHVyZSkgewogICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25l
LCBBcnJheWlmeVRvU3RydWN0dXJlLCBjb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBBcnJheWlmeVRvU3RydWN0dXJlLCBvcmlnaW4s
CiAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8oc3RydWN0dXJlKSwgT3BJbmZvKGFycmF5
TW9kZS5hc1dvcmQoKSksIEVkZ2UoYXJyYXksIENlbGxVc2UpLCBpbmRleEVkZ2UpOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05v
bmUsIEFycmF5aWZ5LCBjb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRl
eEluQmxvY2ssIFNwZWNOb25lLCBBcnJheWlmeSwgb3JpZ2luLAogICAgICAgICAgICAgICAgICAg
ICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoYXJyYXksIENlbGxVc2UpLCBp
bmRleEVkZ2UpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHN0cnVjdHVyZSkgewogICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxv
Y2ssIFNwZWNOb25lLCBDaGVja1N0cnVjdHVyZSwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIG9yaWdp
biwKICAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNl
dChzdHJ1Y3R1cmUpKSwgRWRnZShhcnJheSwgQ2VsbFVzZSkpOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0g
ICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrQXJy
YXksIGNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywg
U3BlY05vbmUsIENoZWNrQXJyYXksIG9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgIE9w
SW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBFZGdlKGFycmF5LCBDZWxsVXNlKSk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMTQwNiwxMSArMTQwOSwxMSBAQCBwcml2YXRl
OgogICAgICAgICAKICAgICAgICAgaWYgKGFycmF5TW9kZS51c2VzQnV0dGVyZmx5KCkpIHsKICAg
ICAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAg
ICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgR2V0QnV0dGVyZmx5LCBjb2RlT3JpZ2luLCBF
ZGdlKGFycmF5LCBDZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNw
ZWNOb25lLCBHZXRCdXR0ZXJmbHksIG9yaWdpbiwgRWRnZShhcnJheSwgQ2VsbFVzZSkpOwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgR2V0SW5kZXhlZFByb3Bl
cnR5U3RvcmFnZSwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVj
Tm9uZSwgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSwgb3JpZ2luLAogICAgICAgICAgICAgT3BJ
bmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoYXJyYXksIEtub3duQ2VsbFVzZSkpOwogICAg
IH0KICAgICAKQEAgLTE0MjEsNyArMTQyNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHN3aXRjaCAo
bm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXk6OkZvcmNlRXhp
dDogewogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAg
ICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIEZvcmNlT1NSRXhpdCwgbm9kZS0+Y29kZU9y
aWdpbik7CisgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBGb3JjZU9T
UkV4aXQsIG5vZGUtPm9yaWdpbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgICAgIApAQCAtMTQzNCw3ICsxNDM3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICBOb2Rl
KiBzdG9yYWdlID0gY2hlY2tBcnJheShub2RlLT5hcnJheU1vZGUoKSwgbm9kZS0+Y29kZU9yaWdp
biwgYmFzZS5ub2RlKCksIGluZGV4Lm5vZGUoKSk7CisgICAgICAgICAgICBOb2RlKiBzdG9yYWdl
ID0gY2hlY2tBcnJheShub2RlLT5hcnJheU1vZGUoKSwgbm9kZS0+b3JpZ2luLCBiYXNlLm5vZGUo
KSwgaW5kZXgubm9kZSgpKTsKICAgICAgICAgICAgIGlmICghc3RvcmFnZSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAKQEAgLTE1MzcsNyArMTU0MCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgbV9yZXF1aXJlZFBoYW50b21zLmFwcGVuZChlZGdlLm5vZGUoKSk7
CiAgICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MkFzRG91Ymxl
LCBJbnQ1MlRvRG91YmxlLAotICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2Rl
T3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9jdXJyZW50Tm9kZS0+b3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsK
ICAgICAgICAgICAgICAgICBlZGdlID0gRWRnZShyZXN1bHQsIHVzZUtpbmQpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTE1OTEsNyArMTU5NCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBtX3JlcXVpcmVkUGhhbnRvbXMuYXBwZW5kKGVkZ2Uubm9kZSgpKTsK
ICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAg
ICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MiwgSW50NTJUb1ZhbHVlLAot
ICAgICAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2Rl
KCksIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5vcmlnaW4s
IEVkZ2UoZWRnZS5ub2RlKCksIFVudHlwZWRVc2UpKTsKICAgICAgICAgICAgIGVkZ2UgPSBFZGdl
KHJlc3VsdCwgdXNlS2luZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE2
MDUsOSArMTYwOCw5IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBOb2RlKiBiYXJyaWVyTm9k
ZTsKICAgICAgICAgaWYgKCFjaGlsZDIpCi0gICAgICAgICAgICBiYXJyaWVyTm9kZSA9IG1fZ3Jh
cGguYWRkTm9kZShTcGVjTm9uZSwgU3RvcmVCYXJyaWVyLCBtX2N1cnJlbnROb2RlLT5jb2RlT3Jp
Z2luLCBFZGdlKGNoaWxkMS5ub2RlKCksIGNoaWxkMS51c2VLaW5kKCkpKTsKKyAgICAgICAgICAg
IGJhcnJpZXJOb2RlID0gbV9ncmFwaC5hZGROb2RlKFNwZWNOb25lLCBTdG9yZUJhcnJpZXIsIG1f
Y3VycmVudE5vZGUtPm9yaWdpbiwgRWRnZShjaGlsZDEubm9kZSgpLCBjaGlsZDEudXNlS2luZCgp
KSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgYmFycmllck5vZGUgPSBtX2dyYXBoLmFk
ZE5vZGUoU3BlY05vbmUsIENvbmRpdGlvbmFsU3RvcmVCYXJyaWVyLCBtX2N1cnJlbnROb2RlLT5j
b2RlT3JpZ2luLCAKKyAgICAgICAgICAgIGJhcnJpZXJOb2RlID0gbV9ncmFwaC5hZGROb2RlKFNw
ZWNOb25lLCBDb25kaXRpb25hbFN0b3JlQmFycmllciwgbV9jdXJyZW50Tm9kZS0+b3JpZ2luLCAK
ICAgICAgICAgICAgICAgICBFZGdlKGNoaWxkMS5ub2RlKCksIGNoaWxkMS51c2VLaW5kKCkpLCBF
ZGdlKGNoaWxkMi5ub2RlKCksIGNoaWxkMi51c2VLaW5kKCkpKTsKICAgICAgICAgfQogICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnQoaW5kZXhJbkJsb2NrLCBiYXJyaWVyTm9kZSk7CkBAIC0x
NjMxLDcgKzE2MzQsNyBAQCBwcml2YXRlOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICB1c2VL
aW5kID0gTm90Q2VsbFVzZTsKICAgICAgICAgTm9kZSogbmV3Tm9kZSA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMyLCBWYWx1
ZVRvSW50MzIsIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4sCisgICAgICAgICAgICBtX2luZGV4
SW5CbG9jaywgU3BlY0ludDMyLCBWYWx1ZVRvSW50MzIsIG1fY3VycmVudE5vZGUtPm9yaWdpbiwK
ICAgICAgICAgICAgIEVkZ2Uobm9kZSwgdXNlS2luZCkpOwogICAgICAgICBvYnNlcnZlVXNlS2lu
ZE9uTm9kZShub2RlLCB1c2VLaW5kKTsKICAgICAgICAgCkBAIC0xNjQ1LDcgKzE2NDgsNyBAQCBw
cml2YXRlOgogICAgICAgICAKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NTJBc0RvdWJs
ZSwgSW50MzJUb0RvdWJsZSwKLSAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4s
IEVkZ2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOworICAgICAgICAgICAgbV9jdXJyZW50Tm9k
ZS0+b3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKICAgICAgICAgCiAgICAg
ICAgIGVkZ2UgPSBFZGdlKHJlc3VsdCwgdXNlS2luZCk7CiAgICAgfQpAQCAtMTY3Myw3ICsxNjc2
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0KICAgICAg
ICAgZWRnZS5zZXROb2RlKG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgU3BlY0ludDMyLCBKU0NvbnN0YW50LCBtX2N1cnJlbnROb2RlLT5jb2Rl
T3JpZ2luLAorICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMiwgSlNDb25zdGFu
dCwgbV9jdXJyZW50Tm9kZS0+b3JpZ2luLAogICAgICAgICAgICAgT3BJbmZvKGNvbnN0YW50UmVn
aXN0ZXIpKSk7CiAgICAgfQogICAgIApAQCAtMTcxNyw5ICsxNzIwLDkgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKG5vZGUtPnByZWRpY3Rpb24oKSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRC
bG9jayA9IG1fZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+Y29kZU9yaWdpbik7Cisg
ICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jayA9IG1fZ3JhcGguYmFzZWxpbmVDb2RlQmxv
Y2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJh
eVByb2ZpbGUgPSAKLSAgICAgICAgICAgIHByb2ZpbGVkQmxvY2stPmdldEFycmF5UHJvZmlsZShu
b2RlLT5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOworICAgICAgICAgICAgcHJvZmlsZWRCbG9j
ay0+Z2V0QXJyYXlQcm9maWxlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KTsK
ICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNp
bmdQcmVkaWN0aW9ucyk7CiAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpIHsKICAgICAgICAgICAg
IENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7CkBAIC0x
NzM4LDcgKzE3NDEsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgYXJyYXlNb2RlID0gYXJyYXlNb2RlLnJlZmluZSgKLSAgICAgICAgICAgIG1fZ3JhcGgsIG5v
ZGUtPmNvZGVPcmlnaW4sIG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksIG5vZGUtPnByZWRp
Y3Rpb24oKSk7CisgICAgICAgICAgICBtX2dyYXBoLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIG5v
ZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksIG5vZGUtPnByZWRpY3Rpb24oKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgaWYgKGFycmF5TW9kZS50eXBlKCkgPT0gQXJyYXk6OkdlbmVyaWMpIHsK
ICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBpbnB1dCBpcyBzb21ldGhpbmcgdGhhdCB3ZSBj
YW4ndCBnZXQgYXJyYXkgbGVuZ3RoIGZvciwgYnV0IGZvciB3aGljaCB3ZQpAQCAtMTc3MiwxMCAr
MTc3NSwxMCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBOb2RlKiBs
ZW5ndGggPSBwcmVwZW5kR2V0QXJyYXlMZW5ndGgoCi0gICAgICAgICAgICBub2RlLT5jb2RlT3Jp
Z2luLCBub2RlLT5jaGlsZDEoKS5ub2RlKCksIEFycmF5TW9kZSh0b0FycmF5VHlwZSh0eXBlKSkp
OworICAgICAgICAgICAgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEoKS5ub2RlKCksIEFycmF5
TW9kZSh0b0FycmF5VHlwZSh0eXBlKSkpOwogICAgICAgICAKICAgICAgICAgTm9kZSogc2hpZnRB
bW91bnQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNJbnQzMiwgSlNDb25zdGFudCwgbm9kZS0+Y29kZU9yaWdpbiwKKyAgICAgICAg
ICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzIsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwK
ICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLmNvbnN0YW50UmVnaXN0ZXJGb3JDb25zdGFudChq
c051bWJlcihsb2dFbGVtZW50U2l6ZSh0eXBlKSkpKSk7CiAgICAgICAgIAogICAgICAgICAvLyBX
ZSBjYW4gdXNlIGEgQml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBhcnJheXMgd2lsbCBuZXZl
ciBoYXZlIGEgYnl0ZUxlbmd0aApAQCAtMTc5NiwxOCArMTc5OSwxOCBAQCBwcml2YXRlOgogICAg
ICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBub2Rl
LT5zZXRBcnJheU1vZGUoYXJyYXlNb2RlKTsKICAgICAgICAgICAgIAotICAgICAgICBOb2RlKiBz
dG9yYWdlID0gY2hlY2tBcnJheShhcnJheU1vZGUsIG5vZGUtPmNvZGVPcmlnaW4sIG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSwgMCwgbGVuZ3RoTmVlZHNTdG9yYWdlKTsKKyAgICAgICAgTm9kZSogc3Rv
cmFnZSA9IGNoZWNrQXJyYXkoYXJyYXlNb2RlLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkMSgp
Lm5vZGUoKSwgMCwgbGVuZ3RoTmVlZHNTdG9yYWdlKTsKICAgICAgICAgaWYgKCFzdG9yYWdlKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgIG5vZGUtPmNoaWxkMigp
ID0gRWRnZShzdG9yYWdlKTsKICAgICB9CiAgICAgCi0gICAgTm9kZSogcHJlcGVuZEdldEFycmF5
TGVuZ3RoKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgTm9kZSogY2hpbGQsIEFycmF5TW9kZSBhcnJh
eU1vZGUpCisgICAgTm9kZSogcHJlcGVuZEdldEFycmF5TGVuZ3RoKE5vZGVPcmlnaW4gb3JpZ2lu
LCBOb2RlKiBjaGlsZCwgQXJyYXlNb2RlIGFycmF5TW9kZSkKICAgICB7Ci0gICAgICAgIE5vZGUq
IHN0b3JhZ2UgPSBjaGVja0FycmF5KGFycmF5TW9kZSwgY29kZU9yaWdpbiwgY2hpbGQsIDAsIGxl
bmd0aE5lZWRzU3RvcmFnZSk7CisgICAgICAgIE5vZGUqIHN0b3JhZ2UgPSBjaGVja0FycmF5KGFy
cmF5TW9kZSwgb3JpZ2luLCBjaGlsZCwgMCwgbGVuZ3RoTmVlZHNTdG9yYWdlKTsKICAgICAgICAg
cmV0dXJuIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX2luZGV4SW5C
bG9jaywgU3BlY0ludDMyLCBHZXRBcnJheUxlbmd0aCwgY29kZU9yaWdpbiwKKyAgICAgICAgICAg
IG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzIsIEdldEFycmF5TGVuZ3RoLCBvcmlnaW4sCiAgICAg
ICAgICAgICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxs
VXNlKSwgRWRnZShzdG9yYWdlKSk7CiAgICAgfQogICAgIApAQCAtMTgyMSw3ICsxODI0LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIGNo
ZWNrQXJyYXkoCi0gICAgICAgICAgICBBcnJheU1vZGUodG9BcnJheVR5cGUodHlwZSkpLCBub2Rl
LT5jb2RlT3JpZ2luLCBub2RlLT5jaGlsZDEoKS5ub2RlKCksCisgICAgICAgICAgICBBcnJheU1v
ZGUodG9BcnJheVR5cGUodHlwZSkpLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSwKICAgICAgICAgICAgIDAsIG5ldmVyTmVlZHNTdG9yYWdlKTsKICAgICAgICAgCiAgICAgICAg
IG5vZGUtPnNldE9wKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KTsKQEAgLTE4MzcsNyArMTg0MCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3JlcXVp
cmVkUGhhbnRvbXMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAotICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrICsgMSwgU3BlY05vbmUs
IFBoYW50b20sIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgbV9p
bmRleEluQmxvY2sgKyAxLCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9jdXJyZW50Tm9kZS0+b3JpZ2lu
LAogICAgICAgICAgICAgICAgIEVkZ2UobV9yZXF1aXJlZFBoYW50b21zW2ldLCBVbnR5cGVkVXNl
KSk7CiAgICAgICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAkocmV2aXNpb24gMTYzOTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDExICs5OCwxMSBAQCBib29sIEdy
YXBoOjpkdW1wQ29kZU9yaWdpbihQcmludFN0cmVhbSYgCiAgICAgaWYgKCFwcmV2aW91c05vZGUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAocHJldmlvdXNOb2RlLT5jb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZSA9PSBjdXJyZW50Tm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUpCisgICAgaWYgKHByZXZpb3VzTm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNh
bGxGcmFtZSA9PSBjdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIFZlY3RvcjxDb2RlT3JpZ2luPiBwcmV2
aW91c0lubGluZVN0YWNrID0gcHJldmlvdXNOb2RlLT5jb2RlT3JpZ2luLmlubGluZVN0YWNrKCk7
Ci0gICAgVmVjdG9yPENvZGVPcmlnaW4+IGN1cnJlbnRJbmxpbmVTdGFjayA9IGN1cnJlbnROb2Rl
LT5jb2RlT3JpZ2luLmlubGluZVN0YWNrKCk7CisgICAgVmVjdG9yPENvZGVPcmlnaW4+IHByZXZp
b3VzSW5saW5lU3RhY2sgPSBwcmV2aW91c05vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVTdGFj
aygpOworICAgIFZlY3RvcjxDb2RlT3JpZ2luPiBjdXJyZW50SW5saW5lU3RhY2sgPSBjdXJyZW50
Tm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZVN0YWNrKCk7CiAgICAgdW5zaWduZWQgY29tbW9u
U2l6ZSA9IHN0ZDo6bWluKHByZXZpb3VzSW5saW5lU3RhY2suc2l6ZSgpLCBjdXJyZW50SW5saW5l
U3RhY2suc2l6ZSgpKTsKICAgICB1bnNpZ25lZCBpbmRleE9mRGl2ZXJnZW5jZSA9IGNvbW1vblNp
emU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbW1vblNpemU7ICsraSkgewpAQCAt
MTM1LDcgKzEzNSw3IEBAIGJvb2wgR3JhcGg6OmR1bXBDb2RlT3JpZ2luKFByaW50U3RyZWFtJiAK
IAogaW50IEdyYXBoOjphbW91bnRPZk5vZGVXaGl0ZVNwYWNlKE5vZGUqIG5vZGUpCiB7Ci0gICAg
cmV0dXJuIChub2RlLT5jb2RlT3JpZ2luLmlubGluZURlcHRoKCkgLSAxKSAqIDI7CisgICAgcmV0
dXJuIChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lRGVwdGgoKSAtIDEpICogMjsKIH0KIAog
dm9pZCBHcmFwaDo6cHJpbnROb2RlV2hpdGVTcGFjZShQcmludFN0cmVhbSYgb3V0LCBOb2RlKiBu
b2RlKQpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCwgY29uc3QKICAgICBpZiAobm9kZS0+aGFzVmFyTnVtYmVyKCkpCiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgbm9kZS0+dmFyTnVtYmVyKCkpOwogICAgIGlmIChub2RlLT5oYXNSZWdpc3RlclBv
aW50ZXIoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiZ2xvYmFsIiwgZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5maW5kUmVnaXN0ZXJJbmRleChub2RlLT5yZWdpc3RlclBv
aW50ZXIoKSksICIoIiwgUmF3UG9pbnRlcihub2RlLT5yZWdpc3RlclBvaW50ZXIoKSksICIpIik7
CisgICAgICAgIG91dC5wcmludChjb21tYSwgImdsb2JhbCIsIGdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5maW5kUmVnaXN0ZXJJbmRleChub2RlLT5yZWdpc3RlclBvaW50
ZXIoKSksICIoIiwgUmF3UG9pbnRlcihub2RlLT5yZWdpc3RlclBvaW50ZXIoKSksICIpIik7CiAg
ICAgaWYgKG5vZGUtPmhhc0lkZW50aWZpZXIoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAi
aWQiLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksICJ7IiwgaWRlbnRpZmllcnMoKVtub2RlLT5p
ZGVudGlmaWVyTnVtYmVyKCldLCAifSIpOwogICAgIGlmIChub2RlLT5oYXNTdHJ1Y3R1cmVTZXQo
KSkKQEAgLTMyOCw3ICszMjgsOSBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQs
IGNvbnN0CiAgICAgICAgIG91dC5wcmludChjb21tYSwgIlI6Iiwgc29ydGVkTGlzdER1bXAocmVh
ZHMuZGlyZWN0KCksICIsIikpOwogICAgIGlmICghd3JpdGVzLmlzRW1wdHkoKSkKICAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAiVzoiLCBzb3J0ZWRMaXN0RHVtcCh3cml0ZXMuZGlyZWN0KCksICIs
IikpOwotICAgIG91dC5wcmludChjb21tYSwgImJjIyIsIG5vZGUtPmNvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCk7CisgICAgb3V0LnByaW50KGNvbW1hLCAiYmMjIiwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLmJ5dGVjb2RlSW5kZXgpOworICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50aWMgIT0gbm9k
ZS0+b3JpZ2luLmZvckV4aXQpCisgICAgICAgIG91dC5wcmludChjb21tYSwgImV4aXQ6ICIsIG5v
ZGUtPm9yaWdpbi5mb3JFeGl0KTsKICAgICAKICAgICBvdXQucHJpbnQoIikiKTsKIApAQCAtMzQ0
LDcgKzM0Niw3IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKIAog
dm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIq
IHByZWZpeCwgQmFzaWNCbG9jayogYmxvY2ssIFBoaU5vZGVEdW1wTW9kZSBwaGlOb2RlRHVtcE1v
ZGUsIER1bXBDb250ZXh0KiBjb250ZXh0KQogewotICAgIG91dC5wcmludChwcmVmaXgsICJCbG9j
ayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPmNvZGVPcmlnaW4sIGNv
bnRleHQpLCAiKTogIiwgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiKHNraXBwZWQpIiwgYmxv
Y2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDogIiIsICJcbiIpOworICAgIG91dC5w
cmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+YXQo
MCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiAiLCBibG9jay0+aXNSZWFjaGFibGUg
PyAiIiA6ICIoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIg
OiAiIiwgIlxuIik7CiAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUHJlZGVjZXNzb3JzOiIpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnByZWRlY2Vzc29ycy5zaXplKCk7ICsr
aSkKICAgICAgICAgb3V0LnByaW50KCIgIiwgKmJsb2NrLT5wcmVkZWNlc3NvcnNbaV0pOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTYzOTE5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NTksNyArNDU5LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgaGFzRXhpdFNpdGUoTm9kZSog
bm9kZSwgRXhpdEtpbmQgZXhpdEtpbmQpCiAgICAgewotICAgICAgICByZXR1cm4gaGFzRXhpdFNp
dGUobm9kZS0+Y29kZU9yaWdpbiwgZXhpdEtpbmQpOworICAgICAgICByZXR1cm4gaGFzRXhpdFNp
dGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGl0S2luZCk7CiAgICAgfQogICAgIAogICAgIFZp
cnR1YWxSZWdpc3RlciBhcmd1bWVudHNSZWdpc3RlckZvcihJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSkKQEAgLTUzMyw3ICs1MzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbm9k
ZSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKLSAgICAgICAgQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+Y29kZU9yaWdpbik7Cisg
ICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS0+b3AoKSA9
PSBHZXRBcmd1bWVudCkKICAgICAgICAgICAgIHJldHVybiBwcm9maWxlZEJsb2NrLT52YWx1ZVBy
b2ZpbGVGb3JBcmd1bWVudChub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKSk7CkBAIC01NTAsNyAr
NTUwLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS0+
aGFzSGVhcFByZWRpY3Rpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBwcm9maWxlZEJsb2NrLT52
YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChub2RlLT5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgpOworICAgICAgICAgICAgcmV0dXJuIHByb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KTsKICAgICAg
ICAgCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTU2MCwxMyArNTYwLDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgcmV0dXJuIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUoKTsKICAgICAgICAgCi0gICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRC
bG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICBD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpOwogICAgICAgICAKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gR2V0TG9j
YWwpIHsKICAgICAgICAgICAgIHJldHVybiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpm
cm9tTGF6eU9wZXJhbmQoCiAgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywKICAgICAgICAg
ICAgICAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSgKLSAgICAgICAgICAgICAgICAgICAg
bm9kZS0+Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBub2RlLT5sb2NhbCgpKSk7CisgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4LCBub2RlLT5s
b2NhbCgpKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHJldHVybiBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlKHZhbHVlUHJvZmlsZUZvcihub2RlKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW52YWxpZGF0aW9u
UG9pbnRJbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg1LDE4ICs4NSwxOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZv
aWQgaGFuZGxlKHVuc2lnbmVkIG5vZGVJbmRleCwgTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAg
IGlmIChtX29yaWdpblRoYXRIYWRGaXJlLmlzU2V0KCkgJiYgbV9vcmlnaW5UaGF0SGFkRmlyZSAh
PSBub2RlLT5jb2RlT3JpZ2luKSB7CisgICAgICAgIGlmIChtX29yaWdpblRoYXRIYWRGaXJlLmlz
U2V0KCkgJiYgbV9vcmlnaW5UaGF0SGFkRmlyZSAhPSBub2RlLT5vcmlnaW4uZm9yRXhpdCkgewog
ICAgICAgICAgICAgaW5zZXJ0SW52YWxpZGF0aW9uQ2hlY2sobm9kZUluZGV4LCBub2RlKTsKICAg
ICAgICAgICAgIG1fb3JpZ2luVGhhdEhhZEZpcmUgPSBDb2RlT3JpZ2luKCk7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIGlmICh3cml0ZXNPdmVybGFwKG1fZ3JhcGgsIG5vZGUsIFdhdGNo
cG9pbnRfZmlyZSkpCi0gICAgICAgICAgICBtX29yaWdpblRoYXRIYWRGaXJlID0gbm9kZS0+Y29k
ZU9yaWdpbjsKKyAgICAgICAgICAgIG1fb3JpZ2luVGhhdEhhZEZpcmUgPSBub2RlLT5vcmlnaW4u
Zm9yRXhpdDsKICAgICB9CiAgICAgCiAgICAgdm9pZCBpbnNlcnRJbnZhbGlkYXRpb25DaGVjayh1
bnNpZ25lZCBub2RlSW5kZXgsIE5vZGUqIG5vZGUpCiAgICAgewotICAgICAgICBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKG5vZGVJbmRleCwgU3BlY05vbmUsIEludmFsaWRhdGlvblBvaW50LCBu
b2RlLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2Rl
SW5kZXgsIFNwZWNOb25lLCBJbnZhbGlkYXRpb25Qb2ludCwgbm9kZS0+b3JpZ2luKTsKICAgICB9
CiAgICAgCiAgICAgQ29kZU9yaWdpbiBtX29yaWdpblRoYXRIYWRGaXJlOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkocmV2aXNpb24gMTYzOTE5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDYsNyArMjQ2LDggQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIGRhdGEu
cHJlSGVhZGVyLT5pbnNlcnRCZWZvcmVMYXN0KG5vZGUpOwogICAgICAgICBub2RlLT5taXNjLm93
bmVyID0gZGF0YS5wcmVIZWFkZXI7Ci0gICAgICAgIG5vZGUtPmNvZGVPcmlnaW5Gb3JFeGl0VGFy
Z2V0ID0gZGF0YS5wcmVIZWFkZXItPmxhc3QoKS0+Y29kZU9yaWdpbkZvckV4aXRUYXJnZXQ7Cisg
ICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luYWxPcmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAg
IG5vZGUtPm9yaWdpbi5mb3JFeGl0ID0gZGF0YS5wcmVIZWFkZXItPmxhc3QoKS0+b3JpZ2luLmZv
ckV4aXQ7CiAgICAgICAgIAogICAgICAgICAvLyBNb2RpZnkgdGhlIHN0YXRlcyBhdCB0aGUgZW5k
IG9mIHRoZSBwcmVIZWFkZXIgb2YgdGhlIGxvb3Agd2UgaG9pc3RlZCB0bywKICAgICAgICAgLy8g
YW5kIGFsbCBwcmUtaGVhZGVycyBpbnNpZGUgdGhlIGxvb3AuCkBAIC0yNjksNyArMjcwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgLy8gY29kZS4gQnV0IGZvciBub3cgd2UganVzdCBhc3NlcnQgdGhh
dCdzIHRoZSBjYXNlLgogICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG5vZGUtPmZsYWdzKCkgJiBO
b2RlSGFzVmFyQXJncykpOwogICAgICAgICAKLSAgICAgICAgbm9kZVJlZiA9IG1fZ3JhcGguYWRk
Tm9kZShTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+Y29kZU9yaWdpbiwgbm9kZS0+Y2hpbGRyZW4p
OworICAgICAgICBub2RlUmVmID0gbV9ncmFwaC5hZGROb2RlKFNwZWNOb25lLCBQaGFudG9tLCBv
cmlnaW5hbE9yaWdpbiwgbm9kZS0+Y2hpbGRyZW4pOwogICAgICAgICAKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJl
SGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2Mzkx
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIEJhc2ljQmxvY2sqIGNy
ZWF0ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgKIHsKICAgICBCYXNpY0Jsb2NrKiBwcmVIZWFkZXIg
PSBpbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKGJsb2NrKTsKICAgICBwcmVIZWFkZXItPmFwcGVu
ZE5vZGUoCi0gICAgICAgIGdyYXBoLCBTcGVjTm9uZSwgSnVtcCwgYmxvY2stPmF0KDApLT5jb2Rl
T3JpZ2luLCBPcEluZm8oYmxvY2spKTsKKyAgICAgICAgZ3JhcGgsIFNwZWNOb25lLCBKdW1wLCBi
bG9jay0+YXQoMCktPm9yaWdpbiwgT3BJbmZvKGJsb2NrKSk7CiAgICAgCiAgICAgZm9yICh1bnNp
Z25lZCBwcmVkZWNlc3NvckluZGV4ID0gMDsgcHJlZGVjZXNzb3JJbmRleCA8IGJsb2NrLT5wcmVk
ZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4KyspIHsKICAgICAgICAgQmFzaWNCbG9j
ayogcHJlZGVjZXNzb3IgPSBibG9jay0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE2MzkxOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw3ICszMSw2IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKLSNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5o
IgogI2luY2x1ZGUgIkRGR0FkamFjZW5jeUxpc3QuaCIKICNpbmNsdWRlICJERkdBcml0aE1vZGUu
aCIKQEAgLTM5LDYgKzM4LDcgQEAKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJE
RkdMYXp5SlNWYWx1ZS5oIgogI2luY2x1ZGUgIkRGR05vZGVGbGFncy5oIgorI2luY2x1ZGUgIkRG
R05vZGVPcmlnaW4uaCIKICNpbmNsdWRlICJERkdOb2RlVHlwZS5oIgogI2luY2x1ZGUgIkRGR1Zh
cmlhYmxlQWNjZXNzRGF0YS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKQEAgLTE2MSw5ICsx
NjEsOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgCiAgICAgTm9kZSgpIHsgfQogICAgIAotICAgIE5v
ZGUoTm9kZVR5cGUgb3AsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgY29uc3QgQWRqYWNlbmN5TGlz
dCYgY2hpbGRyZW4pCi0gICAgICAgIDogY29kZU9yaWdpbihjb2RlT3JpZ2luKQotICAgICAgICAs
IGNvZGVPcmlnaW5Gb3JFeGl0VGFyZ2V0KGNvZGVPcmlnaW4pCisgICAgTm9kZShOb2RlVHlwZSBv
cCwgTm9kZU9yaWdpbiBub2RlT3JpZ2luLCBjb25zdCBBZGphY2VuY3lMaXN0JiBjaGlsZHJlbikK
KyAgICAgICAgOiBvcmlnaW4obm9kZU9yaWdpbikKICAgICAgICAgLCBjaGlsZHJlbihjaGlsZHJl
bikKICAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoKSkKICAgICAg
ICAgLCBtX3JlZkNvdW50KDEpCkBAIC0xNzQsOSArMTczLDggQEAgc3RydWN0IE5vZGUgewogICAg
IH0KICAgICAKICAgICAvLyBDb25zdHJ1Y3QgYSBub2RlIHdpdGggdXAgdG8gMyBjaGlsZHJlbiwg
bm8gaW1tZWRpYXRlIHZhbHVlLgotICAgIE5vZGUoTm9kZVR5cGUgb3AsIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgRWRnZSBjaGlsZDEgPSBFZGdlKCksIEVkZ2UgY2hpbGQyID0gRWRnZSgpLCBFZGdl
IGNoaWxkMyA9IEVkZ2UoKSkKLSAgICAgICAgOiBjb2RlT3JpZ2luKGNvZGVPcmlnaW4pCi0gICAg
ICAgICwgY29kZU9yaWdpbkZvckV4aXRUYXJnZXQoY29kZU9yaWdpbikKKyAgICBOb2RlKE5vZGVU
eXBlIG9wLCBOb2RlT3JpZ2luIG5vZGVPcmlnaW4sIEVkZ2UgY2hpbGQxID0gRWRnZSgpLCBFZGdl
IGNoaWxkMiA9IEVkZ2UoKSwgRWRnZSBjaGlsZDMgPSBFZGdlKCkpCisgICAgICAgIDogb3JpZ2lu
KG5vZGVPcmlnaW4pCiAgICAgICAgICwgY2hpbGRyZW4oQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIGNo
aWxkMSwgY2hpbGQyLCBjaGlsZDMpCiAgICAgICAgICwgbV92aXJ0dWFsUmVnaXN0ZXIoVmlydHVh
bFJlZ2lzdGVyKCkpCiAgICAgICAgICwgbV9yZWZDb3VudCgxKQpAQCAtMTkwLDkgKzE4OCw4IEBA
IHN0cnVjdCBOb2RlIHsKICAgICB9CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBub2RlIHdpdGggdXAg
dG8gMyBjaGlsZHJlbiBhbmQgYW4gaW1tZWRpYXRlIHZhbHVlLgotICAgIE5vZGUoTm9kZVR5cGUg
b3AsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgT3BJbmZvIGltbSwgRWRnZSBjaGlsZDEgPSBFZGdl
KCksIEVkZ2UgY2hpbGQyID0gRWRnZSgpLCBFZGdlIGNoaWxkMyA9IEVkZ2UoKSkKLSAgICAgICAg
OiBjb2RlT3JpZ2luKGNvZGVPcmlnaW4pCi0gICAgICAgICwgY29kZU9yaWdpbkZvckV4aXRUYXJn
ZXQoY29kZU9yaWdpbikKKyAgICBOb2RlKE5vZGVUeXBlIG9wLCBOb2RlT3JpZ2luIG5vZGVPcmln
aW4sIE9wSW5mbyBpbW0sIEVkZ2UgY2hpbGQxID0gRWRnZSgpLCBFZGdlIGNoaWxkMiA9IEVkZ2Uo
KSwgRWRnZSBjaGlsZDMgPSBFZGdlKCkpCisgICAgICAgIDogb3JpZ2luKG5vZGVPcmlnaW4pCiAg
ICAgICAgICwgY2hpbGRyZW4oQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIGNoaWxkMSwgY2hpbGQyLCBj
aGlsZDMpCiAgICAgICAgICwgbV92aXJ0dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKCkpCiAg
ICAgICAgICwgbV9yZWZDb3VudCgxKQpAQCAtMjA2LDkgKzIwMyw4IEBAIHN0cnVjdCBOb2RlIHsK
ICAgICB9CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBub2RlIHdpdGggdXAgdG8gMyBjaGlsZHJlbiBh
bmQgdHdvIGltbWVkaWF0ZSB2YWx1ZXMuCi0gICAgTm9kZShOb2RlVHlwZSBvcCwgQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBPcEluZm8gaW1tMSwgT3BJbmZvIGltbTIsIEVkZ2UgY2hpbGQxID0gRWRn
ZSgpLCBFZGdlIGNoaWxkMiA9IEVkZ2UoKSwgRWRnZSBjaGlsZDMgPSBFZGdlKCkpCi0gICAgICAg
IDogY29kZU9yaWdpbihjb2RlT3JpZ2luKQotICAgICAgICAsIGNvZGVPcmlnaW5Gb3JFeGl0VGFy
Z2V0KGNvZGVPcmlnaW4pCisgICAgTm9kZShOb2RlVHlwZSBvcCwgTm9kZU9yaWdpbiBub2RlT3Jp
Z2luLCBPcEluZm8gaW1tMSwgT3BJbmZvIGltbTIsIEVkZ2UgY2hpbGQxID0gRWRnZSgpLCBFZGdl
IGNoaWxkMiA9IEVkZ2UoKSwgRWRnZSBjaGlsZDMgPSBFZGdlKCkpCisgICAgICAgIDogb3JpZ2lu
KG5vZGVPcmlnaW4pCiAgICAgICAgICwgY2hpbGRyZW4oQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIGNo
aWxkMSwgY2hpbGQyLCBjaGlsZDMpCiAgICAgICAgICwgbV92aXJ0dWFsUmVnaXN0ZXIoVmlydHVh
bFJlZ2lzdGVyKCkpCiAgICAgICAgICwgbV9yZWZDb3VudCgxKQpAQCAtMjIyLDkgKzIxOCw4IEBA
IHN0cnVjdCBOb2RlIHsKICAgICB9CiAgICAgCiAgICAgLy8gQ29uc3RydWN0IGEgbm9kZSB3aXRo
IGEgdmFyaWFibGUgbnVtYmVyIG9mIGNoaWxkcmVuIGFuZCB0d28gaW1tZWRpYXRlIHZhbHVlcy4K
LSAgICBOb2RlKFZhckFyZ1RhZywgTm9kZVR5cGUgb3AsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
T3BJbmZvIGltbTEsIE9wSW5mbyBpbW0yLCB1bnNpZ25lZCBmaXJzdENoaWxkLCB1bnNpZ25lZCBu
dW1DaGlsZHJlbikKLSAgICAgICAgOiBjb2RlT3JpZ2luKGNvZGVPcmlnaW4pCi0gICAgICAgICwg
Y29kZU9yaWdpbkZvckV4aXRUYXJnZXQoY29kZU9yaWdpbikKKyAgICBOb2RlKFZhckFyZ1RhZywg
Tm9kZVR5cGUgb3AsIE5vZGVPcmlnaW4gbm9kZU9yaWdpbiwgT3BJbmZvIGltbTEsIE9wSW5mbyBp
bW0yLCB1bnNpZ25lZCBmaXJzdENoaWxkLCB1bnNpZ25lZCBudW1DaGlsZHJlbikKKyAgICAgICAg
OiBvcmlnaW4obm9kZU9yaWdpbikKICAgICAgICAgLCBjaGlsZHJlbihBZGphY2VuY3lMaXN0OjpW
YXJpYWJsZSwgZmlyc3RDaGlsZCwgbnVtQ2hpbGRyZW4pCiAgICAgICAgICwgbV92aXJ0dWFsUmVn
aXN0ZXIoVmlydHVhbFJlZ2lzdGVyKCkpCiAgICAgICAgICwgbV9yZWZDb3VudCgxKQpAQCAtMzMy
LDcgKzMyNyw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICBib29sIGlzU3Ryb25nbHlQcm92ZWRDb25z
dGFudEluKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQogICAgIHsKICAgICAgICAg
cmV0dXJuICEhKGZsYWdzKCkgJiBOb2RlSXNTdGF0aWNDb25zdGFudCkKLSAgICAgICAgICAgICYm
IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lID09IGlubGluZUNhbGxGcmFtZTsKKyAgICAgICAg
ICAgICYmIG9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUgPT0gaW5saW5lQ2FsbEZyYW1l
OwogICAgIH0KICAgICAKICAgICBib29sIGlzU3Ryb25nbHlQcm92ZWRDb25zdGFudEluKGNvbnN0
IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCkBAIC0xNTM3LDEyICsxNTMyLDkgQEAgc3RydWN0IE5v
ZGUgewogICAgIH0KICAgICAKICAgICAvLyBOQi4gVGhpcyBjbGFzcyBtdXN0IGhhdmUgYSB0cml2
aWFsIGRlc3RydWN0b3IuCi0gICAgCi0gICAgLy8gVXNlZCBmb3IgZGV0ZXJtaW5pbmcgd2hhdCBi
eXRlY29kZSB0aGlzIGNhbWUgZnJvbS4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yCi0gICAgLy8gZGVi
dWdnaW5nLCBleGNlcHRpb25zLCBhbmQgZXZlbiBiYXNpYyBleGVjdXRpb24gc2VtYW50aWNzLgot
ICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbjsKLSAgICAvLyBDb2RlIG9yaWdpbiBmb3Igd2hlcmUg
dGhlIG5vZGUgZXhpdHMgdG8uCi0gICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luRm9yRXhpdFRhcmdl
dDsKKworICAgIE5vZGVPcmlnaW4gb3JpZ2luOworCiAgICAgLy8gUmVmZXJlbmNlcyB0byB1cCB0
byAzIGNoaWxkcmVuLCBvciBsaW5rcyB0byBhIHZhcmlhYmxlIGxlbmd0aCBzZXQgb2YgY2hpbGRy
ZW4uCiAgICAgQWRqYWNlbmN5TGlzdCBjaGlsZHJlbjsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlT3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlT3JpZ2luLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgREZHTm9kZU9yaWdpbl9oCisjZGVmaW5lIERGR05vZGVPcmlnaW5faAorCisjaWYgRU5BQkxF
KERGR19KSVQpCisKKyNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKKworc3RydWN0IE5vZGVPcmlnaW4geworICAgIE5vZGVPcmlnaW4oKSB7
IH0KKyAgICAKKyAgICBleHBsaWNpdCBOb2RlT3JpZ2luKENvZGVPcmlnaW4gY29kZU9yaWdpbikK
KyAgICAgICAgOiBzZW1hbnRpYyhjb2RlT3JpZ2luKQorICAgICAgICAsIGZvckV4aXQoY29kZU9y
aWdpbikKKyAgICB7CisgICAgfQorICAgIAorICAgIE5vZGVPcmlnaW4oQ29kZU9yaWdpbiBzZW1h
bnRpYywgQ29kZU9yaWdpbiBmb3JFeGl0KQorICAgICAgICA6IHNlbWFudGljKHNlbWFudGljKQor
ICAgICAgICAsIGZvckV4aXQoZm9yRXhpdCkKKyAgICB7CisgICAgfQorICAgIAorICAgIGJvb2wg
aXNTZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbWFudGljLmlzU2V0KCk7Cisg
ICAgfQorICAgIAorICAgIC8vIFVzZWQgZm9yIGRldGVybWluaW5nIHdoYXQgYnl0ZWNvZGUgdGhp
cyBjYW1lIGZyb20uIFRoaXMgaXMgaW1wb3J0YW50IGZvcgorICAgIC8vIGRlYnVnZ2luZywgZXhj
ZXB0aW9ucywgYW5kIGV2ZW4gYmFzaWMgZXhlY3V0aW9uIHNlbWFudGljcy4KKyAgICBDb2RlT3Jp
Z2luIHNlbWFudGljOworICAgIC8vIENvZGUgb3JpZ2luIGZvciB3aGVyZSB0aGUgbm9kZSBleGl0
cyB0by4KKyAgICBDb2RlT3JpZ2luIGZvckV4aXQ7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR05vZGVP
cmlnaW5faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9p
bnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTYzOTE5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgd2hpbGUgKGZpcnN0Tm9kZS0+aXNTZW1hbnRpY2FsbHlTa2lwcGFibGUoKSkKICAgICAgICAg
ICAgICAgICBmaXJzdE5vZGUgPSBibG9jay0+YXQoKytub2RlSW5kZXgpOwogICAgICAgICAgICAg
aWYgKGZpcnN0Tm9kZS0+b3AoKSA9PSBMb29wSGludAotICAgICAgICAgICAgICAgICYmIGZpcnN0
Tm9kZS0+Y29kZU9yaWdpbiA9PSBDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKSB7CisgICAgICAg
ICAgICAgICAgJiYgZmlyc3ROb2RlLT5vcmlnaW4uc2VtYW50aWMgPT0gQ29kZU9yaWdpbihieXRl
Y29kZUluZGV4KSkgewogICAgICAgICAgICAgICAgIHRhcmdldCA9IGJsb2NrOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIEJsb2NrSW5zZXJ0aW9uU2V0IGluc2VydGlvblNldChtX2dyYXBoKTsKICAgICAgICAg
CiAgICAgICAgIEJhc2ljQmxvY2sqIG5ld1Jvb3QgPSBpbnNlcnRpb25TZXQuaW5zZXJ0KDApOwot
ICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSB0YXJnZXQtPmF0KDApLT5jb2RlT3JpZ2lu
OworICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IHRhcmdldC0+YXQoMCktPm9yaWdpbjsKICAg
ICAgICAgCiAgICAgICAgIFZlY3RvcjxOb2RlKj4gbG9jYWxzKGJhc2VsaW5lLT5tX251bUNhbGxl
ZVJlZ2lzdGVycyk7CiAgICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGlu
ZS0+bV9udW1DYWxsZWVSZWdpc3RlcnM7ICsrbG9jYWwpIHsKQEAgLTk0LDExICs5NCwxMSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBWYXJpYWJsZUFj
Y2Vzc0RhdGEqIHZhcmlhYmxlID0gcHJldmlvdXNIZWFkLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsK
ICAgICAgICAgICAgIGxvY2Fsc1tsb2NhbF0gPSBuZXdSb290LT5hcHBlbmROb2RlKAotICAgICAg
ICAgICAgICAgIG1fZ3JhcGgsIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCksIEV4dHJhY3RPU1JFbnRy
eUxvY2FsLCBjb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgIG1fZ3JhcGgsIHZhcmlhYmxlLT5w
cmVkaWN0aW9uKCksIEV4dHJhY3RPU1JFbnRyeUxvY2FsLCBvcmlnaW4sCiAgICAgICAgICAgICAg
ICAgT3BJbmZvKHZhcmlhYmxlLT5sb2NhbCgpLm9mZnNldCgpKSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIG5ld1Jvb3QtPmFwcGVuZE5vZGUoCi0gICAgICAgICAgICAgICAgbV9ncmFwaCwg
U3BlY05vbmUsIE1vdkhpbnQsIGNvZGVPcmlnaW4sIE9wSW5mbyh2YXJpYWJsZS0+bG9jYWwoKS5v
ZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIE1vdkhpbnQsIG9y
aWdpbiwgT3BJbmZvKHZhcmlhYmxlLT5sb2NhbCgpLm9mZnNldCgpKSwKICAgICAgICAgICAgICAg
ICBFZGdlKGxvY2Fsc1tsb2NhbF0pKTsKICAgICAgICAgfQogCkBAIC0xMDksNyArMTA5LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2Fy
Z3VtZW50XTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBuZXdSb290
LT5hcHBlbmROb2RlKAotICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRBcmd1
bWVudCwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0
QXJndW1lbnQsIG9yaWdpbiwKICAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCkpKTsKICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1l
bnRdID0gbm9kZTsKICAgICAgICAgfQpAQCAtMTIxLDExICsxMjEsMTEgQEAgcHVibGljOgogICAg
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IHByZXZpb3VzSGVhZC0+dmFy
aWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gbG9jYWxzW2xvY2Fs
XTsKICAgICAgICAgICAgIG5ld1Jvb3QtPmFwcGVuZE5vZGUoCi0gICAgICAgICAgICAgICAgbV9n
cmFwaCwgU3BlY05vbmUsIFNldExvY2FsLCBjb2RlT3JpZ2luLCBPcEluZm8odmFyaWFibGUpLCBF
ZGdlKG5vZGUpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0TG9jYWws
IG9yaWdpbiwgT3BJbmZvKHZhcmlhYmxlKSwgRWRnZShub2RlKSk7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIG5ld1Jvb3QtPmFwcGVuZE5vZGUoCi0gICAgICAgICAgICBtX2dyYXBoLCBT
cGVjTm9uZSwgSnVtcCwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25l
LCBKdW1wLCBvcmlnaW4sCiAgICAgICAgICAgICBPcEluZm8oY3JlYXRlUHJlSGVhZGVyKG1fZ3Jh
cGgsIGluc2VydGlvblNldCwgdGFyZ2V0KSkpOwogICAgICAgICAKICAgICAgICAgaW5zZXJ0aW9u
U2V0LmV4ZWN1dGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29u
dmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTc2LDcgKzE3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIE5v
ZGVGbGFncyByZXN1bHQgPSByZXN1bHRGb3IoZm9ybWF0KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIFVzZUtpbmQgdXNlS2luZCA9IHVzZUtpbmRGb3IoZm9ybWF0KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoMCwgU3BlY05vbmUsIFBoaSwgQ29kZU9yaWdpbigpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKDAsIFNwZWNOb25l
LCBQaGksIE5vZGVPcmlnaW4oKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgSW5zZXJ0ZWQgbmV3
IG5vZGU6ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVy
Z2VGbGFncyhyZXN1bHQpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGJsb2NrLT5wcmVkZWNlc3NvcnMuc2l6ZSgp
OyBqLS07KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVj
ZXNzb3IgPSBibG9jay0+cHJlZGVjZXNzb3JzW2pdOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByZWRlY2Vzc29yLT5hcHBlbmROb25UZXJtaW5hbCgKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIFVwc2lsb24sIHByZWRlY2Vzc29yLT5sYXN0
KCktPmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgs
IFNwZWNOb25lLCBVcHNpbG9uLCBwcmVkZWNlc3Nvci0+bGFzdCgpLT5vcmlnaW4sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhub2RlKSwgRWRnZShwcmVkZWNlc3Nvci0+
dmFyaWFibGVzQXRUYWlsW2ldLCB1c2VLaW5kKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICAKQEAgLTIxMSw3ICsyMTEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHZhbHVlIHdhcyBhbHJlYWR5IG9uIHRo
ZSBzdGFjay4KICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgU3BlY05vbmUsIE1vdkhpbnQsIENvZGVPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgU3BlY05vbmUsIE1vdkhpbnQsIE5vZGVP
cmlnaW4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHZhcmlhYmxl
LT5sb2NhbCgpLm9mZnNldCgpKSwgRWRnZShub2RlKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTYzOTE5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxp
bmsoJm1faml0KTsKICAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxH
bG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZW1vdGVHbG9iYWxPYmplY3RHUFIg
PSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7Ci0gICAgICAgIG1faml0Lm1vdmUoSklUQ29tcGls
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50
Tm9kZS0+Y29kZU9yaWdpbikpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0
Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmpl
Y3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0
R1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRQ
YXlsb2FkR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFs
T2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuY29tcGFyZTMyKGludmVydCA/IEpJVENvbXBpbGVy
OjpOb3RFcXVhbCA6IEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RHUFIsIHJl
bW90ZUdsb2JhbE9iamVjdEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgfQpAQCAtMzE4LDcg
KzMxOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgIAog
ICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5n
cHIoKTsKICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2Jh
bE9iamVjdC5ncHIoKTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0Lmdy
YXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4pKSwgbG9jYWxH
bG9iYWxPYmplY3RHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQu
Z3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCBy
ZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBicmFuY2hQdHIoSklUQ29tcGlsZXI6OkVx
dWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCBpbnZlcnQg
PyBub3RUYWtlbiA6IHRha2VuKTsKICAgICB9CkBAIC02NTcsNyArNjU3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFi
ZWxQdHIgdGFyZ2V0VG9DaGVjazsKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7
CiAKLSAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG5vZGUtPmNvZGVPcmlnaW4pOworICAg
IG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAK
ICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBjYWxsZWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAg
IHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBjYWxsZWVQYXlsb2FkR1BSLCB0YXJnZXRUb0NoZWNrKSk7CkBAIC02OTEsNyAr
NjkxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogCiAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUsIERhdGFG
b3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIAotICAgIG1faml0LmFkZEpT
Q2FsbChmYXN0Q2FsbCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hlY2ssIGNhbGxUeXBlLCBjYWxsZWVQ
YXlsb2FkR1BSLCBub2RlLT5jb2RlT3JpZ2luKTsKKyAgICBtX2ppdC5hZGRKU0NhbGwoZmFzdENh
bGwsIHNsb3dDYWxsLCB0YXJnZXRUb0NoZWNrLCBjYWxsVHlwZSwgY2FsbGVlUGF5bG9hZEdQUiwg
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIH0KIAogdGVtcGxhdGU8Ym9vbCBzdHJpY3Q+CkBAIC0x
NDY2LDcgKzE0NjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhl
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAKLSAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLmdsb2Jh
bE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luKSkpKTsKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVj
dEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogCiAgICAgICAgIGlzTm90
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgfQpAQCAtMTU5Miw3ICsx
NTkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpF
cXVhbCwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQ
UiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9y
KG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4pKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3Vy
cmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CiAKICAgICAgICAgaXNOb3RNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICB9CkBAIC0zMTM1LDcgKzMxMzUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgfQogICAgICAgICAK
ICAgICBjYXNlIE5ld0FycmF5OiB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2luKTsKKyAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGlmICghZ2xvYmFsT2Jq
ZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkgJiYgIWhhc0FycmF5U3RvcmFnZShub2RlLT5pbmRleGlu
Z1R5cGUoKSkpIHsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+
aW5kZXhpbmdUeXBlKCkpOwogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkgPT0gbm9kZS0+aW5kZXhpbmdUeXBlKCkpOwpAQCAtMzMwMyw3ICszMzAzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0KIAogICAgIGNhc2Ug
TmV3QXJyYXlXaXRoU2l6ZTogewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbik7CisgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBpZiAoIWdsb2JhbE9iamVj
dC0+aXNIYXZpbmdBQmFkVGltZSgpICYmICFoYXNBcnJheVN0b3JhZ2Uobm9kZS0+aW5kZXhpbmdU
eXBlKCkpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgc2l6ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOwpAQCAtMzM3Niw3ICszMzc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjogewot
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbik7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogICAgICAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gbm9kZS0+aW5k
ZXhpbmdUeXBlKCk7CiAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1l
KCkgJiYgIWhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUpKSB7CiAgICAgICAgICAgICB1bnNp
Z25lZCBudW1FbGVtZW50cyA9IG5vZGUtPm51bUNvbnN0YW50cygpOwpAQCAtMzQzNiw3ICszNDM2
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgR1BSUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2Rl
T3JpZ2luKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFy
cmF5V2l0aE9uZUFyZ3VtZW50Rm9yVHlwZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwKICAgICAg
ICAgICAgICAgICByZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZShu
b2RlLT50eXBlZEFycmF5VHlwZSgpKSwKQEAgLTM0ODYsNyArMzQ4Niw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFs
dWVQYXlsb2FkR1BSLCB0ZW1wR1BSKTsKICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFsdWVUYWdH
UFIsIHRlbXBUYWdHUFIpOwogICAgICAgICBKX0pJVE9wZXJhdGlvbl9FSiBmdW5jdGlvbjsKLSAg
ICAgICAgaWYgKG1faml0LmdyYXBoKCkuZXhlY3V0YWJsZUZvcihub2RlLT5jb2RlT3JpZ2luKS0+
aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlmIChtX2ppdC5ncmFwaCgpLmV4ZWN1dGFibGVGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICBmdW5j
dGlvbiA9IG9wZXJhdGlvblRvVGhpc1N0cmljdDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7CkBAIC0zNjcxLDcgKzM2NzEsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIGJhc2UudXNl
KCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+Y29kZU9y
aWdpbiwgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2Fk
R1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJ
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcsIGJhc2VHUFIsIHJlc3VsdFRh
Z0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJlcigpKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBh
eWxvYWRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTM2OTEsNyArMzY5MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBu
b3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBiYXNlVGFnR1BS
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAgICAgICAKLSAgICAgICAgICAg
IGNhY2hlZEdldEJ5SWQobm9kZS0+Y29kZU9yaWdpbiwgYmFzZVRhZ0dQUiwgYmFzZVBheWxvYWRH
UFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJl
cigpLCBub3RDZWxsKTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQ
YXlsb2FkR1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwpOwogICAgICAgICAK
ICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BS
LCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0zNzI1LDcgKzM3MjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+Y29kZU9yaWdpbiwgSW52
YWxpZEdQUlJlZywgYmFzZUdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2Rl
LT5pZGVudGlmaWVyTnVtYmVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIERvbnRTcGlsbCk7Cisg
ICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQ
UlJlZywgYmFzZUdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLT5pZGVu
dGlmaWVyTnVtYmVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXls
b2FkR1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC0zNzQ3LDcgKzM3NDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90
Q2VsbCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgYmFzZVRhZ0dQUiwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICAgICAgCi0gICAgICAgICAgICBj
YWNoZWRHZXRCeUlkKG5vZGUtPmNvZGVPcmlnaW4sIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BS
LCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIo
KSwgbm90Q2VsbCwgRG9udFNwaWxsKTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BS
LCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIERv
bnRTcGlsbCk7CiAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdH
UFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTM5MzcsNyArMzkzNyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVnIHZhbHVlUGF5bG9hZEdQ
UiA9IHZhbHVlLnBheWxvYWRHUFIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOwogICAgICAgICAKLSAgICAgICAgY2FjaGVkUHV0QnlJZChub2RlLT5jb2RlT3Jp
Z2luLCBiYXNlR1BSLCB2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSLCBzY3JhdGNoR1BSLCBu
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIE5vdERpcmVjdCk7CisgICAgICAgIGNhY2hlZFB1dEJ5
SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVRhZ0dQUiwgdmFsdWVQYXls
b2FkR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIE5vdERpcmVjdCk7
CiAgICAgICAgIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0z
OTUzLDcgKzM5NTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIEdQUlJlZyB2YWx1ZVBheWxvYWRHUFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7CiAg
ICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAgCi0gICAg
ICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+Y29kZU9yaWdpbiwgYmFzZUdQUiwgdmFsdWVUYWdHUFIs
IHZhbHVlUGF5bG9hZEdQUiwgc2NyYXRjaEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBE
aXJlY3QpOworICAgICAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFz
ZUdQUiwgdmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiwgc2NyYXRjaEdQUiwgbm9kZS0+aWRl
bnRpZmllck51bWJlcigpLCBEaXJlY3QpOwogCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAg
ICAgICBicmVhazsKQEAgLTQwODksNyArNDA4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5s
aW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBs
b2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyByZW1vdGVHbG9iYWxP
YmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7Ci0gICAgICAgICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4p
KSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9j
YWxHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkp
LCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOyAKICAgICAgICAgICAgIG1faml0LmNvbXBhcmUzMihK
SVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmpl
Y3RHUFIsIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIH0KQEAgLTQyNjgsMTEgKzQyNjgsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q3JlYXRlZCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBp
bGVyOjpFcXVhbCwgdmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVl
VGFnKSk7CiAgICAgICAgIAotICAgICAgICBpZiAobm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxs
RnJhbWUpIHsKKyAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJh
bWUpIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgbm90Q3JlYXRlZCwgdGhpcywgb3Bl
cmF0aW9uQ3JlYXRlSW5saW5lZEFyZ3VtZW50cywgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAg
ICAgICBub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkpOworICAgICAgICAgICAgICAg
ICAgICBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAg
ICBzbG93UGF0aENhbGwobm90Q3JlYXRlZCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRz
LCByZXN1bHRHUFIpKTsKQEAgLTQyOTIsNyArNDI5Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDcmVh
dGVkID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBhY3RpdmF0aW9uVmFsdWVU
YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CiAKLSAgICAgICAg
U3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gbV9qaXQuc3ltYm9sVGFibGVGb3Iobm9kZS0+Y29k
ZU9yaWdpbik7CisgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IG1faml0LnN5bWJv
bFRhYmxlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGludCByZWdpc3RlcnNP
ZmZzZXQgPSBKU0FjdGl2YXRpb246OnJlZ2lzdGVyc09mZnNldChzeW1ib2xUYWJsZSk7CiAKICAg
ICAgICAgaW50IGJ5dGVjb2RlQ2FwdHVyZVN0YXJ0ID0gc3ltYm9sVGFibGUtPmNhcHR1cmVTdGFy
dCgpOwpAQCAtNDMzMCwxMSArNDMzMCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGNyZWF0ZWQgPSBtX2ppdC5i
cmFuY2hUZXN0MzIoCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgdW5tb2RpZmll
ZEFyZ3VtZW50c1ZhbHVlUGF5bG9hZEdQUik7CiAgICAgICAgIAotICAgICAgICBpZiAobm9kZS0+
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlZCwgdGhpcywgb3BlcmF0aW9uVGVhck9mZklubGluZWRBcmd1bWVudHMsIE5vUmVzdWx0
LAotICAgICAgICAgICAgICAgICAgICB1bm1vZGlmaWVkQXJndW1lbnRzVmFsdWVQYXlsb2FkR1BS
LCBhY3RpdmF0aW9uVmFsdWVQYXlsb2FkR1BSLCBub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZSkpOworICAgICAgICAgICAgICAgICAgICB1bm1vZGlmaWVkQXJndW1lbnRzVmFsdWVQYXls
b2FkR1BSLCBhY3RpdmF0aW9uVmFsdWVQYXlsb2FkR1BSLCBub2RlLT5vcmlnaW4uc2VtYW50aWMu
aW5saW5lQ2FsbEZyYW1lKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCkBAIC00MzQ5LDEy
ICs0MzQ5LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDogewogICAgICAgICBBU1NFUlQoIWlzRW1w
dHlTcGVjdWxhdGlvbigKICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgK
LSAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUt
PmNvZGVPcmlnaW4pKS5tX3R5cGUpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLmFy
Z3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLm1fdHlwZSkpOwogICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVS
ZWdzKCksIDAsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnRhZ0Zv
cihtX2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5jb2RlT3Jp
Z2luKSksCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnRhZ0ZvcihtX2ppdC5ncmFwaCgp
Lm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwKICAg
ICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKICAg
ICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDM2NiwxNiArNDM2Niwx
NiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAog
ICAgICAgICBpZiAoIWlzRW1wdHlTcGVjdWxhdGlvbigKICAgICAgICAgICAgICAgICBtX3N0YXRl
LnZhcmlhYmxlcygpLm9wZXJhbmQoCi0gICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCku
YXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9yaWdpbikpLm1fdHlwZSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKS5tX3R5cGUpKSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KAogICAgICAgICAgICAgICAgIEFyZ3VtZW50c0VzY2FwZWQsIEpTVmFsdWVSZWdzKCksIDAsCiAg
ICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnRhZ0Zv
cihtX2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5jb2RlT3Jp
Z2luKSksCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjp0YWdGb3IobV9qaXQuZ3Jh
cGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
CiAgICAgICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFn
KSkpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBBU1NFUlQoIW5vZGUtPmNvZGVPcmln
aW4uaW5saW5lQ2FsbEZyYW1lKTsKKyAgICAgICAgQVNTRVJUKCFub2RlLT5vcmlnaW4uc2VtYW50
aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpw
YXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCByZXN1bHRHUFIpOwogICAgICAgICBt
X2ppdC5zdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlc3VsdEdQUik7CiAgICAgICAgIGludDMyUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC00MzkwLDEyICs0MzkwLDEyIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIGNyZWF0ZWQgPSBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjp0YWdGb3IobV9qaXQuZ3Jh
cGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9yaWdpbikpLAorICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OnRhZ0ZvcihtX2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVu
dHNSZWdpc3RlckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwKICAgICAgICAgICAgIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CiAgICAgICAgIAotICAgICAgICBpZiAo
bm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICAgICAgaWYgKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgIG1faml0Lm1vdmUo
Ci0gICAgICAgICAgICAgICAgSW1tMzIobm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50cy5zaXplKCkgLSAxKSwKKyAgICAgICAgICAgICAgICBJbW0zMihub2RlLT5vcmln
aW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSksCiAgICAg
ICAgICAgICAgICAgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1l
bnRDb3VudCksIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtNDQxMSw3ICs0NDExLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgc2xvd1BhdGhD
YWxsKAogICAgICAgICAgICAgICAgIGNyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvbkdldEFyZ3VtZW50
c0xlbmd0aCwKICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3Vs
dFBheWxvYWRHUFIpLAotICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCkubWFjaGluZUFyZ3Vt
ZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4pLm9mZnNldCgpKSk7CisgICAgICAgICAg
ICAgICAgbV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKS5vZmZzZXQoKSkpOwogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsK
QEAgLTQ0MjcsMjQgKzQ0MjcsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAKICAgICAgICAgaWYgKCFpc0VtcHR5U3BlY3VsYXRpb24oCiAgICAg
ICAgICAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAotICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5ncmFwaCgpLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4p
KS5tX3R5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCkuYXJndW1lbnRz
UmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkubV90eXBlKSkgewogICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBBcmd1bWVudHNFc2NhcGVkLCBK
U1ZhbHVlUmVncygpLCAwLAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAogICAgICAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjp0YWdGb3IobV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0
ZXJGb3Iobm9kZS0+Y29kZU9yaWdpbikpLAorICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6dGFnRm9yKG1faml0LmdyYXBoKCkubWFjaGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLAogICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
IG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgaW5kZXhHUFIsIHJlc3VsdFBheWxvYWRHUFIp
OwogICAgICAgICAgICAgCi0gICAgICAgIGlmIChub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZSkgeworICAgICAgICBpZiAobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFt
ZSkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gz
MigKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwKICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0UGF5bG9hZEdQUiwKLSAgICAgICAgICAgICAgICAgICAgSW1t
MzIobm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpKSk7
CisgICAgICAgICAgICAgICAgICAgIEltbTMyKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCAwLApAQCAtNDQ1NiwxMyArNDQ1NiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVt
cExpc3Qgc2xvd0FyZ3VtZW50OwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Fy
Z3VtZW50T3V0T2ZCb3VuZHM7Ci0gICAgICAgIGlmIChtX2ppdC5zeW1ib2xUYWJsZUZvcihub2Rl
LT5jb2RlT3JpZ2luKS0+c2xvd0FyZ3VtZW50cygpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCghbm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICBpZiAobV9q
aXQuc3ltYm9sVGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c2xvd0FyZ3VtZW50cygp
KSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbm9kZS0+b3JpZ2luLnNlbWFudGljLmlu
bGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICBjb25zdCBTbG93QXJndW1lbnQqIHNsb3dBcmd1
bWVudHMgPSBtX2ppdC5ncmFwaCgpLm1fc2xvd0FyZ3VtZW50cy5nZXQoKTsKICAgICAgICAgICAg
IHNsb3dBcmd1bWVudE91dE9mQm91bmRzLmFwcGVuZCgKICAgICAgICAgICAgICAgICBtX2ppdC5i
cmFuY2gzMigKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwg
aW5kZXhHUFIsCi0gICAgICAgICAgICAgICAgICAgIEltbTMyKG1faml0LnN5bWJvbFRhYmxlRm9y
KG5vZGUtPmNvZGVPcmlnaW4pLT5wYXJhbWV0ZXJDb3VudCgpKSkpOworICAgICAgICAgICAgICAg
ICAgICBJbW0zMihtX2ppdC5zeW1ib2xUYWJsZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5w
YXJhbWV0ZXJDb3VudCgpKSkpOwogCiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2Yo
U2xvd0FyZ3VtZW50KSA9PSA4LCBTbG93QXJndW1lbnRfc2l6ZV9pc19laWdodF9ieXRlcyk7CiAg
ICAgICAgICAgICBtX2ppdC5tb3ZlKEltbVB0cihzbG93QXJndW1lbnRzKSwgcmVzdWx0UGF5bG9h
ZEdQUik7CkBAIC00NDg5LDEyICs0NDg5LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubG9hZDMyKAogICAgICAgICAgICAgSklUQ29t
cGlsZXI6OkJhc2VJbmRleCgKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgcmVzdWx0UGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsCi0gICAgICAg
ICAgICAgICAgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRpbmdUaGlzKG5vZGUtPmNvZGVP
cmlnaW4pICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50
YWcpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC5vZmZzZXRPZkFyZ3VtZW50c0luY2x1ZGluZ1Ro
aXMobm9kZS0+b3JpZ2luLnNlbWFudGljKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksCiAgICAgICAgICAgICByZXN1bHRUYWdHUFIpOwogICAg
ICAgICBtX2ppdC5sb2FkMzIoCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6QmFzZUluZGV4KAog
ICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCByZXN1bHRQYXlsb2Fk
R1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwKLSAgICAgICAgICAgICAgICBtX2ppdC5vZmZz
ZXRPZkFyZ3VtZW50c0luY2x1ZGluZ1RoaXMobm9kZS0+Y29kZU9yaWdpbikgKyBPQkpFQ1RfT0ZG
U0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwKKyAgICAgICAg
ICAgICAgICBtX2ppdC5vZmZzZXRPZkFyZ3VtZW50c0luY2x1ZGluZ1RoaXMobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMucGF5bG9hZCkpLAogICAgICAgICAgICAgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgICAg
ICAKICAgICAgICAgc2xvd0FyZ3VtZW50LmxpbmsoJm1faml0KTsKQEAgLTQ1MTMsMTYgKzQ1MTMs
MTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBz
bG93UGF0aC5hcHBlbmQoCiAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
OnRhZ0ZvcihtX2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5j
b2RlT3JpZ2luKSksCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnRhZ0ZvcihtX2ppdC5n
cmFwaCgpLm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwKICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykp
KTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgaW5kZXhH
UFIsIHJlc3VsdFBheWxvYWRHUFIpOwotICAgICAgICBpZiAobm9kZS0+Y29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUpIHsKKyAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWUpIHsKICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZCgKICAgICAgICAgICAgICAg
ICBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFib3Zl
T3JFcXVhbCwKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0UGF5bG9hZEdQUiwKLSAgICAgICAg
ICAgICAgICAgICAgSW1tMzIobm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCkpKSk7CisgICAgICAgICAgICAgICAgICAgIEltbTMyKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpKSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoCiAgICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoMzIoCkBAIC00NTMzLDEzICs0NTMzLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
TGlzdCBzbG93QXJndW1lbnQ7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93QXJn
dW1lbnRPdXRPZkJvdW5kczsKLSAgICAgICAgaWYgKG1faml0LnN5bWJvbFRhYmxlRm9yKG5vZGUt
PmNvZGVPcmlnaW4pLT5zbG93QXJndW1lbnRzKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CisgICAgICAgIGlmIChtX2pp
dC5zeW1ib2xUYWJsZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zbG93QXJndW1lbnRzKCkp
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5s
aW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIGNvbnN0IFNsb3dBcmd1bWVudCogc2xvd0FyZ3Vt
ZW50cyA9IG1faml0LmdyYXBoKCkubV9zbG93QXJndW1lbnRzLmdldCgpOwogICAgICAgICAgICAg
c2xvd0FyZ3VtZW50T3V0T2ZCb3VuZHMuYXBwZW5kKAogICAgICAgICAgICAgICAgIG1faml0LmJy
YW5jaDMyKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCBp
bmRleEdQUiwKLSAgICAgICAgICAgICAgICAgICAgSW1tMzIobV9qaXQuc3ltYm9sVGFibGVGb3Io
bm9kZS0+Y29kZU9yaWdpbiktPnBhcmFtZXRlckNvdW50KCkpKSk7CisgICAgICAgICAgICAgICAg
ICAgIEltbTMyKG1faml0LnN5bWJvbFRhYmxlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnBh
cmFtZXRlckNvdW50KCkpKSk7CiAKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihT
bG93QXJndW1lbnQpID09IDgsIFNsb3dBcmd1bWVudF9zaXplX2lzX2VpZ2h0X2J5dGVzKTsKICAg
ICAgICAgICAgIG1faml0Lm1vdmUoSW1tUHRyKHNsb3dBcmd1bWVudHMpLCByZXN1bHRQYXlsb2Fk
R1BSKTsKQEAgLTQ1NjUsMjcgKzQ1NjUsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC5sb2FkMzIoCiAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6QmFzZUluZGV4KAogICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCByZXN1bHRQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwKLSAgICAgICAg
ICAgICAgICBtX2ppdC5vZmZzZXRPZkFyZ3VtZW50c0luY2x1ZGluZ1RoaXMobm9kZS0+Y29kZU9y
aWdpbikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRh
ZykpLAorICAgICAgICAgICAgICAgIG1faml0Lm9mZnNldE9mQXJndW1lbnRzSW5jbHVkaW5nVGhp
cyhub2RlLT5vcmlnaW4uc2VtYW50aWMpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy50YWcpKSwKICAgICAgICAgICAgIHJlc3VsdFRhZ0dQUik7CiAgICAg
ICAgIG1faml0LmxvYWQzMigKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoCiAg
ICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHJlc3VsdFBheWxvYWRH
UFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LAotICAgICAgICAgICAgICAgIG1faml0Lm9mZnNl
dE9mQXJndW1lbnRzSW5jbHVkaW5nVGhpcyhub2RlLT5jb2RlT3JpZ2luKSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLAorICAgICAgICAg
ICAgICAgIG1faml0Lm9mZnNldE9mQXJndW1lbnRzSW5jbHVkaW5nVGhpcyhub2RlLT5vcmlnaW4u
c2VtYW50aWMpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy5wYXlsb2FkKSksCiAgICAgICAgICAgICByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgCi0g
ICAgICAgIGlmIChub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkgeworICAgICAgICBp
ZiAobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkgewogICAgICAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAg
ICAgICAgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uR2V0SW5saW5lZEFyZ3Vt
ZW50QnlWYWwsCiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwg
cmVzdWx0UGF5bG9hZEdQUiksCi0gICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCkubWFj
aGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4pLm9mZnNldCgpLAotICAg
ICAgICAgICAgICAgICAgICBub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSwgaW5kZXhH
UFIpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRz
UmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS5vZmZzZXQoKSwKKyAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSwgaW5kZXhHUFIp
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAog
ICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xvd1Bh
dGgsIHRoaXMsIG9wZXJhdGlvbkdldEFyZ3VtZW50QnlWYWwsCiAgICAgICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksCi0gICAgICAgICAg
ICAgICAgICAgIG1faml0LmdyYXBoKCkubWFjaGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUt
PmNvZGVPcmlnaW4pLm9mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgp
Lm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLm9mZnNl
dCgpLAogICAgICAgICAgICAgICAgICAgICBpbmRleEdQUikpOwogICAgICAgICB9CiAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNyArMjYxLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBpc01h
c3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgICAgICBHUFJSZWcgbG9jYWxH
bG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgR1BSUmVn
IHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAg
ICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLmds
b2JhbE9iamVjdEZvcihvcGVyYW5kLT5jb2RlT3JpZ2luKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BS
KTsKKyAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
cmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bG9jYWxHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJl
bW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0LmNvbXBhcmVQdHIoaW52ZXJ0ID8g
SklUQ29tcGlsZXI6Ok5vdEVxdWFsIDogSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9i
amVjdEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCByZXN1bHRHUFIpOwogICAgIH0KQEAgLTMy
MSw3ICszMjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAK
ICAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3Qu
Z3ByKCk7CiAgICAgICAgIEdQUlJlZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9i
YWxPYmplY3QuZ3ByKCk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5n
cmFwaCgpLmdsb2JhbE9iamVjdEZvcihvcGVyYW5kLT5jb2RlT3JpZ2luKSksIGxvY2FsR2xvYmFs
T2JqZWN0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBo
KCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2Nh
bEdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3Rl
R2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwg
bG9jYWxHbG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgaW52ZXJ0ID8gbm90
VGFrZW4gOiB0YWtlbik7CiAgICAgfQpAQCAtNjgzLDcgKzY4Myw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRy
IHRhcmdldFRvQ2hlY2s7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGg7CiAKLSAgICBt
X2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG5vZGUtPmNvZGVPcmlnaW4pOworICAgIG1faml0LmVt
aXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKICAgICBzbG93
UGF0aCA9IG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IGNhbGxlZUdQUiwgdGFyZ2V0VG9DaGVjaywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
MCkpOwogCkBAIC03MTIsNyArNzEyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwo
Tm9kZSogbm9kZQogICAgIAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2N1cnJlbnRO
b2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgCi0g
ICAgbV9qaXQuYWRkSlNDYWxsKGZhc3RDYWxsLCBzbG93Q2FsbCwgdGFyZ2V0VG9DaGVjaywgY2Fs
bFR5cGUsIGNhbGxlZUdQUiwgbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbik7CisgICAgbV9qaXQu
YWRkSlNDYWxsKGZhc3RDYWxsLCBzbG93Q2FsbCwgdGFyZ2V0VG9DaGVjaywgY2FsbFR5cGUsIGNh
bGxlZUdQUiwgbV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIH0KIAogLy8gQ2xhbmcg
c2hvdWxkIGFsbG93IHVucmVhY2hhYmxlIFtbY2xhbmc6OmZhbGx0aHJvdWdoXV0gaW4gdGVtcGxh
dGUgZnVuY3Rpb25zIGlmIGFueSB0ZW1wbGF0ZSBleHBhbnNpb24gdXNlcyBpdApAQCAtMTg3Miw3
ICsxODcyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZQogICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpFcXVhbCwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0
dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmpl
Y3RGb3IobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbikpKSk7CisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Io
bV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAgLTIwMTEsNyArMjAxMSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnIKICAgICAgICAgICAg
IG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
IAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0
cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1
cnJlbnROb2RlLT5jb2RlT3JpZ2luKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnRO
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogCiAgICAgICAgIGlzTm90TWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgfQpAQCAtMjg3OSw5ICsyODc5LDkgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIGFy
ZzNHUFIgPSBhcmczLmdwcigpOwogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAg
ICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KQotICAgICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPmNvZGVPcmlnaW4pID8g
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdE5v
blN0cmljdCwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7CisgICAgICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/
IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RO
b25TdHJpY3QsIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNHUFIpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUt
PmNvZGVPcmlnaW4pID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZh
bE5vblN0cmljdCwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7CisgICAgICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSA/IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3Qs
IGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNHUFIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBu
b1Jlc3VsdChub2RlKTsKICAgICAgICAgICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsKQEAgLTM0
NzQsNyArMzQ3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgTmV3QXJyYXk6IHsKLSAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
PmNvZGVPcmlnaW4pOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9q
aXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAg
ICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSAmJiAhaGFzQXJyYXlTdG9y
YWdlKG5vZGUtPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IG5vZGUtPmluZGV4aW5nVHlwZSgpKTsK
QEAgLTM2NDUsNyArMzY0NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZTogewotICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbik7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOwogICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpICYm
ICFoYXNBcnJheVN0b3JhZ2Uobm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgICAgICBT
cGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwpAQCAtMzcxNSw3ICszNzE1LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0KICAgICAg
ICAgCiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjogewotICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9y
aWdpbik7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBJbmRl
eGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gbm9kZS0+aW5kZXhpbmdUeXBlKCk7CiAgICAgICAgIGlm
ICghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkgJiYgIWhhc0FycmF5U3RvcmFnZShp
bmRleGluZ1R5cGUpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IG5vZGUt
Pm51bUNvbnN0YW50cygpOwpAQCAtMzc3Miw3ICszNzcyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVzdWx0IHJlc3VsdCh0aGlz
KTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5n
cmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKICAg
ICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50Rm9yVHlw
ZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwKICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIGds
b2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwK
QEAgLTM4MTYsNyArMzgxNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CiAgICAg
ICAgIG1faml0Lm1vdmUodGhpc1ZhbHVlR1BSLCB0ZW1wR1BSKTsKICAgICAgICAgSl9KSVRPcGVy
YXRpb25fRUogZnVuY3Rpb247Ci0gICAgICAgIGlmIChtX2ppdC5ncmFwaCgpLmV4ZWN1dGFibGVG
b3Iobm9kZS0+Y29kZU9yaWdpbiktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBpZiAobV9qaXQu
Z3JhcGgoKS5leGVjdXRhYmxlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmlzU3RyaWN0TW9k
ZSgpKQogICAgICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXNTdHJpY3Q7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzOwpAQCAtMzk5
MSw3ICszOTkxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPmNvZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQ
Uiwgbm9kZS0+aWRlbnRpZmllck51bWJlcigpKTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmlkZW50aWZp
ZXJOdW1iZXIoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC00MDA4LDcgKzQwMDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90
Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6Tm9uWmVybywgYmFzZUdQUiwg
R1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRH
ZXRCeUlkKG5vZGUtPmNvZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS0+aWRlbnRp
Zmllck51bWJlcigpLCBub3RDZWxsKTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1i
ZXIoKSwgbm90Q2VsbCk7CiAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTQwNDAsNyArNDA0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5jb2RlT3JpZ2lu
LCBiYXNlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGls
ZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1i
ZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVk
RXhwbGljaXRseSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQwNTgsNyArNDA1OCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENv
bXBpbGVyOjpOb25aZXJvLCBiYXNlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAg
ICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+Y29kZU9yaWdpbiwgYmFzZUdQ
UiwgcmVzdWx0R1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIERvbnRTcGls
bCk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFz
ZUdQUiwgcmVzdWx0R1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIERvbnRT
cGlsbCk7CiAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTQyNTIsNyArNDI1Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgICAgIEdQUlJl
ZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGNhY2hlZFB1
dEJ5SWQobm9kZS0+Y29kZU9yaWdpbiwgYmFzZUdQUiwgdmFsdWVHUFIsIHNjcmF0Y2hHUFIsIG5v
ZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgTm90RGlyZWN0KTsKKyAgICAgICAgY2FjaGVkUHV0QnlJ
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlR1BSLCBzY3JhdGNoR1BSLCBu
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIE5vdERpcmVjdCk7CiAKICAgICAgICAgbm9SZXN1bHQo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDI2Nyw3ICs0MjY3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2
YWx1ZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwog
ICAgICAgICAKLSAgICAgICAgY2FjaGVkUHV0QnlJZChub2RlLT5jb2RlT3JpZ2luLCBiYXNlR1BS
LCB2YWx1ZUdQUiwgc2NyYXRjaEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBEaXJlY3Qp
OworICAgICAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwg
dmFsdWVHUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgRGlyZWN0KTsK
IAogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00Mzg0LDcgKzQz
ODQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgICAgICAgICAg
R1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CiAg
ICAgICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2Jq
ZWN0LmdwcigpOwotICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0Lmds
b2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2luKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsK
KyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAg
ICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsg
CiAgICAgICAgICAgICBtX2ppdC5jb21wYXJlUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxH
bG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgcmVzdWx0LmdwcigpKTsKICAg
ICAgICAgfQpAQCAtNDUyOSw3ICs0NTI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlv
bjogewotICAgICAgICBSRUxFQVNFX0FTU0VSVCghbm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxs
RnJhbWUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbm9kZS0+b3JpZ2luLnNlbWFudGljLmlu
bGluZUNhbGxGcmFtZSk7CiAgICAgICAgIAogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywg
UmV1c2UsIHZhbHVlKTsKQEAgLTQ1NjYsMTEgKzQ1NjYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgbm90Q3JlYXRlZCA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6WmVybywgcmVz
dWx0R1BSKTsKICAgICAgICAgCi0gICAgICAgIGlmIChub2RlLT5jb2RlT3JpZ2luLmlubGluZUNh
bGxGcmFtZSkgeworICAgICAgICBpZiAobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxG
cmFtZSkgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBub3RDcmVhdGVkLCB0aGlzLCBv
cGVyYXRpb25DcmVhdGVJbmxpbmVkQXJndW1lbnRzLCByZXN1bHRHUFIsCi0gICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSk7CisgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAg
ICAgIHNsb3dQYXRoQ2FsbChub3RDcmVhdGVkLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVBcmd1bWVu
dHMsIHJlc3VsdEdQUikpOwpAQCAtNDU4MSw3ICs0NTgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0KIAogICAgIGNhc2UgVGVhck9mZkFjdGl2YXRp
b246IHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW5vZGUtPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWUpOwogCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFjdGl2YXRpb25WYWx1
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOwpAQCAtNDU5MCw3ICs0NTkwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENyZWF0ZWQgPSBtX2pp
dC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Olplcm8sIGFjdGl2YXRpb25WYWx1ZUdQUik7CiAK
LSAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gbV9qaXQuc3ltYm9sVGFibGVGb3Io
bm9kZS0+Y29kZU9yaWdpbik7CisgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IG1f
aml0LnN5bWJvbFRhYmxlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGludCBy
ZWdpc3RlcnNPZmZzZXQgPSBKU0FjdGl2YXRpb246OnJlZ2lzdGVyc09mZnNldChzeW1ib2xUYWJs
ZSk7CiAKICAgICAgICAgaW50IGJ5dGVjb2RlQ2FwdHVyZVN0YXJ0ID0gc3ltYm9sVGFibGUtPmNh
cHR1cmVTdGFydCgpOwpAQCAtNDYyMywxMSArNDYyMywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgY3JlYXRl
ZCA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6Tm9uWmVybywgdW5tb2RpZmllZEFy
Z3VtZW50c1ZhbHVlR1BSKTsKIAotICAgICAgICBpZiAobm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUpIHsKKyAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxs
RnJhbWUpIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAg
ICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCwgdGhpcywgb3Bl
cmF0aW9uVGVhck9mZklubGluZWRBcmd1bWVudHMsIE5vUmVzdWx0LAotICAgICAgICAgICAgICAg
ICAgICB1bm1vZGlmaWVkQXJndW1lbnRzVmFsdWVHUFIsIGFjdGl2YXRpb25WYWx1ZUdQUiwgbm9k
ZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpKTsKKyAgICAgICAgICAgICAgICAgICAgdW5t
b2RpZmllZEFyZ3VtZW50c1ZhbHVlR1BSLCBhY3RpdmF0aW9uVmFsdWVHUFIsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgK
QEAgLTQ2NDQsMTYgKzQ2NDQsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAKICAgICAgICAgaWYgKCFpc0VtcHR5U3BlY3VsYXRpb24oCiAgICAg
ICAgICAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAotICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5ncmFwaCgpLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4p
KS5tX3R5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCkuYXJndW1lbnRz
UmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkubV90eXBlKSkgewogICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBBcmd1bWVudHNFc2NhcGVkLCBK
U1ZhbHVlUmVncygpLCAwLAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NCgKICAg
ICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sCiAgICAgICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgbV9q
aXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9yaWdpbikp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVu
dHNSZWdpc3RlckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCghbm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxs
RnJhbWUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbm9kZS0+b3JpZ2luLnNlbWFudGljLmlu
bGluZUNhbGxGcmFtZSk7CiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9h
ZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9qaXQu
c3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRHUFIpOwogICAgICAgICBpbnQzMlJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwpAQCAtNDY2NywxMSArNDY2NywxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGNyZWF0
ZWQgPSBtX2ppdC5icmFuY2hUZXN0NjQoCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVy
bywKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKAotICAgICAgICAgICAgICAg
IG1faml0LmdyYXBoKCkubWFjaGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmln
aW4pKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRzUmVn
aXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkpOwogICAgICAgICAKLSAgICAgICAgaWYg
KG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgIGlmIChub2RlLT5v
cmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSB7CiAgICAgICAgICAgICBtX2ppdC5tb3Zl
KAotICAgICAgICAgICAgICAgIEltbTY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihub2RlLT5j
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpKSksCisgICAg
ICAgICAgICAgICAgSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKSkpLAogICAgICAg
ICAgICAgICAgIHJlc3VsdEdQUik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCks
IHJlc3VsdEdQUik7CkBAIC00Njg2LDcgKzQ2ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIGNyZWF0ZWQsIHRoaXMsIG9wZXJh
dGlvbkdldEFyZ3VtZW50c0xlbmd0aCwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgIG1faml0
LmdyYXBoKCkubWFjaGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4pLm9m
ZnNldCgpKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRz
UmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS5vZmZzZXQoKSkpOwogICAgICAgICAK
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsK
QEAgLTQ3MDAsMjMgKzQ3MDAsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogCiAgICAgICAgIGlmICghaXNFbXB0eVNwZWN1bGF0aW9uKAogICAgICAgICAgICAg
ICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKLSAgICAgICAgICAgICAgICAgICAgbV9q
aXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5jb2RlT3JpZ2luKSkubV90eXBl
KSkgeworICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLmFyZ3VtZW50c1JlZ2lzdGVy
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLm1fdHlwZSkpIHsKICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQXJndW1lbnRzRXNjYXBlZCwgSlNWYWx1ZVJl
Z3MoKSwgMCwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoCiAgICAgICAgICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLAogICAgICAgICAgICAgICAgICAgICBKSVRD
b21waWxlcjo6YWRkcmVzc0ZvcigKLSAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBo
KCkubWFjaGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4pKSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0
ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKICAgICAgICAgfQogCiAgICAgICAgIG1f
aml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgaW5kZXhHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAg
IGlmIChub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkgeworICAgICAgICBpZiAobm9k
ZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkgewogICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwg
MCwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0R1BS
LAotICAgICAgICAgICAgICAgICAgICBJbW0zMihub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzLnNpemUoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgSW1tMzIobm9k
ZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAg
ICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsCkBAIC00NzI4LDE0ICs0NzI4
LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0FyZ3VtZW50OwogICAgICAgICBKSVRDb21waWxl
cjo6SnVtcExpc3Qgc2xvd0FyZ3VtZW50T3V0T2ZCb3VuZHM7Ci0gICAgICAgIGlmIChtX2ppdC5z
eW1ib2xUYWJsZUZvcihub2RlLT5jb2RlT3JpZ2luKS0+c2xvd0FyZ3VtZW50cygpKSB7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghbm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUp
OworICAgICAgICBpZiAobV9qaXQuc3ltYm9sVGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+c2xvd0FyZ3VtZW50cygpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbm9kZS0+
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICBjb25zdCBTbG93
QXJndW1lbnQqIHNsb3dBcmd1bWVudHMgPSBtX2ppdC5ncmFwaCgpLm1fc2xvd0FyZ3VtZW50cy5n
ZXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgc2xvd0FyZ3VtZW50T3V0T2ZCb3VuZHMu
YXBwZW5kKAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwKLSAgICAgICAgICAgICAg
ICAgICAgSW1tMzIobV9qaXQuc3ltYm9sVGFibGVGb3Iobm9kZS0+Y29kZU9yaWdpbiktPnBhcmFt
ZXRlckNvdW50KCkpKSk7CisgICAgICAgICAgICAgICAgICAgIEltbTMyKG1faml0LnN5bWJvbFRh
YmxlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnBhcmFtZXRlckNvdW50KCkpKSk7CiAKICAg
ICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihTbG93QXJndW1lbnQpID09IDgsIFNsb3dB
cmd1bWVudF9zaXplX2lzX2VpZ2h0X2J5dGVzKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoSW1t
UHRyKHNsb3dBcmd1bWVudHMpLCByZXN1bHRHUFIpOwpAQCAtNDc1Nyw3ICs0NzU3LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgCiAgICAg
ICAgIG1faml0LmxvYWQ2NCgKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoCi0g
ICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHJlc3VsdEdQUiwgSklU
Q29tcGlsZXI6OlRpbWVzRWlnaHQsIG1faml0Lm9mZnNldE9mQXJndW1lbnRzSW5jbHVkaW5nVGhp
cyhub2RlLT5jb2RlT3JpZ2luKSksCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsIG1faml0Lm9mZnNl
dE9mQXJndW1lbnRzSW5jbHVkaW5nVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwKICAgICAg
ICAgICAgIHJlc3VsdEdQUik7CiAKICAgICAgICAgc2xvd0FyZ3VtZW50LmxpbmsoJm1faml0KTsK
QEAgLTQ3NzYsMTUgKzQ3NzYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpOb25aZXJvLAogICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVu
dHNSZWdpc3RlckZvcihub2RlLT5jb2RlT3JpZ2luKSkpKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSkpKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigx
KSwgaW5kZXhHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgIGlmIChub2RlLT5jb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZSkgeworICAgICAgICBpZiAobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGlu
ZUNhbGxGcmFtZSkgewogICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKAogICAgICAgICAgICAg
ICAgIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWJv
dmVPckVxdWFsLAogICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsCi0gICAgICAgICAgICAg
ICAgICAgIEltbTMyKG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMu
c2l6ZSgpKSkpOworICAgICAgICAgICAgICAgICAgICBJbW0zMihub2RlLT5vcmlnaW4uc2VtYW50
aWMuaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSkpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKAogICAgICAgICAgICAgICAgIG1faml0LmJy
YW5jaDMyKApAQCAtNDc5NSwxNCArNDc5NSwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
c2xvd0FyZ3VtZW50OwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0FyZ3VtZW50
T3V0T2ZCb3VuZHM7Ci0gICAgICAgIGlmIChtX2ppdC5zeW1ib2xUYWJsZUZvcihub2RlLT5jb2Rl
T3JpZ2luKS0+c2xvd0FyZ3VtZW50cygpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICBpZiAobV9qaXQuc3lt
Ym9sVGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c2xvd0FyZ3VtZW50cygpKSB7Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNh
bGxGcmFtZSk7CiAgICAgICAgICAgICBjb25zdCBTbG93QXJndW1lbnQqIHNsb3dBcmd1bWVudHMg
PSBtX2ppdC5ncmFwaCgpLm1fc2xvd0FyZ3VtZW50cy5nZXQoKTsKIAogICAgICAgICAgICAgc2xv
d0FyZ3VtZW50T3V0T2ZCb3VuZHMuYXBwZW5kKAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5j
aDMyKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCBpbmRl
eEdQUiwKLSAgICAgICAgICAgICAgICAgICAgSW1tMzIobV9qaXQuc3ltYm9sVGFibGVGb3Iobm9k
ZS0+Y29kZU9yaWdpbiktPnBhcmFtZXRlckNvdW50KCkpKSk7CisgICAgICAgICAgICAgICAgICAg
IEltbTMyKG1faml0LnN5bWJvbFRhYmxlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnBhcmFt
ZXRlckNvdW50KCkpKSk7CiAKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihTbG93
QXJndW1lbnQpID09IDgsIFNsb3dBcmd1bWVudF9zaXplX2lzX2VpZ2h0X2J5dGVzKTsKICAgICAg
ICAgICAgIG1faml0Lm1vdmUoSW1tUHRyKHNsb3dBcmd1bWVudHMpLCByZXN1bHRHUFIpOwpAQCAt
NDgyNCwyMSArNDgyNCwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkNjQoCiAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6QmFzZUluZGV4KAotICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBtX2ppdC5vZmZzZXRPZkFy
Z3VtZW50c0luY2x1ZGluZ1RoaXMobm9kZS0+Y29kZU9yaWdpbikpLAorICAgICAgICAgICAgICAg
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpUaW1l
c0VpZ2h0LCBtX2ppdC5vZmZzZXRPZkFyZ3VtZW50c0luY2x1ZGluZ1RoaXMobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksCiAgICAgICAgICAgICByZXN1bHRHUFIpOwogICAgICAgICAKLSAgICAgICAg
aWYgKG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgIGlmIChub2Rl
LT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSB7CiAgICAgICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAg
ICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25HZXRJbmxpbmVkQXJndW1lbnRCeVZh
bCwgcmVzdWx0R1BSLCAKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5tYWNoaW5l
QXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9yaWdpbikub2Zmc2V0KCksCi0gICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLAorICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLm9mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICBub2RlLT5v
cmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lLAogICAgICAgICAgICAgICAgICAgICBpbmRl
eEdQUikpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBz
bG93UGF0aCwgdGhpcywgb3BlcmF0aW9uR2V0QXJndW1lbnRCeVZhbCwgcmVzdWx0R1BSLCAKLSAg
ICAgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJG
b3Iobm9kZS0+Y29kZU9yaWdpbikub2Zmc2V0KCksCisgICAgICAgICAgICAgICAgICAgIG1faml0
LmdyYXBoKCkubWFjaGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yykub2Zmc2V0KCksCiAgICAgICAgICAgICAgICAgICAgIGluZGV4R1BSKSk7CiAgICAgICAgIH0K
ICAgICAgICAgCkBAIC00ODUwLDEzICs0ODUwLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDogewog
ICAgICAgICBBU1NFUlQoIWlzRW1wdHlTcGVjdWxhdGlvbigKICAgICAgICAgICAgIG1fc3RhdGUu
dmFyaWFibGVzKCkub3BlcmFuZCgKLSAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLmFyZ3Vt
ZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4pKS5tX3R5cGUpKTsKKyAgICAgICAgICAg
ICAgICBtX2ppdC5ncmFwaCgpLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLm1fdHlwZSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAg
QXJndW1lbnRzRXNjYXBlZCwgSlNWYWx1ZVJlZ3MoKSwgMCwKICAgICAgICAgICAgIG1faml0LmJy
YW5jaFRlc3Q2NCgKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywKICAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6YWRkcmVzc0ZvcigKLSAgICAgICAgICAgICAgICAgICAg
bV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9yaWdp
bikpKSk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCkubWFjaGluZUFyZ3VtZW50
c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CiAgICAgICAgIG5vUmVzdWx0
KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00OTcxLDcgKzQ5NzEsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgfQogICAgICAgICAKICAg
ICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6IHsKLSAgICAgICAgQVNTRVJUKCFub2RlLT5j
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CisgICAgICAgIEFTU0VSVCghbm9kZS0+b3JpZ2lu
LnNlbWFudGljLmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgIAogICAgICAgICBHUFJUZW1wb3Jh
cnkgdGVtcCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOwpAQCAt
NDk4Myw3ICs0OTgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnModGVtcEdQUik7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZSgKLSAgICAgICAgICAgIFRy
dXN0ZWRJbW0zMihub2RlLT5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpLAorICAgICAgICAgICAg
VHJ1c3RlZEltbTMyKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KSwKICAgICAg
ICAgICAgIFRydXN0ZWRJbW0zMihtX3N0cmVhbS0+c2l6ZSgpKSk7CiAgICAgICAgIGFwcGVuZENh
bGxTZXRSZXN1bHQodHJpZ2dlck9TUkVudHJ5Tm93LCB0ZW1wR1BSKTsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgZG9udEVudGVyID0gbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6WmVybywgdGVtcEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTYzOTE5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg3MSw3ICs4NzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW4oTm9kZSogbm9k
CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlc3VsdEdQUiksIHN0
dWJJbmZvLCBiYXNlR1BSLAogICAgICAgICAgICAgICAgIHN0cmluZy0+dHJ5R2V0VmFsdWVJbXBs
KCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBzdHViSW5mby0+Y29kZU9yaWdpbiA9IG5v
ZGUtPmNvZGVPcmlnaW47CisgICAgICAgICAgICBzdHViSW5mby0+Y29kZU9yaWdpbiA9IG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlR1BSID0g
c3RhdGljX2Nhc3Q8aW50OF90PihiYXNlR1BSKTsKICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRj
aC52YWx1ZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4ocmVzdWx0R1BSKTsKICAgICAgICAgICAg
IHN0dWJJbmZvLT5wYXRjaC51c2VkUmVnaXN0ZXJzID0gdXNlZFJlZ2lzdGVycygpOwpAQCAtMTM5
MCw4ICsxMzkwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawog
ICAgICAgICBtX2NhbkV4aXQgPSBtX2N1cnJlbnROb2RlLT5jYW5FeGl0KCk7CiAgICAgICAgIGJv
b2wgc2hvdWxkRXhlY3V0ZUVmZmVjdHMgPSBtX2ludGVycHJldGVyLnN0YXJ0RXhlY3V0aW5nKG1f
Y3VycmVudE5vZGUpOwogICAgICAgICBtX2ppdC5zZXRGb3JOb2RlKG1fY3VycmVudE5vZGUpOwot
ICAgICAgICBtX2NvZGVPcmlnaW5Gb3JFeGl0VGFyZ2V0ID0gbV9jdXJyZW50Tm9kZS0+Y29kZU9y
aWdpbkZvckV4aXRUYXJnZXQ7Ci0gICAgICAgIG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlID0g
bV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbjsKKyAgICAgICAgbV9jb2RlT3JpZ2luRm9yRXhpdFRh
cmdldCA9IG1fY3VycmVudE5vZGUtPm9yaWdpbi5mb3JFeGl0OworICAgICAgICBtX2NvZGVPcmln
aW5Gb3JFeGl0UHJvZmlsZSA9IG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAg
ICAgaWYgKCFtX2N1cnJlbnROb2RlLT5zaG91bGRHZW5lcmF0ZSgpKSB7CiAgICAgICAgICAgICBz
d2l0Y2ggKG1fY3VycmVudE5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgSlNDb25zdGFu
dDoKQEAgLTE0MjcsNyArMTQyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJy
ZW50QmxvY2sKICAgICAgICAgICAgICAgICBkYXRhTG9nRigKICAgICAgICAgICAgICAgICAgICAg
IlNwZWN1bGF0aXZlSklUIGdlbmVyYXRpbmcgTm9kZSBAJWQgKGJjIyV1KSBhdCBKSVQgb2Zmc2V0
IDB4JXgiLAogICAgICAgICAgICAgICAgICAgICAoaW50KW1fY3VycmVudE5vZGUtPmluZGV4KCks
Ci0gICAgICAgICAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4uYnl0ZWNvZGVJ
bmRleCwgbV9qaXQuZGVidWdPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dE5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4LCBtX2ppdC5kZWJ1Z09mZnNldCgp
KTsKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJcbiIpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCkBAIC0xNzgwLDcgKzE3ODAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0QnlWYWxPblN0CiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpLCByZXN1bHRUYWdSZWcpOwogI2VuZGlmCiAKLSAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2luKTsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5z
dHJpbmdQcm90b3R5cGVDaGFpbklzU2FuZSgpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBTYW5lU3RyaW5nR2V0QnlW
YWxTbG93UGF0aEdlbmVyYXRvcigKQEAgLTQ0NTUsNyArNDQ1NSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmoKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld1R5cGVkQXJyYXkoTm9kZSogbm9kZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbik7
CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgVHlwZWRBcnJheVR5cGUgdHlw
ZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
bG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmUodHlwZSk7CiAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAx
NjM5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4OSw3ICsyODksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIGJv
b2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZh
bGlkKG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICByZXR1cm4gbWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQobV9jdXJyZW50Tm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKICAgICB9CiAKICNpZiBFTkFCTEUoR0dDKQpAQCAtMTc1Nyw3ICsxNzU3LDcg
QEAgcHVibGljOgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2soY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgcHJlcGFy
ZUZvckV4dGVybmFsQ2FsbCgpOwotICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1f
Y3VycmVudE5vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3Jp
Z2luKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGwgPSBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgcmV0dXJuIGNhbGw7CkBAIC0xNzY1LDcgKzE3NjUs
NyBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhDYWxsRnJh
bWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikKICAgICB7
CiAgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKLSAgICAgICAgbV9qaXQuZW1pdFN0
b3JlQ29kZU9yaWdpbihtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgbV9qaXQu
ZW1pdFN0b3JlQ29kZU9yaWdpbihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAg
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gbV9qaXQuYXBwZW5kQ2FsbChmdW5jdGlvbik7
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrV2l0aENhbGxGcmFtZVJvbGxiYWNrKCk7CiAg
ICAgICAgIHJldHVybiBjYWxsOwpAQCAtMTc4Nyw3ICsxNzg3LDcgQEAgcHVibGljOgogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1
bmN0aW9uLCBHUFJSZWcgcmVzdWx0KQogICAgIHsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFs
Q2FsbCgpOwotICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUt
PmNvZGVPcmlnaW4pOworICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVu
dE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwg
PSBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZh
bGlkR1BSUmVnKQogICAgICAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
UiwgcmVzdWx0KTsKQEAgLTE3OTYsNyArMTc5Niw3IEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxl
cjo6Q2FsbCBhcHBlbmRDYWxsKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikKICAgICB7CiAg
ICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKLSAgICAgICAgbV9qaXQuZW1pdFN0b3Jl
Q29kZU9yaWdpbihtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgbV9qaXQuZW1p
dFN0b3JlQ29kZU9yaWdpbihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAg
ICByZXR1cm4gbV9qaXQuYXBwZW5kQ2FsbChmdW5jdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQoY29uc3QgRnVu
Y3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0MSwgR1BSUmVnIHJlc3VsdDIpCkBAIC0z
MDQwLDcgKzMwNDAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJ1Y3R1cmVMb2NhdGlvblR5cGU+
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUo
RWRnZSBlZGdlLCBTdHJ1Y3R1cmVMb2NhdGlvblR5cGUgc3RydWN0dXJlTG9jYXRpb24pCiB7CiAg
ICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUgPQotICAgICAgICBtX2ppdC5nbG9i
YWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiktPnN0cmluZ09iamVjdFN0cnVj
dHVyZSgpOworICAgICAgICBtX2ppdC5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCk7CiAgICAgCiAgICAgaWYgKCFt
X3N0YXRlLmZvck5vZGUoZWRnZSkubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuaXNTdWJzZXRPZihT
dHJ1Y3R1cmVTZXQoc3RyaW5nT2JqZWN0U3RydWN0dXJlKSkpIHsKICAgICAgICAgc3BlY3VsYXRp
b25DaGVjaygKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1
Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTYzOTE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb252ZXJ0VG9J
ZGVudGl0eU92ZXJDaGlsZCh1bnNpZ25lZCBjaGlsZEluZGV4KQogICAgIHsKICAgICAgICAgbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9u
ZSwgUGhhbnRvbSwgbV9ub2RlLT5jb2RlT3JpZ2luLCBtX25vZGUtPmNoaWxkcmVuKTsKKyAgICAg
ICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgbV9ub2RlLT5vcmlnaW4sIG1f
bm9kZS0+Y2hpbGRyZW4pOwogICAgICAgICBtX25vZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2UoY2hp
bGRJbmRleCBeIDEpOwogICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAg
ICAgIG1fY2hhbmdlZCA9IHRydWU7CkBAIC0xNzMsMTAgKzE3MywxMCBAQCBwcml2YXRlOgogICAg
IHZvaWQgcHJlcGFyZVRvRm9sZFR5cGVkQXJyYXkoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcpCiAg
ICAgewogICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9u
b2RlSW5kZXgsIFNwZWNOb25lLCBUeXBlZEFycmF5V2F0Y2hwb2ludCwgbV9ub2RlLT5jb2RlT3Jp
Z2luLAorICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBUeXBlZEFycmF5V2F0Y2hw
b2ludCwgbV9ub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICBPcEluZm8odmlldykpOwogICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNw
ZWNOb25lLCBQaGFudG9tLCBtX25vZGUtPmNvZGVPcmlnaW4sIG1fbm9kZS0+Y2hpbGRyZW4pOwor
ICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBQaGFudG9tLCBtX25vZGUtPm9yaWdp
biwgbV9ub2RlLT5jaGlsZHJlbik7CiAgICAgfQogICAgIAogICAgIEluc2VydGlvblNldCBtX2lu
c2VydGlvblNldDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hl
Y2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTYzOTE5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTEgKzc3LDExIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAvLyBtb3JlIHRoYW4gb25lIExvb3BIaW50IGNvdWxkIGhhcHBlbiBpbiBjYXNlcyB3
aGVyZSB3ZSBkaWQgYSBsb3Qgb2YgQ0ZHCiAgICAgICAgICAgICAgICAgLy8gc2ltcGxpZmljYXRp
b24gaW4gdGhlIGJ5dGVjb2RlIHBhcnNlciwgYnV0IGl0IHNob3VsZCBiZSB2ZXJ5IHJhcmUuCiAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0g
bm9kZS0+Y29kZU9yaWdpbjsKKyAgICAgICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5v
ZGUtPm9yaWdpbjsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAobGV2ZWwg
IT0gRlRMOjpDYW5Db21waWxlQW5kT1NSRW50ZXIgfHwgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJh
bWUpIHsKKyAgICAgICAgICAgICAgICBpZiAobGV2ZWwgIT0gRlRMOjpDYW5Db21waWxlQW5kT1NS
RW50ZXIgfHwgb3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkgewogICAgICAgICAgICAg
ICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGVJbmRleCArIDEsIFNwZWNOb25lLCBDaGVja1RpZXJVcEluTG9vcCwgY29kZU9yaWdpbik7
CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwgQ2hlY2tU
aWVyVXBJbkxvb3AsIG9yaWdpbik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAgLTk1LDE4ICs5NSwxOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKCFpc0F0VG9wKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZUluZGV4ICsgMSwgU3BlY05vbmUsIENoZWNrVGllclVwSW5Mb29wLCBjb2Rl
T3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsIFNwZWNOb25l
LCBDaGVja1RpZXJVcEluTG9vcCwgb3JpZ2luKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlu
c2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAx
LCBTcGVjTm9uZSwgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlciwgY29kZU9yaWdpbik7CisgICAgICAg
ICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsIFNwZWNOb25lLCBDaGVja1RpZXJVcEFuZE9TUkVu
dGVyLCBvcmlnaW4pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBpZiAoYmxvY2stPmxhc3QoKS0+b3AoKSA9PSBSZXR1cm4p
IHsKICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAg
ICAgICAgICAgYmxvY2stPnNpemUoKSAtIDEsIFNwZWNOb25lLCBDaGVja1RpZXJVcEF0UmV0dXJu
LCBibG9jay0+bGFzdCgpLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgYmxvY2st
PnNpemUoKSAtIDEsIFNwZWNOb25lLCBDaGVja1RpZXJVcEF0UmV0dXJuLCBibG9jay0+bGFzdCgp
LT5vcmlnaW4pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpbnNl
cnRpb25TZXQuZXhlY3V0ZShibG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE2
MzkxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCwyMCArMTI4LDIwIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSAmJiAhaXRlci0+
dmFsdWUubV9hcnJheU1vZGVJc1ZhbGlkKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+Y29k
ZU9yaWdpbjsKKyAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5v
cmlnaW47CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBOb2RlKiBn
ZXRMb2NhbCA9IGluc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAg
ICAgaW5kZXhJbkJsb2NrICsgMSwgdmFyaWFibGUtPnByZWRpY3Rpb24oKSwgR2V0TG9jYWwsIGNv
ZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2sgKyAxLCB2YXJp
YWJsZS0+cHJlZGljdGlvbigpLCBHZXRMb2NhbCwgb3JpZ2luLAogICAgICAgICAgICAgICAgICAg
ICAgICAgT3BJbmZvKHZhcmlhYmxlKSwgRWRnZShub2RlKSk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrICsgMSwgU3BlY05vbmUsIENoZWNrU3RydWN0dXJlLCBjb2RlT3JpZ2luLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIFNwZWNOb25lLCBDaGVj
a1N0cnVjdHVyZSwgb3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyht
X2dyYXBoLmFkZFN0cnVjdHVyZVNldChpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSkpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVkZ2UoZ2V0TG9jYWwsIENlbGxVc2UpKTsKICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVyLT52YWx1ZS5tX2FycmF5TW9kZUlzVmFsaWQpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpdGVyLT52YWx1ZS5tX2FycmF5TW9kZUhv
aXN0aW5nT2theSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2sgKyAxLCBTcGVj
Tm9uZSwgQ2hlY2tBcnJheSwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRleEluQmxvY2sgKyAxLCBTcGVjTm9uZSwgQ2hlY2tBcnJheSwgb3JpZ2luLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhpdGVyLT52YWx1ZS5tX2FycmF5TW9kZS5hc1dv
cmQoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRnZShnZXRMb2NhbCwgQ2VsbFVz
ZSkpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKQEAgLTE2NCwxOCArMTY0LDE4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSAm
JiAhaXRlci0+dmFsdWUubV9hcnJheU1vZGVJc1ZhbGlkKQogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0g
bm9kZS0+Y29kZU9yaWdpbjsKKyAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4g
PSBub2RlLT5vcmlnaW47CiAgICAgICAgICAgICAgICAgICAgIEVkZ2UgY2hpbGQxID0gbm9kZS0+
Y2hpbGQxKCk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAo
aXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGluc2Vy
dGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5C
bG9jaywgU3BlY05vbmUsIENoZWNrU3RydWN0dXJlLCBjb2RlT3JpZ2luLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrU3RydWN0dXJlLCBv
cmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3Ry
dWN0dXJlU2V0KGl0ZXItPnZhbHVlLm1fc3RydWN0dXJlKSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRWRnZShjaGlsZDEubm9kZSgpLCBDZWxsVXNlKSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoaXRlci0+dmFsdWUubV9hcnJheU1vZGVJc1ZhbGlkKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoaXRlci0+dmFsdWUubV9hcnJheU1vZGVIb2lzdGluZ09r
YXkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tB
cnJheSwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxv
Y2ssIFNwZWNOb25lLCBDaGVja0FycmF5LCBvcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgT3BJbmZvKGl0ZXItPnZhbHVlLm1fYXJyYXlNb2RlLmFzV29yZCgpKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFZGdlKGNoaWxkMS5ub2RlKCksIENlbGxVc2UpKTsKICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTYzOTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNSwxOCArNDE1LDE4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIHVuc2lnbmVkIG5vZGVJbmRleCA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsgbm9kZUlu
ZGV4IDwgYmxvY2stPnNpemUoKSAmJiAhYmxvY2stPmF0KG5vZGVJbmRleCktPmNvZGVPcmlnaW4u
aXNTZXQoKTsgbm9kZUluZGV4KyspIHsgfQorICAgICAgICAgICAgZm9yICg7IG5vZGVJbmRleCA8
IGJsb2NrLT5zaXplKCkgJiYgIWJsb2NrLT5hdChub2RlSW5kZXgpLT5vcmlnaW4uaXNTZXQoKTsg
bm9kZUluZGV4KyspIHsgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBWQUxJREFURSgoYmxv
Y2spLCBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgZm9yICg7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleCsrKQotICAgICAg
ICAgICAgICAgIFZBTElEQVRFKChibG9jay0+YXQobm9kZUluZGV4KSksIGJsb2NrLT5hdChub2Rl
SW5kZXgpLT5jb2RlT3JpZ2luLmlzU2V0KCkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKChi
bG9jay0+YXQobm9kZUluZGV4KSksIGJsb2NrLT5hdChub2RlSW5kZXgpLT5vcmlnaW4uaXNTZXQo
KSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0g
MDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CiAgICAgICAgICAgICAgICAg
c3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBQaGk6Ci0gICAgICAg
ICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmNvZGVPcmlnaW4uaXNTZXQoKSk7
CisgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPm9yaWdpbi5pc1Nl
dCgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDE2MzkxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENv
bGxlY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNo
cG9pbnQ6CiAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KAotICAg
ICAgICAgICAgICAgIG1fbm9kZS0+Y29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICBtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkMSgpLT5vcCgp
ID09IFdlYWtKU0NvbnN0YW50ID8gQmFkV2Vha0NvbnN0YW50Q2FjaGVXYXRjaHBvaW50IDogQmFk
Q2FjaGVXYXRjaHBvaW50LAogICAgICAgICAgICAgICAgIG1fbm9kZS0+c3RydWN0dXJlKCktPnRy
YW5zaXRpb25XYXRjaHBvaW50U2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTgsNyAr
MTU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLndhdGNocG9pbnRz
KCkuaXNWYWxpZE9yTWl4ZWQoc3RyaW5nUHJvdG90eXBlU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0
Y2hwb2ludFNldCgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hw
b2ludHMoKS5hZGRMYXppbHkoCi0gICAgICAgICAgICAgICAgbV9ub2RlLT5jb2RlT3JpZ2luLCBO
b3RTdHJpbmdPYmplY3QsCisgICAgICAgICAgICAgICAgbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMs
IE5vdFN0cmluZ09iamVjdCwKICAgICAgICAgICAgICAgICBzdHJpbmdQcm90b3R5cGVTdHJ1Y3R1
cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTE3MCw3ICsxNzAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgaGFuZGxl
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpCiAgICAgewotICAgICAgICBpZiAobV9ncmFwaC5tYXNx
dWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZChtX25vZGUtPmNvZGVPcmln
aW4pKQorICAgICAgICBpZiAobV9ncmFwaC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dElzU3RpbGxWYWxpZChtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCiAgICAgICAgICAgICBhZGRM
YXppbHkoZ2xvYmFsT2JqZWN0KCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCkp
OwogICAgIH0KICAgICAKQEAgLTE5OSw3ICsxOTksNyBAQCBwcml2YXRlOgogICAgIAogICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+Y29kZU9yaWdpbik7CisgICAgICAgIHJldHVybiBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgfQog
ICAgIAogICAgIE5vZGUqIG1fbm9kZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223927</attachid>
            <date>2014-02-11 18:45:08 -0800</date>
            <delta_ts>2014-02-11 20:53:16 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>190347</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYzOTI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5NCBA
QAorMjAxNC0wMi0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEluc2VydGluZyBhIG5vZGUgd2l0aCBhIGNvZGVPcmlnaW4gImxpa2UiIGFub3RoZXIgbm9kZSBz
aG91bGQgY29weSBib3RoIHRoZSBjb2RlT3JpZ2luIGFuZCBjb2RlT3JpZ2luRm9yRXhpdFRhcmdl
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NjM1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAg
ICBPcmlnaW5hbGx5IG5vZGVzIGp1c3QgaGFkIGEgY29kZU9yaWdpbi4gQnV0IHRoZW4gd2Ugc3Rh
cnRlZCBkb2luZyBjb2RlIG1vdGlvbiwgYW5kIHdlCisgICAgICAgIG5lZWRlZCB0byBzZXBhcmF0
ZSB0aGUgY29kZU9yaWdpbiB0aGF0IGRlc2lnbmF0ZWQgd2hlcmUgdG8gZXhpdCBmcm9tIHRoZSBj
b2RlT3JpZ2luCisgICAgICAgIHRoYXQgZGVzaWduYXRlZCBldmVyeXRoaW5nIGVsc2UuIFRoZSAi
ZXZlcnl0aGluZyBlbHNlIiBpcyBhY3R1YWxseSBwcmV0dHkgaW1wb3J0YW50OgorICAgICAgICBp
dCBpbmNsdWRlcyBwcm9maWxpbmcsIGV4Y2VwdGlvbiBoYW5kbGluZywgYW5kIHRoZSBhY3R1YWwg
c2VtYW50aWNzIG9mIHRoZSBub2RlLiBGb3IKKyAgICAgICAgZXhhbXBsZSBzb21lIG5vZGVzIHVz
ZSB0aGUgb3JpZ2luJ3MgZ2xvYmFsIG9iamVjdCBpbiBzb21lIHdheS4KKyAgICAgICAgCisgICAg
ICAgIFRoaXMgYWxsIHNvcnQgb2Ygd29ya2VkIGV4Y2VwdCBmb3Igb25lIHF1aXJrOiB0aGUgZmFj
aWxpdGllcyBmb3IgY3JlYXRpbmcgbm9kZXMgYWxsCisgICAgICAgIGFzc3VtZWQgdGhhdCB0aGVy
ZSByZWFsbHkgd2FzIG9ubHkgb25lIG9yaWdpbi4gTElDTSB3b3VsZCB3b3JrIGFyb3VuZCB0aGlz
IGJ5IHNldHRpbmcKKyAgICAgICAgdGhlIGNvZGVPcmlnaW5Gb3JFeGl0VGFyZ2V0IG1hbnVhbGx5
LiBCdXQsIHRoYXQgbWVhbnMgdGhhdDoKKyAgICAgICAgCisgICAgICAgIC0gSWYgd2UgZGlkIGhv
aXN0IGEgbm9kZSB0d2ljZSwgdGhlbiB0aGUgc2Vjb25kIHRpbWUgYXJvdW5kLCB3ZSB3b3VsZCBm
b3JnZXQgdGhlIG5vZGUncworICAgICAgICAgIG9yaWdpbmFsIGV4aXQgdGFyZ2V0LgorICAgICAg
ICAKKyAgICAgICAgLSBJZiB3ZSBkaWQgYW4gaW5zZXJ0Tm9kZSgpIHRvIGluc2VydCBhIG5vZGUg
YmVmb3JlIGEgaG9pc3RlZCBub2RlLCB0aGUgaW5zZXJ0ZWQgbm9kZQorICAgICAgICAgIHdvdWxk
IGhhdmUgdGhlIHdyb25nIGV4aXQgdGFyZ2V0LgorICAgICAgICAKKyAgICAgICAgTW9zdCBvZiB0
aGUgdGltZSwgaWYgd2UgY29weSB0aGUgY29kZSBvcmlnaW4sIHdlIGFjdHVhbGx5IHdhbnQgdG8g
Y29weSBib3RoIG9yaWdpbnMuCisgICAgICAgIFNvLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgdGhl
IG5vdGlvbiBvZiBhIE5vZGVPcmlnaW4gd2hpY2ggaGFzIHR3byBDb2RlT3JpZ2luczogYQorICAg
ICAgICBmb3JFeGl0IGNvZGUgb3JpZ2luIHRoYXQgc2F5cyB3aGVyZSB0byBleGl0LCBhbmQgYSBz
ZW1hbnRpYyBjb2RlIG9yaWdpbiBmb3IgZXZlcnl0aGluZworICAgICAgICBlbHNlLgorICAgICAg
ICAKKyAgICAgICAgVGhpcyBhbHNvIChhbm5veWluZ2x5PykgbWVhbnMgdGhhdCB3ZSBhcmUgYWx3
YXlzIG1vcmUgZXhwbGljaXQgYWJvdXQgd2hpY2ggY29kZSBvcmlnaW4KKyAgICAgICAgd2UgcmVm
ZXIgdG8uIFRoYXQgbWVhbnMgdGhhdCBhIGxvdCBvZiAibm9kZS0+Y29kZU9yaWdpbiIgZXhwcmVz
c2lvbnMgaGFkIHRvIGNoYW5nZSB0bworICAgICAgICAibm9kZS0+b3JpZ2luLnNlbWFudGljIi4g
VGhpcyB3YXMgcGFydGx5IGEgcGxveSBvbiBteSBwYXJ0IHRvIGVuc3VyZSB0aGF0IHRoaXMKKyAg
ICAgICAgcmVmYWN0b3Jpbmcgd2FzIGNvbXBsZXRlOiB0byBnZXQgdGhlIGNvZGUgdG8gY29tcGls
ZSBJIHJlYWxseSBoYWQgdG8gYXVkaXQgYWxsIHVzZXMgb2YKKyAgICAgICAgQ29kZU9yaWdpbi4g
SWYsIGluIHRoZSBmdXR1cmUsIHdlIGZpbmQgdGhhdCAibm9kZS0+b3JpZ2luLnNlbWFudGljIiBp
cyB0b28gY3VtYmVyc29tZQorICAgICAgICB0aGVuIHdlIGNhbiByZWludHJvZHVjZSB0aGUgTm9k
ZTo6Y29kZU9yaWdpbiBmaWVsZC4gRm9yIG5vdyBJIGtpbmRhIGxpa2UgaXQgdGhvdWdoLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6Ym9vbGVhblJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToK
KyAgICAgICAgKiBkZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6QXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZTo6cnVuKToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlOjpvYnNlcnZlQmFkQXJn
dW1lbnRzVXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBo
YXNlOjpvYnNlcnZlUHJvcGVyQXJndW1lbnRzVXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1
bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlOjppc09LVG9PcHRpbWl6ZSk6CisgICAgICAgICogZGZn
L0RGR0FycmF5TW9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpvcmlnaW5h
bEFycmF5U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OmFscmVhZHlD
aGVja2VkKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRUb0dyYXBoKToKKyAgICAgICAgKiBkZmcvREZH
Q0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHU2ltcGxp
ZmljYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlv
blBoYXNlOjpjb252ZXJ0VG9KdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNh
dGlvblBoYXNlOjprZWVwT3BlcmFuZEFsaXZlKToKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1w
bGlmaWNhdGlvblBoYXNlOjpqZXR0aXNvbkJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpDRkdT
aW1wbGlmaWNhdGlvblBoYXNlOjptZXJnZUJsb2Nrcyk6CisgICAgICAgICogZGZnL0RGR0NQU1Jl
dGhyZWFkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNQU1JldGhyZWFkaW5nUGhh
c2U6OmFkZFBoaVNpbGVudGx5KToKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGluZ1Bo
YXNlOjphZGRQaGkpOgorICAgICAgICAoSlNDOjpERkc6OkNQU1JldGhyZWFkaW5nUGhhc2U6OmNh
bm9uaWNhbGl6ZUdldExvY2FsRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpDUFNSZXRocmVhZGlu
Z1BoYXNlOjpjYW5vbmljYWxpemVGbHVzaE9yUGhhbnRvbUxvY2FsRm9yKToKKyAgICAgICAgKEpT
Qzo6REZHOjpDUFNSZXRocmVhZGluZ1BoYXNlOjpwcm9wYWdhdGVQaGlzKToKKyAgICAgICAgKiBk
ZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpzZXRMb2Nh
bFN0b3JlRWxpbWluYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbW1vbkRhdGE6Om5vdGlmeUNvbXBpbGluZ1N0cnVj
dHVyZVRyYW5zaXRpb24pOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFu
dHMpOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjphZGRTdHJ1Y3R1
cmVUcmFuc2l0aW9uQ2hlY2spOgorICAgICAgICAqIGRmZy9ERkdDcml0aWNhbEVkZ2VCcmVha2lu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNl
OjpicmVha0NyaXRpY2FsRWRnZSk6CisgICAgICAgICogZGZnL0RGR0RDRVBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpEQ0VQaGFzZTo6Zml4dXBCbG9jayk6CisgICAgICAgICogZGZnL0RG
R0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpjcmVh
dGVEdW1wTGlzdCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4
dXBQaGFzZTo6Y3JlYXRlVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmF0dGVtcHRUb0ZvcmNlU3RyaW5nQXJyYXlNb2RlQnlUb1N0cmluZ0NvbnZlcnNpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmNvbnZlcnRTdHJpbmdBZGRVc2UpOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwVG9QcmltaXRpdmUpOgorICAgICAgICAoSlND
OjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6OmF0dGVtcHRUb01ha2VGYXN0U3RyaW5nQWRkKToKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpjaGVja0FycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpibGVzc0FycmF5T3BlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXhFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjppbnNlcnRTdG9yZUJhcnJp
ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeEludEVkZ2UpOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmluamVjdEludDMyVG9Eb3VibGVOb2RlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjp0cnVuY2F0ZUNvbnN0YW50VG9JbnQzMik6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRvTWFrZUdldEFycmF5TGVuZ3RoKToK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjphdHRlbXB0VG9NYWtlR2V0VHlwZWRBcnJh
eUJ5dGVMZW5ndGgpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmNvbnZlcnRUb0dl
dEFycmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpwcmVwZW5kR2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01h
a2VHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6YWRkUGhhbnRvbXNJZk5lY2Vzc2FyeSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcENvZGVPcmlnaW4pOgorICAgICAgICAoSlND
OjpERkc6OkdyYXBoOjphbW91bnRPZk5vZGVXaGl0ZVNwYWNlKToKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXBCbG9ja0hlYWRl
cik6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
Omhhc0V4aXRTaXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmFsdWVQcm9maWxlRm9y
KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6bWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZUZvcik6CisgICAgICAgICogZGZnL0RGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2U6
OmhhbmRsZSk6CisgICAgICAgIChKU0M6OkRGRzo6SW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25Q
aGFzZTo6aW5zZXJ0SW52YWxpZGF0aW9uQ2hlY2spOgorICAgICAgICAqIGRmZy9ERkdMSUNNUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkxJQ01QaGFzZTo6YXR0ZW1wdEhvaXN0KToKKyAg
ICAgICAgKiBkZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmNyZWF0ZVByZUhlYWRlcik6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpp
c1N0cm9uZ2x5UHJvdmVkQ29uc3RhbnRJbik6CisgICAgICAgICogZGZnL0RGR05vZGVPcmlnaW4u
aDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6Tm9kZU9yaWdpbjo6Tm9kZU9yaWdpbik6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZU9yaWdpbjo6aXNTZXQpOgorICAgICAgICAqIGRmZy9ERkdP
U1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRW50
cnlwb2ludENyZWF0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1Jlc3VycmVjdGlv
bkZvclZhbGlkYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UmVzdXJyZWN0aW9u
Rm9yVmFsaWRhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTU0FDb252ZXJzaW9u
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNTQUNvbnZlcnNpb25QaGFzZTo6cnVuKToK
KyAgICAgICAgKiBkZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U1NBTG93ZXJpbmdQaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NB
TG93ZXJpbmdQaGFzZTo6bG93ZXJCb3VuZHNDaGVjayk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUluKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRC
bG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZh
bE9uU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5l
d1R5cGVkQXJyYXkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjptYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hw
b2ludElzU3RpbGxWYWxpZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjphcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsU2V0UmVzdWx0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVy
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFy
ZU51bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZVBlZXBob2xlQnJhbmNoTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9i
amVjdE9yT3RoZXJMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVl
cGhvbGVDb21wYXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5v
blNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdHJlbmd0aFJl
ZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBo
YXNlOjpjb252ZXJ0VG9JZGVudGl0eU92ZXJDaGlsZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZTo6cHJlcGFyZVRvRm9sZFR5cGVkQXJyYXkpOgorICAgICAgICAq
IGRmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpUaWVyVXBDaGVja0luamVjdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lz
dGluZ1BoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6VmFsaWRhdGU6OnZhbGlkYXRlU1NBKToKKyAgICAgICAgKiBkZmcvREZHV2F0
Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V2F0Y2hwb2lu
dENvbGxlY3Rpb25QaGFzZTo6aGFuZGxlKToKKyAgICAgICAgKEpTQzo6REZHOjpXYXRjaHBvaW50
Q29sbGVjdGlvblBoYXNlOjpoYW5kbGVFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpXYXRjaHBv
aW50Q29sbGVjdGlvblBoYXNlOjpoYW5kbGVNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlOjpnbG9iYWxPYmplY3QpOgor
ICAgICAgICAqIGZ0bC9GVExKU0NhbGwuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkpTQ2FsbDo6
bGluayk6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Omxp
bmspOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpM
b3dlckRGR1RvTExWTTo6Y29tcGlsZVRvVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExW
TTo6Y29tcGlsZU5ld0FycmF5KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
Y29tcGlsZU5ld0FycmF5QnVmZmVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExW
TTo6Y29tcGlsZU5ld0FycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlU3RyaW5nQ2hhckF0KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUdldE15U2NvcGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Z2V0QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJE
RkdUb0xMVk06OmVxdWFsTnVsbE9yVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dl
ckRGR1RvTExWTTo6c3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9p
bnRJc1N0aWxsVmFsaWQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjYWxs
UHJlZmxpZ2h0KToKKwogMjAxNC0wMi0xMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgUmVwbGF5OiB1cHN0cmVhbSByZXBsYXkgaW5wdXQgY29kZSBnZW5lcmF0
b3IgYW5kIEVuY29kZWRWYWx1ZSBjbGFzcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMsNiArMzQzLDcg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlQWxsb2NhdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZUZsYWdzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlT3JpZ2luLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05NTMs
NiArOTUzLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdOb2RlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHTm9kZUFsbG9jYXRvci5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR05vZGVGbGFncy5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR05vZGVPcmlnaW4uaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdOb2RlVHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cZGZnXERGR09wZXJhdGlvbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGRmZ1xERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmgiIC8+CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTYzOTE5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTIxMCw2ICsyMTAsNyBAQAogCQkwRjJGQ0NGRDE4QTYwMDcwMDAxQTI3Rjgg
LyogREZHU2Nhbm5hYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJGQ0NGNjE4QTYwMDcwMDAxQTI3RjggLyogREZHU2Nhbm5hYmxlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRkNDRkUxOEE2
MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRkNDRjcxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1Ro
cmVhZERhdGEuY3BwICovOyB9OwogCQkwRjJGQ0NGRjE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhy
ZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyRkNDRjgxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERhdGEuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjMwMEI3ODE4QUIwNTExMDBB
NkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYzMDBCNzcxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjM0
QjE0OTE2RDQyMDEwMDAxQ0RBNUEgLyogREZHVXNlS2luZC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM0QjE0NzE2RDQyMDBFMDAxQ0RBNUEgLyog
REZHVXNlS2luZC5jcHAgKi87IH07CiAJCTBGMzRCMTRBMTZENDIwMTMwMDFDREE1QSAvKiBERkdV
c2VLaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjM0QjE0ODE2RDQyMDBFMDAxQ0RBNUEgLyogREZHVXNlS2luZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMzRCMTRDMTZENDNFMEQwMDFDREE1
QSAvKiBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzRCMTRCMTZENDNFMEMwMDFDREE1QSAvKiBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY2NCw2ICsxNjY1LDcgQEAKIAkJMEYyRkNDRjYx
OEE2MDA3MDAwMUEyN0Y4IC8qIERGR1NjYW5uYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdTY2FubmFibGUuaDsgcGF0aCA9IGRmZy9ERkdTY2FubmFibGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRkNDRjcxOEE2MDA3MDAwMUEyN0Y4IC8qIERG
R1RocmVhZERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
VGhyZWFkRGF0YS5jcHA7IHBhdGggPSBkZmcvREZHVGhyZWFkRGF0YS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMkZDQ0Y4MThBNjAwNzAwMDFBMjdGOCAvKiBERkdUaHJlYWRE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1RocmVhZERhdGEuaDsg
cGF0aCA9IGRmZy9ERkdUaHJlYWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMzAwQjc3MThBQjA1MTEwMEE2RDcyRSAvKiBERkdOb2RlT3JpZ2luLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR05vZGVPcmlnaW4uaDsgcGF0aCA9IGRmZy9ERkdOb2Rl
T3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMzRCMTQ3MTZENDIwMEUw
MDFDREE1QSAvKiBERkdVc2VLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERGR1VzZUtpbmQuY3BwOyBwYXRoID0gZGZnL0RGR1VzZUtpbmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjM0QjE0ODE2RDQyMDBFMDAxQ0RBNUEgLyogREZHVXNl
S2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdVc2VLaW5kLmg7IHBh
dGggPSBkZmcvREZHVXNlS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjM0
QjE0QjE2RDQzRTBDMDAxQ0RBNUEgLyogUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbHltb3JwaGljQWNjZXNzU3RydWN0
dXJlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI2MCw2ICs0MjYyLDcg
QEAKIAkJCQkwRkI0QjUxRjE2QjYyNzcyMDAzRjY5NkIgLyogREZHTm9kZUFsbG9jYXRvci5oICov
LAogCQkJCTBGQTU4MUI3MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuY3BwICovLAog
CQkJCTBGQTU4MUI4MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCAqLywKKwkJCQkw
RjMwMEI3NzE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oICovLAogCQkJCTBGQTU4
MUI5MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oICovLAogCQkJCTg2RUM5REJGMTMy
OERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmNwcCAqLywKIAkJCQk4NkVDOURDMDEzMjhE
RjgyMDAyQjJBRDcgLyogREZHT3BlcmF0aW9ucy5oICovLApAQCAtNDgwMSw2ICs0ODA0LDcgQEAK
IAkJCQk5NUUzQkMwNTBFMUFFNjgyMDBCMkQxQzEgLyogQ2FsbElkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMEI4M0IxMTRCQ0Y3MTgwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGOTMzMjlFMTRDQTdEQzUwMDg1RjNDNiAvKiBDYWxsTGlua1N0
YXR1cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERG
R05vZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0
RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyNEU1NDIxN0VBOUY1OTAwQUJCMjE3IC8qIENDYWxsSGVscGVycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM2QUFBRTUwRTFGNDI2NTAwQUQ4N0Q4IC8qIENsYXNzSW5mby5oIGluIEhlYWRl
cnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OgogewogICAgIEpTVmFsdWUgY2hpbGRDb25zdCA9IHZhbHVlLnZhbHVlKCk7
CiAgICAgaWYgKGNoaWxkQ29uc3QpIHsKLSAgICAgICAgaWYgKGNoaWxkQ29uc3QudG9Cb29sZWFu
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPmdsb2JhbEV4
ZWMoKSkpCisgICAgICAgIGlmIChjaGlsZENvbnN0LnRvQm9vbGVhbihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdsb2JhbEV4ZWMoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gRGVmaW5pdGVseVRydWU7CiAgICAgICAgIHJldHVybiBEZWZpbml0ZWx5
RmFsc2U7CiAgICAgfQpAQCAtNjcsNyArNjcsNyBAQCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6CiAgICAgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSkK
ICAgICAgICAgJiYgdmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuaGFzU2luZ2xldG9uKCkp
IHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS5tX2N1cnJlbnRLbm93blN0
cnVjdHVyZS5zaW5nbGV0b24oKTsKLSAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2lu
KSkKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQobV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKQogICAgICAgICAg
ICAgJiYgc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSAhPSBTdHJpbmdUeXBlKQogICAgICAg
ICAgICAgcmV0dXJuIERlZmluaXRlbHlUcnVlOwogICAgIH0KQEAgLTM0Myw3ICszNDMsNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIAogICAgIGNh
c2UgVmFsdWVBZGQ6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKTsKLSAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4sIGNsb2Ji
ZXJMaW1pdCk7CisgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNs
b2JiZXJMaW1pdCk7CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjU3RyaW5nIHwg
U3BlY0J5dGVjb2RlTnVtYmVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNzgyLDcgKzc4
Miw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNl
IElzRnVuY3Rpb246IHsKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCgKICAgICAgICAgICAgIG5v
ZGUtPm9wKCkgPT0gSXNVbmRlZmluZWQKLSAgICAgICAgICAgICYmIG1fZ3JhcGgubWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQobm9kZS0+Y29kZU9yaWdpbikpOwor
ICAgICAgICAgICAgJiYgbV9ncmFwaC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElz
U3RpbGxWYWxpZChub2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKICAgICAgICAgSlNWYWx1ZSBjaGls
ZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CiAgICAgICAgIGlmIChjaGlsZCkg
ewogICAgICAgICAgICAgYm9vbCBjb25zdGFudFdhc1NldCA9IHRydWU7CkBAIC03OTAsNyArNzkw
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAg
ICAgY2FzZSBJc1VuZGVmaW5lZDoKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBq
c0Jvb2xlYW4oCiAgICAgICAgICAgICAgICAgICAgIGNoaWxkLmlzQ2VsbCgpCi0gICAgICAgICAg
ICAgICAgICAgID8gY2hpbGQuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbikpCisg
ICAgICAgICAgICAgICAgICAgID8gY2hpbGQuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5tYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSkKICAgICAgICAgICAgICAgICAgICAgOiBjaGlsZC5pc1VuZGVmaW5lZCgpKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIElzQm9vbGVhbjoKQEAg
LTgyNiw3ICs4MjYsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgp
OwogICAgICAgICBBYnN0cmFjdFZhbHVlJiBhYnN0cmFjdENoaWxkID0gZm9yTm9kZShub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgIGlmIChjaGlsZCkgewotICAgICAgICAgICAgSlNWYWx1ZSB0eXBl
U3RyaW5nID0ganNUeXBlU3RyaW5nRm9yVmFsdWUoKnZtLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLCBjaGlsZCk7CisgICAgICAgICAgICBKU1ZhbHVlIHR5
cGVTdHJpbmcgPSBqc1R5cGVTdHJpbmdGb3JWYWx1ZSgqdm0sIG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgY2hpbGQpOwogICAgICAgICAgICAgc2V0
Q29uc3RhbnQobm9kZSwgdHlwZVN0cmluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtOTg5LDcgKzk4OSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHkKICAgICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6R2VuZXJpYzoKLSAgICAgICAgICAgIGNsb2Ji
ZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOworICAgICAgICAgICAgY2xv
YmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAg
ICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEFycmF5OjpTdHJpbmc6CkBAIC0xMDA0LDcgKzEwMDQsNyBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgLy8gaW1wbGll
cyBhbiBpbi1ib3VuZHMgYWNjZXNzKS4gTm9uZSBvZiB0aGlzIGZlZWxzIGxpa2UgaXQncyB3b3J0
aCBpdCwKICAgICAgICAgICAgICAgICAvLyBzbyB3ZSdyZSBnb2luZyB3aXRoIFRPUCBmb3Igbm93
LiBUaGUgc2FtZSB0aGluZyBhcHBsaWVzIHRvCiAgICAgICAgICAgICAgICAgLy8gY2xvYmJlcmlu
ZyB0aGUgd29ybGQuCi0gICAgICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmln
aW4sIGNsb2JiZXJMaW1pdCk7CisgICAgICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLm1fdm0uc3RyaW5nU3RydWN0dXJlLmdl
dCgpKTsKQEAgLTEwMTQsMTQgKzEwMTQsMTQgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6Oklu
dDMyOgogICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkg
ewotICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVy
TGltaXQpOworICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVh
cFRvcCgpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBB
cnJheTo6RG91YmxlOgogICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZC
b3VuZHMoKSkgewotICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2lu
LCBjbG9iYmVyTGltaXQpOworICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2Rl
KS5tYWtlSGVhcFRvcCgpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5hcnJheU1vZGUo
KS5pc1NhbmVDaGFpbigpKQogICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShT
cGVjRG91YmxlKTsKQEAgLTEwMzIsNyArMTAzMiw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgogICAg
ICAgICBjYXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOgogICAgICAgICAgICAgaWYgKG5v
ZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkKLSAgICAgICAgICAgICAgICBjbG9iYmVy
V29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgICAgICAgICBj
bG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwogICAgICAg
ICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQXJyYXk6OkludDhBcnJheToKQEAgLTEwODMsMjQgKzEwODMsMjQgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgbV9zdGF0
ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFy
cmF5OjpHZW5lcmljOgotICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4s
IGNsb2JiZXJMaW1pdCk7CisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBjbG9iYmVyTGltaXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
QXJyYXk6OkludDMyOgogICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZC
b3VuZHMoKSkKLSAgICAgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwg
Y2xvYmJlckxpbWl0KTsKKyAgICAgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091
dE9mQm91bmRzKCkpCi0gICAgICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmln
aW4sIGNsb2JiZXJMaW1pdCk7CisgICAgICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3Jh
Z2U6CiAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kcygpKQot
ICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGlt
aXQpOworICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNsb2JiZXJMaW1pdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6
U2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5t
YXlTdG9yZVRvSG9sZSgpKQotICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2Rl
T3JpZ2luLCBjbG9iYmVyTGltaXQpOworICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTExMCwxMyArMTExMCwxMyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAK
ICAgICBjYXNlIEFycmF5UHVzaDoKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKLSAg
ICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7CisgICAg
ICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAg
ICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQnl0ZWNvZGVOdW1iZXIpOwogICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIG5vZGUt
PnNldENhbkV4aXQodHJ1ZSk7Ci0gICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2lu
LCBjbG9iYmVyTGltaXQpOworICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjbG9iYmVyTGltaXQpOwogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7
CiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCkBAIC0xMjAwLDcgKzEyMDAsNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIFRvUHJpbWl0
aXZlIHdpbGwgY3VycmVudGx5IGZvcmdldCBzdHJpbmcgY29uc3RhbnRzLiBCdXQgdGhhdCdzIG5v
dCBhIGJpZwogICAgICAgICAvLyBkZWFsIHNpbmNlIHdlIGRvbid0IGRvIGFueSBvcHRpbWl6YXRp
b24gb24gdGhvc2UgY3VycmVudGx5LgogICAgICAgICAKLSAgICAgICAgY2xvYmJlcldvcmxkKG5v
ZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGNsb2JiZXJXb3JsZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIAogICAgICAgICBTcGVj
dWxhdGVkVHlwZSB0eXBlID0gc291cmNlLm1fdHlwZTsKICAgICAgICAgaWYgKHR5cGUgJiB+KFNw
ZWNGdWxsTnVtYmVyIHwgU3BlY1N0cmluZyB8IFNwZWNCb29sZWFuKSkKQEAgLTEyMTksNyArMTIx
OSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAg
ICAgIC8vIHN0cnVjdHVyZS4KICAgICAgICAgICAgIGZpbHRlcigKICAgICAgICAgICAgICAgICBu
b2RlLT5jaGlsZDEoKSwKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5jb2RlT3JpZ2luKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpOworICAgICAgICAgICAg
ICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnN0cmlu
Z09iamVjdFN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7
IC8vIFdlIGNvdWxkIGJlIG1vcmUgcHJlY2lzZSBidXQgaXQncyBsaWtlbHkgbm90IHdvcnRoIGl0
LgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RV
c2U6CkBAIC0xMjI3LDcgKzEyMjcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDZWxsVXNlOgogICAg
ICAgICBjYXNlIFVudHlwZWRVc2U6Ci0gICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29k
ZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC0xMjQ3LDcgKzEyNDcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0KAogICAgICAgICAgICAgbV9ncmFwaCwKLSAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkp
OwogICAgICAgICBtX3N0YXRlLnNldEhhdmVTdHJ1Y3R1cmVzKHRydWUpOwogICAgICAgICBicmVh
azsKICAgICAgICAgCkBAIC0xMjU1LDcgKzEyNTUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0KAogICAgICAgICAgICAgbV9ncmFwaCwKLSAgICAgICAgICAg
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsK
KyAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyktPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5p
bmRleGluZ1R5cGUoKSkpOwogICAgICAgICBtX3N0YXRlLnNldEhhdmVTdHJ1Y3R1cmVzKHRydWUp
OwogICAgICAgICBicmVhazsKIApAQCAtMTI3MCw3ICsxMjcwLDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKLSAgICAgICAgICAgIGNsb2Ji
ZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOworICAgICAgICAgICAgY2xv
YmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTEyNzgsMTMgKzEyNzgsMTMgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICB9CiAgICAgICAgIGZvck5vZGUobm9kZSku
c2V0KAogICAgICAgICAgICAgbV9ncmFwaCwKLSAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT50eXBlZEFycmF5U3RydWN0dXJlKAorICAgICAgICAg
ICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+dHlwZWRB
cnJheVN0cnVjdHVyZSgKICAgICAgICAgICAgICAgICBub2RlLT50eXBlZEFycmF5VHlwZSgpKSk7
CiAgICAgICAgIG1fc3RhdGUuc2V0SGF2ZVN0cnVjdHVyZXModHJ1ZSk7CiAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgCiAgICAgY2FzZSBOZXdSZWdleHA6Ci0gICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4p
LT5yZWdFeHBTdHJ1Y3R1cmUoKSk7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnJlZ0V4cFN0
cnVjdHVyZSgpKTsKICAgICAgICAgbV9zdGF0ZS5zZXRIYXZlU3RydWN0dXJlcyh0cnVlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTEyOTIsNyArMTI5Miw3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYg
c291cmNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEFic3RyYWN0VmFsdWUm
IGRlc3RpbmF0aW9uID0gZm9yTm9kZShub2RlKTsKICAgICAgICAgICAgIAotICAgICAgICBpZiAo
bV9ncmFwaC5leGVjdXRhYmxlRm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5pc1N0cmljdE1vZGUoKSkK
KyAgICAgICAgaWYgKG1fZ3JhcGguZXhlY3V0YWJsZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgIGRlc3RpbmF0aW9uLm1ha2VIZWFwVG9wKCk7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZGVzdGluYXRpb24gPSBzb3VyY2U7CkBAIC0x
MzE4LDcgKzEzMTgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgIAogICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXQoCi0gICAgICAgICAgICBtX2dyYXBoLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5hY3RpdmF0aW9uU3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgbV9ncmFwaCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCkpOwogICAgICAgICBtX3N0YXRlLnNldEhhdmVT
dHJ1Y3R1cmVzKHRydWUpOwogICAgICAgICBicmVhazsKICAgICAgICAgCkBAIC0xMzQwLDcgKzEz
NDAsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2Fz
ZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6CiAgICAgICAgIGlmIChpc0VtcHR5U3BlY3VsYXRp
b24oCiAgICAgICAgICAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAotICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmln
aW4pLm9mZnNldCgpKS5tX3R5cGUpKQorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFyZ3Vt
ZW50c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykub2Zmc2V0KCkpLm1fdHlwZSkp
CiAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwpAQCAtMTM1MSwyMSArMTM1
MSwyMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAg
IC8vIHRoZSBhcmd1bWVudHMgYSBiaXQuIE5vdGUgdGhhdCB0aGlzIGlzIG5vdCBzdWZmaWNpZW50
IHRvIGZvcmNlIGNvbnN0YW50IGZvbGRpbmcKICAgICAgICAgLy8gb2YgR2V0TXlBcmd1bWVudHNM
ZW5ndGgsIGJlY2F1c2UgR2V0TXlBcmd1bWVudHNMZW5ndGggaXMgYSBjbG9iYmVyaW5nIG9wZXJh
dGlvbi4KICAgICAgICAgLy8gV2UgcGVyZm9ybSBmdXJ0aGVyIG9wdGltaXphdGlvbnMgb24gdGhp
cyBsYXRlciBvbi4KLSAgICAgICAgaWYgKG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
KSB7CisgICAgICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSB7
CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKLSAgICAgICAgICAgICAgICBtX2dyYXBo
LCBqc051bWJlcihub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKSAtIDEpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLCBqc051bWJlcihub2RlLT5vcmln
aW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkpOwogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIp
OwogICAgICAgICBub2RlLT5zZXRDYW5FeGl0KAogICAgICAgICAgICAgIWlzRW1wdHlTcGVjdWxh
dGlvbigKICAgICAgICAgICAgICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCi0gICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9y
aWdpbikpLm1fdHlwZSkpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFyZ3VtZW50c1Jl
Z2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLm1fdHlwZSkpOwogICAgICAgICBicmVh
azsKICAgICAgICAgCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aFNhZmU6CiAgICAgICAg
IC8vIFRoaXMgcG90ZW50aWFsbHkgY2xvYmJlcnMgYWxsIHN0cnVjdHVyZXMgaWYgdGhlIGFyZ3Vt
ZW50cyBvYmplY3QgaGFkIGEgZ2V0dGVyCiAgICAgICAgIC8vIGluc3RhbGxlZCBvbiB0aGUgbGVu
Z3RoIHByb3BlcnR5LgotICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xv
YmJlckxpbWl0KTsKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
Y2xvYmJlckxpbWl0KTsKICAgICAgICAgLy8gV2UgY3VycmVudGx5IG1ha2Ugbm8gZ3VhcmFudGVl
IGFib3V0IHdoYXQgdGhpcyByZXR1cm5zIGJlY2F1c2UgaXQgZG9lcyBub3QKICAgICAgICAgLy8g
c3BlY3VsYXRlIHRoYXQgdGhlIGxlbmd0aCBwcm9wZXJ0eSBpcyBhY3R1YWxseSBhIGxlbmd0aC4K
ICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwpAQCAtMTM4Myw3ICsxMzgzLDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAvLyBUaGlzIHBvdGVudGlhbGx5IGNsb2JiZXJz
IGFsbCBzdHJ1Y3R1cmVzIGlmIHRoZSBwcm9wZXJ0eSB3ZSdyZSBhY2Nlc3NpbmcgaGFzCiAgICAg
ICAgIC8vIGEgZ2V0dGVyLiBXZSBkb24ndCBzcGVjdWxhdGUgYWdhaW5zdCB0aGlzLgotICAgICAg
ICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKKyAgICAgICAg
Y2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAg
ICAgLy8gQW5kIHRoZSByZXN1bHQgaXMgdW5rbm93bi4KICAgICAgICAgZm9yTm9kZShub2RlKS5t
YWtlSGVhcFRvcCgpOwogICAgICAgICBicmVhazsKQEAgLTE0MDQsNyArMTQwNCw3IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIE5ld0Z1bmN0aW9u
RXhwcmVzc2lvbjoKICAgICBjYXNlIE5ld0Z1bmN0aW9uTm9DaGVjazoKICAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXQoCi0gICAgICAgICAgICBtX2dyYXBoLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICAgICAg
ICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAK
ICAgICBjYXNlIEdldENhbGxlZToKQEAgLTE0MzYsNyArMTQzNiw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAK
ICAgICBjYXNlIFB1dENsb3N1cmVWYXI6Ci0gICAgICAgIGNsb2JiZXJDYXB0dXJlZFZhcnMobm9k
ZS0+Y29kZU9yaWdpbik7CisgICAgICAgIGNsb2JiZXJDYXB0dXJlZFZhcnMobm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIEdldEJ5
SWQ6CkBAIC0xNDY5LDcgKzE0NjksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0g
ICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOworICAg
ICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwog
ICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgCkBAIC0xNjY5LDcgKzE2NjksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLmJlc3RQcm92ZW5TdHJ1Y3R1cmUoKSkgewogICAgICAgICAgICAg
UHV0QnlJZFN0YXR1cyBzdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAg
ICAgICAgICAgIG1fZ3JhcGgubV92bSwKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5jb2RlT3JpZ2luKSwKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAogICAgICAgICAgICAgICAgIHN0cnVj
dHVyZSwKICAgICAgICAgICAgICAgICBtX2dyYXBoLmlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRp
Zmllck51bWJlcigpXSwKICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJl
Y3QpOwpAQCAtMTY4NywxMyArMTY4NywxMyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1p
dCk7CisgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJM
aW1pdCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEluOgogICAgICAgICAv
LyBGSVhNRTogV2UgY2FuIGRldGVybWluZSB3aGVuIHRoZSBwcm9wZXJ0eSBkZWZpbml0ZWx5IGV4
aXN0cyBiYXNlZCBvbiBhYnN0cmFjdAogICAgICAgICAvLyB2YWx1ZSBpbmZvcm1hdGlvbi4KLSAg
ICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7CisgICAg
ICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAg
ICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQm9vbGVhbik7CiAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgCkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ29uc3RydWN0
OgogICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwotICAgICAgICBjbG9iYmVyV29ybGQo
bm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgY2xvYmJlcldvcmxkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgZm9yTm9kZShub2Rl
KS5tYWtlSGVhcFRvcCgpOwogICAgICAgICBicmVhazsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBOb2RlKiBzb3VyY2Ug
PSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNj
ZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7
CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNSZWdpc3RlciA9
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lz
dGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC51bmNoZWNrZWRBcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlLT5vcCgpICE9IENyZWF0ZUFyZ3VtZW50cyAm
JiBzb3VyY2UtPm9wKCkgIT0gUGhhbnRvbUFyZ3VtZW50cykgewogICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHNvdXJjZSBvZiB0aGUgU2V0TG9jYWwga25vd3Mg
dGhhdCBpZiBpdCdzCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIHZhcmlhYmxlIHRoYXQg
d2UgdGhpbmsgaXMgYWxpYXNlZCB0byB0aGUgYXJndW1lbnRzLCB0aGVuIGl0CkBAIC0yMjAsNyAr
MjIwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c1Jl
Z2lzdGVyLmlzVmFsaWQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICh2YXJpYWJs
ZUFjY2Vzc0RhdGEtPmxvY2FsKCkgPT0gYXJndW1lbnRzUmVnaXN0ZXIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgdmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpID09IHVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHNSZWdpc3RlcikpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9jcmVhdGVzQXJndW1lbnRzLmFkZChub2RlLT5jb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jcmVhdGVz
QXJndW1lbnRzLmFkZChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KIApAQCAtMjMyLDE5ICsyMzIsMTkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAg
ICAgQXJndW1lbnRzQWxpYXNpbmdEYXRhJiBkYXRhID0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2FyZ3VtZW50c0FsaWFzaW5nLmZpbmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+dmFsdWU7
CiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLm1lcmdlTm9uQXJndW1lbnRzQXNzaWdubWVu
dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0KG5vZGUt
PmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGEubWVyZ2VDYWxsQ29udGV4dChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1l
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudHNSZWdpc3Rlci5pc1ZhbGlkKCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICYmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCkgPT0g
YXJndW1lbnRzUmVnaXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCB2YXJpYWJs
ZUFjY2Vzc0RhdGEtPmxvY2FsKCkgPT0gdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3Vt
ZW50c1JlZ2lzdGVyKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZSA9PSBzb3VyY2UtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWUgPT0gc291cmNlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1l
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9jcmVhdGVzQXJndW1lbnRzLmFkZChzb3VyY2UtPmNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fY3JlYXRlc0FyZ3VtZW50cy5hZGQo
c291cmNlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgbV9jcmVhdGVzQXJndW1lbnRzLmFkZChzb3VyY2UtPmNvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fY3JlYXRlc0FyZ3VtZW50
cy5hZGQoc291cmNlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIEFyZ3VtZW50c0FsaWFzaW5nRGF0YSYgZGF0YSA9CkBAIC0yNTIsOCArMjUyLDgg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBkYXRhLm1lcmdlQXJndW1lbnRzQXNzaWdu
bWVudCgpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgdmFy
aWFibGUncyB1c2VzIGFyZSBpbiB0aGUgc2FtZSBjb250ZXh0IGFzCiAgICAgICAgICAgICAgICAg
ICAgIC8vIHRoZSBhcmd1bWVudHMgaXQgaXMgYWxpYXNpbmcuCi0gICAgICAgICAgICAgICAgICAg
IGRhdGEubWVyZ2VDYWxsQ29udGV4dChub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7
Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubWVyZ2VDYWxsQ29udGV4dChzb3VyY2UtPmNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXJnZUNh
bGxDb250ZXh0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOworICAgICAg
ICAgICAgICAgICAgICBkYXRhLm1lcmdlQ2FsbENvbnRleHQoc291cmNlLT5vcmlnaW4uc2VtYW50
aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKQEAgLTI2NCw3ICsyNjQsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
QXJndW1lbnRzQWxpYXNpbmdEYXRhJiBkYXRhID0KICAgICAgICAgICAgICAgICAgICAgICAgIG1f
YXJndW1lbnRzQWxpYXNpbmcuZmluZCh2YXJpYWJsZUFjY2Vzc0RhdGEpLT52YWx1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0KG5vZGUtPmNvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApAQCAt
Mjc0LDcgKzI3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICBBcmd1bWVudHNBbGlhc2luZ0RhdGEmIGRhdGEgPQogICAgICAg
ICAgICAgICAgICAgICAgICAgbV9hcmd1bWVudHNBbGlhc2luZy5maW5kKHZhcmlhYmxlQWNjZXNz
RGF0YSktPnZhbHVlOwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1lcmdlQ2FsbENvbnRleHQo
bm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgICAgICAgICBk
YXRhLm1lcmdlQ2FsbENvbnRleHQobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFt
ZSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAvLyBJZiBhIHZh
cmlhYmxlIGlzIHVzZWQgaW4gYSBmbHVzaCB0aGVuIGJ5IGRlZmluaXRpb24gaXQgZXNjYXBlcy4K
ICAgICAgICAgICAgICAgICAgICAgZGF0YS5lc2NhcGVzID0gdHJ1ZTsKQEAgLTI4OCw3ICsyODgs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIEFyZ3VtZW50c0FsaWFzaW5nRGF0YSYg
ZGF0YSA9CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50c0FsaWFzaW5nLmZpbmQo
dmFyaWFibGVBY2Nlc3NEYXRhKS0+dmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVy
Z2VOb25Bcmd1bWVudHNBc3NpZ25tZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubWVy
Z2VDYWxsQ29udGV4dChub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CisgICAgICAg
ICAgICAgICAgICAgIGRhdGEubWVyZ2VDYWxsQ29udGV4dChub2RlLT5vcmlnaW4uc2VtYW50aWMu
aW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKQEAgLTM3NCw3ICszNzQsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2NyZWF0ZXNB
cmd1bWVudHMuYWRkKHNvdXJjZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAg
ICAgICAgICAgIG1fY3JlYXRlc0FyZ3VtZW50cy5hZGQoc291cmNlLT5vcmlnaW4uc2VtYW50aWMu
aW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKQEAg
LTM5MiwxMyArMzkyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJj
ZS0+b3AoKSAhPSBDcmVhdGVBcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChtX2NyZWF0
ZXNBcmd1bWVudHMuY29udGFpbnMoc291cmNlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkp
CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMoc291
cmNlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlm
IChtX2dyYXBoLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4pID09IHZhcmlh
YmxlQWNjZXNzRGF0YS0+bG9jYWwoKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgdW5tb2Rp
ZmllZEFyZ3VtZW50c1JlZ2lzdGVyKG1fZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+
Y29kZU9yaWdpbikpID09IHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKSkKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSA9PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHx8IHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihtX2dyYXBoLmFyZ3VtZW50c1Jl
Z2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpID09IHZhcmlhYmxlQWNjZXNzRGF0YS0+
bG9jYWwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAg
ICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlSXNBcmd1bWVudHNBbGlhcyh0cnVl
KSkgewpAQCAtNDIxLDcgKzQyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKQog
ICAgICAgICAgICAgICAgICAgICAgICAgfHwgIW1fYXJndW1lbnRzQWxpYXNpbmcuZmluZCh2YXJp
YWJsZUFjY2Vzc0RhdGEpLT52YWx1ZS5pc1ZhbGlkKCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHx8IG1fY3JlYXRlc0FyZ3VtZW50cy5jb250YWlucyhub2RlLT5jb2RlT3JpZ2luLmlubGluZUNh
bGxGcmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBtX2NyZWF0ZXNBcmd1bWVudHMu
Y29udGFpbnMobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00NjgsNyArNDY4LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5v
ZGUtPmNvZGVPcmlnaW4sIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y2hpbGQxKCkgPSBub2RlLT5jaGlsZDIoKTsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hp
bGQyKCkgPSBFZGdlKCk7CkBAIC00ODYsNyArNDg2LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGlu
ZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPmNvZGVPcmlnaW4sIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUs
IFBoYW50b20sIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkgPSBFZGdlKCk7CiAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKEdldE15QXJndW1lbnRz
TGVuZ3RoKTsKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6CiAgICAgICAgICAg
ICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aFNhZmU6IHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fY3JlYXRlc0FyZ3VtZW50cy5jb250YWlucyhub2RlLT5jb2RlT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fY3JlYXRlc0FyZ3VtZW50
cy5jb250YWlucyhub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gR2V0TXlBcmd1bWVudHNM
ZW5ndGhTYWZlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICB9CkBAIC01MDYsMjQgKzUwNiwyNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0g
bm9kZS0+Y29kZU9yaWdpbjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBu
b2RlLT5vcmlnaW47CisgICAgICAgICAgICAgICAgICAgIGlmICghb3JpZ2luLnNlbWFudGljLmlu
bGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8gV2Uga25vdyBleGFjdGx5IHdoYXQg
dGhpcyB3aWxsIHJldHVybi4gQnV0IG9ubHkgYWZ0ZXIgd2UgaGF2ZSBjaGVja2VkCiAgICAgICAg
ICAgICAgICAgICAgIC8vIHRoYXQgbm9ib2R5IGhhcyBlc2NhcGVkIG91ciBhcmd1bWVudHMuCiAg
ICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAg
ICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tBcmd1bWVudHNOb3RDcmVh
dGVkLCBjb2RlT3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywg
U3BlY05vbmUsIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZCwgb3JpZ2luKTsKICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQo
Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLCBqc051bWJlcihjb2RlT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGUsIGpzTnVtYmVyKG9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCkgLSAxKSk7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAg
ICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsU2FmZTogewotICAgICAgICAgICAg
ICAgICAgICBpZiAobV9jcmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKG5vZGUtPmNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobV9jcmVhdGVzQXJn
dW1lbnRzLmNvbnRhaW5zKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBHZXRNeUFyZ3Vt
ZW50QnlWYWxTYWZlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC01MzEsNyArNTMxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+c2V0T3AoR2V0TXlBcmd1bWVudEJ5VmFsKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghbm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCisgICAg
ICAgICAgICAgICAgICAgIGlmICghbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFt
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoIW5vZGUtPmNoaWxkMSgpLT5oYXNDb25zdGFudCgpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC01NDEsNyArNTQxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90IGluZGV4ID0gdmFsdWUuYXNJbnQzMigpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoaW5kZXggPCAwCiAgICAgICAgICAgICAgICAgICAgICAgICB8fCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGluZGV4ICsgMSkgPj0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHMuc2l6ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAvLyBXZSBrbm93IHdoaWNoIGFyZ3VtZW50
IHRoaXMgaXMgYWNjZXNzaW5nLiBCdXQgb25seSBhZnRlciB3ZSBoYXZlIGNoZWNrZWQKQEAgLTU1
MywyNiArNTUzLDI1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgLy8gaGFzIHJ1biAt
IHRoZXJlZm9yZSBpdCBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gbGluayB0aGUgR2V0TG9jYWwgb3Bl
cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgIC8vIGludG8gdGhlIFZhcmlhYmxlQWNjZXNzRGF0
YSBhbmQgUGhpIGdyYXBocy4KIAotICAgICAgICAgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4gPSBub2RlLT5jb2RlT3JpZ2luOworICAgICAgICAgICAgICAgICAgICBOb2RlT3JpZ2lu
IG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKICAgICAgICAgICAgICAgICAgICAgQWRqYWNlbmN5TGlz
dCBjaGlsZHJlbiA9IG5vZGUtPmNoaWxkcmVuOwogICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvR2V0TG9jYWxVbmxpbmtlZCgKICAgICAgICAg
ICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlcigKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9k
ZS0+Y29kZU9yaWdpbiktPmFyZ3VtZW50SW5kZXhBZnRlckNhcHR1cmUoaW5kZXgpKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYmFzZWxp
bmVDb2RlQmxvY2tGb3Iob3JpZ2luLnNlbWFudGljKS0+YXJndW1lbnRJbmRleEFmdGVyQ2FwdHVy
ZShpbmRleCkpKTsKIAogICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNr
QXJndW1lbnRzTm90Q3JlYXRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4p
OworICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tB
cmd1bWVudHNOb3RDcmVhdGVkLCBvcmlnaW4pOwogICAgICAgICAgICAgICAgICAgICBpbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywg
U3BlY05vbmUsIFBoYW50b20sIGNvZGVPcmlnaW4sIGNoaWxkcmVuKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG9yaWdpbiwgY2hpbGRy
ZW4pOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBUZWFyT2ZmQXJndW1lbnRz
OiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMo
bm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpKQorICAgICAgICAgICAgICAgICAgICBp
ZiAobV9jcmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxp
bmVDYWxsRnJhbWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9t
KCk7CkBAIC01OTksMTAgKzU5OCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgLy8gUGhh
bnRvbUFyZ3VtZW50cyBpcyBhIG5vbi1leGVjdXRpbmcgbm9kZSB0aGF0IGp1c3QgaW5kaWNhdGVz
CiAgICAgICAgICAgICAgICAgLy8gdGhhdCB0aGUgbm9kZSBzaG91bGQgYmUgcmVpZmllZCBhcyBh
biBhcmd1bWVudHMgb2JqZWN0IG9uIE9TUgogICAgICAgICAgICAgICAgIC8vIGV4aXQuCi0gICAg
ICAgICAgICAgICAgaWYgKG1fY3JlYXRlc0FyZ3VtZW50cy5jb250YWlucyhub2RlLT5jb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZSkpCisgICAgICAgICAgICAgICAgaWYgKG1fY3JlYXRlc0FyZ3Vt
ZW50cy5jb250YWlucyhub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSkKICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUs
IFBoYW50b20sIG5vZGUtPmNvZGVPcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKKyAgICAgICAgICAg
ICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBu
b2RlLT5jaGlsZHJlbik7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0Rmxh
Z3MoUGhhbnRvbUFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVz
ZXQoKTsKICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKQEAgLTY1NSwxNiArNjU0LDE3
IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAg
ICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHM6IHsKLSAgICAgICAgICAgIG1fY3JlYXRlc0FyZ3Vt
ZW50cy5hZGQobm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAg
bV9jcmVhdGVzQXJndW1lbnRzLmFkZChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZy
YW1lKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBHZXRMb2NhbDogewotICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50
c1JlZ2lzdGVyID0gbV9ncmFwaC51bmNoZWNrZWRBcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5j
b2RlT3JpZ2luKTsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNSZWdpc3Rl
ciA9CisgICAgICAgICAgICAgICAgbV9ncmFwaC51bmNoZWNrZWRBcmd1bWVudHNSZWdpc3RlckZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgaWYgKGFyZ3VtZW50c1JlZ2lz
dGVyLmlzVmFsaWQoKQogICAgICAgICAgICAgICAgICYmIChub2RlLT5sb2NhbCgpID09IGFyZ3Vt
ZW50c1JlZ2lzdGVyCiAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPmxvY2FsKCkgPT0gdW5t
b2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKSkpIHsKLSAgICAgICAg
ICAgICAgICBtX2NyZWF0ZXNBcmd1bWVudHMuYWRkKG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lKTsKKyAgICAgICAgICAgICAgICBtX2NyZWF0ZXNBcmd1bWVudHMuYWRkKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC03MDMsMTcgKzcwMywxNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgLy8gMikgSWYgd2UncmUgYWNjZXNzaW5nIGFyZ3VtZW50cyB3ZSBnb3Qg
ZnJvbSB0aGUgaGVhcCEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChlZGdlLT5vcCgpID09IENyZWF0ZUFyZ3VtZW50cwotICAgICAgICAgICAgICAgICYmIG5v
ZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lCi0gICAgICAgICAgICAgICAgICAgICE9IGVk
Z2UtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgICAgIG1fY3JlYXRl
c0FyZ3VtZW50cy5hZGQoZWRnZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAg
ICAgICAgICAgICYmIG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUKKyAgICAg
ICAgICAgICAgICAgICAgIT0gZWRnZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkK
KyAgICAgICAgICAgICAgICBtX2NyZWF0ZXNBcmd1bWVudHMuYWRkKGVkZ2UtPm9yaWdpbi5zZW1h
bnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICBWYXJpYWJsZUFj
Y2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IGVkZ2UtPnZhcmlhYmxlQWNjZXNzRGF0YSgp
OwotICAgICAgICBpZiAoZWRnZS0+bG9jYWwoKSA9PSBtX2dyYXBoLnVuY2hlY2tlZEFyZ3VtZW50
c1JlZ2lzdGVyRm9yKGVkZ2UtPmNvZGVPcmlnaW4pCi0gICAgICAgICAgICAmJiBub2RlLT5jb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZSAhPSBlZGdlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZSkgewotICAgICAgICAgICAgbV9jcmVhdGVzQXJndW1lbnRzLmFkZChlZGdlLT5jb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZSk7CisgICAgICAgIGlmIChlZGdlLT5sb2NhbCgpID09IG1fZ3JhcGgu
dW5jaGVja2VkQXJndW1lbnRzUmVnaXN0ZXJGb3IoZWRnZS0+b3JpZ2luLnNlbWFudGljKQorICAg
ICAgICAgICAgJiYgbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSAhPSBlZGdl
LT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgICAgICBtX2NyZWF0
ZXNBcmd1bWVudHMuYWRkKGVkZ2UtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTcyMSwxOCArNzIxLDE5IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBBcmd1bWVudHNB
bGlhc2luZ0RhdGEmIGRhdGEgPSBtX2FyZ3VtZW50c0FsaWFzaW5nLmZpbmQodmFyaWFibGVBY2Nl
c3NEYXRhKS0+dmFsdWU7Ci0gICAgICAgIGRhdGEubWVyZ2VDYWxsQ29udGV4dChub2RlLT5jb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CisgICAgICAgIGRhdGEubWVyZ2VDYWxsQ29udGV4dChu
b2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAgICB9CiAgICAgCiAgICAg
Ym9vbCBpc09LVG9PcHRpbWl6ZShOb2RlKiBzb3VyY2UpCiAgICAgewotICAgICAgICBpZiAobV9j
cmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKHNvdXJjZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJh
bWUpKQorICAgICAgICBpZiAobV9jcmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKHNvdXJjZS0+b3Jp
Z2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKHNvdXJjZS0+b3AoKSkgewogICAgICAgICBjYXNl
IEdldExvY2FsOiB7CiAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNj
ZXNzRGF0YSA9IHNvdXJjZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgYXJndW1lbnRzUmVnaXN0ZXIgPSBtX2dyYXBoLnVuY2hlY2tlZEFyZ3VtZW50
c1JlZ2lzdGVyRm9yKHNvdXJjZS0+Y29kZU9yaWdpbik7CisgICAgICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgYXJndW1lbnRzUmVnaXN0ZXIgPQorICAgICAgICAgICAgICAgIG1fZ3JhcGgudW5jaGVj
a2VkQXJndW1lbnRzUmVnaXN0ZXJGb3Ioc291cmNlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAg
ICAgICAgaWYgKCFhcmd1bWVudHNSZWdpc3Rlci5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBpZiAoYXJndW1lbnRzUmVnaXN0ZXIgPT0gdmFyaWFibGVBY2Nl
c3NEYXRhLT5sb2NhbCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmNwcAkocmV2aXNpb24gMTYzOTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheU1vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzYsNyArMjc2LDcgQEAgU3Ry
dWN0dXJlKiBBcnJheU1vZGU6Om9yaWdpbmFsQXJyYXlTdHJ1YwogCiBTdHJ1Y3R1cmUqIEFycmF5
TW9kZTo6b3JpZ2luYWxBcnJheVN0cnVjdHVyZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUoZ3JhcGgsIG5vZGUtPmNv
ZGVPcmlnaW4pOworICAgIHJldHVybiBvcmlnaW5hbEFycmF5U3RydWN0dXJlKGdyYXBoLCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwogfQogCiBib29sIEFycmF5TW9kZTo6YWxyZWFkeUNoZWNrZWQo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1ZSwgSW5kZXhpbmdU
eXBlIHNoYXBlKSBjb25zdApAQCAtMjg2LDcgKzI4Niw3IEBAIGJvb2wgQXJyYXlNb2RlOjphbHJl
YWR5Q2hlY2tlZChHcmFwaCYgZ3IKICAgICAgICAgcmV0dXJuIHZhbHVlLm1fY3VycmVudEtub3du
U3RydWN0dXJlLmhhc1NpbmdsZXRvbigpCiAgICAgICAgICAgICAmJiAodmFsdWUubV9jdXJyZW50
S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFw
ZU1hc2spID09IHNoYXBlCiAgICAgICAgICAgICAmJiAodmFsdWUubV9jdXJyZW50S25vd25TdHJ1
Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpICYgSXNBcnJheSkKLSAgICAgICAgICAg
ICYmIGdyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2luKS0+aXNPcmlnaW5hbEFy
cmF5U3RydWN0dXJlKHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0dXJlLnNpbmdsZXRvbigpKTsK
KyAgICAgICAgICAgICYmIGdyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUodmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1
cmUuc2luZ2xldG9uKCkpOwogICAgICAgICAKICAgICBjYXNlIEFycmF5OjpBcnJheToKICAgICAg
ICAgaWYgKGFycmF5TW9kZXNBbHJlYWR5Q2hlY2tlZCh2YWx1ZS5tX2FycmF5TW9kZXMsIGFzQXJy
YXlNb2RlcyhzaGFwZSB8IElzQXJyYXkpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzI2LDcgKzcyNiw4IEBAIHByaXZhdGU6CiAgICAgTm9kZSogYWRkVG9HcmFwaChOb2Rl
VHlwZSBvcCwgTm9kZSogY2hpbGQxID0gMCwgTm9kZSogY2hpbGQyID0gMCwgTm9kZSogY2hpbGQz
ID0gMCkKICAgICB7CiAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1fZ3JhcGguYWRkTm9kZSgKLSAg
ICAgICAgICAgIFNwZWNOb25lLCBvcCwgY3VycmVudENvZGVPcmlnaW4oKSwgRWRnZShjaGlsZDEp
LCBFZGdlKGNoaWxkMiksIEVkZ2UoY2hpbGQzKSk7CisgICAgICAgICAgICBTcGVjTm9uZSwgb3As
IE5vZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKSksIEVkZ2UoY2hpbGQxKSwgRWRnZShjaGls
ZDIpLAorICAgICAgICAgICAgRWRnZShjaGlsZDMpKTsKICAgICAgICAgQVNTRVJUKG9wICE9IFBo
aSk7CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKQEAgLTczNCw3ICs3MzUsNyBAQCBwcml2YXRlOgogICAgIE5vZGUqIGFkZFRv
R3JhcGgoTm9kZVR5cGUgb3AsIEVkZ2UgY2hpbGQxLCBFZGdlIGNoaWxkMiA9IEVkZ2UoKSwgRWRn
ZSBjaGlsZDMgPSBFZGdlKCkpCiAgICAgewogICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2dyYXBo
LmFkZE5vZGUoCi0gICAgICAgICAgICBTcGVjTm9uZSwgb3AsIGN1cnJlbnRDb2RlT3JpZ2luKCks
IGNoaWxkMSwgY2hpbGQyLCBjaGlsZDMpOworICAgICAgICAgICAgU3BlY05vbmUsIG9wLCBOb2Rl
T3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkpLCBjaGlsZDEsIGNoaWxkMiwgY2hpbGQzKTsKICAg
ICAgICAgQVNTRVJUKG9wICE9IFBoaSk7CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmQo
cmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTc0Miw3ICs3NDMsOCBAQCBwcml2
YXRlOgogICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9kZVR5cGUgb3AsIE9wSW5mbyBpbmZvLCBOb2Rl
KiBjaGlsZDEgPSAwLCBOb2RlKiBjaGlsZDIgPSAwLCBOb2RlKiBjaGlsZDMgPSAwKQogICAgIHsK
ICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKAotICAgICAgICAgICAgU3Bl
Y05vbmUsIG9wLCBjdXJyZW50Q29kZU9yaWdpbigpLCBpbmZvLCBFZGdlKGNoaWxkMSksIEVkZ2Uo
Y2hpbGQyKSwgRWRnZShjaGlsZDMpKTsKKyAgICAgICAgICAgIFNwZWNOb25lLCBvcCwgTm9kZU9y
aWdpbihjdXJyZW50Q29kZU9yaWdpbigpKSwgaW5mbywgRWRnZShjaGlsZDEpLCBFZGdlKGNoaWxk
MiksCisgICAgICAgICAgICBFZGdlKGNoaWxkMykpOwogICAgICAgICBBU1NFUlQob3AgIT0gUGhp
KTsKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZChyZXN1bHQpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwpAQCAtNzUwLDcgKzc1Miw3IEBAIHByaXZhdGU6CiAgICAgTm9kZSogYWRkVG9H
cmFwaChOb2RlVHlwZSBvcCwgT3BJbmZvIGluZm8xLCBPcEluZm8gaW5mbzIsIE5vZGUqIGNoaWxk
MSA9IDAsIE5vZGUqIGNoaWxkMiA9IDAsIE5vZGUqIGNoaWxkMyA9IDApCiAgICAgewogICAgICAg
ICBOb2RlKiByZXN1bHQgPSBtX2dyYXBoLmFkZE5vZGUoCi0gICAgICAgICAgICBTcGVjTm9uZSwg
b3AsIGN1cnJlbnRDb2RlT3JpZ2luKCksIGluZm8xLCBpbmZvMiwKKyAgICAgICAgICAgIFNwZWNO
b25lLCBvcCwgTm9kZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpKSwgaW5mbzEsIGluZm8yLAog
ICAgICAgICAgICAgRWRnZShjaGlsZDEpLCBFZGdlKGNoaWxkMiksIEVkZ2UoY2hpbGQzKSk7CiAg
ICAgICAgIEFTU0VSVChvcCAhPSBQaGkpOwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
KHJlc3VsdCk7CkBAIC03NjAsNyArNzYyLDcgQEAgcHJpdmF0ZToKICAgICBOb2RlKiBhZGRUb0dy
YXBoKE5vZGU6OlZhckFyZ1RhZywgTm9kZVR5cGUgb3AsIE9wSW5mbyBpbmZvMSwgT3BJbmZvIGlu
Zm8yKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKAotICAg
ICAgICAgICAgU3BlY05vbmUsIE5vZGU6OlZhckFyZywgb3AsIGN1cnJlbnRDb2RlT3JpZ2luKCks
IGluZm8xLCBpbmZvMiwKKyAgICAgICAgICAgIFNwZWNOb25lLCBOb2RlOjpWYXJBcmcsIG9wLCBO
b2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkpLCBpbmZvMSwgaW5mbzIsCiAgICAgICAgICAg
ICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpIC0gbV9udW1QYXNzZWRWYXJBcmdzLCBt
X251bVBhc3NlZFZhckFyZ3MpOwogICAgICAgICBBU1NFUlQob3AgIT0gUGhpKTsKICAgICAgICAg
bV9jdXJyZW50QmxvY2stPmFwcGVuZChyZXN1bHQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZp
Y2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMTQgKzEwMiwxNCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5kZXRocmVhZCgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGJsb2NrLT5sYXN0KCktPmlzVGVybWluYWwoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29kZU9yaWdpbiBib3VuZGFyeUNvZGVPcmlnaW4gPSBibG9jay0+bGFzdCgpLT5jb2RlT3Jp
Z2luOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGVPcmlnaW4gYm91bmRhcnlOb2Rl
T3JpZ2luID0gYmxvY2stPmxhc3QoKS0+b3JpZ2luOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJsb2NrLT5sYXN0KCktPmNvbnZlcnRUb1BoYW50b20oKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoYmxvY2stPmxhc3QoKS0+cmVmQ291bnQoKSA9PSAxKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpldHRpc29u
QmxvY2soYmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlDb2RlT3JpZ2luKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqZXR0aXNvbkJsb2NrKGJsb2NrLCBqZXR0aXNvbmVkQmxv
Y2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTm9kZSgKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIEp1bXAsIGJvdW5kYXJ5Q29kZU9y
aWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUs
IEp1bXAsIGJvdW5kYXJ5Tm9kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgT3BJbmZvKHRhcmdldEJsb2NrKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICBpbm5lckNoYW5nZWQgPSBvdXRlckNoYW5nZWQgPSB0cnVlOwpA
QCAtMTgxLDEyICsxODEsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LmRldGhyZWFkKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBib3VuZGFyeUNvZGVPcmlnaW4gPSBibG9jay0+bGFz
dCgpLT5jb2RlT3JpZ2luOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGVPcmlnaW4g
Ym91bmRhcnlOb2RlT3JpZ2luID0gYmxvY2stPmxhc3QoKS0+b3JpZ2luOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJsb2NrLT5sYXN0KCktPmNvbnZlcnRUb1BoYW50b20oKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBqZXR0aXNvbmVkQmxvY2tz
LnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamV0dGlzb25C
bG9jayhibG9jaywgamV0dGlzb25lZEJsb2Nrc1tpXSwgYm91bmRhcnlDb2RlT3JpZ2luKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamV0dGlzb25CbG9jayhibG9jaywgamV0dGlz
b25lZEJsb2Nrc1tpXSwgYm91bmRhcnlOb2RlT3JpZ2luKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBibG9jay0+YXBwZW5kTm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaCwgU3BlY05vbmUsIEp1bXAsIGJvdW5kYXJ5Q29kZU9yaWdpbiwgT3BJbmZvKHRh
cmdldEJsb2NrKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNw
ZWNOb25lLCBKdW1wLCBib3VuZGFyeU5vZGVPcmlnaW4sIE9wSW5mbyh0YXJnZXRCbG9jaykpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJD
aGFuZ2VkID0gb3V0ZXJDaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMjU4LDEyICsyNTgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEFTU0VSVChi
cmFuY2gtPnJlZkNvdW50KCkgPT0gMSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGJsb2Nr
LT5hcHBlbmROb2RlKAotICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBKdW1wLCBi
cmFuY2gtPmNvZGVPcmlnaW4sCi0gICAgICAgICAgICAgICAgT3BJbmZvKHRhcmdldEJsb2NrKSk7
CisgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIEp1bXAsIGJyYW5jaC0+b3JpZ2lu
LCBPcEluZm8odGFyZ2V0QmxvY2spKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQga2Vl
cE9wZXJhbmRBbGl2ZShCYXNpY0Jsb2NrKiBibG9jaywgQmFzaWNCbG9jayogamV0dGlzb25lZEJs
b2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQorICAg
IHZvaWQga2VlcE9wZXJhbmRBbGl2ZShCYXNpY0Jsb2NrKiBibG9jaywgQmFzaWNCbG9jayogamV0
dGlzb25lZEJsb2NrLCBOb2RlT3JpZ2luIG5vZGVPcmlnaW4sIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kKQogICAgIHsKICAgICAgICAgTm9kZSogbGl2ZW5lc3NOb2RlID0gamV0dGlzb25lZEJsb2Nr
LT52YXJpYWJsZXNBdEhlYWQub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgaWYgKCFsaXZlbmVz
c05vZGUpCkBAIC0yNzEsMTYgKzI3MCwxNiBAQCBwcml2YXRlOgogICAgICAgICBpZiAobGl2ZW5l
c3NOb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+aXNDYXB0dXJlZCgpKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBibG9jay0+YXBwZW5kTm9kZSgKLSAgICAgICAgICAgIG1fZ3JhcGgs
IFNwZWNOb25lLCBQaGFudG9tTG9jYWwsIGNvZGVPcmlnaW4sIAorICAgICAgICAgICAgbV9ncmFw
aCwgU3BlY05vbmUsIFBoYW50b21Mb2NhbCwgbm9kZU9yaWdpbiwgCiAgICAgICAgICAgICBPcElu
Zm8obGl2ZW5lc3NOb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOwogICAgIH0KICAgICAKLSAg
ICB2b2lkIGpldHRpc29uQmxvY2soQmFzaWNCbG9jayogYmxvY2ssIEJhc2ljQmxvY2sqIGpldHRp
c29uZWRCbG9jaywgQ29kZU9yaWdpbiBib3VuZGFyeUNvZGVPcmlnaW4pCisgICAgdm9pZCBqZXR0
aXNvbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ss
IE5vZGVPcmlnaW4gYm91bmRhcnlOb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFy
Z3VtZW50cygpOyArK2kpCi0gICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBqZXR0
aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Q29kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoaSkpOworICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShibG9jaywgamV0dGlzb25lZEJs
b2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxl
c0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpCi0gICAgICAgICAgICBrZWVwT3BlcmFuZEFs
aXZlKGJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Q29kZU9yaWdpbiwgdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaSkpOworICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShibG9jaywg
amV0dGlzb25lZEJsb2NrLCBib3VuZGFyeU5vZGVPcmlnaW4sIHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKGkpKTsKICAgICAgICAgCiAgICAgICAgIGZpeEpldHRpc29uZWRQcmVkZWNlc3NvcnMoYmxv
Y2ssIGpldHRpc29uZWRCbG9jayk7CiAgICAgfQpAQCAtMzE1LDcgKzMxNCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIC8vIFJlbW92ZSB0aGUgdGVybWluYWwgb2YgZmlyc3RCbG9jayBzaW5jZSB3ZSBk
b24ndCBuZWVkIGl0IGFueW1vcmUuIFdlbGwsIHdlIGRvbid0CiAgICAgICAgIC8vIHJlYWxseSBy
ZW1vdmUgaXQ7IHdlIGFjdHVhbGx5IHR1cm4gaXQgaW50byBhIFBoYW50b20uCiAgICAgICAgIEFT
U0VSVChmaXJzdEJsb2NrLT5sYXN0KCktPmlzVGVybWluYWwoKSk7Ci0gICAgICAgIENvZGVPcmln
aW4gYm91bmRhcnlDb2RlT3JpZ2luID0gZmlyc3RCbG9jay0+bGFzdCgpLT5jb2RlT3JpZ2luOwor
ICAgICAgICBOb2RlT3JpZ2luIGJvdW5kYXJ5Tm9kZU9yaWdpbiA9IGZpcnN0QmxvY2stPmxhc3Qo
KS0+b3JpZ2luOwogICAgICAgICBmaXJzdEJsb2NrLT5sYXN0KCktPmNvbnZlcnRUb1BoYW50b20o
KTsKICAgICAgICAgQVNTRVJUKGZpcnN0QmxvY2stPmxhc3QoKS0+cmVmQ291bnQoKSA9PSAxKTsK
ICAgICAgICAgCkBAIC0zMjcsOSArMzI2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIGRp
ZmZlcmVudCBwYXRoIHRoYW4gc2Vjb25kQmxvY2suCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamV0dGlzb25lZEJsb2NrLT52YXJpYWJsZXNBdEhlYWQu
bnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKQotICAgICAgICAgICAgICAgIGtlZXBPcGVyYW5kQWxp
dmUoZmlyc3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBib3VuZGFyeUNvZGVPcmlnaW4sIHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKKyAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFs
aXZlKGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3JpZ2luLCB2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7
ICsraSkKLSAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGZpcnN0QmxvY2ssIGpldHRp
c29uZWRCbG9jaywgYm91bmRhcnlDb2RlT3JpZ2luLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChp
KSk7CisgICAgICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNv
bmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkp
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNl
Y29uZEJsb2NrLT5waGlzLnNpemUoKTsgKytpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNjM5
MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsMjUgKzEyNywyNSBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAgICAgfQogICAgIAotICAgIEFMV0FZU19JTkxJTkUgTm9kZSogYWRkUGhpU2lsZW50bHko
QmFzaWNCbG9jayogYmxvY2ssIGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIFZhcmlhYmxl
QWNjZXNzRGF0YSogdmFyaWFibGUpCisgICAgQUxXQVlTX0lOTElORSBOb2RlKiBhZGRQaGlTaWxl
bnRseShCYXNpY0Jsb2NrKiBibG9jaywgY29uc3QgTm9kZU9yaWdpbiYgb3JpZ2luLCBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIHZhcmlhYmxlKQogICAgIHsKLSAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9n
cmFwaC5hZGROb2RlKFNwZWNOb25lLCBQaGksIGNvZGVPcmlnaW4sIE9wSW5mbyh2YXJpYWJsZSkp
OworICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY05vbmUsIFBoaSwg
b3JpZ2luLCBPcEluZm8odmFyaWFibGUpKTsKICAgICAgICAgYmxvY2stPnBoaXMuYXBwZW5kKHJl
c3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRl
PE9wZXJhbmRLaW5kIG9wZXJhbmRLaW5kPgotICAgIEFMV0FZU19JTkxJTkUgTm9kZSogYWRkUGhp
KEJhc2ljQmxvY2sqIGJsb2NrLCBjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBzaXplX3QgaW5kZXgpCisgICAgQUxXQVlTX0lOTElORSBO
b2RlKiBhZGRQaGkoQmFzaWNCbG9jayogYmxvY2ssIGNvbnN0IE5vZGVPcmlnaW4mIG9yaWdpbiwg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSwgc2l6ZV90IGluZGV4KQogICAgIHsKLSAgICAg
ICAgTm9kZSogcmVzdWx0ID0gYWRkUGhpU2lsZW50bHkoYmxvY2ssIGNvZGVPcmlnaW4sIHZhcmlh
YmxlKTsKKyAgICAgICAgTm9kZSogcmVzdWx0ID0gYWRkUGhpU2lsZW50bHkoYmxvY2ssIG9yaWdp
biwgdmFyaWFibGUpOwogICAgICAgICBwaGlTdGFja0ZvcjxvcGVyYW5kS2luZD4oKS5hcHBlbmQo
UGhpU3RhY2tFbnRyeShibG9jaywgaW5kZXgsIHJlc3VsdCkpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5kS2luZCBvcGVyYW5kS2luZD4K
LSAgICBBTFdBWVNfSU5MSU5FIE5vZGUqIGFkZFBoaShjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3Jp
Z2luLCBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBzaXplX3QgaW5kZXgpCisgICAgQUxX
QVlTX0lOTElORSBOb2RlKiBhZGRQaGkoY29uc3QgTm9kZU9yaWdpbiYgb3JpZ2luLCBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBzaXplX3QgaW5kZXgpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRkUGhpPG9wZXJhbmRLaW5kPihtX2Jsb2NrLCBjb2RlT3JpZ2luLCB2YXJpYWJsZSwgaW5k
ZXgpOworICAgICAgICByZXR1cm4gYWRkUGhpPG9wZXJhbmRLaW5kPihtX2Jsb2NrLCBvcmlnaW4s
IHZhcmlhYmxlLCBpbmRleCk7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPE9wZXJhbmRLaW5k
IG9wZXJhbmRLaW5kPgpAQCAtMjA5LDcgKzIwOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIHZhcmlhYmxlLT5zZXRJc0xvYWRlZEZyb20odHJ1ZSk7Ci0gICAgICAg
IE5vZGUqIHBoaSA9IGFkZFBoaTxvcGVyYW5kS2luZD4obm9kZS0+Y29kZU9yaWdpbiwgdmFyaWFi
bGUsIGlkeCk7CisgICAgICAgIE5vZGUqIHBoaSA9IGFkZFBoaTxvcGVyYW5kS2luZD4obm9kZS0+
b3JpZ2luLCB2YXJpYWJsZSwgaWR4KTsKICAgICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQx
KEVkZ2UocGhpKSk7CiAgICAgICAgIG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5hdEZvcjxvcGVy
YW5kS2luZD4oaWR4KSA9IHBoaTsKICAgICAgICAgbV9ibG9jay0+dmFyaWFibGVzQXRUYWlsLmF0
Rm9yPG9wZXJhbmRLaW5kPihpZHgpID0gbm9kZTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwcml2YXRl
OgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2YXJpYWJsZS0+c2V0SXNMb2FkZWRGcm9t
KHRydWUpOwotICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDEoRWRnZShhZGRQaGk8b3Bl
cmFuZEtpbmQ+KG5vZGUtPmNvZGVPcmlnaW4sIHZhcmlhYmxlLCBpZHgpKSk7CisgICAgICAgIG5v
ZGUtPmNoaWxkcmVuLnNldENoaWxkMShFZGdlKGFkZFBoaTxvcGVyYW5kS2luZD4obm9kZS0+b3Jp
Z2luLCB2YXJpYWJsZSwgaWR4KSkpOwogICAgICAgICBtX2Jsb2NrLT52YXJpYWJsZXNBdEhlYWQu
YXRGb3I8b3BlcmFuZEtpbmQ+KGlkeCkgPSBub2RlOwogICAgICAgICBtX2Jsb2NrLT52YXJpYWJs
ZXNBdFRhaWwuYXRGb3I8b3BlcmFuZEtpbmQ+KGlkeCkgPSBub2RlOwogICAgIH0KQEAgLTQxOSw3
ICs0MTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIE5v
ZGUqIHZhcmlhYmxlSW5QcmV2aW91cyA9IHByZWRlY2Vzc29yQmxvY2stPnZhcmlhYmxlc0F0VGFp
bC5hdEZvcjxvcGVyYW5kS2luZD4oaW5kZXgpOwogICAgICAgICAgICAgICAgIGlmICghdmFyaWFi
bGVJblByZXZpb3VzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlSW5QcmV2aW91cyA9
IGFkZFBoaTxvcGVyYW5kS2luZD4ocHJlZGVjZXNzb3JCbG9jaywgY3VycmVudFBoaS0+Y29kZU9y
aWdpbiwgdmFyaWFibGUsIGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVJblBy
ZXZpb3VzID0gYWRkUGhpPG9wZXJhbmRLaW5kPihwcmVkZWNlc3NvckJsb2NrLCBjdXJyZW50UGhp
LT5vcmlnaW4sIHZhcmlhYmxlLCBpbmRleCk7CiAgICAgICAgICAgICAgICAgICAgIHByZWRlY2Vz
c29yQmxvY2stPnZhcmlhYmxlc0F0VGFpbC5hdEZvcjxvcGVyYW5kS2luZD4oaW5kZXgpID0gdmFy
aWFibGVJblByZXZpb3VzOwogICAgICAgICAgICAgICAgICAgICBwcmVkZWNlc3NvckJsb2NrLT52
YXJpYWJsZXNBdEhlYWQuYXRGb3I8b3BlcmFuZEtpbmQ+KGluZGV4KSA9IHZhcmlhYmxlSW5QcmV2
aW91czsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDUzLDcgKzQ1Myw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBOb2RlKiBuZXdQaGkgPSBhZGRQaGlTaWxl
bnRseShibG9jaywgY3VycmVudFBoaS0+Y29kZU9yaWdpbiwgdmFyaWFibGUpOworICAgICAgICAg
ICAgICAgIE5vZGUqIG5ld1BoaSA9IGFkZFBoaVNpbGVudGx5KGJsb2NrLCBjdXJyZW50UGhpLT5v
cmlnaW4sIHZhcmlhYmxlKTsKICAgICAgICAgICAgICAgICBuZXdQaGktPmNoaWxkcmVuID0gY3Vy
cmVudFBoaS0+Y2hpbGRyZW47CiAgICAgICAgICAgICAgICAgY3VycmVudFBoaS0+Y2hpbGRyZW4u
aW5pdGlhbGl6ZShuZXdQaGksIHZhcmlhYmxlSW5QcmV2aW91cywgMCk7CiAgICAgICAgICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNp
b24gMTYzOTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk2Myw3ICs5NjMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgY2FzZSBHZXRNeVNjb3BlOgogICAgICAgICAgICAgY2FzZSBTa2lw
VG9wU2NvcGU6Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lKQorICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBp
ZiAobV9ncmFwaC51bmNoZWNrZWRBY3RpdmF0aW9uUmVnaXN0ZXIoKSA9PSBsb2NhbCkKICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0Lm1heUJlQWNjZXNzZWQgPSB0cnVlOwpAQCAtOTcyLDcgKzk3
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRl
ZDoKICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6CiAgICAgICAgICAgICBj
YXNlIEdldE15QXJndW1lbnRzTGVuZ3RoU2FmZToKLSAgICAgICAgICAgICAgICBpZiAobV9ncmFw
aC51bmNoZWNrZWRBcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5jb2RlT3JpZ2luKSA9PSBsb2Nh
bCkKKyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC51bmNoZWNrZWRBcmd1bWVudHNSZWdpc3Rl
ckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID09IGxvY2FsKQogICAgICAgICAgICAgICAgICAg
ICByZXN1bHQubWF5QmVBY2Nlc3NlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAkocmV2aXNpb24gMTYzOTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwNCw3ICs2MDQsNyBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKLSAgICAgICAgcmVhZChBYnN0cmFj
dEhlYXAoVmFyaWFibGVzLCBncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5jb2RlT3Jp
Z2luKSkpOworICAgICAgICByZWFkKEFic3RyYWN0SGVhcChWYXJpYWJsZXMsIGdyYXBoLmFyZ3Vt
ZW50c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKTsKICAgICAgICAgcmVhZChB
YnN0cmFjdEhlYXAoVmFyaWFibGVzLCBKU1N0YWNrOjpBcmd1bWVudENvdW50KSk7CiAgICAgICAg
IHJldHVybjsKICAgICAgICAgCkBAIC02MTMsNyArNjEzLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNh
c2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOgotICAgICAgICByZWFkKEFic3RyYWN0SGVhcChW
YXJpYWJsZXMsIGdyYXBoLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4pKSk7
CisgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKFZhcmlhYmxlcywgZ3JhcGguYXJndW1lbnRzUmVn
aXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkpOwogICAgICAgICByZXR1cm47CiAKICAg
ICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbW1vbkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAJKHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcg
KzQxLDcgQEAgdm9pZCBDb21tb25EYXRhOjpub3RpZnlDb21waWxpbmdTdHJ1Y3R1cgogewogICAg
IHBsYW4udHJhbnNpdGlvbnMuYWRkTGF6aWx5KAogICAgICAgICBjb2RlQmxvY2ssCi0gICAgICAg
IG5vZGUtPmNvZGVPcmlnaW4uY29kZU9yaWdpbk93bmVyKCksCisgICAgICAgIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5jb2RlT3JpZ2luT3duZXIoKSwKICAgICAgICAgbm9kZS0+c3RydWN0dXJlVHJh
bnNpdGlvbkRhdGEoKS5wcmV2aW91c1N0cnVjdHVyZSwKICAgICAgICAgbm9kZS0+c3RydWN0dXJl
VHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDE2MzkxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDogewogICAgICAgICAgICAg
ICAgIGlmICghaXNFbXB0eVNwZWN1bGF0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgbV9z
dGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9yaWdpbikpLm1fdHlwZSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKS5tX3R5cGUpKQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CiAgICAgICAgICAg
ICAgICAgZWxpbWluYXRlZCA9IHRydWU7CkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgQWRqYWNlbmN5TGlzdCBjaGlsZHJlbiA9IG5vZGUtPmNoaWxkcmVu
OwogICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5yZW1vdmVFZGdlKDApOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoISFjaGlsZHJlbi5jaGlsZDEoKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhh
bnRvbSwgbm9kZS0+Y29kZU9yaWdpbiwgY2hpbGRyZW4pOworICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFu
dG9tLCBub2RlLT5vcmlnaW4sIGNoaWxkcmVuKTsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y2hpbGRyZW4uc2V0Q2hpbGQyKEVkZ2UoKSk7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNo
aWxkcmVuLnNldENoaWxkMyhFZGdlKCkpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252
ZXJ0VG9TdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludChzdHJ1Y3R1cmUpOwpAQCAtMTU0LDcg
KzE1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBHZXRCeUlkOgog
ICAgICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6IHsKLSAgICAgICAgICAgICAgICBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4gPSBub2RlLT5jb2RlT3JpZ2luOworICAgICAgICAgICAgICAgIE5vZGVP
cmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOwogICAgICAgICAgICAgICAgIEVkZ2UgY2hpbGRF
ZGdlID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgICAgICAgICAgICAgTm9kZSogY2hpbGQgPSBjaGls
ZEVkZ2Uubm9kZSgpOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIg
PSBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCk7CkBAIC0xOTAsMTEgKzE5MCwxMSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChuZWVkc1dhdGNocG9pbnQp
IHsKICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFN0cnVjdHVyZVRyYW5z
aXRpb25XYXRjaHBvaW50LCBjb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQsIG9yaWdp
biwKICAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhzdHJ1Y3R1cmUpLCBjaGlsZEVkZ2Up
OwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobmVlZHNDZWxsQ2hlY2spIHsKICAgICAgICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIGNvZGVPcmlnaW4sIGNoaWxk
RWRnZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQ
aGFudG9tLCBvcmlnaW4sIGNoaWxkRWRnZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGNoaWxkRWRnZS5zZXRVc2VLaW5kKEtub3duQ2VsbFVz
ZSk7CkBAIC0yMDUsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcHJv
cGVydHlTdG9yYWdlID0gY2hpbGRFZGdlOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBFZGdlKG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBH
ZXRCdXR0ZXJmbHksIGNvZGVPcmlnaW4sIGNoaWxkRWRnZSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgR2V0QnV0dGVyZmx5LCBvcmlnaW4sIGNoaWxk
RWRnZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBub2RlLT5jb252ZXJ0VG9HZXRCeU9mZnNldChtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0Rh
dGEuc2l6ZSgpLCBwcm9wZXJ0eVN0b3JhZ2UpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgICAg
ICBjYXNlIFB1dEJ5SWREaXJlY3Q6IHsKLSAgICAgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4gPSBub2RlLT5jb2RlT3JpZ2luOworICAgICAgICAgICAgICAgIE5vZGVPcmlnaW4gb3Jp
Z2luID0gbm9kZS0+b3JpZ2luOwogICAgICAgICAgICAgICAgIEVkZ2UgY2hpbGRFZGdlID0gbm9k
ZS0+Y2hpbGQxKCk7CiAgICAgICAgICAgICAgICAgTm9kZSogY2hpbGQgPSBjaGlsZEVkZ2Uubm9k
ZSgpOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBub2RlLT5p
ZGVudGlmaWVyTnVtYmVyKCk7CkBAIC0yMzUsNyArMjM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgICAgIHZtKCksCi0gICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pLAorICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihvcmlnaW4uc2VtYW50aWMpLAogICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUsCiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
aWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXSwKICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0KTsKQEAgLTI1MywxMSArMjUzLDExIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKG5lZWRzV2F0Y2hwb2ludCkg
ewogICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAg
ICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgU3RydWN0dXJlVHJhbnNp
dGlvbldhdGNocG9pbnQsIGNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRl
eEluQmxvY2ssIFNwZWNOb25lLCBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludCwgb3JpZ2lu
LAogICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHN0cnVjdHVyZSksIGNoaWxkRWRnZSk7
CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuZWVkc0NlbGxDaGVjaykgewogICAgICAgICAg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgY29kZU9yaWdpbiwgY2hpbGRF
ZGdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFBo
YW50b20sIG9yaWdpbiwgY2hpbGRFZGdlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgY2hpbGRFZGdlLnNldFVzZUtpbmQoS25vd25DZWxsVXNl
KTsKQEAgLTI3MCw3ICsyNzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+b3AoKSA9PSBQdXRCeUlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0
cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCkuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4sIGluZGV4SW5CbG9jaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3JpZ2luLCBpbmRleEluQmxvY2ssCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCkuYXNDZWxsKCkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgCkBAIC0y
ODIsNyArMjgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3RvdHlwZS5p
c0NlbGwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkU3RydWN0dXJlVHJhbnNp
dGlvbkNoZWNrKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlT3JpZ2luLCBp
bmRleEluQmxvY2ssIHByb3RvdHlwZS5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9yaWdpbiwgaW5kZXhJbkJsb2NrLCBwcm90b3R5cGUuYXNDZWxsKCkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQpAQCAtMjkzLDE0ICsyOTMsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgcHJvcGVydHlTdG9yYWdlID0gY2hpbGRFZGdlOwogICAgICAgICAgICAgICAgIGVsc2UgaWYg
KHN0YXR1cy5pc1NpbXBsZVJlcGxhY2UoKSB8fCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCkgPT0gc3RhdHVzLm5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IEVkZ2UobV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUs
IEdldEJ1dHRlcmZseSwgY29kZU9yaWdpbiwgY2hpbGRFZGdlKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBHZXRCdXR0ZXJmbHksIG9yaWdpbiwgY2hp
bGRFZGdlKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc3RydWN0dXJlLT5vdXRPZkxp
bmVDYXBhY2l0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdGF0dXMubmV3U3Ry
dWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoIWlzSW5saW5lT2Zmc2V0KHN0YXR1cy5vZmZzZXQoKSkpOwogICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBBbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4s
IE9wSW5mbyh0cmFuc2l0aW9uRGF0YSksIGNoaWxkRWRnZSk7Ci0gICAgICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgU3RvcmVC
YXJyaWVyLCBjb2RlT3JpZ2luLCBFZGdlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgS25vd25DZWxs
VXNlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW4sIE9wSW5mbyh0cmFuc2l0aW9u
RGF0YSksIGNoaWxkRWRnZSk7CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgU3RvcmVCYXJyaWVyLCBvcmlnaW4sIEVk
Z2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBLbm93bkNlbGxVc2UpKTsKICAgICAgICAgICAgICAg
ICAgICAgcHJvcGVydHlTdG9yYWdlID0gRWRnZShhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CkBAIC0zMDgsMjIgKzMwOCwyMiBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWlzSW5saW5lT2Zmc2V0KHN0YXR1cy5vZmZz
ZXQoKSkpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgTm9kZSog
cmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlLCBjb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgb3JpZ2luLAog
ICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHRyYW5zaXRpb25EYXRhKSwgY2hpbGRFZGdl
LAogICAgICAgICAgICAgICAgICAgICAgICAgRWRnZShtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIEdl
dEJ1dHRlcmZseSwgY29kZU9yaWdpbiwgY2hpbGRFZGdlKSkpOwotICAgICAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFN0b3Jl
QmFycmllciwgY29kZU9yaWdpbiwgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIEtub3duQ2Vs
bFVzZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05v
bmUsIEdldEJ1dHRlcmZseSwgb3JpZ2luLCBjaGlsZEVkZ2UpKSk7CisgICAgICAgICAgICAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgU3Rv
cmVCYXJyaWVyLCBvcmlnaW4sIEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBLbm93bkNlbGxV
c2UpKTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gRWRnZShyZWFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5pc1NpbXBsZVRyYW5zaXRpb24oKSkgewotICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBwdXRTdHJ1Y3R1cmUgPSBtX2dyYXBoLmFkZE5vZGUoU3Bl
Y05vbmUsIFB1dFN0cnVjdHVyZSwgY29kZU9yaWdpbiwgT3BJbmZvKHRyYW5zaXRpb25EYXRhKSwg
Y2hpbGRFZGdlKTsKLSAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZShpbmRleEluQmxvY2ssIFNwZWNOb25lLCBTdG9yZUJhcnJpZXIsIGNvZGVPcmlnaW4sIEVkZ2Uo
bm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBLbm93bkNlbGxVc2UpKTsKKyAgICAgICAgICAgICAgICAg
ICAgTm9kZSogcHV0U3RydWN0dXJlID0gbV9ncmFwaC5hZGROb2RlKFNwZWNOb25lLCBQdXRTdHJ1
Y3R1cmUsIG9yaWdpbiwgT3BJbmZvKHRyYW5zaXRpb25EYXRhKSwgY2hpbGRFZGdlKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNw
ZWNOb25lLCBTdG9yZUJhcnJpZXIsIG9yaWdpbiwgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCks
IEtub3duQ2VsbFVzZSkpOwogICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnQoaW5kZXhJbkJsb2NrLCBwdXRTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1B1dEJ5T2Zmc2V0KG1fZ3JhcGgubV9zdG9yYWdl
QWNjZXNzRGF0YS5zaXplKCksIHByb3BlcnR5U3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNOb25lLCBDb25kaXRpb25h
bFN0b3JlQmFycmllciwgY29kZU9yaWdpbiwgCisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNOb25lLCBDb25kaXRpb25hbFN0b3JlQmFy
cmllciwgb3JpZ2luLCAKICAgICAgICAgICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDIoKS5u
b2RlKCksIEtub3duQ2VsbFVzZSksIEVkZ2Uobm9kZS0+Y2hpbGQzKCkubm9kZSgpLCBVbnR5cGVk
VXNlKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgU3RvcmFnZUFjY2Vzc0Rh
dGEgc3RvcmFnZUFjY2Vzc0RhdGE7CkBAIC0zODcsNyArMzg3LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGlmIChvbGRWYWx1ZS5tZXJnZShjb25zdGFudFZhbHVlKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiA9IG5vZGUtPmNvZGVPcmlnaW47CisgICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdp
biA9IG5vZGUtPm9yaWdpbjsKICAgICAgICAgICAgIEFkamFjZW5jeUxpc3QgY2hpbGRyZW4gPSBu
b2RlLT5jaGlsZHJlbjsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkg
PT0gR2V0TG9jYWwpCkBAIC0zOTcsNyArMzk3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2RlLCB2YWx1ZSk7CiAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgIGluZGV4
SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIGNvZGVPcmlnaW4sIGNoaWxkcmVuKTsKKyAgICAg
ICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBvcmlnaW4sIGNoaWxk
cmVuKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAg
IH0KQEAgLTQwNywyMCArNDA3LDIwIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBjaGFuZ2Vk
OwogICAgIH0KIAotICAgIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKENvZGVPcmln
aW4gY29kZU9yaWdpbiwgdW5zaWduZWQgaW5kZXhJbkJsb2NrLCBKU0NlbGwqIGNlbGwpCisgICAg
dm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soTm9kZU9yaWdpbiBvcmlnaW4sIHVuc2ln
bmVkIGluZGV4SW5CbG9jaywgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgTm9kZSogd2Vh
a0NvbnN0YW50ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIGluZGV4
SW5CbG9jaywgc3BlY3VsYXRpb25Gcm9tVmFsdWUoY2VsbCksIFdlYWtKU0NvbnN0YW50LCBjb2Rl
T3JpZ2luLCBPcEluZm8oY2VsbCkpOworICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBzcGVjdWxh
dGlvbkZyb21WYWx1ZShjZWxsKSwgV2Vha0pTQ29uc3RhbnQsIG9yaWdpbiwgT3BJbmZvKGNlbGwp
KTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX2dyYXBoLndhdGNocG9pbnRzKCkuaXNTdGlsbFZh
bGlkKGNlbGwtPnN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldCgpKSkgewogICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICBpbmRl
eEluQmxvY2ssIFNwZWNOb25lLCBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludCwgY29kZU9y
aWdpbiwKKyAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBTdHJ1Y3R1cmVU
cmFuc2l0aW9uV2F0Y2hwb2ludCwgb3JpZ2luLAogICAgICAgICAgICAgICAgIE9wSW5mbyhjZWxs
LT5zdHJ1Y3R1cmUoKSksIEVkZ2Uod2Vha0NvbnN0YW50LCBDZWxsVXNlKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAotICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIGNv
ZGVPcmlnaW4sCisgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVja1N0cnVj
dHVyZSwgb3JpZ2luLAogICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0
KGNlbGwtPnN0cnVjdHVyZSgpKSksIEVkZ2Uod2Vha0NvbnN0YW50LCBDZWxsVXNlKSk7CiAgICAg
fQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDcml0aWNhbEVkZ2VC
cmVha2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNjM5MTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAg
ICBCYXNpY0Jsb2NrKiBwYWQgPSBtX2luc2VydGlvblNldC5pbnNlcnRCZWZvcmUoKnN1Y2Nlc3Nv
cik7CiAgICAgICAgIHBhZC0+YXBwZW5kTm9kZSgKLSAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNO
b25lLCBKdW1wLCAoKnN1Y2Nlc3NvciktPmF0KDApLT5jb2RlT3JpZ2luLCBPcEluZm8oKnN1Y2Nl
c3NvcikpOworICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIEp1bXAsICgqc3VjY2Vzc29y
KS0+YXQoMCktPm9yaWdpbiwgT3BJbmZvKCpzdWNjZXNzb3IpKTsKICAgICAgICAgcGFkLT5wcmVk
ZWNlc3NvcnMuYXBwZW5kKHByZWRlY2Vzc29yKTsKICAgICAgICAgKCpzdWNjZXNzb3IpLT5yZXBs
YWNlUHJlZGVjZXNzb3IocHJlZGVjZXNzb3IsIHBhZCk7CiAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDE2MzkxOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTksNyArMjE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghZWRnZSB8fCBlZGdlLndpbGxOb3RIYXZlQ2hlY2soKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5jb2Rl
T3JpZ2luLCBlZGdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBl
ZGdlKTsKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmNvbnZlcnRUb1BoYW50b21VbmNoZWNrZWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI5LDEwICsxMjksMTAgQEAgVmVjdG9yPERpc2Fzc2VtYmxlcjo6RHVtcGVkT3A+IERpc2Fz
c2VtYgogICAgICAgICAgICAgfQogICAgICAgICAgICAgZHVtcERpc2Fzc2VtYmx5KG91dCwgZGlz
YXNzZW1ibHlQcmVmaXgsIGxpbmtCdWZmZXIsIHByZXZpb3VzTGFiZWwsIGN1cnJlbnRMYWJlbCwg
bGFzdE5vZGVGb3JEaXNhc3NlbWJseSk7CiAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBvdXQs
IHByZXZpb3VzT3JpZ2luKTsKLSAgICAgICAgICAgIHByZXZpb3VzT3JpZ2luID0gYmxvY2stPmF0
KGkpLT5jb2RlT3JpZ2luOworICAgICAgICAgICAgcHJldmlvdXNPcmlnaW4gPSBibG9jay0+YXQo
aSktPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgICAgIGlmIChtX2dyYXBoLmR1bXBDb2RlT3Jp
Z2luKG91dCwgcHJlZml4LCBsYXN0Tm9kZSwgYmxvY2stPmF0KGkpLCAmbV9kdW1wQ29udGV4dCkp
IHsKICAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBvdXQsIHByZXZpb3VzT3JpZ2luKTsK
LSAgICAgICAgICAgICAgICBwcmV2aW91c09yaWdpbiA9IGJsb2NrLT5hdChpKS0+Y29kZU9yaWdp
bjsKKyAgICAgICAgICAgICAgICBwcmV2aW91c09yaWdpbiA9IGJsb2NrLT5hdChpKS0+b3JpZ2lu
LnNlbWFudGljOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKG91dCwg
cHJlZml4LCBibG9jay0+YXQoaSksICZtX2R1bXBDb250ZXh0KTsKICAgICAgICAgICAgIGxhc3RO
b2RlID0gYmxvY2stPmF0KGkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMsNyArMjYzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CiAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZShtX2luZGV4SW5CbG9jayArIDEsIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5jb2RlT3JpZ2lu
LCBjaGlsZDEsIGNoaWxkMik7CisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZShtX2luZGV4SW5CbG9jayArIDEsIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4s
IGNoaWxkMSwgY2hpbGQyKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CkBAIC00NTMs
NyArNDUzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRCeVZhbDogewogICAgICAgICAg
ICAgbm9kZS0+c2V0QXJyYXlNb2RlKAogICAgICAgICAgICAgICAgIG5vZGUtPmFycmF5TW9kZSgp
LnJlZmluZSgKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZS0+Y29kZU9yaWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAogICAg
ICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpLAogICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jaGlsZDIoKS0+cHJlZGljdGlvbigpLAogICAgICAgICAgICAgICAg
ICAgICBTcGVjTm9uZSwgbm9kZS0+ZmxhZ3MoKSkpOwpAQCAtNDY1LDE0ICs0NjUsMTQgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgICAgICAgICBp
ZiAoYXJyYXlNb2RlLmFycmF5Q2xhc3MoKSA9PSBBcnJheTo6T3JpZ2luYWxBcnJheQogICAgICAg
ICAgICAgICAgICAgICAmJiBhcnJheU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6SW5Cb3Vu
ZHMKLSAgICAgICAgICAgICAgICAgICAgJiYgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
Y29kZU9yaWdpbiktPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKQorICAgICAgICAgICAgICAg
ICAgICAmJiBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5h
cnJheVByb3RvdHlwZUNoYWluSXNTYW5lKCkKICAgICAgICAgICAgICAgICAgICAgJiYgIShub2Rl
LT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpKQogICAgICAgICAgICAgICAgICAg
ICBub2RlLT5zZXRBcnJheU1vZGUoYXJyYXlNb2RlLndpdGhTcGVjdWxhdGlvbihBcnJheTo6U2Fu
ZUNoYWluKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICBjYXNlIEFycmF5OjpTdHJpbmc6CiAgICAgICAgICAgICAgICAgaWYgKChub2RlLT5w
cmVkaWN0aW9uKCkgJiB+U3BlY1N0cmluZykKLSAgICAgICAgICAgICAgICAgICAgfHwgbV9ncmFw
aC5oYXNFeGl0U2l0ZShub2RlLT5jb2RlT3JpZ2luLCBPdXRPZkJvdW5kcykpCisgICAgICAgICAg
ICAgICAgICAgIHx8IG1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBP
dXRPZkJvdW5kcykpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShhcnJh
eU1vZGUud2l0aFNwZWN1bGF0aW9uKEFycmF5OjpPdXRPZkJvdW5kcykpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIApAQCAtNTExLDcgKzUxMSw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZSgKICAgICAgICAgICAgICAgICBub2Rl
LT5hcnJheU1vZGUoKS5yZWZpbmUoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG5vZGUt
PmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywKICAgICAgICAgICAgICAgICAgICAgY2hpbGQxLT5wcmVkaWN0aW9uKCksCiAgICAg
ICAgICAgICAgICAgICAgIGNoaWxkMi0+cHJlZGljdGlvbigpLAogICAgICAgICAgICAgICAgICAg
ICBjaGlsZDMtPnByZWRpY3Rpb24oKSkpOwpAQCAtNTk3LDcgKzU5Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAvLyB0aGF0IHdvdWxkIGJyZWFrIHRoaW5ncy4KICAgICAgICAgICAgIG5vZGUt
PnNldEFycmF5TW9kZSgKICAgICAgICAgICAgICAgICBub2RlLT5hcnJheU1vZGUoKS5yZWZpbmUo
Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG5vZGUtPmNvZGVPcmlnaW4sCisgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGgsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSAmIFNwZWNDZWxsLAogICAgICAg
ICAgICAgICAgICAgICBTcGVjSW50MzIsCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxk
MigpLT5wcmVkaWN0aW9uKCkpKTsKQEAgLTczMiw3ICs3MzIsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICAvLyB3b3VsZCBoYXZlIGFscmVhZHkgZXhpdGVkIGJ5IG5vdywgYnV0IGlu
c2VydCBhIGZvcmNlZCBleGl0IGp1c3QgdG8KICAgICAgICAgICAgICAgICAgICAgLy8gYmUgc2Fm
ZS4KICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgRm9yY2VPU1JFeGl0
LCBub2RlLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJs
b2NrLCBTcGVjTm9uZSwgRm9yY2VPU1JFeGl0LCBub2RlLT5vcmlnaW4pOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQUxMX0lOVDMy
X0lOREVYSU5HX1RZUEVTOgpAQCAtNzY4LDcgKzc2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFRvVGhpczogewotICAgICAgICAgICAgRUNNQU1v
ZGUgZWNtYU1vZGUgPSBtX2dyYXBoLmV4ZWN1dGFibGVGb3Iobm9kZS0+Y29kZU9yaWdpbiktPmlz
U3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGU7CisgICAgICAgICAgICBF
Q01BTW9kZSBlY21hTW9kZSA9IG1fZ3JhcGguZXhlY3V0YWJsZUZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlOwogCiAg
ICAgICAgICAgICBpZiAoaXNPdGhlclNwZWN1bGF0aW9uKG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0
aW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpIHsK
QEAgLTc3OCwxMCArNzc4LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAg
ICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5jb2RlT3JpZ2luLAor
ICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5v
ZGUtPm9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIE90aGVyVXNlKSk7CiAgICAgICAgICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8T3Ro
ZXJVc2U+KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvV2Vha0NvbnN0YW50KG1fZ3JhcGguZ2xvYmFsVGhpc09iamVjdEZvcihub2RlLT5jb2Rl
T3JpZ2luKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvV2Vha0NvbnN0YW50KG1f
Z3JhcGguZ2xvYmFsVGhpc09iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtOTQ4LDE2
ICs5NDgsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICAg
ICAgY2FzZSBQdXRHbG9iYWxWYXI6IHsKLSAgICAgICAgICAgIE5vZGUqIGdsb2JhbE9iamVjdE5v
ZGUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwg
V2Vha0pTQ29uc3RhbnQsIG5vZGUtPmNvZGVPcmlnaW4sIAotICAgICAgICAgICAgICAgIE9wSW5m
byhtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2luKSkpOwotICAgICAgICAg
ICAgTm9kZSogYmFycmllck5vZGUgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY05vbmUsIENvbmRpdGlv
bmFsU3RvcmVCYXJyaWVyLCBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCAKKyAgICAgICAgICAg
IE5vZGUqIGdsb2JhbE9iamVjdE5vZGUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAg
ICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgV2Vha0pTQ29uc3RhbnQsIG5v
ZGUtPm9yaWdpbiwgCisgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKTsKKyAgICAgICAgICAgIE5vZGUqIGJhcnJpZXJO
b2RlID0gbV9ncmFwaC5hZGROb2RlKAorICAgICAgICAgICAgICAgIFNwZWNOb25lLCBDb25kaXRp
b25hbFN0b3JlQmFycmllciwgbV9jdXJyZW50Tm9kZS0+b3JpZ2luLCAKICAgICAgICAgICAgICAg
ICBFZGdlKGdsb2JhbE9iamVjdE5vZGUsIEtub3duQ2VsbFVzZSksIEVkZ2Uobm9kZS0+Y2hpbGQx
KCkubm9kZSgpLCBVbnR5cGVkVXNlKSk7CiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnQobV9pbmRleEluQmxvY2ssIGJhcnJpZXJOb2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKICAgICAgICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjogewotICAgICAgICAgICAg
Tm9kZSogYmFycmllck5vZGUgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY05vbmUsIFN0b3JlQmFycmll
cldpdGhOdWxsQ2hlY2ssIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4sIAorICAgICAgICAgICAg
Tm9kZSogYmFycmllck5vZGUgPSBtX2dyYXBoLmFkZE5vZGUoCisgICAgICAgICAgICAgICAgU3Bl
Y05vbmUsIFN0b3JlQmFycmllcldpdGhOdWxsQ2hlY2ssIG1fY3VycmVudE5vZGUtPm9yaWdpbiwg
CiAgICAgICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIFVudHlwZWRVc2Up
KTsKICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydChtX2luZGV4SW5CbG9jaywgYmFy
cmllck5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05NjUsNyArOTY4LDggQEAgcHJpdmF0
ZToKIAogICAgICAgICBjYXNlIElzU3RyaW5nOgogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkgewotICAgICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2Rl
LT5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
CisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwg
bm9kZS0+b3JpZ2luLAogICAgICAgICAgICAgICAgICAgICBFZGdlKG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSwgU3RyaW5nVXNlKSk7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25z
dGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwogICAgICAgICAgICAgICAgIG9ic2VydmVVc2VL
aW5kT25Ob2RlPFN0cmluZ1VzZT4obm9kZSk7CkBAIC0xMDY5LDcgKzEwNzMsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY3JlYXRlVG9TdHJpbmcoTm9kZSogbm9kZSwgRWRnZSYgZWRnZSkKICAgICB7
CiAgICAgICAgIGVkZ2Uuc2V0Tm9kZShtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAg
ICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNTdHJpbmcsIFRvU3RyaW5nLCBub2RlLT5jb2RlT3Jp
Z2luLAorICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNTdHJpbmcsIFRvU3RyaW5nLCBu
b2RlLT5vcmlnaW4sCiAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCB1c2VLaW5kKSkpOwog
ICAgIH0KICAgICAKQEAgLTEwNzgsNyArMTA4Miw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAg
ICBBU1NFUlQoYXJyYXlNb2RlID09IEFycmF5TW9kZShBcnJheTo6R2VuZXJpYykpOwogICAgICAg
ICAKLSAgICAgICAgaWYgKCFjYW5PcHRpbWl6ZVN0cmluZ09iamVjdEFjY2Vzcyhub2RlLT5jb2Rl
T3JpZ2luKSkKKyAgICAgICAgaWYgKCFjYW5PcHRpbWl6ZVN0cmluZ09iamVjdEFjY2Vzcyhub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAg
ICAgY3JlYXRlVG9TdHJpbmc8dXNlS2luZD4obm9kZSwgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTEw
Niw3ICsxMTEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIGRlY2lzaW9uIHByb2Nlc3Mg
bXVjaCBlYXNpZXIuCiAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxTdHJpbmdVc2U+
KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0g
ICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5j
b2RlT3JpZ2luLAorICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhh
bnRvbSwgbm9kZS0+b3JpZ2luLAogICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIFN0
cmluZ1VzZSkpOwogICAgICAgICAgICAgZWRnZS5zZXRVc2VLaW5kKEtub3duU3RyaW5nVXNlKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTExNjUsMTQgKzExNjksMTQgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVj
dWxhdGVTdHJpbmdPYmplY3QoKQotICAgICAgICAgICAgJiYgY2FuT3B0aW1pemVTdHJpbmdPYmpl
Y3RBY2Nlc3Mobm9kZS0+Y29kZU9yaWdpbikpIHsKKyAgICAgICAgICAgICYmIGNhbk9wdGltaXpl
U3RyaW5nT2JqZWN0QWNjZXNzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpIHsKICAgICAgICAgICAg
IGZpeEVkZ2U8U3RyaW5nT2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBu
b2RlLT5jb252ZXJ0VG9Ub1N0cmluZygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0
cmluZ09yU3RyaW5nT2JqZWN0KCkKLSAgICAgICAgICAgICYmIGNhbk9wdGltaXplU3RyaW5nT2Jq
ZWN0QWNjZXNzKG5vZGUtPmNvZGVPcmlnaW4pKSB7CisgICAgICAgICAgICAmJiBjYW5PcHRpbWl6
ZVN0cmluZ09iamVjdEFjY2Vzcyhub2RlLT5vcmlnaW4uc2VtYW50aWMpKSB7CiAgICAgICAgICAg
ICBmaXhFZGdlPFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9Ub1N0cmluZygpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTE4OCwxMyArMTE5MiwxMyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ09iamVjdCgpCi0g
ICAgICAgICAgICAmJiBjYW5PcHRpbWl6ZVN0cmluZ09iamVjdEFjY2Vzcyhub2RlLT5jb2RlT3Jp
Z2luKSkgeworICAgICAgICAgICAgJiYgY2FuT3B0aW1pemVTdHJpbmdPYmplY3RBY2Nlc3Mobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSkgewogICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdPYmplY3RV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdP
clN0cmluZ09iamVjdCgpCi0gICAgICAgICAgICAmJiBjYW5PcHRpbWl6ZVN0cmluZ09iamVjdEFj
Y2Vzcyhub2RlLT5jb2RlT3JpZ2luKSkgeworICAgICAgICAgICAgJiYgY2FuT3B0aW1pemVTdHJp
bmdPYmplY3RBY2Nlc3Mobm9kZS0+b3JpZ2luLnNlbWFudGljKSkgewogICAgICAgICAgICAgZml4
RWRnZTxTdHJpbmdPclN0cmluZ09iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMjEzLDE2ICsxMjE3LDE2IEBAIHByaXZhdGU6CiAg
ICAgICAgIAogICAgICAgICBBU1NFUlQobGVmdFVzZUtpbmQgPT0gU3RyaW5nVXNlIHx8IGxlZnRV
c2VLaW5kID09IFN0cmluZ09iamVjdFVzZSB8fCBsZWZ0VXNlS2luZCA9PSBTdHJpbmdPclN0cmlu
Z09iamVjdFVzZSk7CiAgICAgICAgIAotICAgICAgICBpZiAoaXNTdHJpbmdPYmplY3RVc2U8bGVm
dFVzZUtpbmQ+KCkgJiYgIWNhbk9wdGltaXplU3RyaW5nT2JqZWN0QWNjZXNzKG5vZGUtPmNvZGVP
cmlnaW4pKQorICAgICAgICBpZiAoaXNTdHJpbmdPYmplY3RVc2U8bGVmdFVzZUtpbmQ+KCkgJiYg
IWNhbk9wdGltaXplU3RyaW5nT2JqZWN0QWNjZXNzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBjb252ZXJ0U3RyaW5n
QWRkVXNlPGxlZnRVc2VLaW5kPihub2RlLCBsZWZ0KTsKICAgICAgICAgCiAgICAgICAgIGlmIChy
aWdodC0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpCiAgICAgICAgICAgICBjb252ZXJ0U3RyaW5n
QWRkVXNlPFN0cmluZ1VzZT4obm9kZSwgcmlnaHQpOwotICAgICAgICBlbHNlIGlmIChyaWdodC0+
c2hvdWxkU3BlY3VsYXRlU3RyaW5nT2JqZWN0KCkgJiYgY2FuT3B0aW1pemVTdHJpbmdPYmplY3RB
Y2Nlc3Mobm9kZS0+Y29kZU9yaWdpbikpCisgICAgICAgIGVsc2UgaWYgKHJpZ2h0LT5zaG91bGRT
cGVjdWxhdGVTdHJpbmdPYmplY3QoKSAmJiBjYW5PcHRpbWl6ZVN0cmluZ09iamVjdEFjY2Vzcyhu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKQogICAgICAgICAgICAgY29udmVydFN0cmluZ0FkZFVzZTxT
dHJpbmdPYmplY3RVc2U+KG5vZGUsIHJpZ2h0KTsKLSAgICAgICAgZWxzZSBpZiAocmlnaHQtPnNo
b3VsZFNwZWN1bGF0ZVN0cmluZ09yU3RyaW5nT2JqZWN0KCkgJiYgY2FuT3B0aW1pemVTdHJpbmdP
YmplY3RBY2Nlc3Mobm9kZS0+Y29kZU9yaWdpbikpCisgICAgICAgIGVsc2UgaWYgKHJpZ2h0LT5z
aG91bGRTcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdCgpICYmIGNhbk9wdGltaXplU3RyaW5n
T2JqZWN0QWNjZXNzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpCiAgICAgICAgICAgICBjb252ZXJ0
U3RyaW5nQWRkVXNlPFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlPihub2RlLCByaWdodCk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IHRoYXQgdGhl
IG90aGVyIG9wZXJhbmQgaXMgc29tZXRoaW5nIHdlaXJkLiBUaGUgc2VtYW50aWNhbGx5IGNvcnJl
Y3QKQEAgLTEyMzQsMTAgKzEyMzgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIGFueXRo
aW5nIHRvIEByaWdodCwgc2luY2UgVG9QcmltaXRpdmUgbWF5IGJlIGVmZmVjdGZ1bC4KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgTm9kZSogdG9QcmltaXRpdmUgPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAotICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCByZXN1bHRPZlRvUHJp
bWl0aXZlKHJpZ2h0LT5wcmVkaWN0aW9uKCkpLCBUb1ByaW1pdGl2ZSwgbm9kZS0+Y29kZU9yaWdp
biwKLSAgICAgICAgICAgICAgICBFZGdlKHJpZ2h0Lm5vZGUoKSkpOworICAgICAgICAgICAgICAg
IG1faW5kZXhJbkJsb2NrLCByZXN1bHRPZlRvUHJpbWl0aXZlKHJpZ2h0LT5wcmVkaWN0aW9uKCkp
LCBUb1ByaW1pdGl2ZSwKKyAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4sIEVkZ2UocmlnaHQu
bm9kZSgpKSk7CiAgICAgICAgICAgICBOb2RlKiB0b1N0cmluZyA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCi0gICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNTdHJpbmcsIFRv
U3RyaW5nLCBub2RlLT5jb2RlT3JpZ2luLCBFZGdlKHRvUHJpbWl0aXZlKSk7CisgICAgICAgICAg
ICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNTdHJpbmcsIFRvU3RyaW5nLCBub2RlLT5vcmlnaW4s
IEVkZ2UodG9QcmltaXRpdmUpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZml4dXBUb1By
aW1pdGl2ZSh0b1ByaW1pdGl2ZSk7CiAgICAgICAgICAgICBmaXh1cFRvU3RyaW5nKHRvU3RyaW5n
KTsKQEAgLTEyNDgsNyArMTI1Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFdlJ3JlIGRvaW5n
IGNoZWNrcyB1cCB0aGVyZSwgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUKICAgICAg
ICAgLy8gKm9yaWdpbmFsKiBpbnB1dHMgdG8gdGhlIGFkZGl0aW9uIGFyZSBsaXZlIHVwIHRvIGhl
cmUuCiAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX2lu
ZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPmNvZGVPcmlnaW4sCisgICAgICAg
ICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50b20sIG5vZGUtPm9yaWdpbiwKICAg
ICAgICAgICAgIEVkZ2Uob3JpZ2luYWxMZWZ0KSwgRWRnZShvcmlnaW5hbFJpZ2h0KSk7CiAgICAg
ICAgIAogICAgICAgICBjb252ZXJ0VG9NYWtlUm9wZShub2RlKTsKQEAgLTEzNjUsMzcgKzEzNjks
MzYgQEAgcHJpdmF0ZToKICAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CiAg
ICAgfQogICAgIAotICAgIE5vZGUqIGNoZWNrQXJyYXkoQXJyYXlNb2RlIGFycmF5TW9kZSwgY29u
c3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgTm9kZSogYXJyYXksIE5vZGUqIGluZGV4LCBib29s
ICgqc3RvcmFnZUNoZWNrKShjb25zdCBBcnJheU1vZGUmKSA9IGNhbkNTRVN0b3JhZ2UpCisgICAg
Tm9kZSogY2hlY2tBcnJheShBcnJheU1vZGUgYXJyYXlNb2RlLCBjb25zdCBOb2RlT3JpZ2luJiBv
cmlnaW4sIE5vZGUqIGFycmF5LCBOb2RlKiBpbmRleCwgYm9vbCAoKnN0b3JhZ2VDaGVjaykoY29u
c3QgQXJyYXlNb2RlJikgPSBjYW5DU0VTdG9yYWdlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGFy
cmF5TW9kZS5pc1NwZWNpZmljKCkpOwogICAgICAgICAKICAgICAgICAgaWYgKGFycmF5TW9kZS50
eXBlKCkgPT0gQXJyYXk6OlN0cmluZykgewogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIFBoYW50
b20sIGNvZGVPcmlnaW4sCi0gICAgICAgICAgICAgICAgRWRnZShhcnJheSwgU3RyaW5nVXNlKSk7
CisgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBQaGFudG9tLCBvcmln
aW4sIEVkZ2UoYXJyYXksIFN0cmluZ1VzZSkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBhcnJheU1vZGUub3JpZ2luYWxBcnJheVN0cnVjdHVy
ZShtX2dyYXBoLCBjb2RlT3JpZ2luKTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gYXJyYXlNb2RlLm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUobV9ncmFwaCwgb3JpZ2luLnNlbWFu
dGljKTsKICAgICAgICAgCiAgICAgICAgICAgICBFZGdlIGluZGV4RWRnZSA9IGluZGV4ID8gRWRn
ZShpbmRleCwgSW50MzJVc2UpIDogRWRnZSgpOwogICAgICAgICAKICAgICAgICAgICAgIGlmIChh
cnJheU1vZGUuZG9lc0NvbnZlcnNpb24oKSkgewogICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1
cmUpIHsKICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQXJyYXlpZnlU
b1N0cnVjdHVyZSwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJ
bkJsb2NrLCBTcGVjTm9uZSwgQXJyYXlpZnlUb1N0cnVjdHVyZSwgb3JpZ2luLAogICAgICAgICAg
ICAgICAgICAgICAgICAgT3BJbmZvKHN0cnVjdHVyZSksIE9wSW5mbyhhcnJheU1vZGUuYXNXb3Jk
KCkpLCBFZGdlKGFycmF5LCBDZWxsVXNlKSwgaW5kZXhFZGdlKTsKICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAot
ICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBBcnJheWlm
eSwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBT
cGVjTm9uZSwgQXJyYXlpZnksIG9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5m
byhhcnJheU1vZGUuYXNXb3JkKCkpLCBFZGdlKGFycmF5LCBDZWxsVXNlKSwgaW5kZXhFZGdlKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IGlmIChzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9u
ZSwgQ2hlY2tTdHJ1Y3R1cmUsIGNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrU3RydWN0dXJlLCBvcmlnaW4sCiAgICAgICAg
ICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJl
KSksIEVkZ2UoYXJyYXksIENlbGxVc2UpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAg
ICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVja0FycmF5LCBjb2RlT3Jp
Z2luLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBD
aGVja0FycmF5LCBvcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8oYXJyYXlN
b2RlLmFzV29yZCgpKSwgRWRnZShhcnJheSwgQ2VsbFVzZSkpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KQEAgLTE0MDYsMTEgKzE0MDksMTEgQEAgcHJpdmF0ZToKICAgICAgICAg
CiAgICAgICAgIGlmIChhcnJheU1vZGUudXNlc0J1dHRlcmZseSgpKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICBtX2luZGV4
SW5CbG9jaywgU3BlY05vbmUsIEdldEJ1dHRlcmZseSwgY29kZU9yaWdpbiwgRWRnZShhcnJheSwg
Q2VsbFVzZSkpOworICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgR2V0
QnV0dGVyZmx5LCBvcmlnaW4sIEVkZ2UoYXJyYXksIENlbGxVc2UpKTsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAg
ICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2Us
IGNvZGVPcmlnaW4sCisgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIEdldElu
ZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UsIG9yaWdpbiwKICAgICAgICAgICAgIE9wSW5mbyhhcnJheU1v
ZGUuYXNXb3JkKCkpLCBFZGdlKGFycmF5LCBLbm93bkNlbGxVc2UpKTsKICAgICB9CiAgICAgCkBA
IC0xNDIxLDcgKzE0MjQsNyBAQCBwcml2YXRlOgogICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5
TW9kZSgpLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpGb3JjZUV4aXQ6IHsKICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgbV9pbmRl
eEluQmxvY2ssIFNwZWNOb25lLCBGb3JjZU9TUkV4aXQsIG5vZGUtPmNvZGVPcmlnaW4pOworICAg
ICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgRm9yY2VPU1JFeGl0LCBub2Rl
LT5vcmlnaW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICAgICAK
QEAgLTE0MzQsNyArMTQzNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAKICAgICAgICAgZGVmYXVsdDogewotICAgICAgICAgICAgTm9kZSogc3RvcmFnZSA9
IGNoZWNrQXJyYXkobm9kZS0+YXJyYXlNb2RlKCksIG5vZGUtPmNvZGVPcmlnaW4sIGJhc2Uubm9k
ZSgpLCBpbmRleC5ub2RlKCkpOworICAgICAgICAgICAgTm9kZSogc3RvcmFnZSA9IGNoZWNrQXJy
YXkobm9kZS0+YXJyYXlNb2RlKCksIG5vZGUtPm9yaWdpbiwgYmFzZS5ub2RlKCksIGluZGV4Lm5v
ZGUoKSk7CiAgICAgICAgICAgICBpZiAoIXN0b3JhZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgCkBAIC0xNTM3LDcgKzE1NDAsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIG1fcmVxdWlyZWRQaGFudG9tcy5hcHBlbmQoZWRnZS5ub2RlKCkpOwogICAgICAgICAg
ICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAg
ICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NTJBc0RvdWJsZSwgSW50NTJUb0Rv
dWJsZSwKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwgRWRn
ZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dE5vZGUtPm9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7CiAgICAgICAgICAg
ICAgICAgZWRnZSA9IEVkZ2UocmVzdWx0LCB1c2VLaW5kKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CkBAIC0xNTkxLDcgKzE1OTQsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgbV9yZXF1aXJlZFBoYW50b21zLmFwcGVuZChlZGdlLm5vZGUoKSk7CiAgICAgICAgICAg
ICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAg
ICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NTIsIEludDUyVG9WYWx1ZSwKLSAgICAgICAgICAg
ICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBVbnR5cGVk
VXNlKSk7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+b3JpZ2luLCBFZGdlKGVkZ2Uu
bm9kZSgpLCBVbnR5cGVkVXNlKSk7CiAgICAgICAgICAgICBlZGdlID0gRWRnZShyZXN1bHQsIHVz
ZUtpbmQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNjA1LDkgKzE2MDgs
OSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgTm9kZSogYmFycmllck5vZGU7CiAgICAgICAg
IGlmICghY2hpbGQyKQotICAgICAgICAgICAgYmFycmllck5vZGUgPSBtX2dyYXBoLmFkZE5vZGUo
U3BlY05vbmUsIFN0b3JlQmFycmllciwgbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwgRWRnZShj
aGlsZDEubm9kZSgpLCBjaGlsZDEudXNlS2luZCgpKSk7CisgICAgICAgICAgICBiYXJyaWVyTm9k
ZSA9IG1fZ3JhcGguYWRkTm9kZShTcGVjTm9uZSwgU3RvcmVCYXJyaWVyLCBtX2N1cnJlbnROb2Rl
LT5vcmlnaW4sIEVkZ2UoY2hpbGQxLm5vZGUoKSwgY2hpbGQxLnVzZUtpbmQoKSkpOwogICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIGJhcnJpZXJOb2RlID0gbV9ncmFwaC5hZGROb2RlKFNwZWNO
b25lLCBDb25kaXRpb25hbFN0b3JlQmFycmllciwgbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwg
CisgICAgICAgICAgICBiYXJyaWVyTm9kZSA9IG1fZ3JhcGguYWRkTm9kZShTcGVjTm9uZSwgQ29u
ZGl0aW9uYWxTdG9yZUJhcnJpZXIsIG1fY3VycmVudE5vZGUtPm9yaWdpbiwgCiAgICAgICAgICAg
ICAgICAgRWRnZShjaGlsZDEubm9kZSgpLCBjaGlsZDEudXNlS2luZCgpKSwgRWRnZShjaGlsZDIu
bm9kZSgpLCBjaGlsZDIudXNlS2luZCgpKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0KGluZGV4SW5CbG9jaywgYmFycmllck5vZGUpOwpAQCAtMTYzMSw3ICsxNjM0
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdXNlS2luZCA9IE5vdENl
bGxVc2U7CiAgICAgICAgIE5vZGUqIG5ld05vZGUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAotICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMiwgVmFsdWVUb0ludDMyLCBt
X2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLAorICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNw
ZWNJbnQzMiwgVmFsdWVUb0ludDMyLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4sCiAgICAgICAgICAg
ICBFZGdlKG5vZGUsIHVzZUtpbmQpKTsKICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGUobm9k
ZSwgdXNlS2luZCk7CiAgICAgICAgIApAQCAtMTY0NSw3ICsxNjQ4LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgCiAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
CiAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDUyQXNEb3VibGUsIEludDMyVG9E
b3VibGUsCi0gICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uu
bm9kZSgpLCBOdW1iZXJVc2UpKTsKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPm9yaWdpbiwg
RWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7CiAgICAgICAgIAogICAgICAgICBlZGdlID0g
RWRnZShyZXN1bHQsIHVzZUtpbmQpOwogICAgIH0KQEAgLTE2NzMsNyArMTY3Niw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIGVkZ2Uuc2V0
Tm9kZShtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRleEluQmxv
Y2ssIFNwZWNJbnQzMiwgSlNDb25zdGFudCwgbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwKKyAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzIsIEpTQ29uc3RhbnQsIG1fY3VycmVu
dE5vZGUtPm9yaWdpbiwKICAgICAgICAgICAgIE9wSW5mbyhjb25zdGFudFJlZ2lzdGVyKSkpOwog
ICAgIH0KICAgICAKQEAgLTE3MTcsOSArMTcyMCw5IEBAIHByaXZhdGU6CiAgICAgewogICAgICAg
ICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihub2RlLT5wcmVkaWN0aW9uKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2sgPSBtX2dy
YXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICBDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2sgPSBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0g
Ci0gICAgICAgICAgICBwcm9maWxlZEJsb2NrLT5nZXRBcnJheVByb2ZpbGUobm9kZS0+Y29kZU9y
aWdpbi5ieXRlY29kZUluZGV4KTsKKyAgICAgICAgICAgIHByb2ZpbGVkQmxvY2stPmdldEFycmF5
UHJvZmlsZShub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIEFy
cmF5TW9kZSBhcnJheU1vZGUgPSBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlv
bnMpOwogICAgICAgICBpZiAoYXJyYXlQcm9maWxlKSB7CiAgICAgICAgICAgICBDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwpAQCAtMTczOCw3ICsxNzQx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGFycmF5TW9k
ZSA9IGFycmF5TW9kZS5yZWZpbmUoCi0gICAgICAgICAgICBtX2dyYXBoLCBub2RlLT5jb2RlT3Jp
Z2luLCBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpLCBub2RlLT5wcmVkaWN0aW9uKCkpOwor
ICAgICAgICAgICAgbV9ncmFwaCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBub2RlLT5jaGlsZDEo
KS0+cHJlZGljdGlvbigpLCBub2RlLT5wcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgCiAgICAg
ICAgIGlmIChhcnJheU1vZGUudHlwZSgpID09IEFycmF5OjpHZW5lcmljKSB7CiAgICAgICAgICAg
ICAvLyBDaGVjayBpZiB0aGUgaW5wdXQgaXMgc29tZXRoaW5nIHRoYXQgd2UgY2FuJ3QgZ2V0IGFy
cmF5IGxlbmd0aCBmb3IsIGJ1dCBmb3Igd2hpY2ggd2UKQEAgLTE3NzIsMTAgKzE3NzUsMTAgQEAg
cHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgTm9kZSogbGVuZ3RoID0gcHJl
cGVuZEdldEFycmF5TGVuZ3RoKAotICAgICAgICAgICAgbm9kZS0+Y29kZU9yaWdpbiwgbm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBBcnJheU1vZGUodG9BcnJheVR5cGUodHlwZSkpKTsKKyAgICAgICAg
ICAgIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBBcnJheU1vZGUodG9BcnJh
eVR5cGUodHlwZSkpKTsKICAgICAgICAgCiAgICAgICAgIE5vZGUqIHNoaWZ0QW1vdW50ID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVj
SW50MzIsIEpTQ29uc3RhbnQsIG5vZGUtPmNvZGVPcmlnaW4sCisgICAgICAgICAgICBtX2luZGV4
SW5CbG9jaywgU3BlY0ludDMyLCBKU0NvbnN0YW50LCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAg
ICBPcEluZm8obV9ncmFwaC5jb25zdGFudFJlZ2lzdGVyRm9yQ29uc3RhbnQoanNOdW1iZXIobG9n
RWxlbWVudFNpemUodHlwZSkpKSkpOwogICAgICAgICAKICAgICAgICAgLy8gV2UgY2FuIHVzZSBh
IEJpdExTaGlmdCBoZXJlIGJlY2F1c2UgdHlwZWQgYXJyYXlzIHdpbGwgbmV2ZXIgaGF2ZSBhIGJ5
dGVMZW5ndGgKQEAgLTE3OTYsMTggKzE3OTksMTggQEAgcHJpdmF0ZToKICAgICAgICAgZml4RWRn
ZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgbm9kZS0+c2V0QXJyYXlN
b2RlKGFycmF5TW9kZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgTm9kZSogc3RvcmFnZSA9IGNo
ZWNrQXJyYXkoYXJyYXlNb2RlLCBub2RlLT5jb2RlT3JpZ2luLCBub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIDAsIGxlbmd0aE5lZWRzU3RvcmFnZSk7CisgICAgICAgIE5vZGUqIHN0b3JhZ2UgPSBjaGVj
a0FycmF5KGFycmF5TW9kZSwgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEoKS5ub2RlKCksIDAs
IGxlbmd0aE5lZWRzU3RvcmFnZSk7CiAgICAgICAgIGlmICghc3RvcmFnZSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIAogICAgICAgICBub2RlLT5jaGlsZDIoKSA9IEVkZ2Uoc3Rv
cmFnZSk7CiAgICAgfQogICAgIAotICAgIE5vZGUqIHByZXBlbmRHZXRBcnJheUxlbmd0aChDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIE5vZGUqIGNoaWxkLCBBcnJheU1vZGUgYXJyYXlNb2RlKQorICAg
IE5vZGUqIHByZXBlbmRHZXRBcnJheUxlbmd0aChOb2RlT3JpZ2luIG9yaWdpbiwgTm9kZSogY2hp
bGQsIEFycmF5TW9kZSBhcnJheU1vZGUpCiAgICAgewotICAgICAgICBOb2RlKiBzdG9yYWdlID0g
Y2hlY2tBcnJheShhcnJheU1vZGUsIGNvZGVPcmlnaW4sIGNoaWxkLCAwLCBsZW5ndGhOZWVkc1N0
b3JhZ2UpOworICAgICAgICBOb2RlKiBzdG9yYWdlID0gY2hlY2tBcnJheShhcnJheU1vZGUsIG9y
aWdpbiwgY2hpbGQsIDAsIGxlbmd0aE5lZWRzU3RvcmFnZSk7CiAgICAgICAgIHJldHVybiBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJ
bnQzMiwgR2V0QXJyYXlMZW5ndGgsIGNvZGVPcmlnaW4sCisgICAgICAgICAgICBtX2luZGV4SW5C
bG9jaywgU3BlY0ludDMyLCBHZXRBcnJheUxlbmd0aCwgb3JpZ2luLAogICAgICAgICAgICAgT3BJ
bmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hpbGQsIEtub3duQ2VsbFVzZSksIEVkZ2Uo
c3RvcmFnZSkpOwogICAgIH0KICAgICAKQEAgLTE4MjEsNyArMTgyNCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBjaGVja0FycmF5KAot
ICAgICAgICAgICAgQXJyYXlNb2RlKHRvQXJyYXlUeXBlKHR5cGUpKSwgbm9kZS0+Y29kZU9yaWdp
biwgbm9kZS0+Y2hpbGQxKCkubm9kZSgpLAorICAgICAgICAgICAgQXJyYXlNb2RlKHRvQXJyYXlU
eXBlKHR5cGUpKSwgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEoKS5ub2RlKCksCiAgICAgICAg
ICAgICAwLCBuZXZlck5lZWRzU3RvcmFnZSk7CiAgICAgICAgIAogICAgICAgICBub2RlLT5zZXRP
cChHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCk7CkBAIC0xODM3LDcgKzE4NDAsNyBAQCBwcml2YXRl
OgogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9yZXF1aXJlZFBoYW50b21z
LnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
LSAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jayArIDEsIFNwZWNOb25lLCBQaGFudG9tLCBt
X2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2Nr
ICsgMSwgU3BlY05vbmUsIFBoYW50b20sIG1fY3VycmVudE5vZGUtPm9yaWdpbiwKICAgICAgICAg
ICAgICAgICBFZGdlKG1fcmVxdWlyZWRQaGFudG9tc1tpXSwgVW50eXBlZFVzZSkpOwogICAgICAg
ICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJ
KHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCwxMSArOTgsMTEgQEAgYm9vbCBHcmFwaDo6ZHVtcENv
ZGVPcmlnaW4oUHJpbnRTdHJlYW0mIAogICAgIGlmICghcHJldmlvdXNOb2RlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKHByZXZpb3VzTm9kZS0+Y29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUgPT0gY3VycmVudE5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQor
ICAgIGlmIChwcmV2aW91c05vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUgPT0g
Y3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKLSAgICBWZWN0b3I8Q29kZU9yaWdpbj4gcHJldmlvdXNJbmxpbmVT
dGFjayA9IHByZXZpb3VzTm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVTdGFjaygpOwotICAgIFZlY3Rv
cjxDb2RlT3JpZ2luPiBjdXJyZW50SW5saW5lU3RhY2sgPSBjdXJyZW50Tm9kZS0+Y29kZU9yaWdp
bi5pbmxpbmVTdGFjaygpOworICAgIFZlY3RvcjxDb2RlT3JpZ2luPiBwcmV2aW91c0lubGluZVN0
YWNrID0gcHJldmlvdXNOb2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lU3RhY2soKTsKKyAgICBW
ZWN0b3I8Q29kZU9yaWdpbj4gY3VycmVudElubGluZVN0YWNrID0gY3VycmVudE5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVTdGFjaygpOwogICAgIHVuc2lnbmVkIGNvbW1vblNpemUgPSBzdGQ6
Om1pbihwcmV2aW91c0lubGluZVN0YWNrLnNpemUoKSwgY3VycmVudElubGluZVN0YWNrLnNpemUo
KSk7CiAgICAgdW5zaWduZWQgaW5kZXhPZkRpdmVyZ2VuY2UgPSBjb21tb25TaXplOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb21tb25TaXplOyArK2kpIHsKQEAgLTEzNSw3ICsxMzUs
NyBAQCBib29sIEdyYXBoOjpkdW1wQ29kZU9yaWdpbihQcmludFN0cmVhbSYgCiAKIGludCBHcmFw
aDo6YW1vdW50T2ZOb2RlV2hpdGVTcGFjZShOb2RlKiBub2RlKQogewotICAgIHJldHVybiAobm9k
ZS0+Y29kZU9yaWdpbi5pbmxpbmVEZXB0aCgpIC0gMSkgKiAyOworICAgIHJldHVybiAobm9kZS0+
b3JpZ2luLnNlbWFudGljLmlubGluZURlcHRoKCkgLSAxKSAqIDI7CiB9CiAKIHZvaWQgR3JhcGg6
OnByaW50Tm9kZVdoaXRlU3BhY2UoUHJpbnRTdHJlYW0mIG91dCwgTm9kZSogbm9kZSkKQEAgLTIw
Niw3ICsyMDYsNyBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAg
ICAgaWYgKG5vZGUtPmhhc1Zhck51bWJlcigpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIG5v
ZGUtPnZhck51bWJlcigpKTsKICAgICBpZiAobm9kZS0+aGFzUmVnaXN0ZXJQb2ludGVyKCkpCi0g
ICAgICAgIG91dC5wcmludChjb21tYSwgImdsb2JhbCIsIGdsb2JhbE9iamVjdEZvcihub2RlLT5j
b2RlT3JpZ2luKS0+ZmluZFJlZ2lzdGVySW5kZXgobm9kZS0+cmVnaXN0ZXJQb2ludGVyKCkpLCAi
KCIsIFJhd1BvaW50ZXIobm9kZS0+cmVnaXN0ZXJQb2ludGVyKCkpLCAiKSIpOworICAgICAgICBv
dXQucHJpbnQoY29tbWEsICJnbG9iYWwiLCBnbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKS0+ZmluZFJlZ2lzdGVySW5kZXgobm9kZS0+cmVnaXN0ZXJQb2ludGVyKCkpLCAiKCIs
IFJhd1BvaW50ZXIobm9kZS0+cmVnaXN0ZXJQb2ludGVyKCkpLCAiKSIpOwogICAgIGlmIChub2Rl
LT5oYXNJZGVudGlmaWVyKCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgImlkIiwgbm9kZS0+
aWRlbnRpZmllck51bWJlcigpLCAieyIsIGlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRpZmllck51
bWJlcigpXSwgIn0iKTsKICAgICBpZiAobm9kZS0+aGFzU3RydWN0dXJlU2V0KCkpCkBAIC0zMjgs
NyArMzI4LDkgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAg
ICAgICBvdXQucHJpbnQoY29tbWEsICJSOiIsIHNvcnRlZExpc3REdW1wKHJlYWRzLmRpcmVjdCgp
LCAiLCIpKTsKICAgICBpZiAoIXdyaXRlcy5pc0VtcHR5KCkpCiAgICAgICAgIG91dC5wcmludChj
b21tYSwgIlc6Iiwgc29ydGVkTGlzdER1bXAod3JpdGVzLmRpcmVjdCgpLCAiLCIpKTsKLSAgICBv
dXQucHJpbnQoY29tbWEsICJiYyMiLCBub2RlLT5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwor
ICAgIG91dC5wcmludChjb21tYSwgImJjIyIsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29k
ZUluZGV4KTsKKyAgICBpZiAobm9kZS0+b3JpZ2luLnNlbWFudGljICE9IG5vZGUtPm9yaWdpbi5m
b3JFeGl0KQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJleGl0OiAiLCBub2RlLT5vcmlnaW4u
Zm9yRXhpdCk7CiAgICAgCiAgICAgb3V0LnByaW50KCIpIik7CiAKQEAgLTM0NCw3ICszNDYsNyBA
QCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAKIHZvaWQgR3JhcGg6
OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIEJh
c2ljQmxvY2sqIGJsb2NrLCBQaGlOb2RlRHVtcE1vZGUgcGhpTm9kZUR1bXBNb2RlLCBEdW1wQ29u
dGV4dCogY29udGV4dCkKIHsKLSAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2Nr
LCAiICgiLCBpbkNvbnRleHQoYmxvY2stPmF0KDApLT5jb2RlT3JpZ2luLCBjb250ZXh0KSwgIik6
ICIsIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIihza2lwcGVkKSIsIGJsb2NrLT5pc09TUlRh
cmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCAiXG4iKTsKKyAgICBvdXQucHJpbnQocHJlZml4
LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQoYmxvY2stPmF0KDApLT5vcmlnaW4u
c2VtYW50aWMsIGNvbnRleHQpLCAiKTogIiwgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiKHNr
aXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDogIiIsICJcbiIp
OwogICAgIG91dC5wcmludChwcmVmaXgsICIgIFByZWRlY2Vzc29yczoiKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGJsb2NrLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyArK2kpCiAgICAgICAg
IG91dC5wcmludCgiICIsICpibG9jay0+cHJlZGVjZXNzb3JzW2ldKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtNDU5LDcgKzQ1OSw3
IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGhhc0V4aXRTaXRlKE5vZGUqIG5vZGUsIEV4aXRL
aW5kIGV4aXRLaW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKG5vZGUtPmNv
ZGVPcmlnaW4sIGV4aXRLaW5kKTsKKyAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgZXhpdEtpbmQpOwogICAgIH0KICAgICAKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYXJndW1lbnRzUmVnaXN0ZXJGb3IoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUp
CkBAIC01MzMsNyArNTMzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgCi0gICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9j
ayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICBDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogICAgICAgICAKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gR2V0QXJndW1l
bnQpCiAgICAgICAgICAgICByZXR1cm4gcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQXJn
dW1lbnQobm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCkpOwpAQCAtNTUwLDcgKzU1MCw3IEBAIHB1
YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG5vZGUtPmhhc0hlYXBQcmVk
aWN0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxl
Rm9yQnl0ZWNvZGVPZmZzZXQobm9kZS0+Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKKyAgICAg
ICAgICAgIHJldHVybiBwcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dChub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIAogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CkBAIC01NjAsMTMgKzU2MCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
IGlmICghbm9kZSkKICAgICAgICAgICAgIHJldHVybiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlKCk7CiAgICAgICAgIAotICAgICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2sgPSBiYXNl
bGluZUNvZGVCbG9ja0Zvcihub2RlLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKICAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEdldExvY2FsKSB7CiAgICAg
ICAgICAgICByZXR1cm4gTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZnJvbUxhenlPcGVy
YW5kKAogICAgICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2ssCiAgICAgICAgICAgICAgICAgTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkoCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvZGVP
cmlnaW4uYnl0ZWNvZGVJbmRleCwgbm9kZS0+bG9jYWwoKSkpOworICAgICAgICAgICAgICAgICAg
ICBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCwgbm9kZS0+bG9jYWwoKSkpOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm4gTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZSh2YWx1ZVByb2ZpbGVGb3Iobm9kZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NSwxOCArODUsMTggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZSh1
bnNpZ25lZCBub2RlSW5kZXgsIE5vZGUqIG5vZGUpCiAgICAgewotICAgICAgICBpZiAobV9vcmln
aW5UaGF0SGFkRmlyZS5pc1NldCgpICYmIG1fb3JpZ2luVGhhdEhhZEZpcmUgIT0gbm9kZS0+Y29k
ZU9yaWdpbikgeworICAgICAgICBpZiAobV9vcmlnaW5UaGF0SGFkRmlyZS5pc1NldCgpICYmIG1f
b3JpZ2luVGhhdEhhZEZpcmUgIT0gbm9kZS0+b3JpZ2luLmZvckV4aXQpIHsKICAgICAgICAgICAg
IGluc2VydEludmFsaWRhdGlvbkNoZWNrKG5vZGVJbmRleCwgbm9kZSk7CiAgICAgICAgICAgICBt
X29yaWdpblRoYXRIYWRGaXJlID0gQ29kZU9yaWdpbigpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBpZiAod3JpdGVzT3ZlcmxhcChtX2dyYXBoLCBub2RlLCBXYXRjaHBvaW50X2ZpcmUp
KQotICAgICAgICAgICAgbV9vcmlnaW5UaGF0SGFkRmlyZSA9IG5vZGUtPmNvZGVPcmlnaW47Cisg
ICAgICAgICAgICBtX29yaWdpblRoYXRIYWRGaXJlID0gbm9kZS0+b3JpZ2luLmZvckV4aXQ7CiAg
ICAgfQogICAgIAogICAgIHZvaWQgaW5zZXJ0SW52YWxpZGF0aW9uQ2hlY2sodW5zaWduZWQgbm9k
ZUluZGV4LCBOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZShub2RlSW5kZXgsIFNwZWNOb25lLCBJbnZhbGlkYXRpb25Qb2ludCwgbm9kZS0+Y29kZU9y
aWdpbik7CisgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobm9kZUluZGV4LCBTcGVj
Tm9uZSwgSW52YWxpZGF0aW9uUG9pbnQsIG5vZGUtPm9yaWdpbik7CiAgICAgfQogICAgIAogICAg
IENvZGVPcmlnaW4gbV9vcmlnaW5UaGF0SGFkRmlyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2
LDcgKzI0Niw4IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBkYXRhLnByZUhlYWRlci0+
aW5zZXJ0QmVmb3JlTGFzdChub2RlKTsKICAgICAgICAgbm9kZS0+bWlzYy5vd25lciA9IGRhdGEu
cHJlSGVhZGVyOwotICAgICAgICBub2RlLT5jb2RlT3JpZ2luRm9yRXhpdFRhcmdldCA9IGRhdGEu
cHJlSGVhZGVyLT5sYXN0KCktPmNvZGVPcmlnaW5Gb3JFeGl0VGFyZ2V0OworICAgICAgICBOb2Rl
T3JpZ2luIG9yaWdpbmFsT3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICBub2RlLT5vcmln
aW4uZm9yRXhpdCA9IGRhdGEucHJlSGVhZGVyLT5sYXN0KCktPm9yaWdpbi5mb3JFeGl0OwogICAg
ICAgICAKICAgICAgICAgLy8gTW9kaWZ5IHRoZSBzdGF0ZXMgYXQgdGhlIGVuZCBvZiB0aGUgcHJl
SGVhZGVyIG9mIHRoZSBsb29wIHdlIGhvaXN0ZWQgdG8sCiAgICAgICAgIC8vIGFuZCBhbGwgcHJl
LWhlYWRlcnMgaW5zaWRlIHRoZSBsb29wLgpAQCAtMjY5LDcgKzI3MCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIC8vIGNvZGUuIEJ1dCBmb3Igbm93IHdlIGp1c3QgYXNzZXJ0IHRoYXQncyB0aGUgY2Fz
ZS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShub2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFy
Z3MpKTsKICAgICAgICAgCi0gICAgICAgIG5vZGVSZWYgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY05v
bmUsIFBoYW50b20sIG5vZGUtPmNvZGVPcmlnaW4sIG5vZGUtPmNoaWxkcmVuKTsKKyAgICAgICAg
bm9kZVJlZiA9IG1fZ3JhcGguYWRkTm9kZShTcGVjTm9uZSwgUGhhbnRvbSwgb3JpZ2luYWxPcmln
aW4sIG5vZGUtPmNoaWxkcmVuKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVIZWFk
ZXIoR3JhcGgmIGdyYXBoCiB7CiAgICAgQmFzaWNCbG9jayogcHJlSGVhZGVyID0gaW5zZXJ0aW9u
U2V0Lmluc2VydEJlZm9yZShibG9jayk7CiAgICAgcHJlSGVhZGVyLT5hcHBlbmROb2RlKAotICAg
ICAgICBncmFwaCwgU3BlY05vbmUsIEp1bXAsIGJsb2NrLT5hdCgwKS0+Y29kZU9yaWdpbiwgT3BJ
bmZvKGJsb2NrKSk7CisgICAgICAgIGdyYXBoLCBTcGVjTm9uZSwgSnVtcCwgYmxvY2stPmF0KDAp
LT5vcmlnaW4sIE9wSW5mbyhibG9jaykpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgcHJlZGVj
ZXNzb3JJbmRleCA9IDA7IHByZWRlY2Vzc29ySW5kZXggPCBibG9jay0+cHJlZGVjZXNzb3JzLnNp
emUoKTsgcHJlZGVjZXNzb3JJbmRleCsrKSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vz
c29yID0gYmxvY2stPnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBA
QAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVk
ZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUuaCIKICNpbmNsdWRl
ICJERkdBZGphY2VuY3lMaXN0LmgiCiAjaW5jbHVkZSAiREZHQXJpdGhNb2RlLmgiCkBAIC0zOSw2
ICszOCw3IEBACiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHTGF6eUpTVmFs
dWUuaCIKICNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIKKyNpbmNsdWRlICJERkdOb2RlT3JpZ2lu
LmgiCiAjaW5jbHVkZSAiREZHTm9kZVR5cGUuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vz
c0RhdGEuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCkBAIC0xNjEsOSArMTYxLDggQEAgc3Ry
dWN0IE5vZGUgewogICAgIAogICAgIE5vZGUoKSB7IH0KICAgICAKLSAgICBOb2RlKE5vZGVUeXBl
IG9wLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0IEFkamFjZW5jeUxpc3QmIGNoaWxkcmVu
KQotICAgICAgICA6IGNvZGVPcmlnaW4oY29kZU9yaWdpbikKLSAgICAgICAgLCBjb2RlT3JpZ2lu
Rm9yRXhpdFRhcmdldChjb2RlT3JpZ2luKQorICAgIE5vZGUoTm9kZVR5cGUgb3AsIE5vZGVPcmln
aW4gbm9kZU9yaWdpbiwgY29uc3QgQWRqYWNlbmN5TGlzdCYgY2hpbGRyZW4pCisgICAgICAgIDog
b3JpZ2luKG5vZGVPcmlnaW4pCiAgICAgICAgICwgY2hpbGRyZW4oY2hpbGRyZW4pCiAgICAgICAg
ICwgbV92aXJ0dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKCkpCiAgICAgICAgICwgbV9yZWZD
b3VudCgxKQpAQCAtMTc0LDkgKzE3Myw4IEBAIHN0cnVjdCBOb2RlIHsKICAgICB9CiAgICAgCiAg
ICAgLy8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIHVwIHRvIDMgY2hpbGRyZW4sIG5vIGltbWVkaWF0
ZSB2YWx1ZS4KLSAgICBOb2RlKE5vZGVUeXBlIG9wLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEVk
Z2UgY2hpbGQxID0gRWRnZSgpLCBFZGdlIGNoaWxkMiA9IEVkZ2UoKSwgRWRnZSBjaGlsZDMgPSBF
ZGdlKCkpCi0gICAgICAgIDogY29kZU9yaWdpbihjb2RlT3JpZ2luKQotICAgICAgICAsIGNvZGVP
cmlnaW5Gb3JFeGl0VGFyZ2V0KGNvZGVPcmlnaW4pCisgICAgTm9kZShOb2RlVHlwZSBvcCwgTm9k
ZU9yaWdpbiBub2RlT3JpZ2luLCBFZGdlIGNoaWxkMSA9IEVkZ2UoKSwgRWRnZSBjaGlsZDIgPSBF
ZGdlKCksIEVkZ2UgY2hpbGQzID0gRWRnZSgpKQorICAgICAgICA6IG9yaWdpbihub2RlT3JpZ2lu
KQogICAgICAgICAsIGNoaWxkcmVuKEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBjaGlsZDEsIGNoaWxk
MiwgY2hpbGQzKQogICAgICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcigp
KQogICAgICAgICAsIG1fcmVmQ291bnQoMSkKQEAgLTE5MCw5ICsxODgsOCBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgfQogCiAgICAgLy8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIHVwIHRvIDMgY2hpbGRy
ZW4gYW5kIGFuIGltbWVkaWF0ZSB2YWx1ZS4KLSAgICBOb2RlKE5vZGVUeXBlIG9wLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIE9wSW5mbyBpbW0sIEVkZ2UgY2hpbGQxID0gRWRnZSgpLCBFZGdlIGNo
aWxkMiA9IEVkZ2UoKSwgRWRnZSBjaGlsZDMgPSBFZGdlKCkpCi0gICAgICAgIDogY29kZU9yaWdp
bihjb2RlT3JpZ2luKQotICAgICAgICAsIGNvZGVPcmlnaW5Gb3JFeGl0VGFyZ2V0KGNvZGVPcmln
aW4pCisgICAgTm9kZShOb2RlVHlwZSBvcCwgTm9kZU9yaWdpbiBub2RlT3JpZ2luLCBPcEluZm8g
aW1tLCBFZGdlIGNoaWxkMSA9IEVkZ2UoKSwgRWRnZSBjaGlsZDIgPSBFZGdlKCksIEVkZ2UgY2hp
bGQzID0gRWRnZSgpKQorICAgICAgICA6IG9yaWdpbihub2RlT3JpZ2luKQogICAgICAgICAsIGNo
aWxkcmVuKEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBjaGlsZDEsIGNoaWxkMiwgY2hpbGQzKQogICAg
ICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlcigpKQogICAgICAgICAsIG1f
cmVmQ291bnQoMSkKQEAgLTIwNiw5ICsyMDMsOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgfQogCiAg
ICAgLy8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIHVwIHRvIDMgY2hpbGRyZW4gYW5kIHR3byBpbW1l
ZGlhdGUgdmFsdWVzLgotICAgIE5vZGUoTm9kZVR5cGUgb3AsIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgT3BJbmZvIGltbTEsIE9wSW5mbyBpbW0yLCBFZGdlIGNoaWxkMSA9IEVkZ2UoKSwgRWRnZSBj
aGlsZDIgPSBFZGdlKCksIEVkZ2UgY2hpbGQzID0gRWRnZSgpKQotICAgICAgICA6IGNvZGVPcmln
aW4oY29kZU9yaWdpbikKLSAgICAgICAgLCBjb2RlT3JpZ2luRm9yRXhpdFRhcmdldChjb2RlT3Jp
Z2luKQorICAgIE5vZGUoTm9kZVR5cGUgb3AsIE5vZGVPcmlnaW4gbm9kZU9yaWdpbiwgT3BJbmZv
IGltbTEsIE9wSW5mbyBpbW0yLCBFZGdlIGNoaWxkMSA9IEVkZ2UoKSwgRWRnZSBjaGlsZDIgPSBF
ZGdlKCksIEVkZ2UgY2hpbGQzID0gRWRnZSgpKQorICAgICAgICA6IG9yaWdpbihub2RlT3JpZ2lu
KQogICAgICAgICAsIGNoaWxkcmVuKEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBjaGlsZDEsIGNoaWxk
MiwgY2hpbGQzKQogICAgICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcigp
KQogICAgICAgICAsIG1fcmVmQ291bnQoMSkKQEAgLTIyMiw5ICsyMTgsOCBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgfQogICAgIAogICAgIC8vIENvbnN0cnVjdCBhIG5vZGUgd2l0aCBhIHZhcmlhYmxl
IG51bWJlciBvZiBjaGlsZHJlbiBhbmQgdHdvIGltbWVkaWF0ZSB2YWx1ZXMuCi0gICAgTm9kZShW
YXJBcmdUYWcsIE5vZGVUeXBlIG9wLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIE9wSW5mbyBpbW0x
LCBPcEluZm8gaW1tMiwgdW5zaWduZWQgZmlyc3RDaGlsZCwgdW5zaWduZWQgbnVtQ2hpbGRyZW4p
Ci0gICAgICAgIDogY29kZU9yaWdpbihjb2RlT3JpZ2luKQotICAgICAgICAsIGNvZGVPcmlnaW5G
b3JFeGl0VGFyZ2V0KGNvZGVPcmlnaW4pCisgICAgTm9kZShWYXJBcmdUYWcsIE5vZGVUeXBlIG9w
LCBOb2RlT3JpZ2luIG5vZGVPcmlnaW4sIE9wSW5mbyBpbW0xLCBPcEluZm8gaW1tMiwgdW5zaWdu
ZWQgZmlyc3RDaGlsZCwgdW5zaWduZWQgbnVtQ2hpbGRyZW4pCisgICAgICAgIDogb3JpZ2luKG5v
ZGVPcmlnaW4pCiAgICAgICAgICwgY2hpbGRyZW4oQWRqYWNlbmN5TGlzdDo6VmFyaWFibGUsIGZp
cnN0Q2hpbGQsIG51bUNoaWxkcmVuKQogICAgICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKFZpcnR1
YWxSZWdpc3RlcigpKQogICAgICAgICAsIG1fcmVmQ291bnQoMSkKQEAgLTMzMiw3ICszMjcsNyBA
QCBzdHJ1Y3QgTm9kZSB7CiAgICAgYm9vbCBpc1N0cm9uZ2x5UHJvdmVkQ29uc3RhbnRJbihJbmxp
bmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIHJldHVybiAhIShm
bGFncygpICYgTm9kZUlzU3RhdGljQ29uc3RhbnQpCi0gICAgICAgICAgICAmJiBjb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZSA9PSBpbmxpbmVDYWxsRnJhbWU7CisgICAgICAgICAgICAmJiBvcmln
aW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lID09IGlubGluZUNhbGxGcmFtZTsKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBpc1N0cm9uZ2x5UHJvdmVkQ29uc3RhbnRJbihjb25zdCBDb2RlT3JpZ2lu
JiBjb2RlT3JpZ2luKQpAQCAtMTUzNywxMiArMTUzMiw5IEBAIHN0cnVjdCBOb2RlIHsKICAgICB9
CiAgICAgCiAgICAgLy8gTkIuIFRoaXMgY2xhc3MgbXVzdCBoYXZlIGEgdHJpdmlhbCBkZXN0cnVj
dG9yLgotICAgIAotICAgIC8vIFVzZWQgZm9yIGRldGVybWluaW5nIHdoYXQgYnl0ZWNvZGUgdGhp
cyBjYW1lIGZyb20uIFRoaXMgaXMgaW1wb3J0YW50IGZvcgotICAgIC8vIGRlYnVnZ2luZywgZXhj
ZXB0aW9ucywgYW5kIGV2ZW4gYmFzaWMgZXhlY3V0aW9uIHNlbWFudGljcy4KLSAgICBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW47Ci0gICAgLy8gQ29kZSBvcmlnaW4gZm9yIHdoZXJlIHRoZSBub2RlIGV4
aXRzIHRvLgotICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbkZvckV4aXRUYXJnZXQ7CisKKyAgICBO
b2RlT3JpZ2luIG9yaWdpbjsKKwogICAgIC8vIFJlZmVyZW5jZXMgdG8gdXAgdG8gMyBjaGlsZHJl
biwgb3IgbGlua3MgdG8gYSB2YXJpYWJsZSBsZW5ndGggc2V0IG9mIGNoaWxkcmVuLgogICAgIEFk
amFjZW5jeUxpc3QgY2hpbGRyZW47CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZU9yaWdpbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR05vZGVP
cmlnaW5faAorI2RlZmluZSBERkdOb2RlT3JpZ2luX2gKKworI2lmIEVOQUJMRShERkdfSklUKQor
CisjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CisKK3N0cnVjdCBOb2RlT3JpZ2luIHsKKyAgICBOb2RlT3JpZ2luKCkgeyB9CisgICAgCisg
ICAgZXhwbGljaXQgTm9kZU9yaWdpbihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCisgICAgICAgIDog
c2VtYW50aWMoY29kZU9yaWdpbikKKyAgICAgICAgLCBmb3JFeGl0KGNvZGVPcmlnaW4pCisgICAg
eworICAgIH0KKyAgICAKKyAgICBOb2RlT3JpZ2luKENvZGVPcmlnaW4gc2VtYW50aWMsIENvZGVP
cmlnaW4gZm9yRXhpdCkKKyAgICAgICAgOiBzZW1hbnRpYyhzZW1hbnRpYykKKyAgICAgICAgLCBm
b3JFeGl0KGZvckV4aXQpCisgICAgeworICAgIH0KKyAgICAKKyAgICBib29sIGlzU2V0KCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBzZW1hbnRpYy5pc1NldCgpOworICAgIH0KKyAgICAK
KyAgICAvLyBVc2VkIGZvciBkZXRlcm1pbmluZyB3aGF0IGJ5dGVjb2RlIHRoaXMgY2FtZSBmcm9t
LiBUaGlzIGlzIGltcG9ydGFudCBmb3IKKyAgICAvLyBkZWJ1Z2dpbmcsIGV4Y2VwdGlvbnMsIGFu
ZCBldmVuIGJhc2ljIGV4ZWN1dGlvbiBzZW1hbnRpY3MuCisgICAgQ29kZU9yaWdpbiBzZW1hbnRp
YzsKKyAgICAvLyBDb2RlIG9yaWdpbiBmb3Igd2hlcmUgdGhlIG5vZGUgZXhpdHMgdG8uCisgICAg
Q29kZU9yaWdpbiBmb3JFeGl0OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisj
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdOb2RlT3JpZ2luX2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
bnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHdoaWxlIChm
aXJzdE5vZGUtPmlzU2VtYW50aWNhbGx5U2tpcHBhYmxlKCkpCiAgICAgICAgICAgICAgICAgZmly
c3ROb2RlID0gYmxvY2stPmF0KCsrbm9kZUluZGV4KTsKICAgICAgICAgICAgIGlmIChmaXJzdE5v
ZGUtPm9wKCkgPT0gTG9vcEhpbnQKLSAgICAgICAgICAgICAgICAmJiBmaXJzdE5vZGUtPmNvZGVP
cmlnaW4gPT0gQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSkgeworICAgICAgICAgICAgICAgICYm
IGZpcnN0Tm9kZS0+b3JpZ2luLnNlbWFudGljID09IENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkp
IHsKICAgICAgICAgICAgICAgICB0YXJnZXQgPSBibG9jazsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBCbG9j
a0luc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7CiAgICAgICAgIAogICAgICAgICBC
YXNpY0Jsb2NrKiBuZXdSb290ID0gaW5zZXJ0aW9uU2V0Lmluc2VydCgwKTsKLSAgICAgICAgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+Y29kZU9yaWdpbjsKKyAgICAgICAg
Tm9kZU9yaWdpbiBvcmlnaW4gPSB0YXJnZXQtPmF0KDApLT5vcmlnaW47CiAgICAgICAgIAogICAg
ICAgICBWZWN0b3I8Tm9kZSo+IGxvY2FscyhiYXNlbGluZS0+bV9udW1DYWxsZWVSZWdpc3RlcnMp
OwogICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzOyArK2xvY2FsKSB7CkBAIC05NCwxMSArOTQsMTEgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2
YXJpYWJsZSA9IHByZXZpb3VzSGVhZC0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgICAg
ICBsb2NhbHNbbG9jYWxdID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKLSAgICAgICAgICAgICAgICBt
X2dyYXBoLCB2YXJpYWJsZS0+cHJlZGljdGlvbigpLCBFeHRyYWN0T1NSRW50cnlMb2NhbCwgY29k
ZU9yaWdpbiwKKyAgICAgICAgICAgICAgICBtX2dyYXBoLCB2YXJpYWJsZS0+cHJlZGljdGlvbigp
LCBFeHRyYWN0T1NSRW50cnlMb2NhbCwgb3JpZ2luLAogICAgICAgICAgICAgICAgIE9wSW5mbyh2
YXJpYWJsZS0+bG9jYWwoKS5vZmZzZXQoKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBu
ZXdSb290LT5hcHBlbmROb2RlKAotICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBN
b3ZIaW50LCBjb2RlT3JpZ2luLCBPcEluZm8odmFyaWFibGUtPmxvY2FsKCkub2Zmc2V0KCkpLAor
ICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBNb3ZIaW50LCBvcmlnaW4sIE9wSW5m
byh2YXJpYWJsZS0+bG9jYWwoKS5vZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgRWRnZShsb2Nh
bHNbbG9jYWxdKSk7CiAgICAgICAgIH0KIApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICBvbGROb2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF07CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9k
ZSgKLSAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIGNvZGVP
cmlnaW4sCisgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIFNldEFyZ3VtZW50LCBv
cmlnaW4sCiAgICAgICAgICAgICAgICAgT3BJbmZvKG9sZE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0
YSgpKSk7CiAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7
CiAgICAgICAgIH0KQEAgLTEyMSwxMSArMTIxLDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBwcmV2aW91c0hlYWQtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpOwogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGxvY2Fsc1tsb2NhbF07CiAgICAgICAg
ICAgICBuZXdSb290LT5hcHBlbmROb2RlKAotICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNO
b25lLCBTZXRMb2NhbCwgY29kZU9yaWdpbiwgT3BJbmZvKHZhcmlhYmxlKSwgRWRnZShub2RlKSk7
CisgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIFNldExvY2FsLCBvcmlnaW4sIE9w
SW5mbyh2YXJpYWJsZSksIEVkZ2Uobm9kZSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBuZXdSb290LT5hcHBlbmROb2RlKAotICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIEp1
bXAsIGNvZGVPcmlnaW4sCisgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwgb3Jp
Z2luLAogICAgICAgICAgICAgT3BJbmZvKGNyZWF0ZVByZUhlYWRlcihtX2dyYXBoLCBpbnNlcnRp
b25TZXQsIHRhcmdldCkpKTsKICAgICAgICAgCiAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRl
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZh
bGlkYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNjM5MTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIGlmICghbm9kZS0+aGFzUmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAotICAg
ICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9kZS0+
Y29kZU9yaWdpbiwgRWRnZShub2RlKSk7CisgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCAr
IDEsIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sIEVkZ2Uobm9kZSkpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShi
bG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FD
b252ZXJzaW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
Niw3ICsxNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlRmxhZ3Mg
cmVzdWx0ID0gcmVzdWx0Rm9yKGZvcm1hdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBVc2VL
aW5kIHVzZUtpbmQgPSB1c2VLaW5kRm9yKGZvcm1hdCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKDAsIFNwZWNOb25lLCBQaGksIENvZGVPcmlnaW4oKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBub2RlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgwLCBTcGVjTm9uZSwgUGhpLCBO
b2RlT3JpZ2luKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEluc2VydGVkIG5ldyBub2RlOiAi
LCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3Mo
cmVzdWx0KTsKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGogPSBibG9jay0+cHJlZGVjZXNzb3JzLnNpemUoKTsgai0tOykg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0g
YmxvY2stPnByZWRlY2Vzc29yc1tqXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVk
ZWNlc3Nvci0+YXBwZW5kTm9uVGVybWluYWwoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBVcHNpbG9uLCBwcmVkZWNlc3Nvci0+bGFzdCgpLT5jb2Rl
T3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9u
ZSwgVXBzaWxvbiwgcHJlZGVjZXNzb3ItPmxhc3QoKS0+b3JpZ2luLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBPcEluZm8obm9kZSksIEVkZ2UocHJlZGVjZXNzb3ItPnZhcmlhYmxl
c0F0VGFpbFtpXSwgdXNlS2luZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgCkBAIC0yMTEsNyArMjExLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHRoZSB2YWx1ZSB3YXMgYWxyZWFkeSBvbiB0aGUgc3RhY2su
CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsIFNwZWNOb25lLCBNb3ZIaW50LCBDb2RlT3JpZ2luKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsIFNwZWNOb25lLCBNb3ZIaW50LCBOb2RlT3JpZ2luKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyh2YXJpYWJsZS0+bG9jYWwo
KS5vZmZzZXQoKSksIEVkZ2Uobm9kZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NT
QUxvd2VyaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKSAhPSBOb3RUeXBlZEFycmF5ICYm
IG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kcygpKSB7CiAgICAgICAgICAgICAgICAg
Tm9kZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAg
ICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMiwgR2V0QXJyYXlMZW5ndGgsIG1fbm9kZS0+Y29k
ZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMiwgR2V0
QXJyYXlMZW5ndGgsIG1fbm9kZS0+b3JpZ2luLAogICAgICAgICAgICAgICAgICAgICBPcEluZm8o
bV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIGJhc2UsIHN0b3JhZ2UpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSA9
IEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNlKTsKQEAgLTEwNiwxMCArMTA2LDEwIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBzdG9yYWdlID0gRWRnZSgpOwogICAgICAgICAKICAgICAgICAgTm9k
ZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9k
ZUluZGV4LCBTcGVjSW50MzIsIEdldEFycmF5TGVuZ3RoLCBtX25vZGUtPmNvZGVPcmlnaW4sCisg
ICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyLCBHZXRBcnJheUxlbmd0aCwgbV9ub2Rl
LT5vcmlnaW4sCiAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQo
KSksIGJhc2UsIHN0b3JhZ2UpOwogICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAot
ICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMiwgQ2hlY2tJbkJvdW5kcywgbV9ub2Rl
LT5jb2RlT3JpZ2luLAorICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMiwgQ2hlY2tJ
bkJvdW5kcywgbV9ub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICBpbmRleCwgRWRnZShsZW5ndGgs
IEtub3duSW50MzJVc2UpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcsNyArMjU3LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBpc01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgICAgICBHUFJSZWcgbG9jYWxHbG9i
YWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJl
bW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAg
bV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLmdsb2Jh
bE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luKSksIGxvY2FsR2xvYmFsT2JqZWN0
R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBp
bGVyOjpBZGRyZXNzKHJlc3VsdFBheWxvYWRHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zm
c2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5jb21wYXJlMzIo
aW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5vdEVxdWFsIDogSklUQ29tcGlsZXI6OkVxdWFsLCBsb2Nh
bEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCByZXN1bHRQYXlsb2FkR1BS
KTsKICAgICB9CkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVQZWVwaAogICAgCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9
IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2Jq
ZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+
Y29kZU9yaWdpbikpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpnbG9i
YWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIGJyYW5j
aFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9i
YWxPYmplY3RHUFIsIGludmVydCA/IG5vdFRha2VuIDogdGFrZW4pOwogICAgIH0KQEAgLTY1Nyw3
ICs2NTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAg
SklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciB0YXJnZXRUb0NoZWNrOwogICAgIEpJVENvbXBpbGVy
OjpKdW1wTGlzdCBzbG93UGF0aDsKIAotICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9k
ZS0+Y29kZU9yaWdpbik7CisgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihub2RlLT5vcmln
aW4uc2VtYW50aWMpOwogICAgIAogICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpKSk7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFB0cldpdGhQ
YXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZVBheWxvYWRHUFIsIHRhcmdldFRv
Q2hlY2spKTsKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2Fs
bChOb2RlKiBub2RlCiAKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5
bG9hZEdQUiwgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkp
OwogCi0gICAgbV9qaXQuYWRkSlNDYWxsKGZhc3RDYWxsLCBzbG93Q2FsbCwgdGFyZ2V0VG9DaGVj
aywgY2FsbFR5cGUsIGNhbGxlZVBheWxvYWRHUFIsIG5vZGUtPmNvZGVPcmlnaW4pOworICAgIG1f
aml0LmFkZEpTQ2FsbChmYXN0Q2FsbCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hlY2ssIGNhbGxUeXBl
LCBjYWxsZWVQYXlsb2FkR1BSLCBub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogfQogCiB0ZW1wbGF0
ZTxib29sIHN0cmljdD4KQEAgLTE0NjYsNyArMTQ2Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RP
ZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4p
KSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
KSk7CiAKICAgICAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsK
ICAgICB9CkBAIC0xNTkyLDcgKzE1OTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2Jq
ZWN0T3JPdGhlckJyCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwg
Ci0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ3Jh
cGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbikpKSk7CisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5n
bG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAg
ICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAg
LTMxMzUsNyArMzEzNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgTmV3QXJyYXk6IHsKLSAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPmNvZGVPcmlnaW4pOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSAmJiAhaGFzQXJyYXlT
dG9yYWdlKG5vZGUtPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVy
aW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSk7CiAgICAgICAgICAgICBBU1NFUlQo
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSA9PSBub2RlLT5pbmRleGluZ1R5cGUoKSk7CkBAIC0z
MzAzLDcgKzMzMDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgfQogCiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOiB7Ci0gICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5jb2RlT3JpZ2luKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
aml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAg
ICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkgJiYgIWhhc0FycmF5U3Rv
cmFnZShub2RlLT5pbmRleGluZ1R5cGUoKSkpIHsKICAgICAgICAgICAgIFNwZWN1bGF0ZVN0cmlj
dEludDMyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CkBAIC0zMzc2LDcgKzMzNzYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgfQogICAgICAgICAKICAgICBjYXNl
IE5ld0FycmF5QnVmZmVyOiB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2luKTsKKyAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEluZGV4aW5nVHlwZSBpbmRl
eGluZ1R5cGUgPSBub2RlLT5pbmRleGluZ1R5cGUoKTsKICAgICAgICAgaWYgKCFnbG9iYWxPYmpl
Y3QtPmlzSGF2aW5nQUJhZFRpbWUoKSAmJiAhaGFzQXJyYXlTdG9yYWdlKGluZGV4aW5nVHlwZSkp
IHsKICAgICAgICAgICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzID0gbm9kZS0+bnVtQ29uc3RhbnRz
KCk7CkBAIC0zNDM2LDcgKzM0MzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAg
IG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoT25lQXJndW1lbnRGb3JUeXBlKG5vZGUtPnR5cGVk
QXJyYXlUeXBlKCkpLAogICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT50
eXBlZEFycmF5U3RydWN0dXJlKG5vZGUtPnR5cGVkQXJyYXlUeXBlKCkpLApAQCAtMzQ4Niw3ICsz
NDg2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBtX2ppdC5tb3ZlKHRoaXNWYWx1ZVBheWxvYWRHUFIsIHRlbXBHUFIpOwogICAgICAgICBtX2pp
dC5tb3ZlKHRoaXNWYWx1ZVRhZ0dQUiwgdGVtcFRhZ0dQUik7CiAgICAgICAgIEpfSklUT3BlcmF0
aW9uX0VKIGZ1bmN0aW9uOwotICAgICAgICBpZiAobV9qaXQuZ3JhcGgoKS5leGVjdXRhYmxlRm9y
KG5vZGUtPmNvZGVPcmlnaW4pLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgaWYgKG1faml0Lmdy
YXBoKCkuZXhlY3V0YWJsZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5pc1N0cmljdE1vZGUo
KSkKICAgICAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0OwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpczsKQEAgLTM2NzEs
NyArMzY3MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAog
ICAgICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVk
R2V0QnlJZChub2RlLT5jb2RlT3JpZ2luLCBJbnZhbGlkR1BSUmVnLCBiYXNlR1BSLCByZXN1bHRU
YWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7CisgICAg
ICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJl
ZywgYmFzZUdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLT5pZGVudGlm
aWVyTnVtYmVyKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBs
aWNpdGx5KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzY5MSw3ICszNjkxLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6
Tm90RXF1YWwsIGJhc2VUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAg
ICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5jb2RlT3JpZ2luLCBiYXNl
VGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBu
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwpOworICAgICAgICAgICAgY2FjaGVkR2V0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCBy
ZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwg
bm90Q2VsbCk7CiAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdH
UFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTM3MjUsNyArMzcyNSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChu
b2RlLT5jb2RlT3JpZ2luLCBJbnZhbGlkR1BSUmVnLCBiYXNlR1BSLCByZXN1bHRUYWdHUFIsIHJl
c3VsdFBheWxvYWRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1
bXAoKSwgRG9udFNwaWxsKTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBJbnZhbGlkR1BSUmVnLCBiYXNlR1BSLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBh
eWxvYWRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwg
RG9udFNwaWxsKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGlj
aXRseSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM3NDcsNyArMzc0Nyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLCBiYXNlVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAg
ICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+Y29kZU9yaWdpbiwgYmFzZVRh
Z0dQUiwgYmFzZVBheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsLCBEb250U3BpbGwpOworICAgICAgICAgICAg
Y2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VUYWdHUFIsIGJhc2VQYXls
b2FkR1BSLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsKTsKICAgICAgICAgCiAgICAgICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSwgVXNlQ2hpbGRy
ZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzkzNyw3ICszOTM3
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBH
UFJSZWcgdmFsdWVQYXlsb2FkR1BSID0gdmFsdWUucGF5bG9hZEdQUigpOwogICAgICAgICBHUFJS
ZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBjYWNoZWRQ
dXRCeUlkKG5vZGUtPmNvZGVPcmlnaW4sIGJhc2VHUFIsIHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxv
YWRHUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgTm90RGlyZWN0KTsK
KyAgICAgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZh
bHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKSwgTm90RGlyZWN0KTsKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwog
ICAgICAgICBicmVhazsKQEAgLTM5NTMsNyArMzk1Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVnIHZhbHVlUGF5bG9hZEdQUiA9IHZh
bHVlLnBheWxvYWRHUFIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdw
cigpOwogICAgICAgICAKLSAgICAgICAgY2FjaGVkUHV0QnlJZChub2RlLT5jb2RlT3JpZ2luLCBi
YXNlR1BSLCB2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5p
ZGVudGlmaWVyTnVtYmVyKCksIERpcmVjdCk7CisgICAgICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSLCBz
Y3JhdGNoR1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIERpcmVjdCk7CiAKICAgICAgICAg
bm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDA4OSw3ICs0MDg5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaXNNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIEdQUlJlZyBsb2Nh
bEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICAgICAg
R1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsK
LSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+Y29kZU9yaWdpbikpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgICAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjpn
bG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7IAogICAgICAgICAg
ICAgbV9qaXQuY29tcGFyZTMyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RH
UFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgfQpAQCAt
NDI2OCwxMSArNDI2OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDcmVhdGVkID0gbV9q
aXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCB2YWx1ZVRhZ0dQUiwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKICAgICAgICAgCi0gICAgICAgIGlmIChub2RlLT5j
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkgeworICAgICAgICBpZiAobm9kZS0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZSkgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBu
b3RDcmVhdGVkLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVJbmxpbmVkQXJndW1lbnRzLCByZXN1bHRH
UFIsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
KSk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxs
RnJhbWUpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChub3RDcmVhdGVkLCB0aGlzLCBvcGVy
YXRpb25DcmVhdGVBcmd1bWVudHMsIHJlc3VsdEdQUikpOwpAQCAtNDI5Miw3ICs0MjkyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIG5vdENyZWF0ZWQgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6RXF1
YWwsIGFjdGl2YXRpb25WYWx1ZVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFs
dWVUYWcpKTsKIAotICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBtX2ppdC5zeW1i
b2xUYWJsZUZvcihub2RlLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJv
bFRhYmxlID0gbV9qaXQuc3ltYm9sVGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgaW50IHJlZ2lzdGVyc09mZnNldCA9IEpTQWN0aXZhdGlvbjo6cmVnaXN0ZXJzT2Zmc2V0
KHN5bWJvbFRhYmxlKTsKIAogICAgICAgICBpbnQgYnl0ZWNvZGVDYXB0dXJlU3RhcnQgPSBzeW1i
b2xUYWJsZS0+Y2FwdHVyZVN0YXJ0KCk7CkBAIC00MzMwLDExICs0MzMwLDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgY3JlYXRlZCA9IG1faml0LmJyYW5jaFRlc3QzMigKICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpOb25aZXJvLCB1bm1vZGlmaWVkQXJndW1lbnRzVmFsdWVQYXlsb2FkR1BSKTsKICAgICAgICAg
Ci0gICAgICAgIGlmIChub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkgeworICAgICAg
ICBpZiAobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkgewogICAgICAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAog
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVkLCB0aGlzLCBvcGVyYXRpb25UZWFyT2ZmSW5saW5l
ZEFyZ3VtZW50cywgTm9SZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgIHVubW9kaWZpZWRBcmd1
bWVudHNWYWx1ZVBheWxvYWRHUFIsIGFjdGl2YXRpb25WYWx1ZVBheWxvYWRHUFIsIG5vZGUtPmNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSk7CisgICAgICAgICAgICAgICAgICAgIHVubW9kaWZp
ZWRBcmd1bWVudHNWYWx1ZVBheWxvYWRHUFIsIGFjdGl2YXRpb25WYWx1ZVBheWxvYWRHUFIsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQ
YXRoQ2FsbCgKQEAgLTQzNDksMTIgKzQzNDksMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOiB7CiAg
ICAgICAgIEFTU0VSVCghaXNFbXB0eVNwZWN1bGF0aW9uKAogICAgICAgICAgICAgbV9zdGF0ZS52
YXJpYWJsZXMoKS5vcGVyYW5kKAotICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCkuYXJndW1l
bnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9yaWdpbikpLm1fdHlwZSkpOworICAgICAgICAgICAg
ICAgIG1faml0LmdyYXBoKCkuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSkubV90eXBlKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICBV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDMy
KAogICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6dGFnRm9yKG1faml0LmdyYXBoKCkubWFjaGluZUFyZ3VtZW50c1JlZ2lz
dGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4pKSwKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
dGFnRm9yKG1faml0LmdyYXBoKCkubWFjaGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLAogICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpF
bXB0eVZhbHVlVGFnKSkpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7
CkBAIC00MzY2LDE2ICs0MzY2LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIGlmICghaXNFbXB0eVNwZWN1bGF0aW9uKAogICAg
ICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKLSAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5jb2RlT3JpZ2lu
KSkubV90eXBlKSkgeworICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLmFyZ3VtZW50
c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLm1fdHlwZSkpIHsKICAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQXJndW1lbnRzRXNjYXBlZCwg
SlNWYWx1ZVJlZ3MoKSwgMCwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKICAgICAg
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6dGFnRm9yKG1faml0LmdyYXBoKCkubWFjaGluZUFyZ3VtZW50c1JlZ2lz
dGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4pKSwKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6OnRhZ0ZvcihtX2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwKICAgICAgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEFT
U0VSVCghbm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICBBU1NFUlQo
IW5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICBtX2ppdC5s
b2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIHJl
c3VsdEdQUik7CiAgICAgICAgIG1faml0LnN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0R1BS
KTsKICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTQzOTAsMTIgKzQz
OTAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgY3JlYXRlZCA9IG1faml0LmJyYW5jaDMyKAog
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgSklUQ29tcGls
ZXI6OnRhZ0ZvcihtX2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihub2Rl
LT5jb2RlT3JpZ2luKSksCisgICAgICAgICAgICBKSVRDb21waWxlcjo6dGFnRm9yKG1faml0Lmdy
YXBoKCkubWFjaGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LAogICAgICAgICAgICAgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKICAg
ICAgICAgCi0gICAgICAgIGlmIChub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkgewor
ICAgICAgICBpZiAobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkgewogICAg
ICAgICAgICAgbV9qaXQubW92ZSgKLSAgICAgICAgICAgICAgICBJbW0zMihub2RlLT5jb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpLAorICAgICAgICAgICAg
ICAgIEltbTMyKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
cy5zaXplKCkgLSAxKSwKICAgICAgICAgICAgICAgICByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9h
ZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC00NDEx
LDcgKzQ0MTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgY3JlYXRlZCwgdGhpcywg
b3BlcmF0aW9uR2V0QXJndW1lbnRzTGVuZ3RoLAogICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksCi0gICAgICAgICAgICAgICAgbV9qaXQu
Z3JhcGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9yaWdpbikub2Zm
c2V0KCkpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVudHNS
ZWdpc3RlckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLm9mZnNldCgpKSk7CiAgICAgICAgIAog
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9k
ZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDQyNywyNCArNDQyNywyNCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBpZiAoIWlzRW1w
dHlTcGVjdWxhdGlvbigKICAgICAgICAgICAgICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJh
bmQoCi0gICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCkuYXJndW1lbnRzUmVnaXN0ZXJG
b3Iobm9kZS0+Y29kZU9yaWdpbikpLm1fdHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9q
aXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKS5t
X3R5cGUpKSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAg
IEFyZ3VtZW50c0VzY2FwZWQsIEpTVmFsdWVSZWdzKCksIDAsCiAgICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwK
LSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnRhZ0ZvcihtX2ppdC5ncmFwaCgpLm1h
Y2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5jb2RlT3JpZ2luKSksCisgICAgICAgICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjp0YWdGb3IobV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1l
bnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksCiAgICAgICAgICAgICAgICAg
ICAgIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBpbmRleEdQ
UiwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgICAgICAKLSAgICAgICAgaWYgKG5vZGUtPmNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgIGlmIChub2RlLT5vcmlnaW4uc2Vt
YW50aWMuaW5saW5lQ2FsbEZyYW1lKSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAog
ICAgICAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLAogICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
QWJvdmVPckVxdWFsLAogICAgICAgICAgICAgICAgICAgICByZXN1bHRQYXlsb2FkR1BSLAotICAg
ICAgICAgICAgICAgICAgICBJbW0zMihub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzLnNpemUoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgSW1tMzIobm9kZS0+b3Jp
Z2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAg
ICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsCkBAIC00NDU2LDEzICs0NDU2LDEzIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93QXJndW1lbnQ7CiAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wTGlzdCBzbG93QXJndW1lbnRPdXRPZkJvdW5kczsKLSAgICAgICAgaWYgKG1faml0
LnN5bWJvbFRhYmxlRm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5zbG93QXJndW1lbnRzKCkpIHsKLSAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZSk7CisgICAgICAgIGlmIChtX2ppdC5zeW1ib2xUYWJsZUZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLT5zbG93QXJndW1lbnRzKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFub2Rl
LT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIGNvbnN0IFNs
b3dBcmd1bWVudCogc2xvd0FyZ3VtZW50cyA9IG1faml0LmdyYXBoKCkubV9zbG93QXJndW1lbnRz
LmdldCgpOwogICAgICAgICAgICAgc2xvd0FyZ3VtZW50T3V0T2ZCb3VuZHMuYXBwZW5kKAogICAg
ICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwKLSAgICAgICAgICAgICAgICAgICAgSW1tMzIo
bV9qaXQuc3ltYm9sVGFibGVGb3Iobm9kZS0+Y29kZU9yaWdpbiktPnBhcmFtZXRlckNvdW50KCkp
KSk7CisgICAgICAgICAgICAgICAgICAgIEltbTMyKG1faml0LnN5bWJvbFRhYmxlRm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPnBhcmFtZXRlckNvdW50KCkpKSk7CiAKICAgICAgICAgICAgIENP
TVBJTEVfQVNTRVJUKHNpemVvZihTbG93QXJndW1lbnQpID09IDgsIFNsb3dBcmd1bWVudF9zaXpl
X2lzX2VpZ2h0X2J5dGVzKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoSW1tUHRyKHNsb3dBcmd1
bWVudHMpLCByZXN1bHRQYXlsb2FkR1BSKTsKQEAgLTQ0ODksMTIgKzQ0ODksMTIgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC5sb2FkMzIo
CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6QmFzZUluZGV4KAogICAgICAgICAgICAgICAgIEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCByZXN1bHRQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6
VGltZXNFaWdodCwKLSAgICAgICAgICAgICAgICBtX2ppdC5vZmZzZXRPZkFyZ3VtZW50c0luY2x1
ZGluZ1RoaXMobm9kZS0+Y29kZU9yaWdpbikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLAorICAgICAgICAgICAgICAgIG1faml0Lm9mZnNldE9m
QXJndW1lbnRzSW5jbHVkaW5nVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwKICAgICAgICAgICAg
IHJlc3VsdFRhZ0dQUik7CiAgICAgICAgIG1faml0LmxvYWQzMigKICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpCYXNlSW5kZXgoCiAgICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIHJlc3VsdFBheWxvYWRHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LAotICAgICAg
ICAgICAgICAgIG1faml0Lm9mZnNldE9mQXJndW1lbnRzSW5jbHVkaW5nVGhpcyhub2RlLT5jb2Rl
T3JpZ2luKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
cGF5bG9hZCkpLAorICAgICAgICAgICAgICAgIG1faml0Lm9mZnNldE9mQXJndW1lbnRzSW5jbHVk
aW5nVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksCiAgICAgICAgICAgICByZXN1bHRQYXls
b2FkR1BSKTsKICAgICAgICAgICAgIAogICAgICAgICBzbG93QXJndW1lbnQubGluaygmbV9qaXQp
OwpAQCAtNDUxMywxNiArNDUxMywxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIHNsb3dQYXRoLmFwcGVuZCgKICAgICAgICAgICAgIG1faml0LmJy
YW5jaDMyKAogICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6dGFnRm9yKG1faml0LmdyYXBoKCkubWFjaGluZUFyZ3VtZW50
c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4pKSwKKyAgICAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6dGFnRm9yKG1faml0LmdyYXBoKCkubWFjaGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLAogICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpFbXB0eVZhbHVlVGFnKSkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1
c3RlZEltbTMyKDEpLCBpbmRleEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7Ci0gICAgICAgIGlmIChu
b2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkgeworICAgICAgICBpZiAobm9kZS0+b3Jp
Z2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkgewogICAgICAgICAgICAgc2xvd1BhdGguYXBw
ZW5kKAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLAogICAgICAgICAgICAgICAgICAgICByZXN1bHRQ
YXlsb2FkR1BSLAotICAgICAgICAgICAgICAgICAgICBJbW0zMihub2RlLT5jb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAg
SW1tMzIobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKSkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZCgK
ICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKQEAgLTQ1MzMsMTMgKzQ1MzMsMTMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dBcmd1bWVudDsKICAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXBMaXN0IHNsb3dBcmd1bWVudE91dE9mQm91bmRzOwotICAgICAgICBpZiAobV9qaXQu
c3ltYm9sVGFibGVGb3Iobm9kZS0+Y29kZU9yaWdpbiktPnNsb3dBcmd1bWVudHMoKSkgewotICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
KTsKKyAgICAgICAgaWYgKG1faml0LnN5bWJvbFRhYmxlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyktPnNsb3dBcmd1bWVudHMoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW5vZGUt
Pm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgY29uc3QgU2xv
d0FyZ3VtZW50KiBzbG93QXJndW1lbnRzID0gbV9qaXQuZ3JhcGgoKS5tX3Nsb3dBcmd1bWVudHMu
Z2V0KCk7CiAgICAgICAgICAgICBzbG93QXJndW1lbnRPdXRPZkJvdW5kcy5hcHBlbmQoCiAgICAg
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAotICAgICAgICAgICAgICAgICAgICBJbW0zMiht
X2ppdC5zeW1ib2xUYWJsZUZvcihub2RlLT5jb2RlT3JpZ2luKS0+cGFyYW1ldGVyQ291bnQoKSkp
KTsKKyAgICAgICAgICAgICAgICAgICAgSW1tMzIobV9qaXQuc3ltYm9sVGFibGVGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+cGFyYW1ldGVyQ291bnQoKSkpKTsKIAogICAgICAgICAgICAgQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKFNsb3dBcmd1bWVudCkgPT0gOCwgU2xvd0FyZ3VtZW50X3NpemVf
aXNfZWlnaHRfYnl0ZXMpOwogICAgICAgICAgICAgbV9qaXQubW92ZShJbW1QdHIoc2xvd0FyZ3Vt
ZW50cyksIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtNDU2NSwyNyArNDU2NSwyNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0LmxvYWQzMigK
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoCiAgICAgICAgICAgICAgICAgR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHJlc3VsdFBheWxvYWRHUFIsIEpJVENvbXBpbGVyOjpU
aW1lc0VpZ2h0LAotICAgICAgICAgICAgICAgIG1faml0Lm9mZnNldE9mQXJndW1lbnRzSW5jbHVk
aW5nVGhpcyhub2RlLT5jb2RlT3JpZ2luKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksCisgICAgICAgICAgICAgICAgbV9qaXQub2Zmc2V0T2ZB
cmd1bWVudHNJbmNsdWRpbmdUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgKyBPQkpFQ1RfT0ZG
U0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLAogICAgICAgICAgICAg
cmVzdWx0VGFnR1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKAogICAgICAgICAgICAgSklUQ29t
cGlsZXI6OkJhc2VJbmRleCgKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgcmVzdWx0UGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsCi0gICAgICAg
ICAgICAgICAgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRpbmdUaGlzKG5vZGUtPmNvZGVP
cmlnaW4pICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5w
YXlsb2FkKSksCisgICAgICAgICAgICAgICAgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRp
bmdUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwKICAgICAgICAgICAgIHJlc3VsdFBheWxv
YWRHUFIpOwogICAgICAgICAKLSAgICAgICAgaWYgKG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lKSB7CisgICAgICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZy
YW1lKSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAg
ICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVy
YXRpb25HZXRJbmxpbmVkQXJndW1lbnRCeVZhbCwKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwKLSAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9y
aWdpbikub2Zmc2V0KCksCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lLCBpbmRleEdQUikpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFw
aCgpLm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLm9m
ZnNldCgpLAorICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lLCBpbmRleEdQUikpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uR2V0QXJndW1lbnRCeVZhbCwK
ICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXls
b2FkR1BSKSwKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1l
bnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9yaWdpbikub2Zmc2V0KCksCisgICAgICAgICAgICAg
ICAgICAgIG1faml0LmdyYXBoKCkubWFjaGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykub2Zmc2V0KCksCiAgICAgICAgICAgICAgICAgICAgIGluZGV4R1BSKSk7
CiAgICAgICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZU5vblBlCiAgICAgICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAg
ICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0Lmdw
cigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFs
T2JqZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG9wZXJhbmQtPmNvZGVPcmlnaW4pKSwg
bG9jYWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6Omdsb2Jh
bE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQu
Y29tcGFyZVB0cihpbnZlcnQgPyBKSVRDb21waWxlcjo6Tm90RXF1YWwgOiBKSVRDb21waWxlcjo6
RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3Vs
dEdQUik7CiAgICAgfQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5v
blNwZWN1bGF0aXZlUGVlcGgKIAogICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIg
PSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9i
amVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG9wZXJhbmQtPmNvZGVP
cmlnaW4pKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2Jq
ZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBicmFuY2hQdHIo
SklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xvYmFsT2Jq
ZWN0R1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6IHRha2VuKTsKICAgICB9CkBAIC02ODMsNyArNjgz
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgIEpJVENv
bXBpbGVyOjpEYXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVjazsKICAgICBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aDsKIAotICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+Y29kZU9y
aWdpbik7CisgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwogICAgIAogICAgIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlR1BSLCB0YXJnZXRUb0NoZWNrLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cigwKSk7CiAKQEAgLTcxMiw3ICs3MTIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgCiAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRHUFIsIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRF
eHBsaWNpdGx5KTsKICAgICAKLSAgICBtX2ppdC5hZGRKU0NhbGwoZmFzdENhbGwsIHNsb3dDYWxs
LCB0YXJnZXRUb0NoZWNrLCBjYWxsVHlwZSwgY2FsbGVlR1BSLCBtX2N1cnJlbnROb2RlLT5jb2Rl
T3JpZ2luKTsKKyAgICBtX2ppdC5hZGRKU0NhbGwoZmFzdENhbGwsIHNsb3dDYWxsLCB0YXJnZXRU
b0NoZWNrLCBjYWxsVHlwZSwgY2FsbGVlR1BSLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50
aWMpOwogfQogCiAvLyBDbGFuZyBzaG91bGQgYWxsb3cgdW5yZWFjaGFibGUgW1tjbGFuZzo6ZmFs
bHRocm91Z2hdXSBpbiB0ZW1wbGF0ZSBmdW5jdGlvbnMgaWYgYW55IHRlbXBsYXRlIGV4cGFuc2lv
biB1c2VzIGl0CkBAIC0xODcyLDcgKzE4NzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlT2JqZWN0T3JPdGhlCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0
KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luKSkpKTsK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwog
CiAgICAgICAgIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAg
fQpAQCAtMjAxMSw3ICsyMDExLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9y
T3RoZXJCcgogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpFcXVhbCwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIAotICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCku
Z2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4pKSkpOworICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CiAKICAgICAgICAg
aXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICB9CkBAIC0yODc5
LDkgKzI4NzksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBHUFJSZWcgYXJnM0dQUiA9IGFyZzMuZ3ByKCk7CiAgICAgICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJl
Y3QpCi0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Io
bm9kZS0+Y29kZU9yaWdpbikgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0LCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsK
KyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5p
c1N0cmljdE1vZGVGb3Iobm9kZS0+Y29kZU9yaWdpbikgPyBvcGVyYXRpb25QdXRCeVZhbFN0cmlj
dCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0LCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BS
KTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRp
b25QdXRCeVZhbE5vblN0cmljdCwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICAgICAgYWxyZWFkeUhh
bmRsZWQgPSB0cnVlOwpAQCAtMzQ3NCw3ICszNDc0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBOZXdBcnJheTog
ewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbik7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpOwogICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGlt
ZSgpICYmICFoYXNBcnJheVN0b3JhZ2Uobm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7CiAgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVG
b3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKTsKICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gbm9k
ZS0+aW5kZXhpbmdUeXBlKCkpOwpAQCAtMzY0NSw3ICszNjQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBOZXdB
cnJheVdpdGhTaXplOiB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2luKTsKKyAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5p
c0hhdmluZ0FCYWRUaW1lKCkgJiYgIWhhc0FycmF5U3RvcmFnZShub2RlLT5pbmRleGluZ1R5cGUo
KSkpIHsKICAgICAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBzaXplKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CkBAIC0zNzE1LDcgKzM3MTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOiB7Ci0gICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9i
amVjdEZvcihub2RlLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CiAgICAgICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBub2RlLT5pbmRleGlu
Z1R5cGUoKTsKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSAm
JiAhaGFzQXJyYXlTdG9yYWdlKGluZGV4aW5nVHlwZSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVk
IG51bUVsZW1lbnRzID0gbm9kZS0+bnVtQ29uc3RhbnRzKCk7CkBAIC0zNzcyLDcgKzM3NzIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBH
UFJSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmln
aW4pOworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmdy
YXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlX
aXRoT25lQXJndW1lbnRGb3JUeXBlKG5vZGUtPnR5cGVkQXJyYXlUeXBlKCkpLAogICAgICAgICAg
ICAgICAgIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlKG5vZGUt
PnR5cGVkQXJyYXlUeXBlKCkpLApAQCAtMzgxNiw3ICszODE2LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgVHJ1c3RlZEltbTMyKEZpbmFs
T2JqZWN0VHlwZSkpKTsKICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFsdWVHUFIsIHRlbXBHUFIp
OwogICAgICAgICBKX0pJVE9wZXJhdGlvbl9FSiBmdW5jdGlvbjsKLSAgICAgICAgaWYgKG1faml0
LmdyYXBoKCkuZXhlY3V0YWJsZUZvcihub2RlLT5jb2RlT3JpZ2luKS0+aXNTdHJpY3RNb2RlKCkp
CisgICAgICAgIGlmIChtX2ppdC5ncmFwaCgpLmV4ZWN1dGFibGVGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlv
blRvVGhpc1N0cmljdDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVuY3Rpb24gPSBvcGVy
YXRpb25Ub1RoaXM7CkBAIC0zOTkxLDcgKzM5OTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGJhc2UudXNlKCk7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+Y29kZU9yaWdp
biwgYmFzZUdQUiwgcmVzdWx0R1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpOworICAgICAg
ICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHJlc3Vs
dEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJlcigpKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGlj
aXRseSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQwMDgsNyArNDAwOCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVy
OjpOb25aZXJvLCBiYXNlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgICAgICAK
LSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+Y29kZU9yaWdpbiwgYmFzZUdQUiwgcmVz
dWx0R1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwpOworICAgICAgICAgICAg
Y2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHJlc3VsdEdQUiwg
bm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsKTsKICAgICAgICAgCiAgICAgICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNp
dGx5KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDA0MCw3ICs0MDQwLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRC
eUlkKG5vZGUtPmNvZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS0+aWRlbnRpZmll
ck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgICAgICAgICAg
Y2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHJlc3VsdEdQUiwg
bm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
NDA1OCw3ICs0MDU4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2pp
dC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIGJhc2VHUFIsIEdQUkluZm86OnRh
Z01hc2tSZWdpc3Rlcik7CiAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2Rl
LT5jb2RlT3JpZ2luLCBiYXNlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIo
KSwgbm90Q2VsbCwgRG9udFNwaWxsKTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1i
ZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsKTsKICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNDI1Miw3ICs0MjUyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5n
cHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAg
ICAKLSAgICAgICAgY2FjaGVkUHV0QnlJZChub2RlLT5jb2RlT3JpZ2luLCBiYXNlR1BSLCB2YWx1
ZUdQUiwgc2NyYXRjaEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBOb3REaXJlY3QpOwor
ICAgICAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFs
dWVHUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgTm90RGlyZWN0KTsK
IAogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00MjY3LDcgKzQy
NjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQ
UiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBjYWNoZWRQdXRCeUlkKG5vZGUt
PmNvZGVPcmlnaW4sIGJhc2VHUFIsIHZhbHVlR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5pZGVudGlm
aWVyTnVtYmVyKCksIERpcmVjdCk7CisgICAgICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZUdQUiwgc2NyYXRjaEdQUiwgbm9kZS0+aWRlbnRpZmll
ck51bWJlcigpLCBEaXJlY3QpOwogCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBi
cmVhazsKQEAgLTQzODQsNyArNDM4NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZt
X2ppdCk7CiAgICAgICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEds
b2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyByZW1vdGVHbG9iYWxPYmplY3RH
UFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pKSwgbG9j
YWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9i
YWxPYmplY3RHUFIpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1v
dGVHbG9iYWxPYmplY3RHUFIpOyAKICAgICAgICAgICAgIG1faml0LmNvbXBhcmVQdHIoSklUQ29t
cGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BS
LCByZXN1bHQuZ3ByKCkpOwogICAgICAgICB9CkBAIC00NTI5LDcgKzQ1MjksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBDcmVhdGVBY3RpdmF0aW9uOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFub2RlLT5j
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFub2Rl
LT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgCiAgICAgICAgIEpT
VmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgdmFsdWUpOwpAQCAtNDU2NiwxMSArNDU2NiwxMSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDcmVhdGVkID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJ
VENvbXBpbGVyOjpaZXJvLCByZXN1bHRHUFIpOwogICAgICAgICAKLSAgICAgICAgaWYgKG5vZGUt
PmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgIGlmIChub2RlLT5vcmlnaW4u
c2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAg
IG5vdENyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUlubGluZWRBcmd1bWVudHMsIHJlc3Vs
dEdQUiwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJh
bWUpKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNh
bGxGcmFtZSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKG5vdENyZWF0ZWQsIHRoaXMsIG9w
ZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cywgcmVzdWx0R1BSKSk7CkBAIC00NTgxLDcgKzQ1ODEsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgfQogCiAgICAg
Y2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjogewotICAgICAgICBSRUxFQVNFX0FTU0VSVCghbm9kZS0+
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbm9k
ZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSk7CiAKICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgYWN0aXZhdGlvblZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC00NTkwLDcgKzQ1OTAsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgbm90Q3JlYXRlZCA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6WmVybywgYWN0
aXZhdGlvblZhbHVlR1BSKTsKIAotICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBt
X2ppdC5zeW1ib2xUYWJsZUZvcihub2RlLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgU3ltYm9sVGFi
bGUqIHN5bWJvbFRhYmxlID0gbV9qaXQuc3ltYm9sVGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKICAgICAgICAgaW50IHJlZ2lzdGVyc09mZnNldCA9IEpTQWN0aXZhdGlvbjo6cmVnaXN0
ZXJzT2Zmc2V0KHN5bWJvbFRhYmxlKTsKIAogICAgICAgICBpbnQgYnl0ZWNvZGVDYXB0dXJlU3Rh
cnQgPSBzeW1ib2xUYWJsZS0+Y2FwdHVyZVN0YXJ0KCk7CkBAIC00NjIzLDExICs0NjIzLDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBjcmVhdGVkID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpO
b25aZXJvLCB1bm1vZGlmaWVkQXJndW1lbnRzVmFsdWVHUFIpOwogCi0gICAgICAgIGlmIChub2Rl
LT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkgeworICAgICAgICBpZiAobm9kZS0+b3JpZ2lu
LnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAg
ICBjcmVhdGVkLCB0aGlzLCBvcGVyYXRpb25UZWFyT2ZmSW5saW5lZEFyZ3VtZW50cywgTm9SZXN1
bHQsCi0gICAgICAgICAgICAgICAgICAgIHVubW9kaWZpZWRBcmd1bWVudHNWYWx1ZUdQUiwgYWN0
aXZhdGlvblZhbHVlR1BSLCBub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkpOworICAg
ICAgICAgICAgICAgICAgICB1bm1vZGlmaWVkQXJndW1lbnRzVmFsdWVHUFIsIGFjdGl2YXRpb25W
YWx1ZUdQUiwgbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsKApAQCAtNDY0NCwxNiArNDY0NCwxNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBpZiAoIWlzRW1w
dHlTcGVjdWxhdGlvbigKICAgICAgICAgICAgICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJh
bmQoCi0gICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCkuYXJndW1lbnRzUmVnaXN0ZXJG
b3Iobm9kZS0+Y29kZU9yaWdpbikpLm1fdHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9q
aXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKS5t
X3R5cGUpKSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAg
IEFyZ3VtZW50c0VzY2FwZWQsIEpTVmFsdWVSZWdzKCksIDAsCiAgICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoVGVzdDY0KAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVy
bywKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoCi0gICAgICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZv
cihub2RlLT5jb2RlT3JpZ2luKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faml0Lmdy
YXBoKCkubWFjaGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
KSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFub2RlLT5j
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFub2Rl
LT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgbV9qaXQubG9hZDMy
KEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCByZXN1bHRH
UFIpOwogICAgICAgICBtX2ppdC5zdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlc3VsdEdQUik7CiAg
ICAgICAgIGludDMyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC00NjY3LDExICs0NjY3LDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgY3JlYXRlZCA9IG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpOb25aZXJvLAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3IoCi0gICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0
ZXJGb3Iobm9kZS0+Y29kZU9yaWdpbikpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgp
Lm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSk7CiAg
ICAgICAgIAotICAgICAgICBpZiAobm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpIHsK
KyAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpIHsKICAg
ICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgSW1tNjQoSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMu
c2l6ZSgpIC0gMSkpKSwKKyAgICAgICAgICAgICAgICBJbW02NChKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKSAtIDEpKSksCiAgICAgICAgICAgICAgICAgcmVzdWx0R1BSKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihKU1N0
YWNrOjpBcmd1bWVudENvdW50KSwgcmVzdWx0R1BSKTsKQEAgLTQ2ODYsNyArNDY4Niw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAg
Y3JlYXRlZCwgdGhpcywgb3BlcmF0aW9uR2V0QXJndW1lbnRzTGVuZ3RoLCByZXN1bHRHUFIsCi0g
ICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Io
bm9kZS0+Y29kZU9yaWdpbikub2Zmc2V0KCkpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5ncmFw
aCgpLm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLm9m
ZnNldCgpKSk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDcwMCwyMyArNDcwMCwyMyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgaWYgKCFpc0VtcHR5U3BlY3Vs
YXRpb24oCiAgICAgICAgICAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAotICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUt
PmNvZGVPcmlnaW4pKS5tX3R5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBo
KCkuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkubV90eXBlKSkg
ewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBBcmd1bWVu
dHNFc2NhcGVkLCBKU1ZhbHVlUmVncygpLCAwLAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5j
aFRlc3Q2NCgKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sCiAgICAg
ICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKAotICAgICAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+
Y29kZU9yaWdpbikpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1h
Y2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogICAg
ICAgICB9CiAKICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBpbmRleEdQUiwg
cmVzdWx0R1BSKTsKLSAgICAgICAgaWYgKG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
KSB7CisgICAgICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSB7
CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCAwLAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAog
ICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLAogICAgICAgICAg
ICAgICAgICAgICByZXN1bHRHUFIsCi0gICAgICAgICAgICAgICAgICAgIEltbTMyKG5vZGUtPmNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSkpOworICAgICAgICAg
ICAgICAgICAgICBJbW0zMihub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHMuc2l6ZSgpKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwg
MCwKQEAgLTQ3MjgsMTQgKzQ3MjgsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93QXJndW1lbnQ7
CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93QXJndW1lbnRPdXRPZkJvdW5kczsK
LSAgICAgICAgaWYgKG1faml0LnN5bWJvbFRhYmxlRm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5zbG93
QXJndW1lbnRzKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFub2RlLT5jb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZSk7CisgICAgICAgIGlmIChtX2ppdC5zeW1ib2xUYWJsZUZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zbG93QXJndW1lbnRzKCkpIHsKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAg
ICAgICAgICAgIGNvbnN0IFNsb3dBcmd1bWVudCogc2xvd0FyZ3VtZW50cyA9IG1faml0LmdyYXBo
KCkubV9zbG93QXJndW1lbnRzLmdldCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBzbG93
QXJndW1lbnRPdXRPZkJvdW5kcy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNo
MzIoCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4
R1BSLAotICAgICAgICAgICAgICAgICAgICBJbW0zMihtX2ppdC5zeW1ib2xUYWJsZUZvcihub2Rl
LT5jb2RlT3JpZ2luKS0+cGFyYW1ldGVyQ291bnQoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAg
SW1tMzIobV9qaXQuc3ltYm9sVGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+cGFyYW1l
dGVyQ291bnQoKSkpKTsKIAogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFNsb3dB
cmd1bWVudCkgPT0gOCwgU2xvd0FyZ3VtZW50X3NpemVfaXNfZWlnaHRfYnl0ZXMpOwogICAgICAg
ICAgICAgbV9qaXQubW92ZShJbW1QdHIoc2xvd0FyZ3VtZW50cyksIHJlc3VsdEdQUik7CkBAIC00
NzU3LDcgKzQ3NTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZDY0KAogICAgICAgICAgICAgSklUQ29t
cGlsZXI6OkJhc2VJbmRleCgKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwgbV9qaXQub2Zmc2V0T2ZB
cmd1bWVudHNJbmNsdWRpbmdUaGlzKG5vZGUtPmNvZGVPcmlnaW4pKSwKKyAgICAgICAgICAgICAg
ICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VGlt
ZXNFaWdodCwgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRpbmdUaGlzKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLAogICAgICAgICAgICAgcmVzdWx0R1BSKTsKIAogICAgICAgICBzbG93QXJn
dW1lbnQubGluaygmbV9qaXQpOwpAQCAtNDc3NiwxNSArNDc3NiwxNSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0
NjQoCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sCiAgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoCi0gICAgICAgICAgICAgICAgICAgIG1faml0Lmdy
YXBoKCkubWFjaGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4pKSkpOwor
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVudHNSZWdpc3Rl
ckZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQu
YWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBpbmRleEdQUiwgcmVzdWx0R1BSKTsKLSAgICAgICAgaWYg
KG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgIGlmIChub2RlLT5v
cmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSB7CiAgICAgICAgICAgICBzbG93UGF0aC5h
cHBlbmQoCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCiAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dEdQUiwKLSAgICAgICAgICAgICAgICAgICAgSW1tMzIobm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpKSk7CisgICAgICAgICAgICAgICAgICAgIEltbTMy
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkp
KSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoCiAgICAg
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCkBAIC00Nzk1LDE0ICs0Nzk1LDE0IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCBzbG93QXJndW1lbnQ7CiAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCBzbG93QXJndW1lbnRPdXRPZkJvdW5kczsKLSAgICAgICAgaWYgKG1faml0LnN5bWJv
bFRhYmxlRm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5zbG93QXJndW1lbnRzKCkpIHsKLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7Cisg
ICAgICAgIGlmIChtX2ppdC5zeW1ib2xUYWJsZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5z
bG93QXJndW1lbnRzKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFub2RlLT5vcmln
aW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIGNvbnN0IFNsb3dBcmd1
bWVudCogc2xvd0FyZ3VtZW50cyA9IG1faml0LmdyYXBoKCkubV9zbG93QXJndW1lbnRzLmdldCgp
OwogCiAgICAgICAgICAgICBzbG93QXJndW1lbnRPdXRPZkJvdW5kcy5hcHBlbmQoCiAgICAgICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLAotICAgICAgICAgICAgICAgICAgICBJbW0zMihtX2pp
dC5zeW1ib2xUYWJsZUZvcihub2RlLT5jb2RlT3JpZ2luKS0+cGFyYW1ldGVyQ291bnQoKSkpKTsK
KyAgICAgICAgICAgICAgICAgICAgSW1tMzIobV9qaXQuc3ltYm9sVGFibGVGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+cGFyYW1ldGVyQ291bnQoKSkpKTsKIAogICAgICAgICAgICAgQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKFNsb3dBcmd1bWVudCkgPT0gOCwgU2xvd0FyZ3VtZW50X3NpemVfaXNf
ZWlnaHRfYnl0ZXMpOwogICAgICAgICAgICAgbV9qaXQubW92ZShJbW1QdHIoc2xvd0FyZ3VtZW50
cyksIHJlc3VsdEdQUik7CkBAIC00ODI0LDIxICs0ODI0LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWQ2NCgK
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoCi0gICAgICAgICAgICAgICAgR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWln
aHQsIG1faml0Lm9mZnNldE9mQXJndW1lbnRzSW5jbHVkaW5nVGhpcyhub2RlLT5jb2RlT3JpZ2lu
KSksCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsIG1faml0Lm9mZnNldE9mQXJndW1lbnRzSW5jbHVk
aW5nVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwKICAgICAgICAgICAgIHJlc3VsdEdQUik7
CiAgICAgICAgIAotICAgICAgICBpZiAobm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUp
IHsKKyAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpIHsK
ICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQ
YXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkdl
dElubGluZWRBcmd1bWVudEJ5VmFsLCByZXN1bHRHUFIsIAotICAgICAgICAgICAgICAgICAgICBt
X2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5jb2RlT3JpZ2lu
KS5vZmZzZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUsCisgICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCkubWFjaGluZUFyZ3Vt
ZW50c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykub2Zmc2V0KCksCisgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUsCiAgICAg
ICAgICAgICAgICAgICAgIGluZGV4R1BSKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAg
ICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25HZXRBcmd1bWVudEJ5
VmFsLCByZXN1bHRHUFIsIAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1hY2hp
bmVBcmd1bWVudHNSZWdpc3RlckZvcihub2RlLT5jb2RlT3JpZ2luKS5vZmZzZXQoKSwKKyAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS5vZmZzZXQoKSwKICAgICAgICAgICAgICAgICAgICAgaW5k
ZXhHUFIpKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTQ4NTAsMTMgKzQ4NTAsMTMgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tBcmd1
bWVudHNOb3RDcmVhdGVkOiB7CiAgICAgICAgIEFTU0VSVCghaXNFbXB0eVNwZWN1bGF0aW9uKAog
ICAgICAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAotICAgICAgICAgICAgICAg
IG1faml0LmdyYXBoKCkuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9yaWdpbikpLm1f
dHlwZSkpOworICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCkuYXJndW1lbnRzUmVnaXN0ZXJG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkubV90eXBlKSk7CiAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soCiAgICAgICAgICAgICBBcmd1bWVudHNFc2NhcGVkLCBKU1ZhbHVlUmVncygpLCAwLAog
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpOb25aZXJvLAogICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKAot
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVudHNSZWdpc3Rl
ckZvcihub2RlLT5jb2RlT3JpZ2luKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuZ3Jh
cGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkp
KTsKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQ5
NzEsNyArNDk3MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjogewotICAg
ICAgICBBU1NFUlQoIW5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKKyAgICAgICAg
QVNTRVJUKCFub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAg
CiAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICBHUFJSZWcgdGVtcEdQ
UiA9IHRlbXAuZ3ByKCk7CkBAIC00OTgzLDcgKzQ5ODMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJl
Z2lzdGVycyh0ZW1wR1BSKTsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKAotICAgICAgICAgICAgVHJ1c3RlZEltbTMyKG5vZGUtPmNvZGVPcmlnaW4uYnl0ZWNvZGVJ
bmRleCksCisgICAgICAgICAgICBUcnVzdGVkSW1tMzIobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5
dGVjb2RlSW5kZXgpLAogICAgICAgICAgICAgVHJ1c3RlZEltbTMyKG1fc3RyZWFtLT5zaXplKCkp
KTsKICAgICAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdCh0cmlnZ2VyT1NSRW50cnlOb3csIHRlbXBH
UFIpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb250RW50ZXIgPSBtX2ppdC5icmFu
Y2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1wR1BSKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAx
NjM5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODcxLDcgKzg3MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJbihOb2RlKiBub2QKICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkocmVzdWx0R1BSKSwgc3R1YkluZm8sIGJhc2VHUFIsCiAgICAgICAgICAgICAgICAgc3Ry
aW5nLT50cnlHZXRWYWx1ZUltcGwoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHN0dWJJ
bmZvLT5jb2RlT3JpZ2luID0gbm9kZS0+Y29kZU9yaWdpbjsKKyAgICAgICAgICAgIHN0dWJJbmZv
LT5jb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICAgICAgc3R1Yklu
Zm8tPnBhdGNoLmJhc2VHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGJhc2VHUFIpOwogICAgICAg
ICAgICAgc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihyZXN1
bHRHUFIpOwogICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLnVzZWRSZWdpc3RlcnMgPSB1c2Vk
UmVnaXN0ZXJzKCk7CkBAIC0xMzkwLDggKzEzOTAsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgIG1fY2FuRXhpdCA9IG1fY3VycmVudE5vZGUtPmNh
bkV4aXQoKTsKICAgICAgICAgYm9vbCBzaG91bGRFeGVjdXRlRWZmZWN0cyA9IG1faW50ZXJwcmV0
ZXIuc3RhcnRFeGVjdXRpbmcobV9jdXJyZW50Tm9kZSk7CiAgICAgICAgIG1faml0LnNldEZvck5v
ZGUobV9jdXJyZW50Tm9kZSk7Ci0gICAgICAgIG1fY29kZU9yaWdpbkZvckV4aXRUYXJnZXQgPSBt
X2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luRm9yRXhpdFRhcmdldDsKLSAgICAgICAgbV9jb2RlT3Jp
Z2luRm9yRXhpdFByb2ZpbGUgPSBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luOworICAgICAgICBt
X2NvZGVPcmlnaW5Gb3JFeGl0VGFyZ2V0ID0gbV9jdXJyZW50Tm9kZS0+b3JpZ2luLmZvckV4aXQ7
CisgICAgICAgIG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlID0gbV9jdXJyZW50Tm9kZS0+b3Jp
Z2luLnNlbWFudGljOwogICAgICAgICBpZiAoIW1fY3VycmVudE5vZGUtPnNob3VsZEdlbmVyYXRl
KCkpIHsKICAgICAgICAgICAgIHN3aXRjaCAobV9jdXJyZW50Tm9kZS0+b3AoKSkgewogICAgICAg
ICAgICAgY2FzZSBKU0NvbnN0YW50OgpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICAgICAgICAgIGRhdGFMb2dGKAog
ICAgICAgICAgICAgICAgICAgICAiU3BlY3VsYXRpdmVKSVQgZ2VuZXJhdGluZyBOb2RlIEAlZCAo
YmMjJXUpIGF0IEpJVCBvZmZzZXQgMHgleCIsCiAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9j
dXJyZW50Tm9kZS0+aW5kZXgoKSwKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+
Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBtX2ppdC5kZWJ1Z09mZnNldCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgs
IG1faml0LmRlYnVnT2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIGRhdGFMb2coIlxuIik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE3ODAsNyArMTc4MCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3QKICAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJlc3VsdFRhZ1JlZyk7CiAjZW5kaWYKIAotICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAg
IGlmIChnbG9iYWxPYmplY3QtPnN0cmluZ1Byb3RvdHlwZUNoYWluSXNTYW5lKCkpIHsKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoYWRvcHRQdHIo
bmV3IFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yKApAQCAtNDQ1NSw3ICs0NDU1
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1N0cmluZ09iagogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheShOb2RlKiBub2RlKQogewotICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZv
cihub2RlLT5jb2RlT3JpZ2luKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAg
ICBUeXBlZEFycmF5VHlwZSB0eXBlID0gbm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZSh0eXBl
KTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgJKHJldmlzaW9uIDE2MzkxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDcgKzI4OSw3IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElz
U3RpbGxWYWxpZCgpCiAgICAgewotICAgICAgICByZXR1cm4gbWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbik7CisgICAg
ICAgIHJldHVybiBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCht
X2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIH0KIAogI2lmIEVOQUJMRShHR0Mp
CkBAIC0xNzU3LDcgKzE3NTcsNyBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24pCiAg
ICAgewogICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7Ci0gICAgICAgIG1faml0LmVt
aXRTdG9yZUNvZGVPcmlnaW4obV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbik7CisgICAgICAgIG1f
aml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
ICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IG1faml0LmFwcGVuZENhbGwoZnVuY3Rp
b24pOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICByZXR1cm4gY2Fs
bDsKQEAgLTE3NjUsNyArMTc2NSw3IEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6Q2FsbCBh
cHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oY29uc3QgRnVuY3Rpb25Q
dHImIGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwot
ICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPmNvZGVPcmln
aW4pOworICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5h
cHBlbmRDYWxsKGZ1bmN0aW9uKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2tXaXRoQ2Fs
bEZyYW1lUm9sbGJhY2soKTsKICAgICAgICAgcmV0dXJuIGNhbGw7CkBAIC0xNzg3LDcgKzE3ODcs
NyBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFNldFJlc3VsdChj
b25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAg
ICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7Ci0gICAgICAgIG1faml0LmVtaXRTdG9yZUNvZGVP
cmlnaW4obV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbik7CisgICAgICAgIG1faml0LmVtaXRTdG9y
ZUNvZGVPcmlnaW4obV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbCA9IG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOwogICAgICAg
ICBpZiAocmVzdWx0ICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKEdQ
UkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOwpAQCAtMTc5Niw3ICsxNzk2LDcgQEAgcHVi
bGljOgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGwoY29uc3QgRnVuY3Rpb25QdHIm
IGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwotICAg
ICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4p
OworICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CiAgICAgICAgIHJldHVybiBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQxLCBH
UFJSZWcgcmVzdWx0MikKQEAgLTMwNDAsNyArMzA0MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFN0
cnVjdHVyZUxvY2F0aW9uVHlwZT4KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmlu
Z09iamVjdEZvclN0cnVjdHVyZShFZGdlIGVkZ2UsIFN0cnVjdHVyZUxvY2F0aW9uVHlwZSBzdHJ1
Y3R1cmVMb2NhdGlvbikKIHsKICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSA9
Ci0gICAgICAgIG1faml0Lmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2lu
KS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCk7CisgICAgICAgIG1faml0Lmdsb2JhbE9iamVjdEZv
cihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUo
KTsKICAgICAKICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX2N1cnJlbnRLbm93blN0
cnVjdHVyZS5pc1N1YnNldE9mKFN0cnVjdHVyZVNldChzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSkg
ewogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAxNjM5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNvbnZlcnRUb0lkZW50aXR5T3ZlckNoaWxkKHVuc2lnbmVkIGNoaWxkSW5kZXgp
CiAgICAgewogICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAg
bV9ub2RlSW5kZXgsIFNwZWNOb25lLCBQaGFudG9tLCBtX25vZGUtPmNvZGVPcmlnaW4sIG1fbm9k
ZS0+Y2hpbGRyZW4pOworICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBQaGFudG9t
LCBtX25vZGUtPm9yaWdpbiwgbV9ub2RlLT5jaGlsZHJlbik7CiAgICAgICAgIG1fbm9kZS0+Y2hp
bGRyZW4ucmVtb3ZlRWRnZShjaGlsZEluZGV4IF4gMSk7CiAgICAgICAgIG1fbm9kZS0+Y29udmVy
dFRvSWRlbnRpdHkoKTsKICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKQEAgLTE3MywxMCArMTcz
LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcmVwYXJlVG9Gb2xkVHlwZWRBcnJheShKU0FycmF5
QnVmZmVyVmlldyogdmlldykKICAgICB7CiAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCi0gICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUsIFR5cGVkQXJyYXlXYXRjaHBv
aW50LCBtX25vZGUtPmNvZGVPcmlnaW4sCisgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05v
bmUsIFR5cGVkQXJyYXlXYXRjaHBvaW50LCBtX25vZGUtPm9yaWdpbiwKICAgICAgICAgICAgIE9w
SW5mbyh2aWV3KSk7CiAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAg
ICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUsIFBoYW50b20sIG1fbm9kZS0+Y29kZU9yaWdpbiwg
bV9ub2RlLT5jaGlsZHJlbik7CisgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUsIFBo
YW50b20sIG1fbm9kZS0+b3JpZ2luLCBtX25vZGUtPmNoaWxkcmVuKTsKICAgICB9CiAgICAgCiAg
ICAgSW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9uU2V0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAxNjM5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJV
cENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMSArNzcsMTEg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIC8vIG1vcmUgdGhhbiBvbmUgTG9vcEhpbnQgY291
bGQgaGFwcGVuIGluIGNhc2VzIHdoZXJlIHdlIGRpZCBhIGxvdCBvZiBDRkcKICAgICAgICAgICAg
ICAgICAvLyBzaW1wbGlmaWNhdGlvbiBpbiB0aGUgYnl0ZWNvZGUgcGFyc2VyLCBidXQgaXQgc2hv
dWxkIGJlIHZlcnkgcmFyZS4KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5jb2RlT3JpZ2luOworICAgICAgICAgICAgICAgIE5v
ZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOwogICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIGlmIChsZXZlbCAhPSBGVEw6OkNhbkNvbXBpbGVBbmRPU1JFbnRlciB8fCBjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZSkgeworICAgICAgICAgICAgICAgIGlmIChsZXZlbCAhPSBG
VEw6OkNhbkNvbXBpbGVBbmRPU1JFbnRlciB8fCBvcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZy
YW1lKSB7CiAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAotICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwgU3BlY05vbmUsIENoZWNrVGllclVw
SW5Mb29wLCBjb2RlT3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCAr
IDEsIFNwZWNOb25lLCBDaGVja1RpZXJVcEluTG9vcCwgb3JpZ2luKTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApAQCAtOTUs
MTggKzk1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBp
ZiAoIWlzQXRUb3ApIHsKICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwgQ2hl
Y2tUaWVyVXBJbkxvb3AsIGNvZGVPcmlnaW4pOworICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZUluZGV4ICsgMSwgU3BlY05vbmUsIENoZWNrVGllclVwSW5Mb29wLCBvcmlnaW4pOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAg
ICAgICAgIG5vZGVJbmRleCArIDEsIFNwZWNOb25lLCBDaGVja1RpZXJVcEFuZE9TUkVudGVyLCBj
b2RlT3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwgU3BlY05vbmUs
IENoZWNrVGllclVwQW5kT1NSRW50ZXIsIG9yaWdpbik7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChibG9jay0+bGFz
dCgpLT5vcCgpID09IFJldHVybikgewogICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNl
cnROb2RlKAotICAgICAgICAgICAgICAgICAgICBibG9jay0+c2l6ZSgpIC0gMSwgU3BlY05vbmUs
IENoZWNrVGllclVwQXRSZXR1cm4sIGJsb2NrLT5sYXN0KCktPmNvZGVPcmlnaW4pOworICAgICAg
ICAgICAgICAgICAgICBibG9jay0+c2l6ZSgpIC0gMSwgU3BlY05vbmUsIENoZWNrVGllclVwQXRS
ZXR1cm4sIGJsb2NrLT5sYXN0KCktPm9yaWdpbik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1Bo
YXNlLmNwcAkocmV2aXNpb24gMTYzOTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDIwICsx
MjgsMjAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZXItPnZhbHVlLm1f
c3RydWN0dXJlICYmICFpdGVyLT52YWx1ZS5tX2FycmF5TW9kZUlzVmFsaWQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgICAgICBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4gPSBub2RlLT5jb2RlT3JpZ2luOworICAgICAgICAgICAgICAgICAgICBOb2RlT3Jp
Z2luIG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIGdldExvY2FsID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2sgKyAxLCB2YXJpYWJsZS0+cHJlZGlj
dGlvbigpLCBHZXRMb2NhbCwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlu
ZGV4SW5CbG9jayArIDEsIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCksIEdldExvY2FsLCBvcmlnaW4s
CiAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8odmFyaWFibGUpLCBFZGdlKG5vZGUpKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXItPnZhbHVlLm1fc3RydWN0dXJlKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2sgKyAxLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1
cmUsIGNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2Nr
ICsgMSwgU3BlY05vbmUsIENoZWNrU3RydWN0dXJlLCBvcmlnaW4sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGl0ZXItPnZhbHVlLm1f
c3RydWN0dXJlKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRnZShnZXRMb2NhbCwg
Q2VsbFVzZSkpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZXItPnZhbHVlLm1f
YXJyYXlNb2RlSXNWYWxpZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGl0ZXIt
PnZhbHVlLm1fYXJyYXlNb2RlSG9pc3RpbmdPa2F5KTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGluc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
ZGV4SW5CbG9jayArIDEsIFNwZWNOb25lLCBDaGVja0FycmF5LCBjb2RlT3JpZ2luLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIFNwZWNOb25lLCBDaGVja0Fy
cmF5LCBvcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKGl0ZXItPnZh
bHVlLm1fYXJyYXlNb2RlLmFzV29yZCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
ZGdlKGdldExvY2FsLCBDZWxsVXNlKSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQpAQCAt
MTY0LDE4ICsxNjQsMTggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZXIt
PnZhbHVlLm1fc3RydWN0dXJlICYmICFpdGVyLT52YWx1ZS5tX2FycmF5TW9kZUlzVmFsaWQpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgICAgICBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5jb2RlT3JpZ2luOworICAgICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKICAgICAgICAgICAgICAgICAgICAg
RWRnZSBjaGlsZDEgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIGNvZGVP
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9u
ZSwgQ2hlY2tTdHJ1Y3R1cmUsIG9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP
cEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUpKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKGNoaWxkMS5ub2RlKCksIENlbGxVc2Up
KTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVyLT52YWx1ZS5tX2FycmF5TW9k
ZUlzVmFsaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpdGVyLT52YWx1ZS5t
X2FycmF5TW9kZUhvaXN0aW5nT2theSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxv
Y2ssIFNwZWNOb25lLCBDaGVja0FycmF5LCBjb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrQXJyYXksIG9yaWdpbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8oaXRlci0+dmFsdWUubV9hcnJheU1vZGUu
YXNXb3JkKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UoY2hpbGQxLm5vZGUo
KSwgQ2VsbFVzZSkpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAxNjM5MTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDE1LDE4ICs0MTUsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgdW5zaWduZWQgbm9kZUluZGV4ID0gMDsKLSAgICAg
ICAgICAgIGZvciAoOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpICYmICFibG9jay0+YXQobm9k
ZUluZGV4KS0+Y29kZU9yaWdpbi5pc1NldCgpOyBub2RlSW5kZXgrKykgeyB9CisgICAgICAgICAg
ICBmb3IgKDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKSAmJiAhYmxvY2stPmF0KG5vZGVJbmRl
eCktPm9yaWdpbi5pc1NldCgpOyBub2RlSW5kZXgrKykgeyB9CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIFZBTElEQVRFKChibG9jayksIG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsg
bm9kZUluZGV4KyspCi0gICAgICAgICAgICAgICAgVkFMSURBVEUoKGJsb2NrLT5hdChub2RlSW5k
ZXgpKSwgYmxvY2stPmF0KG5vZGVJbmRleCktPmNvZGVPcmlnaW4uaXNTZXQoKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUoKGJsb2NrLT5hdChub2RlSW5kZXgpKSwgYmxvY2stPmF0KG5vZGVJ
bmRleCktPm9yaWdpbi5pc1NldCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJ
bmRleCkgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4
KTsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgICAg
ICBjYXNlIFBoaToKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+
Y29kZU9yaWdpbi5pc1NldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUp
LCAhbm9kZS0+b3JpZ2luLmlzU2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVj
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTYzOTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTIyLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBTdHJ1
Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDoKICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2lu
dHMoKS5hZGRMYXppbHkoCi0gICAgICAgICAgICAgICAgbV9ub2RlLT5jb2RlT3JpZ2luLAorICAg
ICAgICAgICAgICAgIG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAgICAgICAgIG1f
bm9kZS0+Y2hpbGQxKCktPm9wKCkgPT0gV2Vha0pTQ29uc3RhbnQgPyBCYWRXZWFrQ29uc3RhbnRD
YWNoZVdhdGNocG9pbnQgOiBCYWRDYWNoZVdhdGNocG9pbnQsCiAgICAgICAgICAgICAgICAgbV9u
b2RlLT5zdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXQoKSk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTE1OCw3ICsxNTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNTRVJU
KG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5pc1ZhbGlkT3JNaXhlZChzdHJpbmdQcm90b3R5cGVTdHJ1
Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCkpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseSgKLSAgICAgICAgICAgICAgICBt
X25vZGUtPmNvZGVPcmlnaW4sIE5vdFN0cmluZ09iamVjdCwKKyAgICAgICAgICAgICAgICBtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgTm90U3RyaW5nT2JqZWN0LAogICAgICAgICAgICAgICAgIHN0
cmluZ1Byb3RvdHlwZVN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXQoKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTcwLDcgKzE3MCw3IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgdm9pZCBoYW5kbGVNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkKICAgICB7Ci0gICAg
ICAgIGlmIChtX2dyYXBoLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZh
bGlkKG1fbm9kZS0+Y29kZU9yaWdpbikpCisgICAgICAgIGlmIChtX2dyYXBoLm1hc3F1ZXJhZGVz
QXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KSkKICAgICAgICAgICAgIGFkZExhemlseShnbG9iYWxPYmplY3QoKS0+bWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZFdhdGNocG9pbnQoKSk7CiAgICAgfQogICAgIApAQCAtMTk5LDcgKzE5OSw3IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5jb2RlT3JpZ2lu
KTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKICAgICB9CiAgICAgCiAgICAgTm9kZSogbV9ub2RlOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKU0NhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMSlNDYWxsLmNwcAkocmV2aXNpb24gMTYzOTE5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKU0NhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
MSw3ICs4MSw3IEBAIHZvaWQgSlNDYWxsOjpsaW5rKFZNJiB2bSwgTGlua0J1ZmZlciYgbGkKICAg
ICAKICAgICBjYWxsSW5mby5pc0ZUTCA9IHRydWU7CiAgICAgY2FsbEluZm8uY2FsbFR5cGUgPSBt
X25vZGUtPm9wKCkgPT0gREZHOjpDb25zdHJ1Y3QgPyBDYWxsTGlua0luZm86OkNvbnN0cnVjdCA6
IENhbGxMaW5rSW5mbzo6Q2FsbDsKLSAgICBjYWxsSW5mby5jb2RlT3JpZ2luID0gbV9ub2RlLT5j
b2RlT3JpZ2luOworICAgIGNhbGxJbmZvLmNvZGVPcmlnaW4gPSBtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYzsKICAgICBjYWxsSW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0
aW9uT2ZOZWFyQ2FsbChtX3Nsb3dDYWxsKTsKICAgICBjYWxsSW5mby5ob3RQYXRoQmVnaW4gPSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2YobV90YXJnZXRUb0NoZWNrKTsKICAgICBjYWxsSW5mby5ob3RQ
YXRoT3RoZXIgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChtX2Zhc3RDYWxsKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2aXNpb24gMTYzOTE5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAyLDkgKzEwMiw5IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgUHJvZmlsZXI6Ok9yaWdpblN0YWNrIHN0YWNrOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jb2RlT3JpZ2luLmlzU2V0KCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3JpZ2luLnNlbWFudGljLmlzU2V0KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgc3RhY2sgPSBQcm9maWxlcjo6T3JpZ2luU3RhY2soCi0gICAg
ICAgICAgICAgICAgICAgICAgICAqdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyLCBjb2RlQmxvY2ss
IG5vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICAgICAgICAgICAgICAgICAgKnZtLm1fcGVyQnl0
ZWNvZGVQcm9maWxlciwgY29kZUJsb2NrLCBub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoZ3JhcGgu
ZHVtcENvZGVPcmlnaW4ob3V0LCBwcmVmaXgsIGxhc3ROb2RlLCBub2RlLCAmZHVtcENvbnRleHQp
KSB7CkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAg
ICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRpb24oc3RhY2ssIG91dC50b0NTdHJpbmco
KSk7CiAgICAgICAgICAgICAgICAgb3V0LnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNvZGVPcmlnaW4uaXNTZXQoKSkKKyAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+b3JpZ2luLnNlbWFudGljLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAg
IGxhc3ROb2RlID0gbm9kZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9u
IDE2MzkxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsOCArMjYwLDggQEAgcHJpdmF0ZToKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgbV9ub2RlID0gbV9oaWdoQmxvY2stPmF0KG5vZGVJbmRleCk7
Ci0gICAgICAgIG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlID0gbV9ub2RlLT5jb2RlT3JpZ2lu
OwotICAgICAgICBtX2NvZGVPcmlnaW5Gb3JFeGl0VGFyZ2V0ID0gbV9ub2RlLT5jb2RlT3JpZ2lu
Rm9yRXhpdFRhcmdldDsKKyAgICAgICAgbV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUgPSBtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICAgICAgbV9jb2RlT3JpZ2luRm9yRXhpdFRhcmdldCA9
IG1fbm9kZS0+b3JpZ2luLmZvckV4aXQ7CiAgICAgICAgIAogICAgICAgICBpZiAodmVyYm9zZUNv
bXBpbGF0aW9uRW5hYmxlZCgpKQogICAgICAgICAgICAgZGF0YUxvZygiTG93ZXJpbmcgIiwgbV9u
b2RlLCAiXG4iKTsKQEAgLTkwOCw3ICs5MDgsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIEpfSklU
T3BlcmF0aW9uX0VKIGZ1bmN0aW9uOwotICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVG
b3IobV9ub2RlLT5jb2RlT3JpZ2luKSkKKyAgICAgICAgaWYgKG1fZ3JhcGguaXNTdHJpY3RNb2Rl
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKICAgICAgICAgICAgIGZ1bmN0aW9uID0gb3Bl
cmF0aW9uVG9UaGlzU3RyaWN0OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlvbiA9
IG9wZXJhdGlvblRvVGhpczsKQEAgLTE3MDYsOCArMTcwNiw4IEBAIHByaXZhdGU6CiAgICAgICAg
IHNldEluc3RydWN0aW9uQ2FsbGluZ0NvbnZlbnRpb24oY2FsbCwgTExWTUFueVJlZ0NhbGxDb252
KTsKICAgICAgICAgCiAgICAgICAgIG1fZnRsU3RhdGUucHV0QnlJZHMuYXBwZW5kKFB1dEJ5SWRE
ZXNjcmlwdG9yKAotICAgICAgICAgICAgc3RhY2ttYXBJRCwgbV9ub2RlLT5jb2RlT3JpZ2luLCB1
aWQsCi0gICAgICAgICAgICBtX2dyYXBoLmV4ZWN1dGFibGVGb3IobV9ub2RlLT5jb2RlT3JpZ2lu
KS0+ZWNtYU1vZGUoKSwKKyAgICAgICAgICAgIHN0YWNrbWFwSUQsIG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljLCB1aWQsCisgICAgICAgICAgICBtX2dyYXBoLmV4ZWN1dGFibGVGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpLT5lY21hTW9kZSgpLAogICAgICAgICAgICAgbV9ub2RlLT5vcCgpID09
IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpKTsKICAgICB9CiAgICAgCkBAIC0y
MDM0LDEyICsyMDM0LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQXJyYXk6OkdlbmVyaWM6
IHsKICAgICAgICAgICAgIFZfSklUT3BlcmF0aW9uX0VKSkogb3BlcmF0aW9uOwogICAgICAgICAg
ICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkgewotICAgICAgICAgICAgICAg
IGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPmNvZGVPcmlnaW4pKQorICAgICAg
ICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYykpCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFs
RGlyZWN0U3RyaWN0OwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
b3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3Q7CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvciht
X25vZGUtPmNvZGVPcmlnaW4pKQorICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0
TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCiAgICAgICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0OwogICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJp
Y3Q7CkBAIC0yNDM4LDcgKzI0MzgsNyBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKHVuc2lnbmVk
IG9wZXJhbmRJbmRleCA9IDA7IG9wZXJhbmRJbmRleCA8IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKTsg
KytvcGVyYW5kSW5kZXgpCiAgICAgICAgICAgICBzcGVjdWxhdGUobV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIG9wZXJhbmRJbmRleCkpOwogICAgICAgICAKLSAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+Y29kZU9y
aWdpbik7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24oCiAgICAgICAgICAgICBtX25vZGUtPmluZGV4aW5nVHlwZSgpKTsK
ICAgICAgICAgCkBAIC0yNTE1LDcgKzI1MTUsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQg
Y29tcGlsZU5ld0FycmF5QnVmZmVyKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPmNvZGVPcmlnaW4p
OworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKAogICAgICAgICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSk7CiAgICAg
ICAgIApAQCAtMjU1NCw3ICsyNTU0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIExWYWx1
ZSBwdWJsaWNMZW5ndGggPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCi0g
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX25vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKAogICAgICAgICAgICAgbV9ub2Rl
LT5pbmRleGluZ1R5cGUoKSk7CiAgICAgICAgIApAQCAtMjk4NCw3ICsyOTg0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCAwLCBtX291
dC5ib29sZWFuVHJ1ZSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Io
bV9vdXQuaW50UHRyWmVybykpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
Y29kZU9yaWdpbik7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBl
Q2hhaW5Jc1NhbmUoKSkgewogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5lZ2F0aXZlSW5k
ZXggPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkdldEJ5VmFsIFN0cmluZyBuZWdhdGl2ZSBpbmRl
eCIpKTsKQEAgLTMxNjYsNyArMzE2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlR2V0
TXlTY29wZSgpCiAgICAgewogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIoYWRkcmVz
c0ZvcigKLSAgICAgICAgICAgIG1fbm9kZS0+Y29kZU9yaWdpbi5zdGFja09mZnNldCgpICsgSlNT
dGFjazo6U2NvcGVDaGFpbikpKTsKKyAgICAgICAgICAgIG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
LnN0YWNrT2Zmc2V0KCkgKyBKU1N0YWNrOjpTY29wZUNoYWluKSkpOwogICAgIH0KICAgICAKICAg
ICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoKQpAQCAtMzU0NCw5ICszNTQ0LDkgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNFbXB0eVNwZWN1bGF0aW9uKAogICAgICAgICAgICAg
bV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAotICAgICAgICAgICAgICAgIG1fZ3JhcGguYXJn
dW1lbnRzUmVnaXN0ZXJGb3IobV9ub2RlLT5jb2RlT3JpZ2luKSkubV90eXBlKSk7CisgICAgICAg
ICAgICAgICAgbV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLm1fdHlwZSkpOwogICAgICAgICAKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9
IG1fZ3JhcGgubWFjaGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKG1fbm9kZS0+Y29kZU9yaWdpbik7
CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSBtX2dyYXBoLm1hY2hpbmVBcmd1bWVudHNS
ZWdpc3RlckZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIHNwZWN1bGF0ZShB
cmd1bWVudHNFc2NhcGVkLCBub1ZhbHVlKCksIDAsIG1fb3V0Lm5vdFplcm82NChtX291dC5sb2Fk
NjQoYWRkcmVzc0ZvcihyZWcpKSkpOwogICAgIH0KICAgICAKQEAgLTM1NzIsNyArMzU3Miw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBjb25zdE51bGwobV9vdXQucmVmOCksIG1fb3V0LmNvbnN0
SW50MzIoMSksIGJhc2UpOwogICAgICAgICBzZXRJbnN0cnVjdGlvbkNhbGxpbmdDb252ZW50aW9u
KGNhbGwsIExMVk1BbnlSZWdDYWxsQ29udik7CiAgICAgICAgIAotICAgICAgICBtX2Z0bFN0YXRl
LmdldEJ5SWRzLmFwcGVuZChHZXRCeUlkRGVzY3JpcHRvcihzdGFja21hcElELCBtX25vZGUtPmNv
ZGVPcmlnaW4sIHVpZCkpOworICAgICAgICBtX2Z0bFN0YXRlLmdldEJ5SWRzLmFwcGVuZChHZXRC
eUlkRGVzY3JpcHRvcihzdGFja21hcElELCBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgdWlkKSk7
CiAgICAgICAgIAogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CkBAIC0zOTU0LDcgKzM5NTQs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCht
X291dC5hbmNob3IoCiAgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwoCi0gICAgICAgICAgICAg
ICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
Y29kZU9yaWdpbikpLAorICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAogICAgICAgICAg
ICAgICAgICAgICBtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfZ2xv
YmFsT2JqZWN0KSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAg
ICAgICAgfQpAQCAtNDg5NCw3ICs0ODk0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNwZWN1bGF0
ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShFZGdlIGVkZ2UsIExWYWx1ZSBzdHJ1Y3R1cmUpCiAg
ICAgewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSA9Ci0gICAgICAg
ICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPmNvZGVPcmlnaW4pLT5zdHJpbmdP
YmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCk7CiAgICAgICAg
IAogICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fY3VycmVudEtub3duU3RydWN0
dXJlLmlzU3Vic2V0T2YoU3RydWN0dXJlU2V0KHN0cmluZ09iamVjdFN0cnVjdHVyZSkpKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtNDk2Niw3ICs0OTY2LDcgQEAgcHJpdmF0ZToKICAgICAKICAg
ICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2dyYXBoLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBv
aW50SXNTdGlsbFZhbGlkKG1fbm9kZS0+Y29kZU9yaWdpbik7CisgICAgICAgIHJldHVybiBtX2dy
YXBoLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGxvYWRNYXJrQnl0ZShM
VmFsdWUgYmFzZSkKQEAgLTUwODMsNyArNTA4Myw3IEBAIHByaXZhdGU6CiAgICAgfQogICAgIHZv
aWQgY2FsbFByZWZsaWdodCgpCiAgICAgewotICAgICAgICBjYWxsUHJlZmxpZ2h0KG1fbm9kZS0+
Y29kZU9yaWdpbik7CisgICAgICAgIGNhbGxQcmVmbGlnaHQobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNhbGxDaGVjayhFeGNlcHRpb25DaGVja01vZGUg
bW9kZSA9IENoZWNrRXhjZXB0aW9ucykK
</data>
<flag name="review"
          id="247998"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>