<?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>141099</bug_id>
          
          <creation_ts>2015-01-30 14:03:53 -0800</creation_ts>
          <short_desc>Update MemoryCache code to use more references instead of pointers</short_desc>
          <delta_ts>2015-01-30 16:04:39 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1065643</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-30 14:03:53 -0800</bug_when>
    <thetext>Update MemoryCache code to use more references instead of pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065647</commentid>
    <comment_count>1</comment_count>
      <attachid>245741</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-30 14:17:52 -0800</bug_when>
    <thetext>Created attachment 245741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065650</commentid>
    <comment_count>2</comment_count>
      <attachid>245742</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-30 14:23:41 -0800</bug_when>
    <thetext>Created attachment 245742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065661</commentid>
    <comment_count>3</comment_count>
      <attachid>245747</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-30 14:52:55 -0800</bug_when>
    <thetext>Created attachment 245747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065678</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-30 15:32:08 -0800</bug_when>
    <thetext>Attachment 245747 did not pass style-queue:


ERROR: Source/WebCore/loader/cache/MemoryCache.cpp:523:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065693</commentid>
    <comment_count>5</comment_count>
      <attachid>245747</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-30 16:04:32 -0800</bug_when>
    <thetext>Comment on attachment 245747
Patch

Clearing flags on attachment: 245747

Committed r179421: &lt;http://trac.webkit.org/changeset/179421&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065694</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-30 16:04:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245741</attachid>
            <date>2015-01-30 14:17:52 -0800</date>
            <delta_ts>2015-01-30 14:23:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141099-20150130141759.patch</filename>
            <type>text/plain</type>
            <size>48368</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY2YTY1YTNhOGQ3MmQ5
NmVlOTIxMjA2NGYzNGUwZDcxYmY5N2U3NS4uNmI1ZDVjZDIyY2VlMGZhNDVlMmVlMTUwZTE0NWFk
MDdkZWJhZTllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEyIEBACiAyMDE1LTAxLTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXBkYXRlIE1lbW9yeUNhY2hl
IGNvZGUgdG8gdXNlIG1vcmUgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEwOTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworMjAxNS0wMS0zMCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIE9wdGltaXplIE1lbW9yeUNhY2hlOjpnZXRT
ZXNzaW9uTWFwKCkgYSBiaXQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MTA2OQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODA4NzVhZmYxMzI4N2U1OWM2ZjAwYWEz
YTE1NTUwYmNkMDdlY2U0Ny4uNTg1ZjZjNzliYzk2Y2Y4MjBiNTNhMWU3ZWY4YzdkNjJlZTNhNmU4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAxLTMwICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIE1lbW9yeUNhY2hlIGNvZGUgdG8g
dXNlIG1vcmUgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEwOTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUmVzb3VyY2VDYWNo
ZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlQ2FjaGVNYW5hZ2VyOjpjbGVhckNhY2hlRm9yT3JpZ2luKToKKwogMjAxNS0wMS0zMCAgQWxl
eGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IDk2ZTU3ZjM5MDczM2QzNDUxZmZhMjg0YTBkYzNkODY5MjBk
NTNhNDEuLmE0MGIxZDQ4NGM5YTU4NWFjZDA0MDJiMTk2YWVhYjBkZGVjZjc2MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC0xOTYsNyArMTk2LDcgQEAgX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNo
ZTE1YWRkSW1hZ2VUb0NhY2hlRVA3Q0dJbWFnZVJLTlNfM1VSTEVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxOHJlc291cmNlRm9yUmVxdWVzdEVSS05TXzE1UmVzb3Vy
Y2VSZXF1ZXN0RU5TXzlTZXNzaW9uSURFCiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTlnZXRP
cmlnaW5zV2l0aENhY2hlRVJOM1dURjdIYXNoU2V0SU5TMV82UmVmUHRySU5TXzE0U2VjdXJpdHlP
cmlnaW5FRUVOU18xOFNlY3VyaXR5T3JpZ2luSGFzaEVOUzFfMTBIYXNoVHJhaXRzSVM1X0VFRUUK
IF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUyMHJlbW92ZUltYWdlRnJvbUNhY2hlRVJLTlNfM1VS
TEVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUyNXJlbW92ZVJlc291
cmNlc1dpdGhPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCitfX1pON1dlYkNvcmUxMU1lbW9y
eUNhY2hlMjVyZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2luRVJOU18xNFNlY3VyaXR5T3JpZ2luRQog
X19aTjdXZWJDb3JlMTFQYWdlT3ZlcmxheTE1c2V0TmVlZHNEaXNwbGF5RVJLTlNfN0ludFJlY3RF
CiBfX1pON1dlYkNvcmUxMVBhZ2VPdmVybGF5MTVzZXROZWVkc0Rpc3BsYXlFdgogX19aTjdXZWJD
b3JlMTFQYWdlT3ZlcmxheTIwc3RvcEZhZGVPdXRBbmltYXRpb25FdgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwu
Y3BwCmluZGV4IGQ0NTlmNTdhZDU4NjJhMjhiOWE0MGY2Y2UxZDMwOGZiZjQxNDcyMDMuLjFhYTU1
YTgzOTk2ZGY1MjA5MWUxMzg1NDk3MzJjMzA0OTg0NTIwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5j
cHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIERPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbgogI2lmIEVOQUJM
RShDQUNIRV9QQVJUSVRJT05JTkcpCiAgICAgcmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRp
dGlvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0LT50b3BPcmlnaW4oKS0+ZG9tYWluRm9yQ2FjaGVQ
YXJ0aXRpb24oKSk7CiAjZW5kaWYKLSAgICBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21T
ZXNzaW9uQ2FjaGVzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHJlcXVlc3QpOworICAgIE1lbW9y
eUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMoKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIHJlcXVlc3QpOwogCiAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHVibGljVVJM
TWFuYWdlcigpLnJldm9rZSh1cmwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IGIzOWRjNGI4YmJkMjUzZjliMzRj
Mjg0OTc2NjU0MzdlODY4OTE3ODIuLjEyMGZmZTgzMmE4ZTBhZjllMzcxOWI5OGNlOTljYzY2OTZm
MDE0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5jcHAKQEAgLTcxMCw3ICs3MTAsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OnJlcGxheVhIUihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQog
CiAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gbWVtb3J5Q2FjaGUoKS5yZXNv
dXJjZUZvclJlcXVlc3QocmVxdWVzdCwgbV9wYWdlQWdlbnQtPnBhZ2UoKS0+c2Vzc2lvbklEKCkp
OwogICAgIGlmIChjYWNoZWRSZXNvdXJjZSkKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmUo
Y2FjaGVkUmVzb3VyY2UpOworICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZSgqY2FjaGVkUmVz
b3VyY2UpOwogCiAgICAgeGhyLT5vcGVuKHhoclJlcGxheURhdGEtPm1ldGhvZCgpLCB4aHJSZXBs
YXlEYXRhLT51cmwoKSwgeGhyUmVwbGF5RGF0YS0+YXN5bmMoKSwgSUdOT1JFX0VYQ0VQVElPTik7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiB4aHJSZXBsYXlEYXRhLT5oZWFkZXJzKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBjYWE1MTI3NmRl
YThlYTI5MDE2MmEyOGM1NTZhZjViMDk1MGZhOWJmLi5jMTY3MWJmMzgyZGQ3OGFjOGZlZGJmOTEx
MDhhODdmNmIzODc1YzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRp
bmcoZG91YmxlIGZpbmlzaFRpbWUpCiAgICAgLy8gYW5kIGRlbnkgdGhlIGFwcGNhY2hlIHRoZSBj
aGFuY2UgdG8gaW50ZXJjZXB0IGl0IGluIHRoZSBmdXR1cmUsIHNvIHJlbW92ZSBmcm9tIHRoZSBt
ZW1vcnkgY2FjaGUuCiAgICAgaWYgKG1fZnJhbWUpIHsKICAgICAgICAgaWYgKG1fbWFpblJlc291
cmNlICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmhhc01hbmlmZXN0KCkpCi0gICAgICAgICAgICBt
ZW1vcnlDYWNoZSgpLnJlbW92ZShtX21haW5SZXNvdXJjZS5nZXQoKSk7CisgICAgICAgICAgICBt
ZW1vcnlDYWNoZSgpLnJlbW92ZSgqbV9tYWluUmVzb3VyY2UpOwogICAgIH0KICAgICBtX2FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LT5maW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKIH0KQEAgLTU5
OSw3ICs1OTksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZQogICAgIC8vIFRoZSBtZW1vcnkg
Y2FjaGUgZG9lc24ndCB1bmRlcnN0YW5kIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBvciBpdHMgY2Fj
aGluZyBydWxlcy4gU28gaWYgYSBtYWluIHJlc291cmNlIGlzIHNlcnZlZAogICAgIC8vIGZyb20g
dGhlIGFwcGxpY2F0aW9uIGNhY2hlLCBlbnN1cmUgd2UgZG9uJ3Qgc2F2ZSB0aGUgcmVzdWx0IGZv
ciBmdXR1cmUgdXNlLgogICAgIGlmICh3aWxsTG9hZEZhbGxiYWNrKQotICAgICAgICBtZW1vcnlD
YWNoZSgpLnJlbW92ZShtX21haW5SZXNvdXJjZS5nZXQoKSk7CisgICAgICAgIG1lbW9yeUNhY2hl
KCkucmVtb3ZlKCptX21haW5SZXNvdXJjZSk7CiAKICAgICBpZiAod2lsbExvYWRGYWxsYmFjaykK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggYWE1YzJjZDA4MzlmZDMwMGVkMzZmZjRiZjBiN2ZlNWU3Yzk1NjM5NC4uYjMy
MmZkMWI0OTE0NTMyN2FhOGYyZjIzZGVkM2UwZmY4ODBhMDUyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBT
dWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgbmV3UmVx
dWVzdCwgY29uc3QgUmVzb3UKICAgICAgICAgLy8gRG9pbmcgc28gd291bGQgaGF2ZSB1cyByZXVz
aW5nIHRoZSByZXNvdXJjZSBmcm9tIHRoZSBmaXJzdCByZXF1ZXN0IGlmIHRoZSBzZWNvbmQgcmVx
dWVzdCdzIHJldmFsaWRhdGlvbiBzdWNjZWVkcy4KICAgICAgICAgaWYgKG5ld1JlcXVlc3QuaXND
b25kaXRpb25hbCgpICYmIG1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkgJiYgbmV3
UmVxdWVzdC51cmwoKSAhPSBtX3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpLT5yZXNw
b25zZSgpLnVybCgpKSB7CiAgICAgICAgICAgICBuZXdSZXF1ZXN0Lm1ha2VVbmNvbmRpdGlvbmFs
KCk7Ci0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvbkZhaWxlZChtX3Jlc291
cmNlKTsKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmV2YWxpZGF0aW9uRmFpbGVkKCptX3Jl
c291cmNlKTsKICAgICAgICAgICAgIGlmIChtX2ZyYW1lKQogICAgICAgICAgICAgICAgIG1fZnJh
bWUtPm1haW5GcmFtZSgpLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01l
c3NhZ2VXaXRoUmVzdWx0KERpYWdub3N0aWNMb2dnaW5nS2V5czo6Y2FjaGVkUmVzb3VyY2VSZXZh
bGlkYXRpb25LZXkoKSwgZW1wdHlTdHJpbmcoKSwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRGYWls
KTsKICAgICAgICAgfQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAg
ICAgICAgICAgIC8vIDMwNCBOb3QgbW9kaWZpZWQgLyBVc2UgbG9jYWwgY29weQogICAgICAgICAg
ICAgLy8gRXhpc3RpbmcgcmVzb3VyY2UgaXMgb2ssIGp1c3QgdXNlIGl0IHVwZGF0aW5nIHRoZSBl
eHBpcmF0aW9uIHRpbWUuCiAgICAgICAgICAgICBtX3Jlc291cmNlLT5zZXRSZXNwb25zZShyZXNw
b25zZSk7Ci0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvblN1Y2NlZWRlZCht
X3Jlc291cmNlLCByZXNwb25zZSk7CisgICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRh
dGlvblN1Y2NlZWRlZCgqbV9yZXNvdXJjZSwgcmVzcG9uc2UpOwogICAgICAgICAgICAgaWYgKG1f
ZnJhbWUpCiAgICAgICAgICAgICAgICAgbV9mcmFtZS0+bWFpbkZyYW1lKCkuZGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoRGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjpjYWNoZWRSZXNvdXJjZVJldmFsaWRhdGlvbktleSgpLCBlbXB0eVN0cmluZygp
LCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFBhc3MpOwogICAgICAgICAgICAgaWYgKCFyZWFjaGVk
VGVybWluYWxTdGF0ZSgpKQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAvLyBEaWQgbm90IGdldCAz
MDQgcmVzcG9uc2UsIGNvbnRpbnVlIGFzIGEgcmVndWxhciByZXNvdXJjZSBsb2FkLgotICAgICAg
ICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvbkZhaWxlZChtX3Jlc291cmNlKTsKKyAgICAgICAg
bWVtb3J5Q2FjaGUoKS5yZXZhbGlkYXRpb25GYWlsZWQoKm1fcmVzb3VyY2UpOwogICAgICAgICBp
ZiAobV9mcmFtZSkKICAgICAgICAgICAgIG1fZnJhbWUtPm1haW5GcmFtZSgpLmRpYWdub3N0aWNM
b2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KERpYWdub3N0aWNM
b2dnaW5nS2V5czo6Y2FjaGVkUmVzb3VyY2VSZXZhbGlkYXRpb25LZXkoKSwgZW1wdHlTdHJpbmco
KSwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRGYWlsKTsKICAgICB9CkBAIC0zODUsMTAgKzM4NSwx
MCBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBwcm90ZWN0
UmVzb3VyY2UobV9yZXNvdXJjZSk7CiAgICAgbV9zdGF0ZSA9IEZpbmlzaGluZzsKICAgICBpZiAo
bV9yZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSkKLSAgICAgICAgbWVtb3J5Q2FjaGUo
KS5yZXZhbGlkYXRpb25GYWlsZWQobV9yZXNvdXJjZSk7CisgICAgICAgIG1lbW9yeUNhY2hlKCku
cmV2YWxpZGF0aW9uRmFpbGVkKCptX3Jlc291cmNlKTsKICAgICBtX3Jlc291cmNlLT5zZXRSZXNv
dXJjZUVycm9yKGVycm9yKTsKICAgICBpZiAoIW1fcmVzb3VyY2UtPmlzUHJlbG9hZGVkKCkpCi0g
ICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlKG1fcmVzb3VyY2UpOworICAgICAgICBtZW1vcnlD
YWNoZSgpLnJlbW92ZSgqbV9yZXNvdXJjZSk7CiAgICAgbV9yZXNvdXJjZS0+ZXJyb3IoQ2FjaGVk
UmVzb3VyY2U6OkxvYWRFcnJvcik7CiAgICAgY2xlYW51cEZvckVycm9yKGVycm9yKTsKICAgICBu
b3RpZnlEb25lKCk7CkBAIC00MTgsOSArNDE4LDkgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6
d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBtX3N0YXRlID0gRmlu
aXNoaW5nOwogI2VuZGlmCiAgICAgaWYgKG1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRl
KCkpCi0gICAgICAgIG1lbW9yeUNhY2hlKCkucmV2YWxpZGF0aW9uRmFpbGVkKG1fcmVzb3VyY2Up
OworICAgICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvbkZhaWxlZCgqbV9yZXNvdXJjZSk7
CiAgICAgbV9yZXNvdXJjZS0+c2V0UmVzb3VyY2VFcnJvcihlcnJvcik7Ci0gICAgbWVtb3J5Q2Fj
aGUoKS5yZW1vdmUobV9yZXNvdXJjZSk7CisgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmUoKm1fcmVz
b3VyY2UpOwogfQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cAppbmRleCA1MGI1MzJkMWMwZDFlMGI3MzBhNzg3MDFhNzk2NmJjODczZjQyYzA1Li5hN2MzNzcw
Zjk0OTA5MmFjMzc1MWQ2NTZiNWE2ZjZlNGViMDVjYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTM4MSw3ICszODEsNyBAQCB2b2lkIENhY2hl
ZEltYWdlOjphZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogICAg
ICAgICAvLyBJbWFnZSBkZWNvZGluZyBmYWlsZWQuIEVpdGhlciB3ZSBuZWVkIG1vcmUgaW1hZ2Ug
ZGF0YSBvciB0aGUgaW1hZ2UgZGF0YSBpcyBtYWxmb3JtZWQuCiAgICAgICAgIGVycm9yKGVycm9y
T2NjdXJyZWQoKSA/IHN0YXR1cygpIDogRGVjb2RlRXJyb3IpOwogICAgICAgICBpZiAoaW5DYWNo
ZSgpKQotICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmUodGhpcyk7CisgICAgICAgICAg
ICBtZW1vcnlDYWNoZSgpLnJlbW92ZSgqdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSkKICAgICAgICAgLy8gSW1hZ2UgZGVjb2RpbmcgZmFpbGVkOyB0aGUgaW1h
Z2UgZGF0YSBpcyBtYWxmb3JtZWQuCiAgICAgICAgIGVycm9yKGVycm9yT2NjdXJyZWQoKSA/IHN0
YXR1cygpIDogRGVjb2RlRXJyb3IpOwogICAgICAgICBpZiAoaW5DYWNoZSgpKQotICAgICAgICAg
ICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmUodGhpcyk7CisgICAgICAgICAgICBtZW1vcnlDYWNoZSgp
LnJlbW92ZSgqdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDAyNWM1ZTIxNTM3Nzcz
NTFiZGZmYWNiZTI5OGUwMzE2YmNkYTcwYjcuLmJmZWY4NWJmODcwZGU3MTU3Y2RhNmQzNjdhNzE2
NDQ2NjAwZjgzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIENhY2hlZFJlc291cmNlOjp+Q2FjaGVkUmVz
b3VyY2UoKQogI2VuZGlmCiAKICAgICBpZiAobV9vd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcikK
LSAgICAgICAgbV9vd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVtb3ZlQ2FjaGVkUmVzb3Vy
Y2UodGhpcyk7CisgICAgICAgIG1fb3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlbW92ZUNh
Y2hlZFJlc291cmNlKCp0aGlzKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmFpbEJlZm9y
ZVN0YXJ0aW5nKCkKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpmYWls
QmVmb3JlU3RhcnRpbmcoKQogICAgIC8vIEZJWE1FOiBXaGF0IGlmIHJlc291cmNlcyBpbiBvdGhl
ciBmcmFtZXMgd2VyZSB3YWl0aW5nIGZvciB0aGlzIHJldmFsaWRhdGlvbj8KICAgICBMT0coUmVz
b3VyY2VMb2FkaW5nLCAiQ2Fubm90IHN0YXJ0IGxvYWRpbmcgJyVzJyIsIHVybCgpLnN0cmluZygp
LmxhdGluMSgpLmRhdGEoKSk7CiAgICAgaWYgKG1fcmVzb3VyY2VUb1JldmFsaWRhdGUpIAotICAg
ICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvbkZhaWxlZCh0aGlzKTsgCisgICAgICAgIG1l
bW9yeUNhY2hlKCkucmV2YWxpZGF0aW9uRmFpbGVkKCp0aGlzKTsKICAgICBlcnJvcihDYWNoZWRS
ZXNvdXJjZTo6TG9hZEVycm9yKTsKIH0KIApAQCAtNDE1LDcgKzQxNSw3IEBAIGJvb2wgQ2FjaGVk
UmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCiAg
ICAgICAgICAgICBtX3ByZWxvYWRSZXN1bHQgPSBQcmVsb2FkUmVmZXJlbmNlZDsKICAgICB9CiAg
ICAgaWYgKCFoYXNDbGllbnRzKCkgJiYgaW5DYWNoZSgpKQotICAgICAgICBtZW1vcnlDYWNoZSgp
LmFkZFRvTGl2ZVJlc291cmNlc1NpemUodGhpcyk7CisgICAgICAgIG1lbW9yeUNhY2hlKCkuYWRk
VG9MaXZlUmVzb3VyY2VzU2l6ZSgqdGhpcyk7CiAKICAgICBpZiAoKG1fdHlwZSA9PSBSYXdSZXNv
dXJjZSB8fCBtX3R5cGUgPT0gTWFpblJlc291cmNlKSAmJiAhbV9yZXNwb25zZS5pc051bGwoKSAm
JiAhbV9wcm94eVJlc291cmNlKSB7CiAgICAgICAgIC8vIENlcnRhaW4gcmVzb3VyY2VzIChlc3Bl
Y2lhbGx5IFhIUnMgYW5kIG1haW4gcmVzb3VyY2VzKSBkbyBjcmF6eSB0aGluZ3MgaWYgYW4gYXN5
bmNocm9ub3VzIGxvYWQgcmV0dXJucwpAQCAtNDQ3LDggKzQ0Nyw4IEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2U6OnJlbW92ZUNsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogICAgIGJv
b2wgZGVsZXRlZCA9IGRlbGV0ZUlmUG9zc2libGUoKTsKICAgICBpZiAoIWRlbGV0ZWQgJiYgIWhh
c0NsaWVudHMoKSkgewogICAgICAgICBpZiAoaW5DYWNoZSgpKSB7Ci0gICAgICAgICAgICBtZW1v
cnlDYWNoZSgpLnJlbW92ZUZyb21MaXZlUmVzb3VyY2VzU2l6ZSh0aGlzKTsKLSAgICAgICAgICAg
IG1lbW9yeUNhY2hlKCkucmVtb3ZlRnJvbUxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCh0aGlzKTsK
KyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlRnJvbUxpdmVSZXNvdXJjZXNTaXplKCp0
aGlzKTsKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlRnJvbUxpdmVEZWNvZGVkUmVz
b3VyY2VzTGlzdCgqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFtX3N3aXRjaGluZ0Ns
aWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UpCiAgICAgICAgICAgICBhbGxDbGllbnRzUmVtb3Zl
ZCgpOwpAQCAtNDU4LDcgKzQ1OCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlbW92ZUNsaWVu
dChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogICAgICAgICAgICAgLy8gIm5vLXN0b3Jl
OiAuLi4gTVVTVCBtYWtlIGEgYmVzdC1lZmZvcnQgYXR0ZW1wdCB0byByZW1vdmUgdGhlIGluZm9y
bWF0aW9uIGZyb20gdm9sYXRpbGUgc3RvcmFnZSBhcyBwcm9tcHRseSBhcyBwb3NzaWJsZSIKICAg
ICAgICAgICAgIC8vICIuLi4gSGlzdG9yeSBidWZmZXJzIE1BWSBzdG9yZSBzdWNoIHJlc3BvbnNl
cyBhcyBwYXJ0IG9mIHRoZWlyIG5vcm1hbCBvcGVyYXRpb24uIgogICAgICAgICAgICAgLy8gV2Ug
YWxsb3cgbm9uLXNlY3VyZSBjb250ZW50IHRvIGJlIHJldXNlZCBpbiBoaXN0b3J5LCBidXQgd2Ug
ZG8gbm90IGFsbG93IHNlY3VyZSBjb250ZW50IHRvIGJlIHJldXNlZC4KLSAgICAgICAgICAgIG1l
bW9yeUNhY2hlKCkucmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZW1v
dmUoKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIG1lbW9yeUNhY2hlKCkucHJ1bmUoKTsKICAg
ICB9CkBAIC00OTksMTMgKzQ5OSwxMyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpzZXREZWNvZGVk
U2l6ZSh1bnNpZ25lZCBzaXplKQogICAgIC8vIFRoZSBvYmplY3QgbXVzdCBiZSBtb3ZlZCB0byBh
IGRpZmZlcmVudCBxdWV1ZSwgc2luY2UgaXRzIHNpemUgaGFzIGJlZW4gY2hhbmdlZC4KICAgICAv
LyBSZW1vdmUgYmVmb3JlIHVwZGF0aW5nIG1fZGVjb2RlZFNpemUsIHNvIHdlIGZpbmQgdGhlIHJl
c291cmNlIGluIHRoZSBjb3JyZWN0IExSVSBsaXN0LgogICAgIGlmIChpbkNhY2hlKCkpCi0gICAg
ICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlRnJvbUxSVUxpc3QodGhpcyk7CisgICAgICAgIG1lbW9y
eUNhY2hlKCkucmVtb3ZlRnJvbUxSVUxpc3QoKnRoaXMpOwogICAgIAogICAgIG1fZGVjb2RlZFNp
emUgPSBzaXplOwogICAgCiAgICAgaWYgKGluQ2FjaGUoKSkgeyAKICAgICAgICAgLy8gTm93IGlu
c2VydCBpbnRvIHRoZSBuZXcgTFJVIGxpc3QuCi0gICAgICAgIG1lbW9yeUNhY2hlKCkuaW5zZXJ0
SW5MUlVMaXN0KHRoaXMpOworICAgICAgICBtZW1vcnlDYWNoZSgpLmluc2VydEluTFJVTGlzdCgq
dGhpcyk7CiAgICAgICAgIAogICAgICAgICAvLyBJbnNlcnQgaW50byBvciByZW1vdmUgZnJvbSB0
aGUgbGl2ZSBkZWNvZGVkIGxpc3QgaWYgbmVjZXNzYXJ5LgogICAgICAgICAvLyBXaGVuIGluc2Vy
dGluZyBpbnRvIHRoZSBMaXZlRGVjb2RlZFJlc291cmNlc0xpc3QgaXQgaXMgcG9zc2libGUKQEAg
LTUxNiw5ICs1MTYsOSBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpzZXREZWNvZGVkU2l6ZSh1bnNp
Z25lZCBzaXplKQogICAgICAgICAvLyBhIHByb2JsZW0uIEZvciBtb3JlIGRldGFpbHMgcGxlYXNl
IHNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMjA5CiAgICAg
ICAgIGJvb2wgaW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QgPSBtZW1vcnlDYWNoZSgpLmluTGl2
ZURlY29kZWRSZXNvdXJjZXNMaXN0KCp0aGlzKTsKICAgICAgICAgaWYgKG1fZGVjb2RlZFNpemUg
JiYgIWluTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0ICYmIGhhc0NsaWVudHMoKSkKLSAgICAgICAg
ICAgIG1lbW9yeUNhY2hlKCkuaW5zZXJ0SW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QodGhpcyk7
CisgICAgICAgICAgICBtZW1vcnlDYWNoZSgpLmluc2VydEluTGl2ZURlY29kZWRSZXNvdXJjZXNM
aXN0KCp0aGlzKTsKICAgICAgICAgZWxzZSBpZiAoIW1fZGVjb2RlZFNpemUgJiYgaW5MaXZlRGVj
b2RlZFJlc291cmNlc0xpc3QpCi0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZUZyb21M
aXZlRGVjb2RlZFJlc291cmNlc0xpc3QodGhpcyk7CisgICAgICAgICAgICBtZW1vcnlDYWNoZSgp
LnJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoKnRoaXMpOwogCiAgICAgICAgIC8v
IFVwZGF0ZSB0aGUgY2FjaGUncyBzaXplIHRvdGFscy4KICAgICAgICAgbWVtb3J5Q2FjaGUoKS5h
ZGp1c3RTaXplKGhhc0NsaWVudHMoKSwgZGVsdGEpOwpAQCAtNTM1LDEyICs1MzUsMTIgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6c2V0RW5jb2RlZFNpemUodW5zaWduZWQgc2l6ZSkKICAgICAvLyBU
aGUgb2JqZWN0IG11c3QgYmUgbW92ZWQgdG8gYSBkaWZmZXJlbnQgcXVldWUsIHNpbmNlIGl0cyBz
aXplIGhhcyBiZWVuIGNoYW5nZWQuCiAgICAgLy8gUmVtb3ZlIGJlZm9yZSB1cGRhdGluZyBtX2Vu
Y29kZWRTaXplLCBzbyB3ZSBmaW5kIHRoZSByZXNvdXJjZSBpbiB0aGUgY29ycmVjdCBMUlUgbGlz
dC4KICAgICBpZiAoaW5DYWNoZSgpKQotICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZUZyb21M
UlVMaXN0KHRoaXMpOworICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZUZyb21MUlVMaXN0KCp0
aGlzKTsKIAogICAgIG1fZW5jb2RlZFNpemUgPSBzaXplOwogCiAgICAgaWYgKGluQ2FjaGUoKSkg
eyAKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS5pbnNlcnRJbkxSVUxpc3QodGhpcyk7CisgICAgICAg
IG1lbW9yeUNhY2hlKCkuaW5zZXJ0SW5MUlVMaXN0KCp0aGlzKTsKICAgICAgICAgbWVtb3J5Q2Fj
aGUoKS5hZGp1c3RTaXplKGhhc0NsaWVudHMoKSwgZGVsdGEpOwogICAgIH0KIH0KQEAgLTU1MSw4
ICs1NTEsOCBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpkaWRBY2Nlc3NEZWNvZGVkRGF0YShkb3Vi
bGUgdGltZVN0YW1wKQogICAgIAogICAgIGlmIChpbkNhY2hlKCkpIHsKICAgICAgICAgaWYgKG1l
bW9yeUNhY2hlKCkuaW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoKnRoaXMpKSB7Ci0gICAgICAg
ICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QodGhp
cyk7Ci0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLmluc2VydEluTGl2ZURlY29kZWRSZXNvdXJj
ZXNMaXN0KHRoaXMpOworICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmVGcm9tTGl2ZURl
Y29kZWRSZXNvdXJjZXNMaXN0KCp0aGlzKTsKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkuaW5z
ZXJ0SW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoKnRoaXMpOwogICAgICAgICB9CiAgICAgICAg
IG1lbW9yeUNhY2hlKCkucHJ1bmUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oCmluZGV4IGNlNzM5MjIwYmExYWVjODFm
MGIzNDI1N2NmMzA4YWQxMDhkYWRiMzcuLjg2Nzc5Mzk0N2RmMDY2N2Q0NTNjODVjOGEzNzRiMDgx
OGNlMjg1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUhhbmRsZS5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKIAogICAgIFIqIGdldCgp
IGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Uio+KENhY2hlZFJlc291cmNlSGFuZGxl
QmFzZTo6Z2V0KCkpOyB9CiAgICAgUiogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgp
OyB9CisgICAgUiYgb3BlcmF0b3IqKCkgY29uc3QgeyBBU1NFUlQoZ2V0KCkpOyByZXR1cm4gKmdl
dCgpOyB9CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZSYgb3BlcmF0b3I9KFIqIHJlcykgeyBz
ZXRSZXNvdXJjZShyZXMpOyByZXR1cm4gKnRoaXM7IH0gCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGUmIG9wZXJhdG9yPShjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZSYgbykgeyBzZXRSZXNvdXJj
ZShvLmdldCgpKTsgcmV0dXJuICp0aGlzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCA5NWNjNTA1YzM4YmFjYzY0
NWE1YzRjMzRmNTc0NmQ1NTYxMzkxMWUzLi4zZGNhMWFlNDg3N2UwMjRiZjQyYTU2NmQ1NDFiZTc0
OGM1NmZhZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIxOCwxNCArMjE4LDE0IEBAIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
VXNlckNTU1N0CiAgICAgaWYgKENhY2hlZFJlc291cmNlKiBleGlzdGluZyA9IG1lbW9yeUNhY2hl
KCkucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHNlc3Npb25J
RCgpKSkgewogICAgICAgICBpZiAoaXM8Q2FjaGVkQ1NTU3R5bGVTaGVldD4oKmV4aXN0aW5nKSkK
ICAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0PihleGlzdGlu
Zyk7Ci0gICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlKGV4aXN0aW5nKTsKKyAgICAgICAgbWVt
b3J5Q2FjaGUoKS5yZW1vdmUoKmV4aXN0aW5nKTsKICAgICB9CiAgICAgaWYgKHVybC5zdHJpbmco
KSAhPSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKQogICAgICAgICByZXF1ZXN0Lm11
dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5zZXRVUkwodXJsKTsKIAogICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IHVzZXJTaGVldCA9IG5ldyBDYWNoZWRDU1NTdHls
ZVNoZWV0KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QuY2hhcnNldCgpLCBzZXNz
aW9uSUQoKSk7CiAKLSAgICBtZW1vcnlDYWNoZSgpLmFkZCh1c2VyU2hlZXQuZ2V0KCkpOworICAg
IG1lbW9yeUNhY2hlKCkuYWRkKCp1c2VyU2hlZXQpOwogICAgIC8vIEZJWE1FOiBsb2FkUmVzb3Vy
Y2UgY2FsbHMgc2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBpZiB0aGUgcmVzb3VyY2Ug
Y291bGRuJ3QgYmUgYWRkZWQgdG8gY2FjaGUuIERvZXMgdGhpcyBmdW5jdGlvbiBuZWVkIHRvIGNh
bGwgaXQsIHRvbz8KIAogICAgIHVzZXJTaGVldC0+bG9hZCgqdGhpcywgUmVzb3VyY2VMb2FkZXJP
cHRpb25zKERvTm90U2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxv
d1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JBbGxDcmVkZW50aWFscywgU2tpcFNlY3Vy
aXR5Q2hlY2ssIFVzZURlZmF1bHRPcmlnaW5SZXN0cmljdGlvbnNGb3JUeXBlLCBEb05vdEluY2x1
ZGVDZXJ0aWZpY2F0ZUluZm8pKTsKQEAgLTQ4OSw3ICs0ODksNyBAQCBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJj
ZShDYWNoZQogICAgIGNvbnN0IFJldmFsaWRhdGlvblBvbGljeSBwb2xpY3kgPSBkZXRlcm1pbmVS
ZXZhbGlkYXRpb25Qb2xpY3kodHlwZSwgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCks
IHJlcXVlc3QuZm9yUHJlbG9hZCgpLCByZXNvdXJjZS5nZXQoKSwgcmVxdWVzdC5kZWZlcigpKTsK
ICAgICBzd2l0Y2ggKHBvbGljeSkgewogICAgIGNhc2UgUmVsb2FkOgotICAgICAgICBtZW1vcnlD
YWNoZSgpLnJlbW92ZShyZXNvdXJjZS5nZXQoKSk7CisgICAgICAgIG1lbW9yeUNhY2hlKCkucmVt
b3ZlKCpyZXNvdXJjZSk7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgTG9hZDoKICAg
ICAgICAgaWYgKHJlc291cmNlKQpAQCAtNTA1LDcgKzUwNSw3IEBAIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNl
KENhY2hlCiAgICAgICAgIGlmICghc2hvdWxkQ29udGludWVBZnRlck5vdGlmeWluZ0xvYWRlZEZy
b21NZW1vcnlDYWNoZShyZXF1ZXN0LCByZXNvdXJjZS5nZXQoKSkpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgbG9nTWVtb3J5Q2FjaGVSZXNvdXJjZVJlcXVlc3QoZnJhbWUo
KSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbk1lbW9yeUNhY2hlS2V5KCksIERpYWdub3N0aWNM
b2dnaW5nS2V5czo6dXNlZEtleSgpKTsKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZXNvdXJjZUFj
Y2Vzc2VkKHJlc291cmNlLmdldCgpKTsKKyAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZXNvdXJjZUFj
Y2Vzc2VkKCpyZXNvdXJjZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNTIxLDcgKzUy
MSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAgICAgICAgIC8vIFdlIGRvbid0IHN1cHBv
cnQgaW1tZWRpYXRlIGxvYWRzLCBidXQgd2UgZG8gc3VwcG9ydCBpbW1lZGlhdGUgZmFpbHVyZS4K
ICAgICAgICAgaWYgKHJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpIHsKICAgICAgICAgICAgIGlm
IChyZXNvdXJjZS0+aW5DYWNoZSgpKQotICAgICAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmVt
b3ZlKHJlc291cmNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92
ZSgqcmVzb3VyY2UpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAg
ICB9CkBAIC01NTUsOCArNTU1LDggQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3Vy
Y2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2UoY28KICAgICBMT0co
UmVzb3VyY2VMb2FkaW5nLCAiUmVzb3VyY2UgJXAgY3JlYXRlZCB0byByZXZhbGlkYXRlICVwIiwg
bmV3UmVzb3VyY2UuZ2V0KCksIHJlc291cmNlKTsKICAgICBuZXdSZXNvdXJjZS0+c2V0UmVzb3Vy
Y2VUb1JldmFsaWRhdGUocmVzb3VyY2UpOwogICAgIAotICAgIG1lbW9yeUNhY2hlKCkucmVtb3Zl
KHJlc291cmNlKTsKLSAgICBtZW1vcnlDYWNoZSgpLmFkZChuZXdSZXNvdXJjZS5nZXQoKSk7Cisg
ICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmUoKnJlc291cmNlKTsKKyAgICBtZW1vcnlDYWNoZSgpLmFk
ZCgqbmV3UmVzb3VyY2UpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9USU1JTkcpCiAgICAgc3RvcmVS
ZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uKHJlc291cmNlLCByZXF1ZXN0KTsKICNl
bHNlCkBAIC01NzMsNyArNTczLDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3Vy
Y2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UoQ2FjaGVkUmUKIAogICAgIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IGNyZWF0ZVJlc291
cmNlKHR5cGUsIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LmNoYXJz
ZXQoKSwgc2Vzc2lvbklEKCkpOwogCi0gICAgaWYgKCFtZW1vcnlDYWNoZSgpLmFkZChyZXNvdXJj
ZS5nZXQoKSkpCisgICAgaWYgKCFtZW1vcnlDYWNoZSgpLmFkZCgqcmVzb3VyY2UpKQogICAgICAg
ICByZXNvdXJjZS0+c2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIodGhpcyk7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX1RJTUlORykKICAgICBzdG9yZVJlc291cmNlVGltaW5nSW5pdGlhdG9ySW5m
b3JtYXRpb24ocmVzb3VyY2UsIHJlcXVlc3QpOwpAQCAtNzg5LDIyICs3ODksMjIgQEAgQ2FjaGVQ
b2xpY3kgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhY2hlUG9saWN5KENhY2hlZFJlc291cmNlOjpU
eXBlIHR5cGUpIGNvbnN0CiAgICAgfQogfQogCi12b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpIGNvbnN0Cit2b2lk
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIERvY3VtZW50UmVzb3VyY2VNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9kb2N1bWVudFJlc291cmNlcy5maW5kKHJlc291cmNlLT51cmwoKSk7
CisgICAgRG9jdW1lbnRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2RvY3VtZW50UmVzb3Vy
Y2VzLmZpbmQocmVzb3VyY2UudXJsKCkpOwogICAgIGlmIChpdCAhPSBtX2RvY3VtZW50UmVzb3Vy
Y2VzLmVuZCgpKQotICAgICAgICBBU1NFUlQoaXQtPnZhbHVlLmdldCgpID09IHJlc291cmNlKTsK
KyAgICAgICAgQVNTRVJUKGl0LT52YWx1ZS5nZXQoKSA9PSAmcmVzb3VyY2UpOwogI2VuZGlmCi0g
ICAgbV9kb2N1bWVudFJlc291cmNlcy5yZW1vdmUocmVzb3VyY2UtPnVybCgpKTsKKyAgICBtX2Rv
Y3VtZW50UmVzb3VyY2VzLnJlbW92ZShyZXNvdXJjZS51cmwoKSk7CiB9CiAKLXZvaWQgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OmFkZENhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmFkZENhY2hlZFJlc291cmNlKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSkKIHsKLSAgICBtX2RvY3VtZW50UmVzb3VyY2VzLnNldChyZXNvdXJj
ZS0+dXJsKCksIHJlc291cmNlKTsKKyAgICBtX2RvY3VtZW50UmVzb3VyY2VzLnNldChyZXNvdXJj
ZS51cmwoKSwgJnJlc291cmNlKTsKIAogICAgIGlmICghbWVtb3J5Q2FjaGUoKS5hZGQocmVzb3Vy
Y2UpKQotICAgICAgICByZXNvdXJjZS0+c2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIodGhp
cyk7CisgICAgICAgIHJlc291cmNlLnNldE93bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKHRoaXMp
OwogfQogCiB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkRG9uZShDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UsIGJvb2wgc2hvdWxkUGVyZm9ybVBvc3RMb2FkQWN0aW9ucykKQEAgLTk4NSwx
MyArOTg1LDExIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNsZWFyUHJlbG9hZHMoKQog
ICAgIGlmICghbV9wcmVsb2FkcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGlzdEhhc2hTZXQ8
Q2FjaGVkUmVzb3VyY2UqPjo6aXRlcmF0b3IgZW5kID0gbV9wcmVsb2Fkcy0+ZW5kKCk7Ci0gICAg
Zm9yIChMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+OjppdGVyYXRvciBpdCA9IG1fcHJlbG9h
ZHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBDYWNoZWRSZXNvdXJjZSog
cmVzID0gKml0OwotICAgICAgICByZXMtPmRlY3JlYXNlUHJlbG9hZENvdW50KCk7Ci0gICAgICAg
IGJvb2wgZGVsZXRlZCA9IHJlcy0+ZGVsZXRlSWZQb3NzaWJsZSgpOwotICAgICAgICBpZiAoIWRl
bGV0ZWQgJiYgcmVzLT5wcmVsb2FkUmVzdWx0KCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlByZWxvYWRO
b3RSZWZlcmVuY2VkKQotICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmUocmVzKTsKKyAg
ICBmb3IgKGF1dG8qIHJlc291cmNlIDogKm1fcHJlbG9hZHMpIHsKKyAgICAgICAgcmVzb3VyY2Ut
PmRlY3JlYXNlUHJlbG9hZENvdW50KCk7CisgICAgICAgIGJvb2wgZGVsZXRlZCA9IHJlc291cmNl
LT5kZWxldGVJZlBvc3NpYmxlKCk7CisgICAgICAgIGlmICghZGVsZXRlZCAmJiByZXNvdXJjZS0+
cHJlbG9hZFJlc3VsdCgpID09IENhY2hlZFJlc291cmNlOjpQcmVsb2FkTm90UmVmZXJlbmNlZCkK
KyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlKCpyZXNvdXJjZSk7CiAgICAgfQogICAg
IG1fcHJlbG9hZHMgPSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCAxZmQ1NzBiMjljMzA1N2QzOWYxMDA1
NTg4ZTg4ZWY3YjlkNTNkNzg2Li44MTdlMzYwNzViMWMwZTdiOWIyYzYzZjY3NGI1NTM2OTBkNjk4
ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtMTEzLDggKzExMyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyRG9j
dW1lbnRMb2FkZXIoKSB7IG1fZG9jdW1lbnRMb2FkZXIgPSAwOyB9CiAgICAgU2Vzc2lvbklEIHNl
c3Npb25JRCgpIGNvbnN0OwogCi0gICAgdm9pZCByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZSopIGNvbnN0OwotICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3Vy
Y2UqKTsKKyAgICB2b2lkIHJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJik7Cisg
ICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgdm9pZCBs
b2FkRG9uZShDYWNoZWRSZXNvdXJjZSosIGJvb2wgc2hvdWxkUGVyZm9ybVBvc3RMb2FkQWN0aW9u
cyA9IHRydWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNw
cAppbmRleCA4YzdhZTQ1YjFjZmM4NDliOTE0ZTAxM2JiMzQ4YjI1MWFmNGRmZjBmLi45Zjg2ZTk1
OGY0YTk0ZTljYjlkOTI3MDc2NTcyZjFkNThhZjc0YTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTk3LDgxICs5Nyw4MiBAQCBVUkwgTWVtb3J5
Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKGNvbnN0IFVSTCYgb3JpZ2lu
YWxVUkwpCiAgICAgcmV0dXJuIHVybDsKIH0KIAotYm9vbCBNZW1vcnlDYWNoZTo6YWRkKENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSkKK2Jvb2wgTWVtb3J5Q2FjaGU6OmFkZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCiB7CiAgICAgaWYgKGRpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKIAotICAgIENhY2hlZFJlc291
cmNlTWFwJiByZXNvdXJjZXMgPSBzZXNzaW9uUmVzb3VyY2VzKHJlc291cmNlLT5zZXNzaW9uSUQo
KSk7CisgICAgQ2FjaGVkUmVzb3VyY2VNYXAmIHJlc291cmNlcyA9IHNlc3Npb25SZXNvdXJjZXMo
cmVzb3VyY2Uuc2Vzc2lvbklEKCkpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0g
ICAgQ2FjaGVkUmVzb3VyY2VJdGVtKiBvcmlnaW5NYXAgPSByZXNvdXJjZXMuZ2V0KHJlc291cmNl
LT51cmwoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VJdGVtKiBvcmlnaW5NYXAgPSByZXNvdXJjZXMu
Z2V0KHJlc291cmNlLnVybCgpKTsKICAgICBpZiAoIW9yaWdpbk1hcCkgewogICAgICAgICBvcmln
aW5NYXAgPSBuZXcgQ2FjaGVkUmVzb3VyY2VJdGVtOwotICAgICAgICByZXNvdXJjZXMuc2V0KHJl
c291cmNlLT51cmwoKSwgYWRvcHRQdHIob3JpZ2luTWFwKSk7CisgICAgICAgIHJlc291cmNlcy5z
ZXQocmVzb3VyY2UudXJsKCksIGFkb3B0UHRyKG9yaWdpbk1hcCkpOwogICAgIH0KLSAgICBvcmln
aW5NYXAtPnNldChyZXNvdXJjZS0+Y2FjaGVQYXJ0aXRpb24oKSwgcmVzb3VyY2UpOworICAgIG9y
aWdpbk1hcC0+c2V0KHJlc291cmNlLmNhY2hlUGFydGl0aW9uKCksICZyZXNvdXJjZSk7CiAjZWxz
ZQotICAgIHJlc291cmNlcy5zZXQocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZSk7CisgICAgcmVz
b3VyY2VzLnNldChyZXNvdXJjZS51cmwoKSwgJnJlc291cmNlKTsKICNlbmRpZgotICAgIHJlc291
cmNlLT5zZXRJbkNhY2hlKHRydWUpOworICAgIHJlc291cmNlLnNldEluQ2FjaGUodHJ1ZSk7CiAg
ICAgCiAgICAgcmVzb3VyY2VBY2Nlc3NlZChyZXNvdXJjZSk7CiAgICAgCi0gICAgTE9HKFJlc291
cmNlTG9hZGluZywgIk1lbW9yeUNhY2hlOjphZGQgQWRkZWQgJyVzJywgcmVzb3VyY2UgJXBcbiIs
IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIHJlc291cmNlKTsKKyAg
ICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiTWVtb3J5Q2FjaGU6OmFkZCBBZGRlZCAnJXMnLCByZXNv
dXJjZSAlcFxuIiwgcmVzb3VyY2UudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCAmcmVz
b3VyY2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE1lbW9yeUNhY2hlOjpyZXZhbGlk
YXRpb25TdWNjZWVkZWQoQ2FjaGVkUmVzb3VyY2UqIHJldmFsaWRhdGluZ1Jlc291cmNlLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCB0YWtl
IGEgcmVmZXJlbmNlLgordm9pZCBNZW1vcnlDYWNoZTo6cmV2YWxpZGF0aW9uU3VjY2VlZGVkKENh
Y2hlZFJlc291cmNlJiByZXZhbGlkYXRpbmdSZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiB7Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcmV2YWxpZGF0
aW5nUmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCk7Ci0gICAgQVNTRVJUKHJlc291cmNl
KTsKLSAgICBBU1NFUlQoIXJlc291cmNlLT5pbkNhY2hlKCkpOwotICAgIEFTU0VSVChyZXNvdXJj
ZS0+aXNMb2FkZWQoKSk7Ci0gICAgQVNTRVJUKHJldmFsaWRhdGluZ1Jlc291cmNlLT5pbkNhY2hl
KCkpOworICAgIEFTU0VSVChyZXZhbGlkYXRpbmdSZXNvdXJjZS5yZXNvdXJjZVRvUmV2YWxpZGF0
ZSgpKTsKKyAgICBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UgPSAqcmV2YWxpZGF0aW5nUmVzb3Vy
Y2UucmVzb3VyY2VUb1JldmFsaWRhdGUoKTsKKyAgICBBU1NFUlQoIXJlc291cmNlLmluQ2FjaGUo
KSk7CisgICAgQVNTRVJUKHJlc291cmNlLmlzTG9hZGVkKCkpOworICAgIEFTU0VSVChyZXZhbGlk
YXRpbmdSZXNvdXJjZS5pbkNhY2hlKCkpOwogCiAgICAgLy8gQ2FsbGluZyByZW1vdmUoKSBjYW4g
cG90ZW50aWFsbHkgZGVsZXRlIHJldmFsaWRhdGluZ1Jlc291cmNlLCB3aGljaCB3ZSB1c2UKICAg
ICAvLyBiZWxvdy4gVGhpcyBtdXN0bid0IGJlIHRoZSBjYXNlIHNpbmNlIHJldmFsaWRhdGlvbiBt
ZWFucyBpdCBpcyBsb2FkZWQKICAgICAvLyBhbmQgc28gY2FuRGVsZXRlKCkgaXMgZmFsc2UuCi0g
ICAgQVNTRVJUKCFyZXZhbGlkYXRpbmdSZXNvdXJjZS0+Y2FuRGVsZXRlKCkpOworICAgIEFTU0VS
VCghcmV2YWxpZGF0aW5nUmVzb3VyY2UuY2FuRGVsZXRlKCkpOwogCiAgICAgcmVtb3ZlKHJldmFs
aWRhdGluZ1Jlc291cmNlKTsKIAotICAgIENhY2hlZFJlc291cmNlTWFwJiByZXNvdXJjZXMgPSBz
ZXNzaW9uUmVzb3VyY2VzKHJlc291cmNlLT5zZXNzaW9uSUQoKSk7CisgICAgQ2FjaGVkUmVzb3Vy
Y2VNYXAmIHJlc291cmNlcyA9IHNlc3Npb25SZXNvdXJjZXMocmVzb3VyY2Uuc2Vzc2lvbklEKCkp
OwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgQVNTRVJUKCFyZXNvdXJjZXMu
Z2V0KHJlc291cmNlLT51cmwoKSkgfHwgIXJlc291cmNlcy5nZXQocmVzb3VyY2UtPnVybCgpKS0+
Z2V0KHJlc291cmNlLT5jYWNoZVBhcnRpdGlvbigpKSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2VJdGVt
KiBvcmlnaW5NYXAgPSByZXNvdXJjZXMuZ2V0KHJlc291cmNlLT51cmwoKSk7CisgICAgQVNTRVJU
KCFyZXNvdXJjZXMuZ2V0KHJlc291cmNlLnVybCgpKSB8fCAhcmVzb3VyY2VzLmdldChyZXNvdXJj
ZS51cmwoKSktPmdldChyZXNvdXJjZS5jYWNoZVBhcnRpdGlvbigpKSk7CisgICAgQ2FjaGVkUmVz
b3VyY2VJdGVtKiBvcmlnaW5NYXAgPSByZXNvdXJjZXMuZ2V0KHJlc291cmNlLnVybCgpKTsKICAg
ICBpZiAoIW9yaWdpbk1hcCkgewogICAgICAgICBvcmlnaW5NYXAgPSBuZXcgQ2FjaGVkUmVzb3Vy
Y2VJdGVtOwotICAgICAgICByZXNvdXJjZXMuc2V0KHJlc291cmNlLT51cmwoKSwgYWRvcHRQdHIo
b3JpZ2luTWFwKSk7CisgICAgICAgIHJlc291cmNlcy5zZXQocmVzb3VyY2UudXJsKCksIGFkb3B0
UHRyKG9yaWdpbk1hcCkpOwogICAgIH0KLSAgICBvcmlnaW5NYXAtPnNldChyZXNvdXJjZS0+Y2Fj
aGVQYXJ0aXRpb24oKSwgcmVzb3VyY2UpOworICAgIG9yaWdpbk1hcC0+c2V0KHJlc291cmNlLmNh
Y2hlUGFydGl0aW9uKCksICZyZXNvdXJjZSk7CiAjZWxzZQotICAgIEFTU0VSVCghcmVzb3VyY2Vz
LmdldChyZXNvdXJjZS0+dXJsKCkpKTsKLSAgICByZXNvdXJjZXMuc2V0KHJlc291cmNlLT51cmwo
KSwgcmVzb3VyY2UpOworICAgIEFTU0VSVCghcmVzb3VyY2VzLmdldChyZXNvdXJjZS51cmwoKSkp
OworICAgIHJlc291cmNlcy5zZXQocmVzb3VyY2UtPnVybCgpLCAmcmVzb3VyY2UpOwogI2VuZGlm
Ci0gICAgcmVzb3VyY2UtPnNldEluQ2FjaGUodHJ1ZSk7Ci0gICAgcmVzb3VyY2UtPnVwZGF0ZVJl
c3BvbnNlQWZ0ZXJSZXZhbGlkYXRpb24ocmVzcG9uc2UpOworICAgIHJlc291cmNlLnNldEluQ2Fj
aGUodHJ1ZSk7CisgICAgcmVzb3VyY2UudXBkYXRlUmVzcG9uc2VBZnRlclJldmFsaWRhdGlvbihy
ZXNwb25zZSk7CiAgICAgaW5zZXJ0SW5MUlVMaXN0KHJlc291cmNlKTsKLSAgICBpbnQgZGVsdGEg
PSByZXNvdXJjZS0+c2l6ZSgpOwotICAgIGlmIChyZXNvdXJjZS0+ZGVjb2RlZFNpemUoKSAmJiBy
ZXNvdXJjZS0+aGFzQ2xpZW50cygpKQorICAgIGludCBkZWx0YSA9IHJlc291cmNlLnNpemUoKTsK
KyAgICBpZiAocmVzb3VyY2UuZGVjb2RlZFNpemUoKSAmJiByZXNvdXJjZS5oYXNDbGllbnRzKCkp
CiAgICAgICAgIGluc2VydEluTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KHJlc291cmNlKTsKICAg
ICBpZiAoZGVsdGEpCi0gICAgICAgIGFkanVzdFNpemUocmVzb3VyY2UtPmhhc0NsaWVudHMoKSwg
ZGVsdGEpOworICAgICAgICBhZGp1c3RTaXplKHJlc291cmNlLmhhc0NsaWVudHMoKSwgZGVsdGEp
OwogICAgIAotICAgIHJldmFsaWRhdGluZ1Jlc291cmNlLT5zd2l0Y2hDbGllbnRzVG9SZXZhbGlk
YXRlZFJlc291cmNlKCk7Ci0gICAgQVNTRVJUKCFyZXZhbGlkYXRpbmdSZXNvdXJjZS0+bV9kZWxl
dGVkKTsKKyAgICByZXZhbGlkYXRpbmdSZXNvdXJjZS5zd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRl
ZFJlc291cmNlKCk7CisgICAgQVNTRVJUKCFyZXZhbGlkYXRpbmdSZXNvdXJjZS5tX2RlbGV0ZWQp
OwogICAgIC8vIHRoaXMgZGVsZXRlcyB0aGUgcmV2YWxpZGF0aW5nIHJlc291cmNlCi0gICAgcmV2
YWxpZGF0aW5nUmVzb3VyY2UtPmNsZWFyUmVzb3VyY2VUb1JldmFsaWRhdGUoKTsKKyAgICByZXZh
bGlkYXRpbmdSZXNvdXJjZS5jbGVhclJlc291cmNlVG9SZXZhbGlkYXRlKCk7CiB9CiAKLXZvaWQg
TWVtb3J5Q2FjaGU6OnJldmFsaWRhdGlvbkZhaWxlZChDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0
aW5nUmVzb3VyY2UpCit2b2lkIE1lbW9yeUNhY2hlOjpyZXZhbGlkYXRpb25GYWlsZWQoQ2FjaGVk
UmVzb3VyY2UmIHJldmFsaWRhdGluZ1Jlc291cmNlKQogewogICAgIEFTU0VSVChXVEY6OmlzTWFp
blRocmVhZCgpKTsKLSAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmV2YWxpZGF0aW9uIGZhaWxl
ZCBmb3IgJXAiLCByZXZhbGlkYXRpbmdSZXNvdXJjZSk7Ci0gICAgQVNTRVJUKHJldmFsaWRhdGlu
Z1Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKTsKLSAgICByZXZhbGlkYXRpbmdSZXNv
dXJjZS0+Y2xlYXJSZXNvdXJjZVRvUmV2YWxpZGF0ZSgpOworICAgIExPRyhSZXNvdXJjZUxvYWRp
bmcsICJSZXZhbGlkYXRpb24gZmFpbGVkIGZvciAlcCIsICZyZXZhbGlkYXRpbmdSZXNvdXJjZSk7
CisgICAgQVNTRVJUKHJldmFsaWRhdGluZ1Jlc291cmNlLnJlc291cmNlVG9SZXZhbGlkYXRlKCkp
OworICAgIHJldmFsaWRhdGluZ1Jlc291cmNlLmNsZWFyUmVzb3VyY2VUb1JldmFsaWRhdGUoKTsK
IH0KIAogQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXNvdXJjZUZvclVSTChjb25zdCBV
UkwmIHJlc291cmNlVVJMLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQpAQCAtMTkxLDcgKzE5Miw3IEBA
IENhY2hlZFJlc291cmNlKiBNZW1vcnlDYWNoZTo6cmVzb3VyY2VGb3JSZXF1ZXN0SW1wbChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5H
KQogICAgIENhY2hlZFJlc291cmNlSXRlbSogaXRlbSA9IHJlc291cmNlcy5nZXQodXJsKTsKLSAg
ICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSAwOworICAgIENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSA9IG51bGxwdHI7CiAgICAgaWYgKGl0ZW0pCiAgICAgICAgIHJlc291cmNlID0gaXRlbS0+
Z2V0KHJlcXVlc3QuY2FjaGVQYXJ0aXRpb24oKSk7CiAjZWxzZQpAQCAtMjQzLDcgKzI0NCw3IEBA
IGJvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykK
ICAgICBjYWNoZWRJbWFnZS0+cmVzb3VyY2VSZXF1ZXN0KCkuc2V0RG9tYWluRm9yQ2FjaGVQYXJ0
aXRpb24oZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogI2VuZGlmCi0gICAgcmV0dXJuIGFkZChj
YWNoZWRJbWFnZS5yZWxlYXNlKCkpOworICAgIHJldHVybiBhZGQoKmNhY2hlZEltYWdlLnJlbGVh
c2UoKSk7CiB9CiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZUltYWdlRnJvbUNhY2hlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKQpAQCAtMjY0
LDcgKzI2NSw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZUltYWdlRnJvbUNhY2hlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhCiAKICAgICAvLyBBIHJlc291cmNl
IGV4aXN0cyBhbmQgaXMgbm90IGEgbWFudWFsbHkgY2FjaGVkIGltYWdlLCBzbyBqdXN0IHJlbW92
ZSBpdC4KICAgICBpZiAoIWlzPENhY2hlZEltYWdlPigqcmVzb3VyY2UpIHx8ICFkb3duY2FzdDxD
YWNoZWRJbWFnZT4oKnJlc291cmNlKS5pc01hbnVhbGx5Q2FjaGVkKCkpIHsKLSAgICAgICAgcmVt
b3ZlKHJlc291cmNlKTsKKyAgICAgICAgcmVtb3ZlKCpyZXNvdXJjZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTM4MSw3ICszODIsNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpwcnVuZURl
YWRSZXNvdXJjZXNUb1NpemUodW5zaWduZWQgdGFyZ2V0U2l6ZSkKICAgICAgICAgICAgIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBwcmV2aW91cyA9IGN1cnJlbnQtPm1fcHJl
dkluQWxsUmVzb3VyY2VzTGlzdDsKICAgICAgICAgICAgIEFTU0VSVCghcHJldmlvdXMgfHwgcHJl
dmlvdXMtPmluQ2FjaGUoKSk7CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnQtPmhhc0NsaWVudHMo
KSAmJiAhY3VycmVudC0+aXNQcmVsb2FkZWQoKSAmJiAhY3VycmVudC0+aXNDYWNoZVZhbGlkYXRv
cigpKSB7Ci0gICAgICAgICAgICAgICAgcmVtb3ZlKGN1cnJlbnQpOworICAgICAgICAgICAgICAg
IHJlbW92ZSgqY3VycmVudCk7CiAgICAgICAgICAgICAgICAgaWYgKHRhcmdldFNpemUgJiYgbV9k
ZWFkU2l6ZSA8PSB0YXJnZXRTaXplKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CkBAIC00MDksNzMgKzQxMCw3MyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpzZXRDYXBh
Y2l0aWVzKHVuc2lnbmVkIG1pbkRlYWRCeXRlcywgdW5zaWduZWQgbWF4RGVhZEJ5dGVzLCB1bgog
ICAgIHBydW5lKCk7CiB9CiAKLXZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZShDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UpCit2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmUoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQogewogICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKLSAgICBMT0coUmVz
b3VyY2VMb2FkaW5nLCAiRXZpY3RpbmcgcmVzb3VyY2UgJXAgZm9yICclcycgZnJvbSBjYWNoZSIs
IHJlc291cmNlLCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAg
ICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiRXZpY3RpbmcgcmVzb3VyY2UgJXAgZm9yICclcycgZnJv
bSBjYWNoZSIsICZyZXNvdXJjZSwgcmVzb3VyY2UudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0
YSgpKTsKICAgICAvLyBUaGUgcmVzb3VyY2UgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQg
Ynkgc29tZW9uZSBvdGhlciB0aGFuIG91ciBjYWxsZXIsCiAgICAgLy8gd2hvIG5lZWRlZCBhIGZy
ZXNoIGNvcHkgZm9yIGEgcmVsb2FkLiBTZWUgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNDc5I2M2Pi4KLSAgICBDYWNoZWRSZXNvdXJjZU1hcCYgcmVzb3VyY2VzID0g
c2Vzc2lvblJlc291cmNlcyhyZXNvdXJjZS0+c2Vzc2lvbklEKCkpOwotICAgIGlmIChyZXNvdXJj
ZS0+aW5DYWNoZSgpKSB7CisgICAgQ2FjaGVkUmVzb3VyY2VNYXAmIHJlc291cmNlcyA9IHNlc3Np
b25SZXNvdXJjZXMocmVzb3VyY2Uuc2Vzc2lvbklEKCkpOworICAgIGlmIChyZXNvdXJjZS5pbkNh
Y2hlKCkpIHsKICAgICAgICAgLy8gUmVtb3ZlIGZyb20gdGhlIHJlc291cmNlIG1hcC4KICNpZiBF
TkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAgICAgICBDYWNoZWRSZXNvdXJjZUl0ZW0qIGl0
ZW0gPSByZXNvdXJjZXMuZ2V0KHJlc291cmNlLT51cmwoKSk7CisgICAgICAgIENhY2hlZFJlc291
cmNlSXRlbSogaXRlbSA9IHJlc291cmNlcy5nZXQocmVzb3VyY2UudXJsKCkpOwogICAgICAgICBp
ZiAoaXRlbSkgewotICAgICAgICAgICAgaXRlbS0+cmVtb3ZlKHJlc291cmNlLT5jYWNoZVBhcnRp
dGlvbigpKTsKKyAgICAgICAgICAgIGl0ZW0tPnJlbW92ZShyZXNvdXJjZS5jYWNoZVBhcnRpdGlv
bigpKTsKICAgICAgICAgICAgIGlmICghaXRlbS0+c2l6ZSgpKQotICAgICAgICAgICAgICAgIHJl
c291cmNlcy5yZW1vdmUocmVzb3VyY2UtPnVybCgpKTsKKyAgICAgICAgICAgICAgICByZXNvdXJj
ZXMucmVtb3ZlKHJlc291cmNlLnVybCgpKTsKICAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgcmVz
b3VyY2VzLnJlbW92ZShyZXNvdXJjZS0+dXJsKCkpOworICAgICAgICByZXNvdXJjZXMucmVtb3Zl
KHJlc291cmNlLnVybCgpKTsKICNlbmRpZgotICAgICAgICByZXNvdXJjZS0+c2V0SW5DYWNoZShm
YWxzZSk7CisgICAgICAgIHJlc291cmNlLnNldEluQ2FjaGUoZmFsc2UpOwogCiAgICAgICAgIC8v
IFJlbW92ZSBmcm9tIHRoZSBhcHByb3ByaWF0ZSBMUlUgbGlzdC4KICAgICAgICAgcmVtb3ZlRnJv
bUxSVUxpc3QocmVzb3VyY2UpOwogICAgICAgICByZW1vdmVGcm9tTGl2ZURlY29kZWRSZXNvdXJj
ZXNMaXN0KHJlc291cmNlKTsKLSAgICAgICAgYWRqdXN0U2l6ZShyZXNvdXJjZS0+aGFzQ2xpZW50
cygpLCAtc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZS0+c2l6ZSgpKSk7CisgICAgICAgIGFkanVz
dFNpemUocmVzb3VyY2UuaGFzQ2xpZW50cygpLCAtc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZS5z
aXplKCkpKTsKICAgICB9IGVsc2UKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAg
ICAgICBBU1NFUlQoIXJlc291cmNlcy5nZXQocmVzb3VyY2UtPnVybCgpKSB8fCByZXNvdXJjZXMu
Z2V0KHJlc291cmNlLT51cmwoKSktPmdldChyZXNvdXJjZS0+Y2FjaGVQYXJ0aXRpb24oKSkgIT0g
cmVzb3VyY2UpOworICAgICAgICBBU1NFUlQoIXJlc291cmNlcy5nZXQocmVzb3VyY2UudXJsKCkp
IHx8IHJlc291cmNlcy5nZXQocmVzb3VyY2UudXJsKCkpLT5nZXQocmVzb3VyY2UuY2FjaGVQYXJ0
aXRpb24oKSkgIT0gJnJlc291cmNlKTsKICNlbHNlCi0gICAgICAgIEFTU0VSVChyZXNvdXJjZXMu
Z2V0KHJlc291cmNlLT51cmwoKSkgIT0gcmVzb3VyY2UpOworICAgICAgICBBU1NFUlQocmVzb3Vy
Y2VzLmdldChyZXNvdXJjZS51cmwoKSkgIT0gJnJlc291cmNlKTsKICNlbmRpZgogCi0gICAgcmVz
b3VyY2UtPmRlbGV0ZUlmUG9zc2libGUoKTsKKyAgICByZXNvdXJjZS5kZWxldGVJZlBvc3NpYmxl
KCk7CiB9CiAKLU1lbW9yeUNhY2hlOjpMUlVMaXN0KiBNZW1vcnlDYWNoZTo6bHJ1TGlzdEZvcihD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCitNZW1vcnlDYWNoZTo6TFJVTGlzdCogTWVtb3J5Q2Fj
aGU6OmxydUxpc3RGb3IoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIHVuc2lnbmVk
IGFjY2Vzc0NvdW50ID0gc3RkOjptYXgocmVzb3VyY2UtPmFjY2Vzc0NvdW50KCksIDFVKTsKLSAg
ICB1bnNpZ25lZCBxdWV1ZUluZGV4ID0gV1RGOjpmYXN0TG9nMihyZXNvdXJjZS0+c2l6ZSgpIC8g
YWNjZXNzQ291bnQpOworICAgIHVuc2lnbmVkIGFjY2Vzc0NvdW50ID0gc3RkOjptYXgocmVzb3Vy
Y2UuYWNjZXNzQ291bnQoKSwgMVUpOworICAgIHVuc2lnbmVkIHF1ZXVlSW5kZXggPSBXVEY6OmZh
c3RMb2cyKHJlc291cmNlLnNpemUoKSAvIGFjY2Vzc0NvdW50KTsKICNpZm5kZWYgTkRFQlVHCi0g
ICAgcmVzb3VyY2UtPm1fbHJ1SW5kZXggPSBxdWV1ZUluZGV4OworICAgIHJlc291cmNlLm1fbHJ1
SW5kZXggPSBxdWV1ZUluZGV4OwogI2VuZGlmCiAgICAgaWYgKG1fYWxsUmVzb3VyY2VzLnNpemUo
KSA8PSBxdWV1ZUluZGV4KQogICAgICAgICBtX2FsbFJlc291cmNlcy5ncm93KHF1ZXVlSW5kZXgg
KyAxKTsKICAgICByZXR1cm4gJm1fYWxsUmVzb3VyY2VzW3F1ZXVlSW5kZXhdOwogfQogCi12b2lk
IE1lbW9yeUNhY2hlOjpyZW1vdmVGcm9tTFJVTGlzdChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Up
Cit2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVGcm9tTFJVTGlzdChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCiB7CiAgICAgLy8gSWYgd2UndmUgbmV2ZXIgYmVlbiBhY2Nlc3NlZCwgdGhlbiB3ZSdy
ZSBicmFuZCBuZXcgYW5kIG5vdCBpbiBhbnkgbGlzdC4KLSAgICBpZiAocmVzb3VyY2UtPmFjY2Vz
c0NvdW50KCkgPT0gMCkKKyAgICBpZiAoIXJlc291cmNlLmFjY2Vzc0NvdW50KCkpCiAgICAgICAg
IHJldHVybjsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICB1bnNpZ25lZCBvbGRMaXN0SW5k
ZXggPSByZXNvdXJjZS0+bV9scnVJbmRleDsKKyAgICB1bnNpZ25lZCBvbGRMaXN0SW5kZXggPSBy
ZXNvdXJjZS5tX2xydUluZGV4OwogI2VuZGlmCiAKICAgICBMUlVMaXN0KiBsaXN0ID0gbHJ1TGlz
dEZvcihyZXNvdXJjZSk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgLy8gVmVyaWZ5IHRo
YXQgdGhlIGxpc3Qgd2UgZ290IGlzIHRoZSBsaXN0IHdlIHdhbnQuCi0gICAgQVNTRVJUKHJlc291
cmNlLT5tX2xydUluZGV4ID09IG9sZExpc3RJbmRleCk7CisgICAgQVNTRVJUKHJlc291cmNlLm1f
bHJ1SW5kZXggPT0gb2xkTGlzdEluZGV4KTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IHdlIGFyZSBp
biBmYWN0IGluIHRoaXMgbGlzdC4KICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgZm9yIChD
YWNoZWRSZXNvdXJjZSogY3VycmVudCA9IGxpc3QtPm1faGVhZDsgY3VycmVudDsgY3VycmVudCA9
IGN1cnJlbnQtPm1fbmV4dEluQWxsUmVzb3VyY2VzTGlzdCkgewotICAgICAgICBpZiAoY3VycmVu
dCA9PSByZXNvdXJjZSkgeworICAgICAgICBpZiAoY3VycmVudCA9PSAmcmVzb3VyY2UpIHsKICAg
ICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC00ODMsNDkgKzQ4NCw0OSBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVGcm9tTFJVTGlzdChD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgQVNTRVJUKGZvdW5kKTsKICNlbmRpZgogCi0g
ICAgQ2FjaGVkUmVzb3VyY2UqIG5leHQgPSByZXNvdXJjZS0+bV9uZXh0SW5BbGxSZXNvdXJjZXNM
aXN0OwotICAgIENhY2hlZFJlc291cmNlKiBwcmV2ID0gcmVzb3VyY2UtPm1fcHJldkluQWxsUmVz
b3VyY2VzTGlzdDsKKyAgICBDYWNoZWRSZXNvdXJjZSogbmV4dCA9IHJlc291cmNlLm1fbmV4dElu
QWxsUmVzb3VyY2VzTGlzdDsKKyAgICBDYWNoZWRSZXNvdXJjZSogcHJldiA9IHJlc291cmNlLm1f
cHJldkluQWxsUmVzb3VyY2VzTGlzdDsKICAgICAKLSAgICBpZiAobmV4dCA9PSAwICYmIHByZXYg
PT0gMCAmJiBsaXN0LT5tX2hlYWQgIT0gcmVzb3VyY2UpCisgICAgaWYgKCFuZXh0ICYmICFwcmV2
ICYmIGxpc3QtPm1faGVhZCAhPSAmcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICByZXNvdXJjZS0+bV9uZXh0SW5BbGxSZXNvdXJjZXNMaXN0ID0gMDsKLSAgICByZXNvdXJjZS0+
bV9wcmV2SW5BbGxSZXNvdXJjZXNMaXN0ID0gMDsKKyAgICByZXNvdXJjZS5tX25leHRJbkFsbFJl
c291cmNlc0xpc3QgPSBudWxscHRyOworICAgIHJlc291cmNlLm1fcHJldkluQWxsUmVzb3VyY2Vz
TGlzdCA9IG51bGxwdHI7CiAgICAgCiAgICAgaWYgKG5leHQpCiAgICAgICAgIG5leHQtPm1fcHJl
dkluQWxsUmVzb3VyY2VzTGlzdCA9IHByZXY7Ci0gICAgZWxzZSBpZiAobGlzdC0+bV90YWlsID09
IHJlc291cmNlKQorICAgIGVsc2UgaWYgKGxpc3QtPm1fdGFpbCA9PSAmcmVzb3VyY2UpCiAgICAg
ICAgIGxpc3QtPm1fdGFpbCA9IHByZXY7CiAKICAgICBpZiAocHJldikKICAgICAgICAgcHJldi0+
bV9uZXh0SW5BbGxSZXNvdXJjZXNMaXN0ID0gbmV4dDsKLSAgICBlbHNlIGlmIChsaXN0LT5tX2hl
YWQgPT0gcmVzb3VyY2UpCisgICAgZWxzZSBpZiAobGlzdC0+bV9oZWFkID09ICZyZXNvdXJjZSkK
ICAgICAgICAgbGlzdC0+bV9oZWFkID0gbmV4dDsKIH0KIAotdm9pZCBNZW1vcnlDYWNoZTo6aW5z
ZXJ0SW5MUlVMaXN0KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgTWVtb3J5Q2FjaGU6
Omluc2VydEluTFJVTGlzdChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgLy8gTWFr
ZSBzdXJlIHdlIGFyZW4ndCBpbiBzb21lIGxpc3QgYWxyZWFkeS4KLSAgICBBU1NFUlQoIXJlc291
cmNlLT5tX25leHRJbkFsbFJlc291cmNlc0xpc3QgJiYgIXJlc291cmNlLT5tX3ByZXZJbkFsbFJl
c291cmNlc0xpc3QpOwotICAgIEFTU0VSVChyZXNvdXJjZS0+aW5DYWNoZSgpKTsKLSAgICBBU1NF
UlQocmVzb3VyY2UtPmFjY2Vzc0NvdW50KCkgPiAwKTsKKyAgICBBU1NFUlQoIXJlc291cmNlLm1f
bmV4dEluQWxsUmVzb3VyY2VzTGlzdCAmJiAhcmVzb3VyY2UubV9wcmV2SW5BbGxSZXNvdXJjZXNM
aXN0KTsKKyAgICBBU1NFUlQocmVzb3VyY2UuaW5DYWNoZSgpKTsKKyAgICBBU1NFUlQocmVzb3Vy
Y2UuYWNjZXNzQ291bnQoKSA+IDApOwogICAgIAogICAgIExSVUxpc3QqIGxpc3QgPSBscnVMaXN0
Rm9yKHJlc291cmNlKTsKIAotICAgIHJlc291cmNlLT5tX25leHRJbkFsbFJlc291cmNlc0xpc3Qg
PSBsaXN0LT5tX2hlYWQ7CisgICAgcmVzb3VyY2UubV9uZXh0SW5BbGxSZXNvdXJjZXNMaXN0ID0g
bGlzdC0+bV9oZWFkOwogICAgIGlmIChsaXN0LT5tX2hlYWQpCi0gICAgICAgIGxpc3QtPm1faGVh
ZC0+bV9wcmV2SW5BbGxSZXNvdXJjZXNMaXN0ID0gcmVzb3VyY2U7Ci0gICAgbGlzdC0+bV9oZWFk
ID0gcmVzb3VyY2U7CisgICAgICAgIGxpc3QtPm1faGVhZC0+bV9wcmV2SW5BbGxSZXNvdXJjZXNM
aXN0ID0gJnJlc291cmNlOworICAgIGxpc3QtPm1faGVhZCA9ICZyZXNvdXJjZTsKICAgICAKLSAg
ICBpZiAoIXJlc291cmNlLT5tX25leHRJbkFsbFJlc291cmNlc0xpc3QpCi0gICAgICAgIGxpc3Qt
Pm1fdGFpbCA9IHJlc291cmNlOworICAgIGlmICghcmVzb3VyY2UubV9uZXh0SW5BbGxSZXNvdXJj
ZXNMaXN0KQorICAgICAgICBsaXN0LT5tX3RhaWwgPSAmcmVzb3VyY2U7CiAgICAgICAgIAogI2lm
ICFBU1NFUlRfRElTQUJMRUQKICAgICAvLyBWZXJpZnkgdGhhdCB3ZSBhcmUgaW4gbm93IGluIHRo
ZSBsaXN0IGxpa2Ugd2Ugc2hvdWxkIGJlLgogICAgIGxpc3QgPSBscnVMaXN0Rm9yKHJlc291cmNl
KTsKICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgZm9yIChDYWNoZWRSZXNvdXJjZSogY3Vy
cmVudCA9IGxpc3QtPm1faGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm1fbmV4dElu
QWxsUmVzb3VyY2VzTGlzdCkgewotICAgICAgICBpZiAoY3VycmVudCA9PSByZXNvdXJjZSkgewor
ICAgICAgICBpZiAoY3VycmVudCA9PSAmcmVzb3VyY2UpIHsKICAgICAgICAgICAgIGZvdW5kID0g
dHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC01MzUsMzMgKzUzNiwzMyBA
QCB2b2lkIE1lbW9yeUNhY2hlOjppbnNlcnRJbkxSVUxpc3QoQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlKQogCiB9CiAKLXZvaWQgTWVtb3J5Q2FjaGU6OnJlc291cmNlQWNjZXNzZWQoQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlKQordm9pZCBNZW1vcnlDYWNoZTo6cmVzb3VyY2VBY2Nlc3NlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgQVNTRVJUKHJlc291cmNlLT5pbkNhY2hlKCkp
OworICAgIEFTU0VSVChyZXNvdXJjZS5pbkNhY2hlKCkpOwogICAgIAogICAgIC8vIE5lZWQgdG8g
bWFrZSBzdXJlIHRvIHJlbW92ZSBiZWZvcmUgd2UgaW5jcmVhc2UgdGhlIGFjY2VzcyBjb3VudCwg
c2luY2UKICAgICAvLyB0aGUgcXVldWUgd2lsbCBwb3NzaWJseSBjaGFuZ2UuCiAgICAgcmVtb3Zl
RnJvbUxSVUxpc3QocmVzb3VyY2UpOwogICAgIAogICAgIC8vIElmIHRoaXMgaXMgdGhlIGZpcnN0
IHRpbWUgdGhlIHJlc291cmNlIGhhcyBiZWVuIGFjY2Vzc2VkLCBhZGp1c3QgdGhlIHNpemUgb2Yg
dGhlIGNhY2hlIHRvIGFjY291bnQgZm9yIGl0cyBpbml0aWFsIHNpemUuCi0gICAgaWYgKCFyZXNv
dXJjZS0+YWNjZXNzQ291bnQoKSkKLSAgICAgICAgYWRqdXN0U2l6ZShyZXNvdXJjZS0+aGFzQ2xp
ZW50cygpLCByZXNvdXJjZS0+c2l6ZSgpKTsKKyAgICBpZiAoIXJlc291cmNlLmFjY2Vzc0NvdW50
KCkpCisgICAgICAgIGFkanVzdFNpemUocmVzb3VyY2UuaGFzQ2xpZW50cygpLCByZXNvdXJjZS5z
aXplKCkpOwogICAgIAogICAgIC8vIEFkZCB0byBvdXIgYWNjZXNzIGNvdW50LgotICAgIHJlc291
cmNlLT5pbmNyZWFzZUFjY2Vzc0NvdW50KCk7CisgICAgcmVzb3VyY2UuaW5jcmVhc2VBY2Nlc3ND
b3VudCgpOwogICAgIAogICAgIC8vIE5vdyBpbnNlcnQgaW50byB0aGUgbmV3IHF1ZXVlLgogICAg
IGluc2VydEluTFJVTGlzdChyZXNvdXJjZSk7CiB9CiAKLXZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92
ZVJlc291cmNlc1dpdGhPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3ZvaWQgTWVtb3J5
Q2FjaGU6OnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4oU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikK
IHsKICAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiByZXNvdXJjZXNXaXRoT3JpZ2luOwogCiAg
ICAgZm9yIChhdXRvJiByZXNvdXJjZXMgOiBtX3Nlc3Npb25SZXNvdXJjZXMpIHsKICAgICAgICAg
Q2FjaGVkUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGUgPSByZXNvdXJjZXMudmFsdWUtPmVuZCgpOwog
I2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgICAgIFN0cmluZyBvcmlnaW5QYXJ0
aXRpb24gPSBSZXNvdXJjZVJlcXVlc3Q6OnBhcnRpdGlvbk5hbWUob3JpZ2luLT5ob3N0KCkpOwor
ICAgICAgICBTdHJpbmcgb3JpZ2luUGFydGl0aW9uID0gUmVzb3VyY2VSZXF1ZXN0OjpwYXJ0aXRp
b25OYW1lKG9yaWdpbi5ob3N0KCkpOwogI2VuZGlmCiAKICAgICAgICAgZm9yIChDYWNoZWRSZXNv
dXJjZU1hcDo6aXRlcmF0b3IgaXQgPSByZXNvdXJjZXMudmFsdWUtPmJlZ2luKCk7IGl0ICE9IGU7
ICsraXQpIHsKQEAgLTU3OSw3ICs1ODAsNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXNv
dXJjZXNXaXRoT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgICAgICAgICAgICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiByZXNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKHJlc291cmNlLT51cmwoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFy
ZXNvdXJjZU9yaWdpbikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAgICAgaWYgKHJlc291cmNlT3JpZ2luLT5lcXVhbChvcmlnaW4pKQorICAgICAgICAgICAgICAg
IGlmIChyZXNvdXJjZU9yaWdpbi0+ZXF1YWwoJm9yaWdpbikpCiAgICAgICAgICAgICAgICAgICAg
IHJlc291cmNlc1dpdGhPcmlnaW4uYXBwZW5kKHJlc291cmNlKTsKICNpZiBFTkFCTEUoQ0FDSEVf
UEFSVElUSU9OSU5HKQogICAgICAgICAgICAgfQpAQCAtNTg3LDggKzU4OCw4IEBAIHZvaWQgTWVt
b3J5Q2FjaGU6OnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdp
bikKICAgICAgICAgfQogICAgIH0KIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzb3Vy
Y2VzV2l0aE9yaWdpbi5zaXplKCk7ICsraSkKLSAgICAgICAgcmVtb3ZlKHJlc291cmNlc1dpdGhP
cmlnaW5baV0pOworICAgIGZvciAoYXV0byogcmVzb3VyY2UgOiByZXNvdXJjZXNXaXRoT3JpZ2lu
KQorICAgICAgICByZW1vdmUoKnJlc291cmNlKTsKIH0KIAogdm9pZCBNZW1vcnlDYWNoZTo6Z2V0
T3JpZ2luc1dpdGhDYWNoZShTZWN1cml0eU9yaWdpblNldCYgb3JpZ2lucykKQEAgLTYxMSwyOCAr
NjEyLDI4IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OmdldE9yaWdpbnNXaXRoQ2FjaGUoU2VjdXJpdHlP
cmlnaW5TZXQmIG9yaWdpbnMpCiAgICAgfQogfQogCi12b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVG
cm9tTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3Zv
aWQgTWVtb3J5Q2FjaGU6OnJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIG1fbGl2ZURlY29kZWRSZXNvdXJjZXMucmVtb3Zl
KHJlc291cmNlKTsKKyAgICBtX2xpdmVEZWNvZGVkUmVzb3VyY2VzLnJlbW92ZSgmcmVzb3VyY2Up
OwogfQogCi12b2lkIE1lbW9yeUNhY2hlOjppbnNlcnRJbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlz
dChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIE1lbW9yeUNhY2hlOjppbnNlcnRJbkxp
dmVEZWNvZGVkUmVzb3VyY2VzTGlzdChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAg
Ly8gTWFrZSBzdXJlIHdlIGFyZW4ndCBpbiB0aGUgbGlzdCBhbHJlYWR5LgotICAgIEFTU0VSVCgh
bV9saXZlRGVjb2RlZFJlc291cmNlcy5jb250YWlucyhyZXNvdXJjZSkpOwotICAgIG1fbGl2ZURl
Y29kZWRSZXNvdXJjZXMuYWRkKHJlc291cmNlKTsKKyAgICBBU1NFUlQoIW1fbGl2ZURlY29kZWRS
ZXNvdXJjZXMuY29udGFpbnMoJnJlc291cmNlKSk7CisgICAgbV9saXZlRGVjb2RlZFJlc291cmNl
cy5hZGQoJnJlc291cmNlKTsKIH0KIAotdm9pZCBNZW1vcnlDYWNoZTo6YWRkVG9MaXZlUmVzb3Vy
Y2VzU2l6ZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIE1lbW9yeUNhY2hlOjphZGRU
b0xpdmVSZXNvdXJjZXNTaXplKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICBtX2xp
dmVTaXplICs9IHJlc291cmNlLT5zaXplKCk7Ci0gICAgbV9kZWFkU2l6ZSAtPSByZXNvdXJjZS0+
c2l6ZSgpOworICAgIG1fbGl2ZVNpemUgKz0gcmVzb3VyY2Uuc2l6ZSgpOworICAgIG1fZGVhZFNp
emUgLT0gcmVzb3VyY2Uuc2l6ZSgpOwogfQogCi12b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVGcm9t
TGl2ZVJlc291cmNlc1NpemUoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9pZCBNZW1vcnlD
YWNoZTo6cmVtb3ZlRnJvbUxpdmVSZXNvdXJjZXNTaXplKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKIHsKLSAgICBtX2xpdmVTaXplIC09IHJlc291cmNlLT5zaXplKCk7Ci0gICAgbV9kZWFkU2l6
ZSArPSByZXNvdXJjZS0+c2l6ZSgpOworICAgIG1fbGl2ZVNpemUgLT0gcmVzb3VyY2Uuc2l6ZSgp
OworICAgIG1fZGVhZFNpemUgKz0gcmVzb3VyY2Uuc2l6ZSgpOwogfQogCiB2b2lkIE1lbW9yeUNh
Y2hlOjphZGp1c3RTaXplKGJvb2wgbGl2ZSwgaW50IGRlbHRhKQpAQCAtNjQ2LDMwICs2NDcsMjkg
QEAgdm9pZCBNZW1vcnlDYWNoZTo6YWRqdXN0U2l6ZShib29sIGxpdmUsIGludCBkZWx0YSkKICAg
ICB9CiB9CiAKLXZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hl
cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCit2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNo
ZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogewotICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBpZiAoaXM8V29ya2VyR2xv
YmFsU2NvcGU+KCpjb250ZXh0KSkgeworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCkpIHsKICAgICAgICAgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhKiByZXF1ZXN0
RGF0YSA9IHJlcXVlc3QuY29weURhdGEoKS5sZWFrUHRyKCk7Ci0gICAgICAgIGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPigqY29udGV4dCkudGhyZWFkKCkud29ya2VyTG9hZGVyUHJveHkoKS5w
b3N0VGFza1RvTG9hZGVyKFtyZXF1ZXN0RGF0YV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnRo
cmVhZCgpLndvcmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihbcmVxdWVzdERhdGFd
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBPd25QdHI8
UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0KFJlc291cmNlUmVxdWVzdDo6YWRvcHQoYWRvcHRQdHIo
cmVxdWVzdERhdGEpKSk7Ci0gICAgICAgICAgICBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZy
b21TZXNzaW9uQ2FjaGVzKCZjb250ZXh0LCAqcmVxdWVzdCk7CisgICAgICAgICAgICBNZW1vcnlD
YWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9uQ2FjaGVzKGNvbnRleHQsICpyZXF1ZXN0KTsK
ICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHJl
c291cmNlcyA6IG1lbW9yeUNhY2hlKCkubV9zZXNzaW9uUmVzb3VyY2VzKSB7CiAgICAgICAgIGlm
IChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtZW1vcnlDYWNoZSgpLnJlc291cmNlRm9yUmVx
dWVzdEltcGwocmVxdWVzdCwgKnJlc291cmNlcy52YWx1ZSkpCi0gICAgICAgICAgICBtZW1vcnlD
YWNoZSgpLnJlbW92ZShyZXNvdXJjZSk7CisgICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92
ZSgqcmVzb3VyY2UpOwogICAgIH0KIH0KIAotdm9pZCBNZW1vcnlDYWNoZTo6VHlwZVN0YXRpc3Rp
Yzo6YWRkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIG8pCit2b2lkIE1lbW9yeUNhY2hlOjpUeXBl
U3RhdGlzdGljOjphZGRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAg
Y291bnQrKzsKLSAgICBzaXplICs9IG8tPnNpemUoKTsKLSAgICBsaXZlU2l6ZSArPSBvLT5oYXND
bGllbnRzKCkgPyBvLT5zaXplKCkgOiAwOwotICAgIGRlY29kZWRTaXplICs9IG8tPmRlY29kZWRT
aXplKCk7CisgICAgc2l6ZSArPSByZXNvdXJjZS5zaXplKCk7CisgICAgbGl2ZVNpemUgKz0gcmVz
b3VyY2UuaGFzQ2xpZW50cygpID8gcmVzb3VyY2Uuc2l6ZSgpIDogMDsKKyAgICBkZWNvZGVkU2l6
ZSArPSByZXNvdXJjZS5kZWNvZGVkU2l6ZSgpOwogfQogCiBNZW1vcnlDYWNoZTo6U3RhdGlzdGlj
cyBNZW1vcnlDYWNoZTo6Z2V0U3RhdGlzdGljcygpCkBAIC02ODEsMTEgKzY4MSwxMSBAQCBNZW1v
cnlDYWNoZTo6U3RhdGlzdGljcyBNZW1vcnlDYWNoZTo6Z2V0U3RhdGlzdGljcygpCiAgICAgICAg
IGZvciAoQ2FjaGVkUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGkgPSByZXNvdXJjZXMudmFsdWUtPmJl
Z2luKCk7IGkgIT0gZTsgKytpKSB7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKICAg
ICAgICAgICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VJdGVtOjppdGVyYXRvciBpdGVtSXRlcmF0b3Ig
PSBpLT52YWx1ZS0+YmVnaW4oKTsgaXRlbUl0ZXJhdG9yICE9IGktPnZhbHVlLT5lbmQoKTsgKytp
dGVtSXRlcmF0b3IpIHsKLSAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Ug
PSBpdGVtSXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSA9ICppdGVtSXRlcmF0b3ItPnZhbHVlOwogI2Vsc2UKLSAgICAgICAgICAgICAgICBD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBpLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UgPSAqaS0+dmFsdWU7CiAjZW5kaWYKLSAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHJlc291cmNlLT50eXBlKCkpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHJl
c291cmNlLnR5cGUoKSkgewogICAgICAgICAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6Oklt
YWdlUmVzb3VyY2U6CiAgICAgICAgICAgICAgICAgICAgIHN0YXRzLmltYWdlcy5hZGRSZXNvdXJj
ZShyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzI0LDE3ICs3MjQs
MTcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6c2V0RGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgZm9yICg7OykgewotICAgICAgICBTZXNzaW9uQ2FjaGVkUmVzb3Vy
Y2VNYXA6Oml0ZXJhdG9yIHNlc3Npb25JdGVyYXRvciA9IG1fc2Vzc2lvblJlc291cmNlcy5iZWdp
bigpOworICAgICAgICBhdXRvIHNlc3Npb25JdGVyYXRvciA9IG1fc2Vzc2lvblJlc291cmNlcy5i
ZWdpbigpOwogICAgICAgICBpZiAoc2Vzc2lvbkl0ZXJhdG9yID09IG1fc2Vzc2lvblJlc291cmNl
cy5lbmQoKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBDYWNoZWRSZXNvdXJjZU1hcDo6
aXRlcmF0b3Igb3V0ZXJJdGVyYXRvciA9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUtPmJlZ2luKCk7
CisgICAgICAgIGF1dG8gb3V0ZXJJdGVyYXRvciA9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUtPmJl
Z2luKCk7CiAgICAgICAgIGlmIChvdXRlckl0ZXJhdG9yID09IHNlc3Npb25JdGVyYXRvci0+dmFs
dWUtPmVuZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElP
TklORykKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VJdGVtOjppdGVyYXRvciBpbm5lckl0ZXJhdG9y
ID0gb3V0ZXJJdGVyYXRvci0+dmFsdWUtPmJlZ2luKCk7Ci0gICAgICAgIHJlbW92ZShpbm5lckl0
ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgIGF1dG8gaW5uZXJJdGVyYXRvciA9IG91dGVySXRlcmF0
b3ItPnZhbHVlLT5iZWdpbigpOworICAgICAgICByZW1vdmUoKmlubmVySXRlcmF0b3ItPnZhbHVl
KTsKICNlbHNlCi0gICAgICAgIHJlbW92ZShvdXRlckl0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAg
IHJlbW92ZSgqb3V0ZXJJdGVyYXRvci0+dmFsdWUpOwogI2VuZGlmCiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAppbmRleCBmMDQ1Y2U3MTc1NmNkOTg4
MjhiYTU1Nzk0NGQxY2Q3MWNjNjVmOTM2Li40YzY4ODk5OTFiMDE0OWVjYzg5YTIzMzVlMzgzNWE2
YTYyZDc5NGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApA
QCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHsgCiAgICAgICAgIH0KIAotICAgICAg
ICB2b2lkIGFkZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CisgICAgICAgIHZvaWQgYWRkUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKICAgICB9OwogICAgIAogICAgIHN0cnVjdCBTdGF0aXN0
aWNzIHsKQEAgLTkyLDEzICs5MiwxMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYsIFNlc3Npb25JRCA9IFNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICBXRUJDT1JFX0VYUE9SVCBDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2VGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNlc3Npb25J
RCk7CiAKLSAgICBib29sIGFkZChDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQgcmVtb3ZlKENh
Y2hlZFJlc291cmNlKik7CisgICAgYm9vbCBhZGQoQ2FjaGVkUmVzb3VyY2UmKTsKKyAgICB2b2lk
IHJlbW92ZShDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgc3RhdGljIFVSTCByZW1vdmVGcmFnbWVu
dElkZW50aWZpZXJJZk5lZWRlZChjb25zdCBVUkwmIG9yaWdpbmFsVVJMKTsKICAgICAKLSAgICB2
b2lkIHJldmFsaWRhdGlvblN1Y2NlZWRlZChDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0aW5nUmVz
b3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHJldmFsaWRhdGlvbkZh
aWxlZChDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0aW5nUmVzb3VyY2UpOworICAgIHZvaWQgcmV2
YWxpZGF0aW9uU3VjY2VlZGVkKENhY2hlZFJlc291cmNlJiByZXZhbGlkYXRpbmdSZXNvdXJjZSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgcmV2YWxpZGF0aW9uRmFpbGVkKENh
Y2hlZFJlc291cmNlJiByZXZhbGlkYXRpbmdSZXNvdXJjZSk7CiAgICAgCiAgICAgLy8gU2V0cyB0
aGUgY2FjaGUncyBtZW1vcnkgY2FwYWNpdGllcywgaW4gYnl0ZXMuIFRoZXNlIHdpbGwgaG9sZCBv
bmx5IGFwcHJveGltYXRlbHksIAogICAgIC8vIHNpbmNlIHRoZSBkZWNvZGVkIGNvc3Qgb2YgcmVz
b3VyY2VzIGxpa2Ugc2NyaXB0cyBhbmQgc3R5bGVzaGVldHMgaXMgbm90IGtub3duLgpAQCAtMTIw
LDI5ICsxMjAsMjkgQEAgcHVibGljOgogICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgZGVh
ZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVhZERlY29k
ZWREYXRhRGVsZXRpb25JbnRlcnZhbDsgfQogCiAgICAgLy8gQ2FsbHMgdG8gcHV0IHRoZSBjYWNo
ZWQgcmVzb3VyY2UgaW50byBhbmQgb3V0IG9mIExSVSBsaXN0cy4KLSAgICB2b2lkIGluc2VydElu
TFJVTGlzdChDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQgcmVtb3ZlRnJvbUxSVUxpc3QoQ2Fj
aGVkUmVzb3VyY2UqKTsKKyAgICB2b2lkIGluc2VydEluTFJVTGlzdChDYWNoZWRSZXNvdXJjZSYp
OworICAgIHZvaWQgcmVtb3ZlRnJvbUxSVUxpc3QoQ2FjaGVkUmVzb3VyY2UmKTsKIAogICAgIC8v
IENhbGxlZCB0byBhZGp1c3QgdGhlIGNhY2hlIHRvdGFscyB3aGVuIGEgcmVzb3VyY2UgY2hhbmdl
cyBzaXplLgogICAgIHZvaWQgYWRqdXN0U2l6ZShib29sIGxpdmUsIGludCBkZWx0YSk7CiAKICAg
ICAvLyBUcmFjayBkZWNvZGVkIHJlc291cmNlcyB0aGF0IGFyZSBpbiB0aGUgY2FjaGUgYW5kIHJl
ZmVyZW5jZWQgYnkgYSBXZWIgcGFnZS4KLSAgICB2b2lkIGluc2VydEluTGl2ZURlY29kZWRSZXNv
dXJjZXNMaXN0KENhY2hlZFJlc291cmNlKik7Ci0gICAgdm9pZCByZW1vdmVGcm9tTGl2ZURlY29k
ZWRSZXNvdXJjZXNMaXN0KENhY2hlZFJlc291cmNlKik7CisgICAgdm9pZCBpbnNlcnRJbkxpdmVE
ZWNvZGVkUmVzb3VyY2VzTGlzdChDYWNoZWRSZXNvdXJjZSYpOworICAgIHZvaWQgcmVtb3ZlRnJv
bUxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdChDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgdm9pZCBh
ZGRUb0xpdmVSZXNvdXJjZXNTaXplKENhY2hlZFJlc291cmNlKik7Ci0gICAgdm9pZCByZW1vdmVG
cm9tTGl2ZVJlc291cmNlc1NpemUoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICB2b2lkIGFkZFRvTGl2
ZVJlc291cmNlc1NpemUoQ2FjaGVkUmVzb3VyY2UmKTsKKyAgICB2b2lkIHJlbW92ZUZyb21MaXZl
UmVzb3VyY2VzU2l6ZShDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgc3RhdGljIHZvaWQgcmVtb3Zl
UmVxdWVzdEZyb21TZXNzaW9uQ2FjaGVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVSZXF1ZXN0RnJvbVNlc3Np
b25DYWNoZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OwogCiAgICAgLy8gRnVuY3Rpb24gdG8gY29sbGVjdCBjYWNoZSBzdGF0aXN0aWNzIGZvciB0aGUg
Y2FjaGVzIHdpbmRvdyBpbiB0aGUgU2FmYXJpIERlYnVnIG1lbnUuCiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RhdGlzdGljcyBnZXRTdGF0aXN0aWNzKCk7CiAgICAgCi0gICAgdm9pZCByZXNvdXJjZUFj
Y2Vzc2VkKENhY2hlZFJlc291cmNlKik7CisgICAgdm9pZCByZXNvdXJjZUFjY2Vzc2VkKENhY2hl
ZFJlc291cmNlJik7CiAgICAgYm9vbCBpbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UpIGNvbnN0IHsgcmV0dXJuIG1fbGl2ZURlY29kZWRSZXNvdXJjZXMu
Y29udGFpbnMoJnJlc291cmNlKTsgfQogCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+IFNlY3VyaXR5T3JpZ2luU2V0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbihTZWN1cml0eU9yaWdpbiYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0T3JpZ2luc1dpdGhDYWNoZShTZWN1cml0eU9yaWdp
blNldCYgb3JpZ2lucyk7CiAKICNpZiBVU0UoQ0cpCkBAIC0xNzYsNyArMTc2LDcgQEAgcHJpdmF0
ZToKICAgICBNZW1vcnlDYWNoZSgpOwogICAgIH5NZW1vcnlDYWNoZSgpOyAvLyBOb3QgaW1wbGVt
ZW50ZWQgdG8gbWFrZSBzdXJlIG5vYm9keSBhY2NpZGVudGFsbHkgY2FsbHMgZGVsZXRlIC0tIFdl
YkNvcmUgZG9lcyBub3QgZGVsZXRlIHNpbmdsZXRvbnMuCiAKLSAgICBMUlVMaXN0KiBscnVMaXN0
Rm9yKENhY2hlZFJlc291cmNlKik7CisgICAgTFJVTGlzdCogbHJ1TGlzdEZvcihDYWNoZWRSZXNv
dXJjZSYpOwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGR1bXBTdGF0cygpOwogICAgIHZvaWQg
ZHVtcExSVUxpc3RzKGJvb2wgaW5jbHVkZUxpdmUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWFza0ltYWdlT3BlcmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01hc2tJbWFnZU9wZXJhdGlvbi5jcHAKaW5kZXgg
NGE3YWNkOGRiMDc3ZTY5MGFmNmI0OWYxNjY3OWIzNWZlY2Q4MGUwMC4uNDI5OWE0MDExOTBmMmQw
ZDdkM2IwNjdlYTk4MzNmMmQzZDFlY2NlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWFza0ltYWdlT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VPcGVyYXRpb24uY3BwCkBAIC0yMTgsNyArMjE4
LDcgQEAgdm9pZCBNYXNrSW1hZ2VPcGVyYXRpb246Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSkKICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIGNhY2hlZCByZXNvdXJj
ZSBsb2FkZXIgb2YgdGhlIGRvY3VtZW50IHdoaWNoIHJlcXVlc3RlZCB0aGlzIG1hc2sga2VlcCBh
IGhhbmRsZSB0byB0aGlzCiAgICAgICAgICAgICAgICAgLy8gY2FjaGVkIGltYWdlIHRvIGVuc3Vy
ZSBpdCBvbmx5IGdldHMgZGVsZXRlZCB3aGVuIGl0IHNob3VsZC4KICAgICAgICAgICAgICAgICBp
ZiAobV9jYWNoZWRSZXNvdXJjZUxvYWRlci5nZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9j
YWNoZWRSZXNvdXJjZUxvYWRlci0+YWRkQ2FjaGVkUmVzb3VyY2UobV9zdHlsZUltYWdlLT5jYWNo
ZWRJbWFnZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+
YWRkQ2FjaGVkUmVzb3VyY2UoKm1fc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIERlc3Ryb3kgdGhlIGN1cnJlbnQg
U1ZHIGRvY3VtZW50IGFzIGl0cyBubyBsb25nZXIgbmVlZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNl
Q2FjaGVNYW5hZ2VyLmNwcAppbmRleCAyNGZlZjE5Njg0MzAzNjlhODg3OTg4OTJjMjMyN2JlNjM0
OWRmODcyLi5kYjgyY2VhMzY1NjNiYTc2NTM4ZTUyMTBlZWY5ZTAxY2EwMWVmYWY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VD
YWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3VyY2VD
YWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lk
IFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyOjpjbGVhckNhY2hlRm9yT3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgb3JpZwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4ob3JpZ2luLmdldCgp
KTsKKyAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4oKm9yaWdpbik7
CiAKICNpZiBVU0UoQ0ZVUkxDQUNIRSkKICAgICBpZiAocmVzb3VyY2VDYWNoZXNUb0NsZWFyICE9
IEluTWVtb3J5UmVzb3VyY2VDYWNoZXNPbmx5KSB7IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245742</attachid>
            <date>2015-01-30 14:23:41 -0800</date>
            <delta_ts>2015-01-30 14:52:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141099-20150130142348.patch</filename>
            <type>text/plain</type>
            <size>48410</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2EzOTYwOTVmYWZmZjU4
ZGY4MDU5ODJkNGE5ZDhlNzkwMTUwZjRlYy4uZDNiNzYxNTQ4NDNmYzE4NWI5YzQ3MTM4ZDk2MTYw
NzIyMGYzZGY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDE1LTAxLTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIE1lbW9yeUNhY2hl
IGNvZGUgdG8gdXNlIG1vcmUgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEwOTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAxNS0wMS0zMCAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjE3OTQwMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhYTNjZGI5NWNjNWYyZGRmODQ2NmRjOTllYjA0
YzhmZjVmYTNlMGUyLi41YzIyZTVhNGY0ODQ4MmMyMjJkNzZiMWNhNzk1Mzg4YjhhNGFjODYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTUtMDEtMzAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBVcGRhdGUgTWVtb3J5Q2FjaGUgY29kZSB0byB1c2Ug
bW9yZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTA5OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VD
YWNoZU1hbmFnZXI6OmNsZWFyQ2FjaGVGb3JPcmlnaW4pOgorCisyMDE1LTAxLTMwICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgUmVuYW1lIHNoYXJlZCgpIHN0YXRp
YyBtZW1iZXIgZnVuY3Rpb25zIHRvIHNpbmdsZXRvbigpIGZvciBzaW5nbGV0b24gY2xhc3Nlcy4K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTA4OAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDAyZjg1ODdhMDU5ZjM3Y2IyYTcwN2I3MjY3ODk2YjM3
ZTRmODY5N2MuLmRiNDEwYTY0YzljZTlkM2Q2NzE0ZWM3MGU4OGQzZDg1NGIwODE2NjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC0xOTYsNyArMTk2LDcgQEAgX19aTjdXZWJDb3JlMTFNZW1vcnlD
YWNoZTE1YWRkSW1hZ2VUb0NhY2hlRVA3Q0dJbWFnZVJLTlNfM1VSTEVSS04zV1RGNlN0cmluZ0UK
IF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxOHJlc291cmNlRm9yUmVxdWVzdEVSS05TXzE1UmVz
b3VyY2VSZXF1ZXN0RU5TXzlTZXNzaW9uSURFCiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTln
ZXRPcmlnaW5zV2l0aENhY2hlRVJOM1dURjdIYXNoU2V0SU5TMV82UmVmUHRySU5TXzE0U2VjdXJp
dHlPcmlnaW5FRUVOU18xOFNlY3VyaXR5T3JpZ2luSGFzaEVOUzFfMTBIYXNoVHJhaXRzSVM1X0VF
RUUKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUyMHJlbW92ZUltYWdlRnJvbUNhY2hlRVJLTlNf
M1VSTEVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUyNXJlbW92ZVJl
c291cmNlc1dpdGhPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCitfX1pON1dlYkNvcmUxMU1l
bW9yeUNhY2hlMjVyZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2luRVJOU18xNFNlY3VyaXR5T3JpZ2lu
RQogX19aTjdXZWJDb3JlMTFQYWdlT3ZlcmxheTE1c2V0TmVlZHNEaXNwbGF5RVJLTlNfN0ludFJl
Y3RFCiBfX1pON1dlYkNvcmUxMVBhZ2VPdmVybGF5MTVzZXROZWVkc0Rpc3BsYXlFdgogX19aTjdX
ZWJDb3JlMTFQYWdlT3ZlcmxheTIwc3RvcEZhZGVPdXRBbmltYXRpb25FdgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01V
UkwuY3BwCmluZGV4IGQ0NTlmNTdhZDU4NjJhMjhiOWE0MGY2Y2UxZDMwOGZiZjQxNDcyMDMuLjFh
YTU1YTgzOTk2ZGY1MjA5MWUxMzg1NDk3MzJjMzA0OTg0NTIwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVS
TC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIERPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbgogI2lmIEVO
QUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAgICAgcmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBh
cnRpdGlvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0LT50b3BPcmlnaW4oKS0+ZG9tYWluRm9yQ2Fj
aGVQYXJ0aXRpb24oKSk7CiAjZW5kaWYKLSAgICBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZy
b21TZXNzaW9uQ2FjaGVzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHJlcXVlc3QpOworICAgIE1l
bW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMoKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIHJlcXVlc3QpOwogCiAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHVibGlj
VVJMTWFuYWdlcigpLnJldm9rZSh1cmwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IGIzOWRjNGI4YmJkMjUzZjli
MzRjMjg0OTc2NjU0MzdlODY4OTE3ODIuLjEyMGZmZTgzMmE4ZTBhZjllMzcxOWI5OGNlOTljYzY2
OTZmMDE0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKQEAgLTcxMCw3ICs3MTAsNyBAQCB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OnJlcGxheVhIUihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
KQogCiAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gbWVtb3J5Q2FjaGUoKS5y
ZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdCwgbV9wYWdlQWdlbnQtPnBhZ2UoKS0+c2Vzc2lvbklE
KCkpOwogICAgIGlmIChjYWNoZWRSZXNvdXJjZSkKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZW1v
dmUoY2FjaGVkUmVzb3VyY2UpOworICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZSgqY2FjaGVk
UmVzb3VyY2UpOwogCiAgICAgeGhyLT5vcGVuKHhoclJlcGxheURhdGEtPm1ldGhvZCgpLCB4aHJS
ZXBsYXlEYXRhLT51cmwoKSwgeGhyUmVwbGF5RGF0YS0+YXN5bmMoKSwgSUdOT1JFX0VYQ0VQVElP
Tik7CiAgICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiB4aHJSZXBsYXlEYXRhLT5oZWFkZXJz
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBjYWE1MTI3
NmRlYThlYTI5MDE2MmEyOGM1NTZhZjViMDk1MGZhOWJmLi5jMTY3MWJmMzgyZGQ3OGFjOGZlZGJm
OTExMDhhODdmNmIzODc1YzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExv
YWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpCiAgICAgLy8gYW5kIGRlbnkgdGhlIGFwcGNhY2hlIHRo
ZSBjaGFuY2UgdG8gaW50ZXJjZXB0IGl0IGluIHRoZSBmdXR1cmUsIHNvIHJlbW92ZSBmcm9tIHRo
ZSBtZW1vcnkgY2FjaGUuCiAgICAgaWYgKG1fZnJhbWUpIHsKICAgICAgICAgaWYgKG1fbWFpblJl
c291cmNlICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmhhc01hbmlmZXN0KCkpCi0gICAgICAgICAg
ICBtZW1vcnlDYWNoZSgpLnJlbW92ZShtX21haW5SZXNvdXJjZS5nZXQoKSk7CisgICAgICAgICAg
ICBtZW1vcnlDYWNoZSgpLnJlbW92ZSgqbV9tYWluUmVzb3VyY2UpOwogICAgIH0KICAgICBtX2Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LT5maW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKIH0KQEAg
LTU5OSw3ICs1OTksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZQogICAgIC8vIFRoZSBtZW1v
cnkgY2FjaGUgZG9lc24ndCB1bmRlcnN0YW5kIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBvciBpdHMg
Y2FjaGluZyBydWxlcy4gU28gaWYgYSBtYWluIHJlc291cmNlIGlzIHNlcnZlZAogICAgIC8vIGZy
b20gdGhlIGFwcGxpY2F0aW9uIGNhY2hlLCBlbnN1cmUgd2UgZG9uJ3Qgc2F2ZSB0aGUgcmVzdWx0
IGZvciBmdXR1cmUgdXNlLgogICAgIGlmICh3aWxsTG9hZEZhbGxiYWNrKQotICAgICAgICBtZW1v
cnlDYWNoZSgpLnJlbW92ZShtX21haW5SZXNvdXJjZS5nZXQoKSk7CisgICAgICAgIG1lbW9yeUNh
Y2hlKCkucmVtb3ZlKCptX21haW5SZXNvdXJjZSk7CiAKICAgICBpZiAod2lsbExvYWRGYWxsYmFj
aykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggYWE1YzJjZDA4MzlmZDMwMGVkMzZmZjRiZjBiN2ZlNWU3Yzk1NjM5NC4u
YjMyMmZkMWI0OTE0NTMyN2FhOGYyZjIzZGVkM2UwZmY4ODBhMDUyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9p
ZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgbmV3
UmVxdWVzdCwgY29uc3QgUmVzb3UKICAgICAgICAgLy8gRG9pbmcgc28gd291bGQgaGF2ZSB1cyBy
ZXVzaW5nIHRoZSByZXNvdXJjZSBmcm9tIHRoZSBmaXJzdCByZXF1ZXN0IGlmIHRoZSBzZWNvbmQg
cmVxdWVzdCdzIHJldmFsaWRhdGlvbiBzdWNjZWVkcy4KICAgICAgICAgaWYgKG5ld1JlcXVlc3Qu
aXNDb25kaXRpb25hbCgpICYmIG1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkgJiYg
bmV3UmVxdWVzdC51cmwoKSAhPSBtX3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpLT5y
ZXNwb25zZSgpLnVybCgpKSB7CiAgICAgICAgICAgICBuZXdSZXF1ZXN0Lm1ha2VVbmNvbmRpdGlv
bmFsKCk7Ci0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvbkZhaWxlZChtX3Jl
c291cmNlKTsKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmV2YWxpZGF0aW9uRmFpbGVkKCpt
X3Jlc291cmNlKTsKICAgICAgICAgICAgIGlmIChtX2ZyYW1lKQogICAgICAgICAgICAgICAgIG1f
ZnJhbWUtPm1haW5GcmFtZSgpLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3Rp
Y01lc3NhZ2VXaXRoUmVzdWx0KERpYWdub3N0aWNMb2dnaW5nS2V5czo6Y2FjaGVkUmVzb3VyY2VS
ZXZhbGlkYXRpb25LZXkoKSwgZW1wdHlTdHJpbmcoKSwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRG
YWlsKTsKICAgICAgICAgfQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
ICAgICAgICAgICAgIC8vIDMwNCBOb3QgbW9kaWZpZWQgLyBVc2UgbG9jYWwgY29weQogICAgICAg
ICAgICAgLy8gRXhpc3RpbmcgcmVzb3VyY2UgaXMgb2ssIGp1c3QgdXNlIGl0IHVwZGF0aW5nIHRo
ZSBleHBpcmF0aW9uIHRpbWUuCiAgICAgICAgICAgICBtX3Jlc291cmNlLT5zZXRSZXNwb25zZShy
ZXNwb25zZSk7Ci0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvblN1Y2NlZWRl
ZChtX3Jlc291cmNlLCByZXNwb25zZSk7CisgICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJldmFs
aWRhdGlvblN1Y2NlZWRlZCgqbV9yZXNvdXJjZSwgcmVzcG9uc2UpOwogICAgICAgICAgICAgaWYg
KG1fZnJhbWUpCiAgICAgICAgICAgICAgICAgbV9mcmFtZS0+bWFpbkZyYW1lKCkuZGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpjYWNoZWRSZXNvdXJjZVJldmFsaWRhdGlvbktleSgpLCBlbXB0eVN0cmlu
ZygpLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFBhc3MpOwogICAgICAgICAgICAgaWYgKCFyZWFj
aGVkVGVybWluYWxTdGF0ZSgpKQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAvLyBEaWQgbm90IGdl
dCAzMDQgcmVzcG9uc2UsIGNvbnRpbnVlIGFzIGEgcmVndWxhciByZXNvdXJjZSBsb2FkLgotICAg
ICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvbkZhaWxlZChtX3Jlc291cmNlKTsKKyAgICAg
ICAgbWVtb3J5Q2FjaGUoKS5yZXZhbGlkYXRpb25GYWlsZWQoKm1fcmVzb3VyY2UpOwogICAgICAg
ICBpZiAobV9mcmFtZSkKICAgICAgICAgICAgIG1fZnJhbWUtPm1haW5GcmFtZSgpLmRpYWdub3N0
aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KERpYWdub3N0
aWNMb2dnaW5nS2V5czo6Y2FjaGVkUmVzb3VyY2VSZXZhbGlkYXRpb25LZXkoKSwgZW1wdHlTdHJp
bmcoKSwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRGYWlsKTsKICAgICB9CkBAIC0zODUsMTAgKzM4
NSwxMCBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBwcm90
ZWN0UmVzb3VyY2UobV9yZXNvdXJjZSk7CiAgICAgbV9zdGF0ZSA9IEZpbmlzaGluZzsKICAgICBp
ZiAobV9yZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSkKLSAgICAgICAgbWVtb3J5Q2Fj
aGUoKS5yZXZhbGlkYXRpb25GYWlsZWQobV9yZXNvdXJjZSk7CisgICAgICAgIG1lbW9yeUNhY2hl
KCkucmV2YWxpZGF0aW9uRmFpbGVkKCptX3Jlc291cmNlKTsKICAgICBtX3Jlc291cmNlLT5zZXRS
ZXNvdXJjZUVycm9yKGVycm9yKTsKICAgICBpZiAoIW1fcmVzb3VyY2UtPmlzUHJlbG9hZGVkKCkp
Ci0gICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlKG1fcmVzb3VyY2UpOworICAgICAgICBtZW1v
cnlDYWNoZSgpLnJlbW92ZSgqbV9yZXNvdXJjZSk7CiAgICAgbV9yZXNvdXJjZS0+ZXJyb3IoQ2Fj
aGVkUmVzb3VyY2U6OkxvYWRFcnJvcik7CiAgICAgY2xlYW51cEZvckVycm9yKGVycm9yKTsKICAg
ICBub3RpZnlEb25lKCk7CkBAIC00MTgsOSArNDE4LDkgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBtX3N0YXRlID0g
RmluaXNoaW5nOwogI2VuZGlmCiAgICAgaWYgKG1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlk
YXRlKCkpCi0gICAgICAgIG1lbW9yeUNhY2hlKCkucmV2YWxpZGF0aW9uRmFpbGVkKG1fcmVzb3Vy
Y2UpOworICAgICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvbkZhaWxlZCgqbV9yZXNvdXJj
ZSk7CiAgICAgbV9yZXNvdXJjZS0+c2V0UmVzb3VyY2VFcnJvcihlcnJvcik7Ci0gICAgbWVtb3J5
Q2FjaGUoKS5yZW1vdmUobV9yZXNvdXJjZSk7CisgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmUoKm1f
cmVzb3VyY2UpOwogfQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRDYW5jZWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAppbmRleCA1MGI1MzJkMWMwZDFlMGI3MzBhNzg3MDFhNzk2NmJjODczZjQyYzA1Li5hN2Mz
NzcwZjk0OTA5MmFjMzc1MWQ2NTZiNWE2ZjZlNGViMDVjYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTM4MSw3ICszODEsNyBAQCB2b2lkIENh
Y2hlZEltYWdlOjphZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQog
ICAgICAgICAvLyBJbWFnZSBkZWNvZGluZyBmYWlsZWQuIEVpdGhlciB3ZSBuZWVkIG1vcmUgaW1h
Z2UgZGF0YSBvciB0aGUgaW1hZ2UgZGF0YSBpcyBtYWxmb3JtZWQuCiAgICAgICAgIGVycm9yKGVy
cm9yT2NjdXJyZWQoKSA/IHN0YXR1cygpIDogRGVjb2RlRXJyb3IpOwogICAgICAgICBpZiAoaW5D
YWNoZSgpKQotICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmUodGhpcyk7CisgICAgICAg
ICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZSgqdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgLy8gSW1hZ2UgZGVjb2RpbmcgZmFpbGVkOyB0aGUg
aW1hZ2UgZGF0YSBpcyBtYWxmb3JtZWQuCiAgICAgICAgIGVycm9yKGVycm9yT2NjdXJyZWQoKSA/
IHN0YXR1cygpIDogRGVjb2RlRXJyb3IpOwogICAgICAgICBpZiAoaW5DYWNoZSgpKQotICAgICAg
ICAgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmUodGhpcyk7CisgICAgICAgICAgICBtZW1vcnlDYWNo
ZSgpLnJlbW92ZSgqdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDAyNWM1ZTIxNTM3
NzczNTFiZGZmYWNiZTI5OGUwMzE2YmNkYTcwYjcuLmJmZWY4NWJmODcwZGU3MTU3Y2RhNmQzNjdh
NzE2NDQ2NjAwZjgzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIENhY2hlZFJlc291cmNlOjp+Q2FjaGVk
UmVzb3VyY2UoKQogI2VuZGlmCiAKICAgICBpZiAobV9vd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRl
cikKLSAgICAgICAgbV9vd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVtb3ZlQ2FjaGVkUmVz
b3VyY2UodGhpcyk7CisgICAgICAgIG1fb3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlbW92
ZUNhY2hlZFJlc291cmNlKCp0aGlzKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmFpbEJl
Zm9yZVN0YXJ0aW5nKCkKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpm
YWlsQmVmb3JlU3RhcnRpbmcoKQogICAgIC8vIEZJWE1FOiBXaGF0IGlmIHJlc291cmNlcyBpbiBv
dGhlciBmcmFtZXMgd2VyZSB3YWl0aW5nIGZvciB0aGlzIHJldmFsaWRhdGlvbj8KICAgICBMT0co
UmVzb3VyY2VMb2FkaW5nLCAiQ2Fubm90IHN0YXJ0IGxvYWRpbmcgJyVzJyIsIHVybCgpLnN0cmlu
ZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgaWYgKG1fcmVzb3VyY2VUb1JldmFsaWRhdGUpIAot
ICAgICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvbkZhaWxlZCh0aGlzKTsgCisgICAgICAg
IG1lbW9yeUNhY2hlKCkucmV2YWxpZGF0aW9uRmFpbGVkKCp0aGlzKTsKICAgICBlcnJvcihDYWNo
ZWRSZXNvdXJjZTo6TG9hZEVycm9yKTsKIH0KIApAQCAtNDE1LDcgKzQxNSw3IEBAIGJvb2wgQ2Fj
aGVkUmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQp
CiAgICAgICAgICAgICBtX3ByZWxvYWRSZXN1bHQgPSBQcmVsb2FkUmVmZXJlbmNlZDsKICAgICB9
CiAgICAgaWYgKCFoYXNDbGllbnRzKCkgJiYgaW5DYWNoZSgpKQotICAgICAgICBtZW1vcnlDYWNo
ZSgpLmFkZFRvTGl2ZVJlc291cmNlc1NpemUodGhpcyk7CisgICAgICAgIG1lbW9yeUNhY2hlKCku
YWRkVG9MaXZlUmVzb3VyY2VzU2l6ZSgqdGhpcyk7CiAKICAgICBpZiAoKG1fdHlwZSA9PSBSYXdS
ZXNvdXJjZSB8fCBtX3R5cGUgPT0gTWFpblJlc291cmNlKSAmJiAhbV9yZXNwb25zZS5pc051bGwo
KSAmJiAhbV9wcm94eVJlc291cmNlKSB7CiAgICAgICAgIC8vIENlcnRhaW4gcmVzb3VyY2VzIChl
c3BlY2lhbGx5IFhIUnMgYW5kIG1haW4gcmVzb3VyY2VzKSBkbyBjcmF6eSB0aGluZ3MgaWYgYW4g
YXN5bmNocm9ub3VzIGxvYWQgcmV0dXJucwpAQCAtNDQ3LDggKzQ0Nyw4IEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2U6OnJlbW92ZUNsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogICAg
IGJvb2wgZGVsZXRlZCA9IGRlbGV0ZUlmUG9zc2libGUoKTsKICAgICBpZiAoIWRlbGV0ZWQgJiYg
IWhhc0NsaWVudHMoKSkgewogICAgICAgICBpZiAoaW5DYWNoZSgpKSB7Ci0gICAgICAgICAgICBt
ZW1vcnlDYWNoZSgpLnJlbW92ZUZyb21MaXZlUmVzb3VyY2VzU2l6ZSh0aGlzKTsKLSAgICAgICAg
ICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlRnJvbUxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCh0aGlz
KTsKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlRnJvbUxpdmVSZXNvdXJjZXNTaXpl
KCp0aGlzKTsKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlRnJvbUxpdmVEZWNvZGVk
UmVzb3VyY2VzTGlzdCgqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFtX3N3aXRjaGlu
Z0NsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UpCiAgICAgICAgICAgICBhbGxDbGllbnRzUmVt
b3ZlZCgpOwpAQCAtNDU4LDcgKzQ1OCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlbW92ZUNs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogICAgICAgICAgICAgLy8gIm5vLXN0
b3JlOiAuLi4gTVVTVCBtYWtlIGEgYmVzdC1lZmZvcnQgYXR0ZW1wdCB0byByZW1vdmUgdGhlIGlu
Zm9ybWF0aW9uIGZyb20gdm9sYXRpbGUgc3RvcmFnZSBhcyBwcm9tcHRseSBhcyBwb3NzaWJsZSIK
ICAgICAgICAgICAgIC8vICIuLi4gSGlzdG9yeSBidWZmZXJzIE1BWSBzdG9yZSBzdWNoIHJlc3Bv
bnNlcyBhcyBwYXJ0IG9mIHRoZWlyIG5vcm1hbCBvcGVyYXRpb24uIgogICAgICAgICAgICAgLy8g
V2UgYWxsb3cgbm9uLXNlY3VyZSBjb250ZW50IHRvIGJlIHJldXNlZCBpbiBoaXN0b3J5LCBidXQg
d2UgZG8gbm90IGFsbG93IHNlY3VyZSBjb250ZW50IHRvIGJlIHJldXNlZC4KLSAgICAgICAgICAg
IG1lbW9yeUNhY2hlKCkucmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS5y
ZW1vdmUoKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIG1lbW9yeUNhY2hlKCkucHJ1bmUoKTsK
ICAgICB9CkBAIC00OTksMTMgKzQ5OSwxMyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpzZXREZWNv
ZGVkU2l6ZSh1bnNpZ25lZCBzaXplKQogICAgIC8vIFRoZSBvYmplY3QgbXVzdCBiZSBtb3ZlZCB0
byBhIGRpZmZlcmVudCBxdWV1ZSwgc2luY2UgaXRzIHNpemUgaGFzIGJlZW4gY2hhbmdlZC4KICAg
ICAvLyBSZW1vdmUgYmVmb3JlIHVwZGF0aW5nIG1fZGVjb2RlZFNpemUsIHNvIHdlIGZpbmQgdGhl
IHJlc291cmNlIGluIHRoZSBjb3JyZWN0IExSVSBsaXN0LgogICAgIGlmIChpbkNhY2hlKCkpCi0g
ICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlRnJvbUxSVUxpc3QodGhpcyk7CisgICAgICAgIG1l
bW9yeUNhY2hlKCkucmVtb3ZlRnJvbUxSVUxpc3QoKnRoaXMpOwogICAgIAogICAgIG1fZGVjb2Rl
ZFNpemUgPSBzaXplOwogICAgCiAgICAgaWYgKGluQ2FjaGUoKSkgeyAKICAgICAgICAgLy8gTm93
IGluc2VydCBpbnRvIHRoZSBuZXcgTFJVIGxpc3QuCi0gICAgICAgIG1lbW9yeUNhY2hlKCkuaW5z
ZXJ0SW5MUlVMaXN0KHRoaXMpOworICAgICAgICBtZW1vcnlDYWNoZSgpLmluc2VydEluTFJVTGlz
dCgqdGhpcyk7CiAgICAgICAgIAogICAgICAgICAvLyBJbnNlcnQgaW50byBvciByZW1vdmUgZnJv
bSB0aGUgbGl2ZSBkZWNvZGVkIGxpc3QgaWYgbmVjZXNzYXJ5LgogICAgICAgICAvLyBXaGVuIGlu
c2VydGluZyBpbnRvIHRoZSBMaXZlRGVjb2RlZFJlc291cmNlc0xpc3QgaXQgaXMgcG9zc2libGUK
QEAgLTUxNiw5ICs1MTYsOSBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpzZXREZWNvZGVkU2l6ZSh1
bnNpZ25lZCBzaXplKQogICAgICAgICAvLyBhIHByb2JsZW0uIEZvciBtb3JlIGRldGFpbHMgcGxl
YXNlIHNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMjA5CiAg
ICAgICAgIGJvb2wgaW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QgPSBtZW1vcnlDYWNoZSgpLmlu
TGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KCp0aGlzKTsKICAgICAgICAgaWYgKG1fZGVjb2RlZFNp
emUgJiYgIWluTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0ICYmIGhhc0NsaWVudHMoKSkKLSAgICAg
ICAgICAgIG1lbW9yeUNhY2hlKCkuaW5zZXJ0SW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QodGhp
cyk7CisgICAgICAgICAgICBtZW1vcnlDYWNoZSgpLmluc2VydEluTGl2ZURlY29kZWRSZXNvdXJj
ZXNMaXN0KCp0aGlzKTsKICAgICAgICAgZWxzZSBpZiAoIW1fZGVjb2RlZFNpemUgJiYgaW5MaXZl
RGVjb2RlZFJlc291cmNlc0xpc3QpCi0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZUZy
b21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QodGhpcyk7CisgICAgICAgICAgICBtZW1vcnlDYWNo
ZSgpLnJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoKnRoaXMpOwogCiAgICAgICAg
IC8vIFVwZGF0ZSB0aGUgY2FjaGUncyBzaXplIHRvdGFscy4KICAgICAgICAgbWVtb3J5Q2FjaGUo
KS5hZGp1c3RTaXplKGhhc0NsaWVudHMoKSwgZGVsdGEpOwpAQCAtNTM1LDEyICs1MzUsMTIgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0RW5jb2RlZFNpemUodW5zaWduZWQgc2l6ZSkKICAgICAv
LyBUaGUgb2JqZWN0IG11c3QgYmUgbW92ZWQgdG8gYSBkaWZmZXJlbnQgcXVldWUsIHNpbmNlIGl0
cyBzaXplIGhhcyBiZWVuIGNoYW5nZWQuCiAgICAgLy8gUmVtb3ZlIGJlZm9yZSB1cGRhdGluZyBt
X2VuY29kZWRTaXplLCBzbyB3ZSBmaW5kIHRoZSByZXNvdXJjZSBpbiB0aGUgY29ycmVjdCBMUlUg
bGlzdC4KICAgICBpZiAoaW5DYWNoZSgpKQotICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZUZy
b21MUlVMaXN0KHRoaXMpOworICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZUZyb21MUlVMaXN0
KCp0aGlzKTsKIAogICAgIG1fZW5jb2RlZFNpemUgPSBzaXplOwogCiAgICAgaWYgKGluQ2FjaGUo
KSkgeyAKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS5pbnNlcnRJbkxSVUxpc3QodGhpcyk7CisgICAg
ICAgIG1lbW9yeUNhY2hlKCkuaW5zZXJ0SW5MUlVMaXN0KCp0aGlzKTsKICAgICAgICAgbWVtb3J5
Q2FjaGUoKS5hZGp1c3RTaXplKGhhc0NsaWVudHMoKSwgZGVsdGEpOwogICAgIH0KIH0KQEAgLTU1
MSw4ICs1NTEsOCBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpkaWRBY2Nlc3NEZWNvZGVkRGF0YShk
b3VibGUgdGltZVN0YW1wKQogICAgIAogICAgIGlmIChpbkNhY2hlKCkpIHsKICAgICAgICAgaWYg
KG1lbW9yeUNhY2hlKCkuaW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoKnRoaXMpKSB7Ci0gICAg
ICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3Qo
dGhpcyk7Ci0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLmluc2VydEluTGl2ZURlY29kZWRSZXNv
dXJjZXNMaXN0KHRoaXMpOworICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmVGcm9tTGl2
ZURlY29kZWRSZXNvdXJjZXNMaXN0KCp0aGlzKTsKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCku
aW5zZXJ0SW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoKnRoaXMpOwogICAgICAgICB9CiAgICAg
ICAgIG1lbW9yeUNhY2hlKCkucHJ1bmUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oCmluZGV4IGNlNzM5MjIwYmExYWVj
ODFmMGIzNDI1N2NmMzA4YWQxMDhkYWRiMzcuLjg2Nzc5Mzk0N2RmMDY2N2Q0NTNjODVjOGEzNzRi
MDgxOGNlMjg1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKIAogICAgIFIqIGdl
dCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Uio+KENhY2hlZFJlc291cmNlSGFu
ZGxlQmFzZTo6Z2V0KCkpOyB9CiAgICAgUiogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdl
dCgpOyB9CisgICAgUiYgb3BlcmF0b3IqKCkgY29uc3QgeyBBU1NFUlQoZ2V0KCkpOyByZXR1cm4g
KmdldCgpOyB9CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZSYgb3BlcmF0b3I9KFIqIHJlcykg
eyBzZXRSZXNvdXJjZShyZXMpOyByZXR1cm4gKnRoaXM7IH0gCiAgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGUmIG9wZXJhdG9yPShjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZSYgbykgeyBzZXRSZXNv
dXJjZShvLmdldCgpKTsgcmV0dXJuICp0aGlzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCA5NWNjNTA1YzM4YmFj
YzY0NWE1YzRjMzRmNTc0NmQ1NTYxMzkxMWUzLi4zZGNhMWFlNDg3N2UwMjRiZjQyYTU2NmQ1NDFi
ZTc0OGM1NmZhZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIxOCwxNCArMjE4LDE0IEBAIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0VXNlckNTU1N0CiAgICAgaWYgKENhY2hlZFJlc291cmNlKiBleGlzdGluZyA9IG1lbW9yeUNh
Y2hlKCkucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHNlc3Np
b25JRCgpKSkgewogICAgICAgICBpZiAoaXM8Q2FjaGVkQ1NTU3R5bGVTaGVldD4oKmV4aXN0aW5n
KSkKICAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0PihleGlz
dGluZyk7Ci0gICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlKGV4aXN0aW5nKTsKKyAgICAgICAg
bWVtb3J5Q2FjaGUoKS5yZW1vdmUoKmV4aXN0aW5nKTsKICAgICB9CiAgICAgaWYgKHVybC5zdHJp
bmcoKSAhPSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKQogICAgICAgICByZXF1ZXN0
Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5zZXRVUkwodXJsKTsKIAogICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IHVzZXJTaGVldCA9IG5ldyBDYWNoZWRDU1NT
dHlsZVNoZWV0KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QuY2hhcnNldCgpLCBz
ZXNzaW9uSUQoKSk7CiAKLSAgICBtZW1vcnlDYWNoZSgpLmFkZCh1c2VyU2hlZXQuZ2V0KCkpOwor
ICAgIG1lbW9yeUNhY2hlKCkuYWRkKCp1c2VyU2hlZXQpOwogICAgIC8vIEZJWE1FOiBsb2FkUmVz
b3VyY2UgY2FsbHMgc2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBpZiB0aGUgcmVzb3Vy
Y2UgY291bGRuJ3QgYmUgYWRkZWQgdG8gY2FjaGUuIERvZXMgdGhpcyBmdW5jdGlvbiBuZWVkIHRv
IGNhbGwgaXQsIHRvbz8KIAogICAgIHVzZXJTaGVldC0+bG9hZCgqdGhpcywgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zKERvTm90U2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBB
bGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JBbGxDcmVkZW50aWFscywgU2tpcFNl
Y3VyaXR5Q2hlY2ssIFVzZURlZmF1bHRPcmlnaW5SZXN0cmljdGlvbnNGb3JUeXBlLCBEb05vdElu
Y2x1ZGVDZXJ0aWZpY2F0ZUluZm8pKTsKQEAgLTQ4OSw3ICs0ODksNyBAQCBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNv
dXJjZShDYWNoZQogICAgIGNvbnN0IFJldmFsaWRhdGlvblBvbGljeSBwb2xpY3kgPSBkZXRlcm1p
bmVSZXZhbGlkYXRpb25Qb2xpY3kodHlwZSwgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0
KCksIHJlcXVlc3QuZm9yUHJlbG9hZCgpLCByZXNvdXJjZS5nZXQoKSwgcmVxdWVzdC5kZWZlcigp
KTsKICAgICBzd2l0Y2ggKHBvbGljeSkgewogICAgIGNhc2UgUmVsb2FkOgotICAgICAgICBtZW1v
cnlDYWNoZSgpLnJlbW92ZShyZXNvdXJjZS5nZXQoKSk7CisgICAgICAgIG1lbW9yeUNhY2hlKCku
cmVtb3ZlKCpyZXNvdXJjZSk7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgTG9hZDoK
ICAgICAgICAgaWYgKHJlc291cmNlKQpAQCAtNTA1LDcgKzUwNSw3IEBAIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291
cmNlKENhY2hlCiAgICAgICAgIGlmICghc2hvdWxkQ29udGludWVBZnRlck5vdGlmeWluZ0xvYWRl
ZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0LCByZXNvdXJjZS5nZXQoKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgbG9nTWVtb3J5Q2FjaGVSZXNvdXJjZVJlcXVlc3QoZnJh
bWUoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbk1lbW9yeUNhY2hlS2V5KCksIERpYWdub3N0
aWNMb2dnaW5nS2V5czo6dXNlZEtleSgpKTsKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZXNvdXJj
ZUFjY2Vzc2VkKHJlc291cmNlLmdldCgpKTsKKyAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZXNvdXJj
ZUFjY2Vzc2VkKCpyZXNvdXJjZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNTIxLDcg
KzUyMSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAgICAgICAgIC8vIFdlIGRvbid0IHN1
cHBvcnQgaW1tZWRpYXRlIGxvYWRzLCBidXQgd2UgZG8gc3VwcG9ydCBpbW1lZGlhdGUgZmFpbHVy
ZS4KICAgICAgICAgaWYgKHJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpIHsKICAgICAgICAgICAg
IGlmIChyZXNvdXJjZS0+aW5DYWNoZSgpKQotICAgICAgICAgICAgICAgIG1lbW9yeUNhY2hlKCku
cmVtb3ZlKHJlc291cmNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJl
bW92ZSgqcmVzb3VyY2UpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
ICAgICB9CkBAIC01NTUsOCArNTU1LDggQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2UoY28KICAgICBM
T0coUmVzb3VyY2VMb2FkaW5nLCAiUmVzb3VyY2UgJXAgY3JlYXRlZCB0byByZXZhbGlkYXRlICVw
IiwgbmV3UmVzb3VyY2UuZ2V0KCksIHJlc291cmNlKTsKICAgICBuZXdSZXNvdXJjZS0+c2V0UmVz
b3VyY2VUb1JldmFsaWRhdGUocmVzb3VyY2UpOwogICAgIAotICAgIG1lbW9yeUNhY2hlKCkucmVt
b3ZlKHJlc291cmNlKTsKLSAgICBtZW1vcnlDYWNoZSgpLmFkZChuZXdSZXNvdXJjZS5nZXQoKSk7
CisgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmUoKnJlc291cmNlKTsKKyAgICBtZW1vcnlDYWNoZSgp
LmFkZCgqbmV3UmVzb3VyY2UpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9USU1JTkcpCiAgICAgc3Rv
cmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uKHJlc291cmNlLCByZXF1ZXN0KTsK
ICNlbHNlCkBAIC01NzMsNyArNTczLDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UoQ2FjaGVkUmUKIAogICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IGNyZWF0ZVJl
c291cmNlKHR5cGUsIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LmNo
YXJzZXQoKSwgc2Vzc2lvbklEKCkpOwogCi0gICAgaWYgKCFtZW1vcnlDYWNoZSgpLmFkZChyZXNv
dXJjZS5nZXQoKSkpCisgICAgaWYgKCFtZW1vcnlDYWNoZSgpLmFkZCgqcmVzb3VyY2UpKQogICAg
ICAgICByZXNvdXJjZS0+c2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIodGhpcyk7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX1RJTUlORykKICAgICBzdG9yZVJlc291cmNlVGltaW5nSW5pdGlhdG9y
SW5mb3JtYXRpb24ocmVzb3VyY2UsIHJlcXVlc3QpOwpAQCAtNzg5LDIyICs3ODksMjIgQEAgQ2Fj
aGVQb2xpY3kgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhY2hlUG9saWN5KENhY2hlZFJlc291cmNl
OjpUeXBlIHR5cGUpIGNvbnN0CiAgICAgfQogfQogCi12b2lkIENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpIGNvbnN0Cit2
b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIERvY3VtZW50UmVzb3VyY2VN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9kb2N1bWVudFJlc291cmNlcy5maW5kKHJlc291cmNlLT51cmwo
KSk7CisgICAgRG9jdW1lbnRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2RvY3VtZW50UmVz
b3VyY2VzLmZpbmQocmVzb3VyY2UudXJsKCkpOwogICAgIGlmIChpdCAhPSBtX2RvY3VtZW50UmVz
b3VyY2VzLmVuZCgpKQotICAgICAgICBBU1NFUlQoaXQtPnZhbHVlLmdldCgpID09IHJlc291cmNl
KTsKKyAgICAgICAgQVNTRVJUKGl0LT52YWx1ZS5nZXQoKSA9PSAmcmVzb3VyY2UpOwogI2VuZGlm
Ci0gICAgbV9kb2N1bWVudFJlc291cmNlcy5yZW1vdmUocmVzb3VyY2UtPnVybCgpKTsKKyAgICBt
X2RvY3VtZW50UmVzb3VyY2VzLnJlbW92ZShyZXNvdXJjZS51cmwoKSk7CiB9CiAKLXZvaWQgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmFkZENhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmFkZENhY2hlZFJlc291cmNlKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICBtX2RvY3VtZW50UmVzb3VyY2VzLnNldChyZXNv
dXJjZS0+dXJsKCksIHJlc291cmNlKTsKKyAgICBtX2RvY3VtZW50UmVzb3VyY2VzLnNldChyZXNv
dXJjZS51cmwoKSwgJnJlc291cmNlKTsKIAogICAgIGlmICghbWVtb3J5Q2FjaGUoKS5hZGQocmVz
b3VyY2UpKQotICAgICAgICByZXNvdXJjZS0+c2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIo
dGhpcyk7CisgICAgICAgIHJlc291cmNlLnNldE93bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKHRo
aXMpOwogfQogCiB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkRG9uZShDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UsIGJvb2wgc2hvdWxkUGVyZm9ybVBvc3RMb2FkQWN0aW9ucykKQEAgLTk4
NSwxMyArOTg1LDExIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNsZWFyUHJlbG9hZHMo
KQogICAgIGlmICghbV9wcmVsb2FkcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGlzdEhhc2hT
ZXQ8Q2FjaGVkUmVzb3VyY2UqPjo6aXRlcmF0b3IgZW5kID0gbV9wcmVsb2Fkcy0+ZW5kKCk7Ci0g
ICAgZm9yIChMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+OjppdGVyYXRvciBpdCA9IG1fcHJl
bG9hZHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBDYWNoZWRSZXNvdXJj
ZSogcmVzID0gKml0OwotICAgICAgICByZXMtPmRlY3JlYXNlUHJlbG9hZENvdW50KCk7Ci0gICAg
ICAgIGJvb2wgZGVsZXRlZCA9IHJlcy0+ZGVsZXRlSWZQb3NzaWJsZSgpOwotICAgICAgICBpZiAo
IWRlbGV0ZWQgJiYgcmVzLT5wcmVsb2FkUmVzdWx0KCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlByZWxv
YWROb3RSZWZlcmVuY2VkKQotICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmUocmVzKTsK
KyAgICBmb3IgKGF1dG8qIHJlc291cmNlIDogKm1fcHJlbG9hZHMpIHsKKyAgICAgICAgcmVzb3Vy
Y2UtPmRlY3JlYXNlUHJlbG9hZENvdW50KCk7CisgICAgICAgIGJvb2wgZGVsZXRlZCA9IHJlc291
cmNlLT5kZWxldGVJZlBvc3NpYmxlKCk7CisgICAgICAgIGlmICghZGVsZXRlZCAmJiByZXNvdXJj
ZS0+cHJlbG9hZFJlc3VsdCgpID09IENhY2hlZFJlc291cmNlOjpQcmVsb2FkTm90UmVmZXJlbmNl
ZCkKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlKCpyZXNvdXJjZSk7CiAgICAgfQog
ICAgIG1fcHJlbG9hZHMgPSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCAxZmQ1NzBiMjljMzA1N2QzOWYx
MDA1NTg4ZTg4ZWY3YjlkNTNkNzg2Li44MTdlMzYwNzViMWMwZTdiOWIyYzYzZjY3NGI1NTM2OTBk
Njk4ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaApAQCAtMTEzLDggKzExMyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFy
RG9jdW1lbnRMb2FkZXIoKSB7IG1fZG9jdW1lbnRMb2FkZXIgPSAwOyB9CiAgICAgU2Vzc2lvbklE
IHNlc3Npb25JRCgpIGNvbnN0OwogCi0gICAgdm9pZCByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZSopIGNvbnN0OwotICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UqKTsKKyAgICB2b2lkIHJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJik7
CisgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgdm9p
ZCBsb2FkRG9uZShDYWNoZWRSZXNvdXJjZSosIGJvb2wgc2hvdWxkUGVyZm9ybVBvc3RMb2FkQWN0
aW9ucyA9IHRydWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcAppbmRleCBhNTA4MDZiMDU4NmI5Y2M2MDM1ZDFjNzZhZTJjMjBkNjliNGFlMzgzLi5lNmVl
YmI4ZWEzYzc1NzZmYWMzZjg3M2I1NGQ2NDI1MGNlZmZjODBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTk5LDgxICs5OSw4MiBAQCBVUkwgTWVt
b3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKGNvbnN0IFVSTCYgb3Jp
Z2luYWxVUkwpCiAgICAgcmV0dXJuIHVybDsKIH0KIAotYm9vbCBNZW1vcnlDYWNoZTo6YWRkKENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSkKK2Jvb2wgTWVtb3J5Q2FjaGU6OmFkZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgaWYgKGRpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKIAotICAgIENhY2hlZFJl
c291cmNlTWFwJiByZXNvdXJjZXMgPSBnZXRTZXNzaW9uTWFwKHJlc291cmNlLT5zZXNzaW9uSUQo
KSk7CisgICAgQ2FjaGVkUmVzb3VyY2VNYXAmIHJlc291cmNlcyA9IGdldFNlc3Npb25NYXAocmVz
b3VyY2Uuc2Vzc2lvbklEKCkpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAg
Q2FjaGVkUmVzb3VyY2VJdGVtKiBvcmlnaW5NYXAgPSByZXNvdXJjZXMuZ2V0KHJlc291cmNlLT51
cmwoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VJdGVtKiBvcmlnaW5NYXAgPSByZXNvdXJjZXMuZ2V0
KHJlc291cmNlLnVybCgpKTsKICAgICBpZiAoIW9yaWdpbk1hcCkgewogICAgICAgICBvcmlnaW5N
YXAgPSBuZXcgQ2FjaGVkUmVzb3VyY2VJdGVtOwotICAgICAgICByZXNvdXJjZXMuc2V0KHJlc291
cmNlLT51cmwoKSwgYWRvcHRQdHIob3JpZ2luTWFwKSk7CisgICAgICAgIHJlc291cmNlcy5zZXQo
cmVzb3VyY2UudXJsKCksIGFkb3B0UHRyKG9yaWdpbk1hcCkpOwogICAgIH0KLSAgICBvcmlnaW5N
YXAtPnNldChyZXNvdXJjZS0+Y2FjaGVQYXJ0aXRpb24oKSwgcmVzb3VyY2UpOworICAgIG9yaWdp
bk1hcC0+c2V0KHJlc291cmNlLmNhY2hlUGFydGl0aW9uKCksICZyZXNvdXJjZSk7CiAjZWxzZQot
ICAgIHJlc291cmNlcy5zZXQocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZSk7CisgICAgcmVzb3Vy
Y2VzLnNldChyZXNvdXJjZS51cmwoKSwgJnJlc291cmNlKTsKICNlbmRpZgotICAgIHJlc291cmNl
LT5zZXRJbkNhY2hlKHRydWUpOworICAgIHJlc291cmNlLnNldEluQ2FjaGUodHJ1ZSk7CiAgICAg
CiAgICAgcmVzb3VyY2VBY2Nlc3NlZChyZXNvdXJjZSk7CiAgICAgCi0gICAgTE9HKFJlc291cmNl
TG9hZGluZywgIk1lbW9yeUNhY2hlOjphZGQgQWRkZWQgJyVzJywgcmVzb3VyY2UgJXBcbiIsIHJl
c291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIHJlc291cmNlKTsKKyAgICBM
T0coUmVzb3VyY2VMb2FkaW5nLCAiTWVtb3J5Q2FjaGU6OmFkZCBBZGRlZCAnJXMnLCByZXNvdXJj
ZSAlcFxuIiwgcmVzb3VyY2UudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCAmcmVzb3Vy
Y2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE1lbW9yeUNhY2hlOjpyZXZhbGlkYXRp
b25TdWNjZWVkZWQoQ2FjaGVkUmVzb3VyY2UqIHJldmFsaWRhdGluZ1Jlc291cmNlLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCB0YWtlIGEg
cmVmZXJlbmNlLgordm9pZCBNZW1vcnlDYWNoZTo6cmV2YWxpZGF0aW9uU3VjY2VlZGVkKENhY2hl
ZFJlc291cmNlJiByZXZhbGlkYXRpbmdSZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcmV2YWxpZGF0aW5n
UmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCk7Ci0gICAgQVNTRVJUKHJlc291cmNlKTsK
LSAgICBBU1NFUlQoIXJlc291cmNlLT5pbkNhY2hlKCkpOwotICAgIEFTU0VSVChyZXNvdXJjZS0+
aXNMb2FkZWQoKSk7Ci0gICAgQVNTRVJUKHJldmFsaWRhdGluZ1Jlc291cmNlLT5pbkNhY2hlKCkp
OworICAgIEFTU0VSVChyZXZhbGlkYXRpbmdSZXNvdXJjZS5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgp
KTsKKyAgICBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UgPSAqcmV2YWxpZGF0aW5nUmVzb3VyY2Uu
cmVzb3VyY2VUb1JldmFsaWRhdGUoKTsKKyAgICBBU1NFUlQoIXJlc291cmNlLmluQ2FjaGUoKSk7
CisgICAgQVNTRVJUKHJlc291cmNlLmlzTG9hZGVkKCkpOworICAgIEFTU0VSVChyZXZhbGlkYXRp
bmdSZXNvdXJjZS5pbkNhY2hlKCkpOwogCiAgICAgLy8gQ2FsbGluZyByZW1vdmUoKSBjYW4gcG90
ZW50aWFsbHkgZGVsZXRlIHJldmFsaWRhdGluZ1Jlc291cmNlLCB3aGljaCB3ZSB1c2UKICAgICAv
LyBiZWxvdy4gVGhpcyBtdXN0bid0IGJlIHRoZSBjYXNlIHNpbmNlIHJldmFsaWRhdGlvbiBtZWFu
cyBpdCBpcyBsb2FkZWQKICAgICAvLyBhbmQgc28gY2FuRGVsZXRlKCkgaXMgZmFsc2UuCi0gICAg
QVNTRVJUKCFyZXZhbGlkYXRpbmdSZXNvdXJjZS0+Y2FuRGVsZXRlKCkpOworICAgIEFTU0VSVCgh
cmV2YWxpZGF0aW5nUmVzb3VyY2UuY2FuRGVsZXRlKCkpOwogCiAgICAgcmVtb3ZlKHJldmFsaWRh
dGluZ1Jlc291cmNlKTsKIAotICAgIENhY2hlZFJlc291cmNlTWFwJiByZXNvdXJjZXMgPSBnZXRT
ZXNzaW9uTWFwKHJlc291cmNlLT5zZXNzaW9uSUQoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VNYXAm
IHJlc291cmNlcyA9IGdldFNlc3Npb25NYXAocmVzb3VyY2Uuc2Vzc2lvbklEKCkpOwogI2lmIEVO
QUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgQVNTRVJUKCFyZXNvdXJjZXMuZ2V0KHJlc291
cmNlLT51cmwoKSkgfHwgIXJlc291cmNlcy5nZXQocmVzb3VyY2UtPnVybCgpKS0+Z2V0KHJlc291
cmNlLT5jYWNoZVBhcnRpdGlvbigpKSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2VJdGVtKiBvcmlnaW5N
YXAgPSByZXNvdXJjZXMuZ2V0KHJlc291cmNlLT51cmwoKSk7CisgICAgQVNTRVJUKCFyZXNvdXJj
ZXMuZ2V0KHJlc291cmNlLnVybCgpKSB8fCAhcmVzb3VyY2VzLmdldChyZXNvdXJjZS51cmwoKSkt
PmdldChyZXNvdXJjZS5jYWNoZVBhcnRpdGlvbigpKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VJdGVt
KiBvcmlnaW5NYXAgPSByZXNvdXJjZXMuZ2V0KHJlc291cmNlLnVybCgpKTsKICAgICBpZiAoIW9y
aWdpbk1hcCkgewogICAgICAgICBvcmlnaW5NYXAgPSBuZXcgQ2FjaGVkUmVzb3VyY2VJdGVtOwot
ICAgICAgICByZXNvdXJjZXMuc2V0KHJlc291cmNlLT51cmwoKSwgYWRvcHRQdHIob3JpZ2luTWFw
KSk7CisgICAgICAgIHJlc291cmNlcy5zZXQocmVzb3VyY2UudXJsKCksIGFkb3B0UHRyKG9yaWdp
bk1hcCkpOwogICAgIH0KLSAgICBvcmlnaW5NYXAtPnNldChyZXNvdXJjZS0+Y2FjaGVQYXJ0aXRp
b24oKSwgcmVzb3VyY2UpOworICAgIG9yaWdpbk1hcC0+c2V0KHJlc291cmNlLmNhY2hlUGFydGl0
aW9uKCksICZyZXNvdXJjZSk7CiAjZWxzZQotICAgIEFTU0VSVCghcmVzb3VyY2VzLmdldChyZXNv
dXJjZS0+dXJsKCkpKTsKLSAgICByZXNvdXJjZXMuc2V0KHJlc291cmNlLT51cmwoKSwgcmVzb3Vy
Y2UpOworICAgIEFTU0VSVCghcmVzb3VyY2VzLmdldChyZXNvdXJjZS51cmwoKSkpOworICAgIHJl
c291cmNlcy5zZXQocmVzb3VyY2UtPnVybCgpLCAmcmVzb3VyY2UpOwogI2VuZGlmCi0gICAgcmVz
b3VyY2UtPnNldEluQ2FjaGUodHJ1ZSk7Ci0gICAgcmVzb3VyY2UtPnVwZGF0ZVJlc3BvbnNlQWZ0
ZXJSZXZhbGlkYXRpb24ocmVzcG9uc2UpOworICAgIHJlc291cmNlLnNldEluQ2FjaGUodHJ1ZSk7
CisgICAgcmVzb3VyY2UudXBkYXRlUmVzcG9uc2VBZnRlclJldmFsaWRhdGlvbihyZXNwb25zZSk7
CiAgICAgaW5zZXJ0SW5MUlVMaXN0KHJlc291cmNlKTsKLSAgICBpbnQgZGVsdGEgPSByZXNvdXJj
ZS0+c2l6ZSgpOwotICAgIGlmIChyZXNvdXJjZS0+ZGVjb2RlZFNpemUoKSAmJiByZXNvdXJjZS0+
aGFzQ2xpZW50cygpKQorICAgIGludCBkZWx0YSA9IHJlc291cmNlLnNpemUoKTsKKyAgICBpZiAo
cmVzb3VyY2UuZGVjb2RlZFNpemUoKSAmJiByZXNvdXJjZS5oYXNDbGllbnRzKCkpCiAgICAgICAg
IGluc2VydEluTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KHJlc291cmNlKTsKICAgICBpZiAoZGVs
dGEpCi0gICAgICAgIGFkanVzdFNpemUocmVzb3VyY2UtPmhhc0NsaWVudHMoKSwgZGVsdGEpOwor
ICAgICAgICBhZGp1c3RTaXplKHJlc291cmNlLmhhc0NsaWVudHMoKSwgZGVsdGEpOwogICAgIAot
ICAgIHJldmFsaWRhdGluZ1Jlc291cmNlLT5zd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291
cmNlKCk7Ci0gICAgQVNTRVJUKCFyZXZhbGlkYXRpbmdSZXNvdXJjZS0+bV9kZWxldGVkKTsKKyAg
ICByZXZhbGlkYXRpbmdSZXNvdXJjZS5zd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNl
KCk7CisgICAgQVNTRVJUKCFyZXZhbGlkYXRpbmdSZXNvdXJjZS5tX2RlbGV0ZWQpOwogICAgIC8v
IHRoaXMgZGVsZXRlcyB0aGUgcmV2YWxpZGF0aW5nIHJlc291cmNlCi0gICAgcmV2YWxpZGF0aW5n
UmVzb3VyY2UtPmNsZWFyUmVzb3VyY2VUb1JldmFsaWRhdGUoKTsKKyAgICByZXZhbGlkYXRpbmdS
ZXNvdXJjZS5jbGVhclJlc291cmNlVG9SZXZhbGlkYXRlKCk7CiB9CiAKLXZvaWQgTWVtb3J5Q2Fj
aGU6OnJldmFsaWRhdGlvbkZhaWxlZChDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0aW5nUmVzb3Vy
Y2UpCit2b2lkIE1lbW9yeUNhY2hlOjpyZXZhbGlkYXRpb25GYWlsZWQoQ2FjaGVkUmVzb3VyY2Um
IHJldmFsaWRhdGluZ1Jlc291cmNlKQogewogICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgp
KTsKLSAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmV2YWxpZGF0aW9uIGZhaWxlZCBmb3IgJXAi
LCByZXZhbGlkYXRpbmdSZXNvdXJjZSk7Ci0gICAgQVNTRVJUKHJldmFsaWRhdGluZ1Jlc291cmNl
LT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKTsKLSAgICByZXZhbGlkYXRpbmdSZXNvdXJjZS0+Y2xl
YXJSZXNvdXJjZVRvUmV2YWxpZGF0ZSgpOworICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJSZXZh
bGlkYXRpb24gZmFpbGVkIGZvciAlcCIsICZyZXZhbGlkYXRpbmdSZXNvdXJjZSk7CisgICAgQVNT
RVJUKHJldmFsaWRhdGluZ1Jlc291cmNlLnJlc291cmNlVG9SZXZhbGlkYXRlKCkpOworICAgIHJl
dmFsaWRhdGluZ1Jlc291cmNlLmNsZWFyUmVzb3VyY2VUb1JldmFsaWRhdGUoKTsKIH0KIAogQ2Fj
aGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXNvdXJjZUZvclVSTChjb25zdCBVUkwmIHJlc291
cmNlVVJMLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQpAQCAtMTkzLDcgKzE5NCw3IEBAIENhY2hlZFJl
c291cmNlKiBNZW1vcnlDYWNoZTo6cmVzb3VyY2VGb3JSZXF1ZXN0SW1wbChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlCiAKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIENh
Y2hlZFJlc291cmNlSXRlbSogaXRlbSA9IHJlc291cmNlcy5nZXQodXJsKTsKLSAgICBDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UgPSAwOworICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG51
bGxwdHI7CiAgICAgaWYgKGl0ZW0pCiAgICAgICAgIHJlc291cmNlID0gaXRlbS0+Z2V0KHJlcXVl
c3QuY2FjaGVQYXJ0aXRpb24oKSk7CiAjZWxzZQpAQCAtMjQ1LDcgKzI0Niw3IEBAIGJvb2wgTWVt
b3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKICAgICBjYWNo
ZWRJbWFnZS0+cmVzb3VyY2VSZXF1ZXN0KCkuc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogI2VuZGlmCi0gICAgcmV0dXJuIGFkZChjYWNoZWRJbWFn
ZS5yZWxlYXNlKCkpOworICAgIHJldHVybiBhZGQoKmNhY2hlZEltYWdlLnJlbGVhc2UoKSk7CiB9
CiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZUltYWdlRnJvbUNhY2hlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKQpAQCAtMjY2LDcgKzI2Nyw3
IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZUltYWdlRnJvbUNhY2hlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhCiAKICAgICAvLyBBIHJlc291cmNlIGV4aXN0cyBh
bmQgaXMgbm90IGEgbWFudWFsbHkgY2FjaGVkIGltYWdlLCBzbyBqdXN0IHJlbW92ZSBpdC4KICAg
ICBpZiAoIWlzPENhY2hlZEltYWdlPigqcmVzb3VyY2UpIHx8ICFkb3duY2FzdDxDYWNoZWRJbWFn
ZT4oKnJlc291cmNlKS5pc01hbnVhbGx5Q2FjaGVkKCkpIHsKLSAgICAgICAgcmVtb3ZlKHJlc291
cmNlKTsKKyAgICAgICAgcmVtb3ZlKCpyZXNvdXJjZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTM4Myw3ICszODQsNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpwcnVuZURlYWRSZXNvdXJj
ZXNUb1NpemUodW5zaWduZWQgdGFyZ2V0U2l6ZSkKICAgICAgICAgICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJlc291cmNlPiBwcmV2aW91cyA9IGN1cnJlbnQtPm1fcHJldkluQWxsUmVz
b3VyY2VzTGlzdDsKICAgICAgICAgICAgIEFTU0VSVCghcHJldmlvdXMgfHwgcHJldmlvdXMtPmlu
Q2FjaGUoKSk7CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnQtPmhhc0NsaWVudHMoKSAmJiAhY3Vy
cmVudC0+aXNQcmVsb2FkZWQoKSAmJiAhY3VycmVudC0+aXNDYWNoZVZhbGlkYXRvcigpKSB7Ci0g
ICAgICAgICAgICAgICAgcmVtb3ZlKGN1cnJlbnQpOworICAgICAgICAgICAgICAgIHJlbW92ZSgq
Y3VycmVudCk7CiAgICAgICAgICAgICAgICAgaWYgKHRhcmdldFNpemUgJiYgbV9kZWFkU2l6ZSA8
PSB0YXJnZXRTaXplKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CkBAIC00MTEsNzMgKzQxMiw3MyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpzZXRDYXBhY2l0aWVzKHVu
c2lnbmVkIG1pbkRlYWRCeXRlcywgdW5zaWduZWQgbWF4RGVhZEJ5dGVzLCB1bgogICAgIHBydW5l
KCk7CiB9CiAKLXZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZShDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UpCit2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmUoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQog
ewogICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKLSAgICBMT0coUmVzb3VyY2VMb2Fk
aW5nLCAiRXZpY3RpbmcgcmVzb3VyY2UgJXAgZm9yICclcycgZnJvbSBjYWNoZSIsIHJlc291cmNl
LCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICBMT0coUmVz
b3VyY2VMb2FkaW5nLCAiRXZpY3RpbmcgcmVzb3VyY2UgJXAgZm9yICclcycgZnJvbSBjYWNoZSIs
ICZyZXNvdXJjZSwgcmVzb3VyY2UudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAg
ICAvLyBUaGUgcmVzb3VyY2UgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgYnkgc29tZW9u
ZSBvdGhlciB0aGFuIG91ciBjYWxsZXIsCiAgICAgLy8gd2hvIG5lZWRlZCBhIGZyZXNoIGNvcHkg
Zm9yIGEgcmVsb2FkLiBTZWUgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNDc5I2M2Pi4KLSAgICBDYWNoZWRSZXNvdXJjZU1hcCYgcmVzb3VyY2VzID0gZ2V0U2Vzc2lv
bk1hcChyZXNvdXJjZS0+c2Vzc2lvbklEKCkpOwotICAgIGlmIChyZXNvdXJjZS0+aW5DYWNoZSgp
KSB7CisgICAgQ2FjaGVkUmVzb3VyY2VNYXAmIHJlc291cmNlcyA9IGdldFNlc3Npb25NYXAocmVz
b3VyY2Uuc2Vzc2lvbklEKCkpOworICAgIGlmIChyZXNvdXJjZS5pbkNhY2hlKCkpIHsKICAgICAg
ICAgLy8gUmVtb3ZlIGZyb20gdGhlIHJlc291cmNlIG1hcC4KICNpZiBFTkFCTEUoQ0FDSEVfUEFS
VElUSU9OSU5HKQotICAgICAgICBDYWNoZWRSZXNvdXJjZUl0ZW0qIGl0ZW0gPSByZXNvdXJjZXMu
Z2V0KHJlc291cmNlLT51cmwoKSk7CisgICAgICAgIENhY2hlZFJlc291cmNlSXRlbSogaXRlbSA9
IHJlc291cmNlcy5nZXQocmVzb3VyY2UudXJsKCkpOwogICAgICAgICBpZiAoaXRlbSkgewotICAg
ICAgICAgICAgaXRlbS0+cmVtb3ZlKHJlc291cmNlLT5jYWNoZVBhcnRpdGlvbigpKTsKKyAgICAg
ICAgICAgIGl0ZW0tPnJlbW92ZShyZXNvdXJjZS5jYWNoZVBhcnRpdGlvbigpKTsKICAgICAgICAg
ICAgIGlmICghaXRlbS0+c2l6ZSgpKQotICAgICAgICAgICAgICAgIHJlc291cmNlcy5yZW1vdmUo
cmVzb3VyY2UtPnVybCgpKTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZXMucmVtb3ZlKHJlc291
cmNlLnVybCgpKTsKICAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgcmVzb3VyY2VzLnJlbW92ZShy
ZXNvdXJjZS0+dXJsKCkpOworICAgICAgICByZXNvdXJjZXMucmVtb3ZlKHJlc291cmNlLnVybCgp
KTsKICNlbmRpZgotICAgICAgICByZXNvdXJjZS0+c2V0SW5DYWNoZShmYWxzZSk7CisgICAgICAg
IHJlc291cmNlLnNldEluQ2FjaGUoZmFsc2UpOwogCiAgICAgICAgIC8vIFJlbW92ZSBmcm9tIHRo
ZSBhcHByb3ByaWF0ZSBMUlUgbGlzdC4KICAgICAgICAgcmVtb3ZlRnJvbUxSVUxpc3QocmVzb3Vy
Y2UpOwogICAgICAgICByZW1vdmVGcm9tTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KHJlc291cmNl
KTsKLSAgICAgICAgYWRqdXN0U2l6ZShyZXNvdXJjZS0+aGFzQ2xpZW50cygpLCAtc3RhdGljX2Nh
c3Q8aW50PihyZXNvdXJjZS0+c2l6ZSgpKSk7CisgICAgICAgIGFkanVzdFNpemUocmVzb3VyY2Uu
aGFzQ2xpZW50cygpLCAtc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZS5zaXplKCkpKTsKICAgICB9
IGVsc2UKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAgICAgICBBU1NFUlQoIXJl
c291cmNlcy5nZXQocmVzb3VyY2UtPnVybCgpKSB8fCByZXNvdXJjZXMuZ2V0KHJlc291cmNlLT51
cmwoKSktPmdldChyZXNvdXJjZS0+Y2FjaGVQYXJ0aXRpb24oKSkgIT0gcmVzb3VyY2UpOworICAg
ICAgICBBU1NFUlQoIXJlc291cmNlcy5nZXQocmVzb3VyY2UudXJsKCkpIHx8IHJlc291cmNlcy5n
ZXQocmVzb3VyY2UudXJsKCkpLT5nZXQocmVzb3VyY2UuY2FjaGVQYXJ0aXRpb24oKSkgIT0gJnJl
c291cmNlKTsKICNlbHNlCi0gICAgICAgIEFTU0VSVChyZXNvdXJjZXMuZ2V0KHJlc291cmNlLT51
cmwoKSkgIT0gcmVzb3VyY2UpOworICAgICAgICBBU1NFUlQocmVzb3VyY2VzLmdldChyZXNvdXJj
ZS51cmwoKSkgIT0gJnJlc291cmNlKTsKICNlbmRpZgogCi0gICAgcmVzb3VyY2UtPmRlbGV0ZUlm
UG9zc2libGUoKTsKKyAgICByZXNvdXJjZS5kZWxldGVJZlBvc3NpYmxlKCk7CiB9CiAKLU1lbW9y
eUNhY2hlOjpMUlVMaXN0KiBNZW1vcnlDYWNoZTo6bHJ1TGlzdEZvcihDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UpCitNZW1vcnlDYWNoZTo6TFJVTGlzdCogTWVtb3J5Q2FjaGU6OmxydUxpc3RGb3Io
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIHVuc2lnbmVkIGFjY2Vzc0NvdW50ID0g
c3RkOjptYXgocmVzb3VyY2UtPmFjY2Vzc0NvdW50KCksIDFVKTsKLSAgICB1bnNpZ25lZCBxdWV1
ZUluZGV4ID0gV1RGOjpmYXN0TG9nMihyZXNvdXJjZS0+c2l6ZSgpIC8gYWNjZXNzQ291bnQpOwor
ICAgIHVuc2lnbmVkIGFjY2Vzc0NvdW50ID0gc3RkOjptYXgocmVzb3VyY2UuYWNjZXNzQ291bnQo
KSwgMVUpOworICAgIHVuc2lnbmVkIHF1ZXVlSW5kZXggPSBXVEY6OmZhc3RMb2cyKHJlc291cmNl
LnNpemUoKSAvIGFjY2Vzc0NvdW50KTsKICNpZm5kZWYgTkRFQlVHCi0gICAgcmVzb3VyY2UtPm1f
bHJ1SW5kZXggPSBxdWV1ZUluZGV4OworICAgIHJlc291cmNlLm1fbHJ1SW5kZXggPSBxdWV1ZUlu
ZGV4OwogI2VuZGlmCiAgICAgaWYgKG1fYWxsUmVzb3VyY2VzLnNpemUoKSA8PSBxdWV1ZUluZGV4
KQogICAgICAgICBtX2FsbFJlc291cmNlcy5ncm93KHF1ZXVlSW5kZXggKyAxKTsKICAgICByZXR1
cm4gJm1fYWxsUmVzb3VyY2VzW3F1ZXVlSW5kZXhdOwogfQogCi12b2lkIE1lbW9yeUNhY2hlOjpy
ZW1vdmVGcm9tTFJVTGlzdChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIE1lbW9yeUNh
Y2hlOjpyZW1vdmVGcm9tTFJVTGlzdChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAg
Ly8gSWYgd2UndmUgbmV2ZXIgYmVlbiBhY2Nlc3NlZCwgdGhlbiB3ZSdyZSBicmFuZCBuZXcgYW5k
IG5vdCBpbiBhbnkgbGlzdC4KLSAgICBpZiAocmVzb3VyY2UtPmFjY2Vzc0NvdW50KCkgPT0gMCkK
KyAgICBpZiAoIXJlc291cmNlLmFjY2Vzc0NvdW50KCkpCiAgICAgICAgIHJldHVybjsKIAogI2lm
ICFBU1NFUlRfRElTQUJMRUQKLSAgICB1bnNpZ25lZCBvbGRMaXN0SW5kZXggPSByZXNvdXJjZS0+
bV9scnVJbmRleDsKKyAgICB1bnNpZ25lZCBvbGRMaXN0SW5kZXggPSByZXNvdXJjZS5tX2xydUlu
ZGV4OwogI2VuZGlmCiAKICAgICBMUlVMaXN0KiBsaXN0ID0gbHJ1TGlzdEZvcihyZXNvdXJjZSk7
CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGxpc3Qgd2Ug
Z290IGlzIHRoZSBsaXN0IHdlIHdhbnQuCi0gICAgQVNTRVJUKHJlc291cmNlLT5tX2xydUluZGV4
ID09IG9sZExpc3RJbmRleCk7CisgICAgQVNTRVJUKHJlc291cmNlLm1fbHJ1SW5kZXggPT0gb2xk
TGlzdEluZGV4KTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IHdlIGFyZSBpbiBmYWN0IGluIHRoaXMg
bGlzdC4KICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgZm9yIChDYWNoZWRSZXNvdXJjZSog
Y3VycmVudCA9IGxpc3QtPm1faGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm1fbmV4
dEluQWxsUmVzb3VyY2VzTGlzdCkgewotICAgICAgICBpZiAoY3VycmVudCA9PSByZXNvdXJjZSkg
eworICAgICAgICBpZiAoY3VycmVudCA9PSAmcmVzb3VyY2UpIHsKICAgICAgICAgICAgIGZvdW5k
ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC00ODUsNDkgKzQ4Niw0
OSBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVGcm9tTFJVTGlzdChDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UpCiAgICAgQVNTRVJUKGZvdW5kKTsKICNlbmRpZgogCi0gICAgQ2FjaGVkUmVzb3Vy
Y2UqIG5leHQgPSByZXNvdXJjZS0+bV9uZXh0SW5BbGxSZXNvdXJjZXNMaXN0OwotICAgIENhY2hl
ZFJlc291cmNlKiBwcmV2ID0gcmVzb3VyY2UtPm1fcHJldkluQWxsUmVzb3VyY2VzTGlzdDsKKyAg
ICBDYWNoZWRSZXNvdXJjZSogbmV4dCA9IHJlc291cmNlLm1fbmV4dEluQWxsUmVzb3VyY2VzTGlz
dDsKKyAgICBDYWNoZWRSZXNvdXJjZSogcHJldiA9IHJlc291cmNlLm1fcHJldkluQWxsUmVzb3Vy
Y2VzTGlzdDsKICAgICAKLSAgICBpZiAobmV4dCA9PSAwICYmIHByZXYgPT0gMCAmJiBsaXN0LT5t
X2hlYWQgIT0gcmVzb3VyY2UpCisgICAgaWYgKCFuZXh0ICYmICFwcmV2ICYmIGxpc3QtPm1faGVh
ZCAhPSAmcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICByZXNvdXJjZS0+bV9u
ZXh0SW5BbGxSZXNvdXJjZXNMaXN0ID0gMDsKLSAgICByZXNvdXJjZS0+bV9wcmV2SW5BbGxSZXNv
dXJjZXNMaXN0ID0gMDsKKyAgICByZXNvdXJjZS5tX25leHRJbkFsbFJlc291cmNlc0xpc3QgPSBu
dWxscHRyOworICAgIHJlc291cmNlLm1fcHJldkluQWxsUmVzb3VyY2VzTGlzdCA9IG51bGxwdHI7
CiAgICAgCiAgICAgaWYgKG5leHQpCiAgICAgICAgIG5leHQtPm1fcHJldkluQWxsUmVzb3VyY2Vz
TGlzdCA9IHByZXY7Ci0gICAgZWxzZSBpZiAobGlzdC0+bV90YWlsID09IHJlc291cmNlKQorICAg
IGVsc2UgaWYgKGxpc3QtPm1fdGFpbCA9PSAmcmVzb3VyY2UpCiAgICAgICAgIGxpc3QtPm1fdGFp
bCA9IHByZXY7CiAKICAgICBpZiAocHJldikKICAgICAgICAgcHJldi0+bV9uZXh0SW5BbGxSZXNv
dXJjZXNMaXN0ID0gbmV4dDsKLSAgICBlbHNlIGlmIChsaXN0LT5tX2hlYWQgPT0gcmVzb3VyY2Up
CisgICAgZWxzZSBpZiAobGlzdC0+bV9oZWFkID09ICZyZXNvdXJjZSkKICAgICAgICAgbGlzdC0+
bV9oZWFkID0gbmV4dDsKIH0KIAotdm9pZCBNZW1vcnlDYWNoZTo6aW5zZXJ0SW5MUlVMaXN0KENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgTWVtb3J5Q2FjaGU6Omluc2VydEluTFJVTGlz
dChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgLy8gTWFrZSBzdXJlIHdlIGFyZW4n
dCBpbiBzb21lIGxpc3QgYWxyZWFkeS4KLSAgICBBU1NFUlQoIXJlc291cmNlLT5tX25leHRJbkFs
bFJlc291cmNlc0xpc3QgJiYgIXJlc291cmNlLT5tX3ByZXZJbkFsbFJlc291cmNlc0xpc3QpOwot
ICAgIEFTU0VSVChyZXNvdXJjZS0+aW5DYWNoZSgpKTsKLSAgICBBU1NFUlQocmVzb3VyY2UtPmFj
Y2Vzc0NvdW50KCkgPiAwKTsKKyAgICBBU1NFUlQoIXJlc291cmNlLm1fbmV4dEluQWxsUmVzb3Vy
Y2VzTGlzdCAmJiAhcmVzb3VyY2UubV9wcmV2SW5BbGxSZXNvdXJjZXNMaXN0KTsKKyAgICBBU1NF
UlQocmVzb3VyY2UuaW5DYWNoZSgpKTsKKyAgICBBU1NFUlQocmVzb3VyY2UuYWNjZXNzQ291bnQo
KSA+IDApOwogICAgIAogICAgIExSVUxpc3QqIGxpc3QgPSBscnVMaXN0Rm9yKHJlc291cmNlKTsK
IAotICAgIHJlc291cmNlLT5tX25leHRJbkFsbFJlc291cmNlc0xpc3QgPSBsaXN0LT5tX2hlYWQ7
CisgICAgcmVzb3VyY2UubV9uZXh0SW5BbGxSZXNvdXJjZXNMaXN0ID0gbGlzdC0+bV9oZWFkOwog
ICAgIGlmIChsaXN0LT5tX2hlYWQpCi0gICAgICAgIGxpc3QtPm1faGVhZC0+bV9wcmV2SW5BbGxS
ZXNvdXJjZXNMaXN0ID0gcmVzb3VyY2U7Ci0gICAgbGlzdC0+bV9oZWFkID0gcmVzb3VyY2U7Cisg
ICAgICAgIGxpc3QtPm1faGVhZC0+bV9wcmV2SW5BbGxSZXNvdXJjZXNMaXN0ID0gJnJlc291cmNl
OworICAgIGxpc3QtPm1faGVhZCA9ICZyZXNvdXJjZTsKICAgICAKLSAgICBpZiAoIXJlc291cmNl
LT5tX25leHRJbkFsbFJlc291cmNlc0xpc3QpCi0gICAgICAgIGxpc3QtPm1fdGFpbCA9IHJlc291
cmNlOworICAgIGlmICghcmVzb3VyY2UubV9uZXh0SW5BbGxSZXNvdXJjZXNMaXN0KQorICAgICAg
ICBsaXN0LT5tX3RhaWwgPSAmcmVzb3VyY2U7CiAgICAgICAgIAogI2lmICFBU1NFUlRfRElTQUJM
RUQKICAgICAvLyBWZXJpZnkgdGhhdCB3ZSBhcmUgaW4gbm93IGluIHRoZSBsaXN0IGxpa2Ugd2Ug
c2hvdWxkIGJlLgogICAgIGxpc3QgPSBscnVMaXN0Rm9yKHJlc291cmNlKTsKICAgICBib29sIGZv
dW5kID0gZmFsc2U7CiAgICAgZm9yIChDYWNoZWRSZXNvdXJjZSogY3VycmVudCA9IGxpc3QtPm1f
aGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm1fbmV4dEluQWxsUmVzb3VyY2VzTGlz
dCkgewotICAgICAgICBpZiAoY3VycmVudCA9PSByZXNvdXJjZSkgeworICAgICAgICBpZiAoY3Vy
cmVudCA9PSAmcmVzb3VyY2UpIHsKICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC01MzcsMzMgKzUzOCwzMyBAQCB2b2lkIE1lbW9yeUNh
Y2hlOjppbnNlcnRJbkxSVUxpc3QoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogCiB9CiAKLXZv
aWQgTWVtb3J5Q2FjaGU6OnJlc291cmNlQWNjZXNzZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
KQordm9pZCBNZW1vcnlDYWNoZTo6cmVzb3VyY2VBY2Nlc3NlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCiB7Ci0gICAgQVNTRVJUKHJlc291cmNlLT5pbkNhY2hlKCkpOworICAgIEFTU0VSVChy
ZXNvdXJjZS5pbkNhY2hlKCkpOwogICAgIAogICAgIC8vIE5lZWQgdG8gbWFrZSBzdXJlIHRvIHJl
bW92ZSBiZWZvcmUgd2UgaW5jcmVhc2UgdGhlIGFjY2VzcyBjb3VudCwgc2luY2UKICAgICAvLyB0
aGUgcXVldWUgd2lsbCBwb3NzaWJseSBjaGFuZ2UuCiAgICAgcmVtb3ZlRnJvbUxSVUxpc3QocmVz
b3VyY2UpOwogICAgIAogICAgIC8vIElmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgdGhlIHJlc291
cmNlIGhhcyBiZWVuIGFjY2Vzc2VkLCBhZGp1c3QgdGhlIHNpemUgb2YgdGhlIGNhY2hlIHRvIGFj
Y291bnQgZm9yIGl0cyBpbml0aWFsIHNpemUuCi0gICAgaWYgKCFyZXNvdXJjZS0+YWNjZXNzQ291
bnQoKSkKLSAgICAgICAgYWRqdXN0U2l6ZShyZXNvdXJjZS0+aGFzQ2xpZW50cygpLCByZXNvdXJj
ZS0+c2l6ZSgpKTsKKyAgICBpZiAoIXJlc291cmNlLmFjY2Vzc0NvdW50KCkpCisgICAgICAgIGFk
anVzdFNpemUocmVzb3VyY2UuaGFzQ2xpZW50cygpLCByZXNvdXJjZS5zaXplKCkpOwogICAgIAog
ICAgIC8vIEFkZCB0byBvdXIgYWNjZXNzIGNvdW50LgotICAgIHJlc291cmNlLT5pbmNyZWFzZUFj
Y2Vzc0NvdW50KCk7CisgICAgcmVzb3VyY2UuaW5jcmVhc2VBY2Nlc3NDb3VudCgpOwogICAgIAog
ICAgIC8vIE5vdyBpbnNlcnQgaW50byB0aGUgbmV3IHF1ZXVlLgogICAgIGluc2VydEluTFJVTGlz
dChyZXNvdXJjZSk7CiB9CiAKLXZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlc291cmNlc1dpdGhP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3ZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVJl
c291cmNlc1dpdGhPcmlnaW4oU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKIHsKICAgICBWZWN0b3I8
Q2FjaGVkUmVzb3VyY2UqPiByZXNvdXJjZXNXaXRoT3JpZ2luOwogCiAgICAgZm9yIChhdXRvJiBy
ZXNvdXJjZXMgOiBtX3Nlc3Npb25SZXNvdXJjZXMpIHsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VN
YXA6Oml0ZXJhdG9yIGUgPSByZXNvdXJjZXMudmFsdWUtPmVuZCgpOwogI2lmIEVOQUJMRShDQUNI
RV9QQVJUSVRJT05JTkcpCi0gICAgICAgIFN0cmluZyBvcmlnaW5QYXJ0aXRpb24gPSBSZXNvdXJj
ZVJlcXVlc3Q6OnBhcnRpdGlvbk5hbWUob3JpZ2luLT5ob3N0KCkpOworICAgICAgICBTdHJpbmcg
b3JpZ2luUGFydGl0aW9uID0gUmVzb3VyY2VSZXF1ZXN0OjpwYXJ0aXRpb25OYW1lKG9yaWdpbi5o
b3N0KCkpOwogI2VuZGlmCiAKICAgICAgICAgZm9yIChDYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0
b3IgaXQgPSByZXNvdXJjZXMudmFsdWUtPmJlZ2luKCk7IGl0ICE9IGU7ICsraXQpIHsKQEAgLTU4
MSw3ICs1ODIsNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2lu
KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgICAgICAgICAgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiByZXNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KHJlc291cmNlLT51cmwoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXNvdXJjZU9yaWdpbikK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc291
cmNlT3JpZ2luLT5lcXVhbChvcmlnaW4pKQorICAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZU9y
aWdpbi0+ZXF1YWwoJm9yaWdpbikpCiAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc1dpdGhP
cmlnaW4uYXBwZW5kKHJlc291cmNlKTsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQog
ICAgICAgICAgICAgfQpAQCAtNTg5LDggKzU5MCw4IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92
ZVJlc291cmNlc1dpdGhPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzb3VyY2VzV2l0aE9yaWdpbi5z
aXplKCk7ICsraSkKLSAgICAgICAgcmVtb3ZlKHJlc291cmNlc1dpdGhPcmlnaW5baV0pOworICAg
IGZvciAoYXV0byogcmVzb3VyY2UgOiByZXNvdXJjZXNXaXRoT3JpZ2luKQorICAgICAgICByZW1v
dmUoKnJlc291cmNlKTsKIH0KIAogdm9pZCBNZW1vcnlDYWNoZTo6Z2V0T3JpZ2luc1dpdGhDYWNo
ZShTZWN1cml0eU9yaWdpblNldCYgb3JpZ2lucykKQEAgLTYxMywyOCArNjE0LDI4IEBAIHZvaWQg
TWVtb3J5Q2FjaGU6OmdldE9yaWdpbnNXaXRoQ2FjaGUoU2VjdXJpdHlPcmlnaW5TZXQmIG9yaWdp
bnMpCiAgICAgfQogfQogCi12b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVGcm9tTGl2ZURlY29kZWRS
ZXNvdXJjZXNMaXN0KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgTWVtb3J5Q2FjaGU6
OnJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlKQogewotICAgIG1fbGl2ZURlY29kZWRSZXNvdXJjZXMucmVtb3ZlKHJlc291cmNlKTsKKyAg
ICBtX2xpdmVEZWNvZGVkUmVzb3VyY2VzLnJlbW92ZSgmcmVzb3VyY2UpOwogfQogCi12b2lkIE1l
bW9yeUNhY2hlOjppbnNlcnRJbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdChDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UpCit2b2lkIE1lbW9yeUNhY2hlOjppbnNlcnRJbkxpdmVEZWNvZGVkUmVzb3Vy
Y2VzTGlzdChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgLy8gTWFrZSBzdXJlIHdl
IGFyZW4ndCBpbiB0aGUgbGlzdCBhbHJlYWR5LgotICAgIEFTU0VSVCghbV9saXZlRGVjb2RlZFJl
c291cmNlcy5jb250YWlucyhyZXNvdXJjZSkpOwotICAgIG1fbGl2ZURlY29kZWRSZXNvdXJjZXMu
YWRkKHJlc291cmNlKTsKKyAgICBBU1NFUlQoIW1fbGl2ZURlY29kZWRSZXNvdXJjZXMuY29udGFp
bnMoJnJlc291cmNlKSk7CisgICAgbV9saXZlRGVjb2RlZFJlc291cmNlcy5hZGQoJnJlc291cmNl
KTsKIH0KIAotdm9pZCBNZW1vcnlDYWNoZTo6YWRkVG9MaXZlUmVzb3VyY2VzU2l6ZShDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIE1lbW9yeUNhY2hlOjphZGRUb0xpdmVSZXNvdXJjZXNT
aXplKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICBtX2xpdmVTaXplICs9IHJlc291
cmNlLT5zaXplKCk7Ci0gICAgbV9kZWFkU2l6ZSAtPSByZXNvdXJjZS0+c2l6ZSgpOworICAgIG1f
bGl2ZVNpemUgKz0gcmVzb3VyY2Uuc2l6ZSgpOworICAgIG1fZGVhZFNpemUgLT0gcmVzb3VyY2Uu
c2l6ZSgpOwogfQogCi12b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVGcm9tTGl2ZVJlc291cmNlc1Np
emUoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJv
bUxpdmVSZXNvdXJjZXNTaXplKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICBtX2xp
dmVTaXplIC09IHJlc291cmNlLT5zaXplKCk7Ci0gICAgbV9kZWFkU2l6ZSArPSByZXNvdXJjZS0+
c2l6ZSgpOworICAgIG1fbGl2ZVNpemUgLT0gcmVzb3VyY2Uuc2l6ZSgpOworICAgIG1fZGVhZFNp
emUgKz0gcmVzb3VyY2Uuc2l6ZSgpOwogfQogCiB2b2lkIE1lbW9yeUNhY2hlOjphZGp1c3RTaXpl
KGJvb2wgbGl2ZSwgaW50IGRlbHRhKQpAQCAtNjQ4LDMwICs2NDksMjkgQEAgdm9pZCBNZW1vcnlD
YWNoZTo6YWRqdXN0U2l6ZShib29sIGxpdmUsIGludCBkZWx0YSkKICAgICB9CiB9CiAKLXZvaWQg
TWVtb3J5Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlcyhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lk
IE1lbW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewot
ICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCpjb250
ZXh0KSkgeworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpIHsKICAgICAg
ICAgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhKiByZXF1ZXN0RGF0YSA9IHJlcXVlc3Qu
Y29weURhdGEoKS5sZWFrUHRyKCk7Ci0gICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
PigqY29udGV4dCkudGhyZWFkKCkud29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVy
KFtyZXF1ZXN0RGF0YV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAg
ICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnRocmVhZCgpLndvcmtlckxv
YWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihbcmVxdWVzdERhdGFdIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0
PiByZXF1ZXN0KFJlc291cmNlUmVxdWVzdDo6YWRvcHQoYWRvcHRQdHIocmVxdWVzdERhdGEpKSk7
Ci0gICAgICAgICAgICBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9uQ2FjaGVz
KCZjb250ZXh0LCAqcmVxdWVzdCk7CisgICAgICAgICAgICBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVx
dWVzdEZyb21TZXNzaW9uQ2FjaGVzKGNvbnRleHQsICpyZXF1ZXN0KTsKICAgICAgICAgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlcyA6IG1lbW9y
eUNhY2hlKCkubV9zZXNzaW9uUmVzb3VyY2VzKSB7CiAgICAgICAgIGlmIChDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UgPSBtZW1vcnlDYWNoZSgpLnJlc291cmNlRm9yUmVxdWVzdEltcGwocmVxdWVz
dCwgKnJlc291cmNlcy52YWx1ZSkpCi0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZShy
ZXNvdXJjZSk7CisgICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZSgqcmVzb3VyY2UpOwog
ICAgIH0KIH0KIAotdm9pZCBNZW1vcnlDYWNoZTo6VHlwZVN0YXRpc3RpYzo6YWRkUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2UqIG8pCit2b2lkIE1lbW9yeUNhY2hlOjpUeXBlU3RhdGlzdGljOjphZGRS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgY291bnQrKzsKLSAgICBz
aXplICs9IG8tPnNpemUoKTsKLSAgICBsaXZlU2l6ZSArPSBvLT5oYXNDbGllbnRzKCkgPyBvLT5z
aXplKCkgOiAwOwotICAgIGRlY29kZWRTaXplICs9IG8tPmRlY29kZWRTaXplKCk7CisgICAgc2l6
ZSArPSByZXNvdXJjZS5zaXplKCk7CisgICAgbGl2ZVNpemUgKz0gcmVzb3VyY2UuaGFzQ2xpZW50
cygpID8gcmVzb3VyY2Uuc2l6ZSgpIDogMDsKKyAgICBkZWNvZGVkU2l6ZSArPSByZXNvdXJjZS5k
ZWNvZGVkU2l6ZSgpOwogfQogCiBNZW1vcnlDYWNoZTo6U3RhdGlzdGljcyBNZW1vcnlDYWNoZTo6
Z2V0U3RhdGlzdGljcygpCkBAIC02ODMsMTEgKzY4MywxMSBAQCBNZW1vcnlDYWNoZTo6U3RhdGlz
dGljcyBNZW1vcnlDYWNoZTo6Z2V0U3RhdGlzdGljcygpCiAgICAgICAgIGZvciAoQ2FjaGVkUmVz
b3VyY2VNYXA6Oml0ZXJhdG9yIGkgPSByZXNvdXJjZXMudmFsdWUtPmJlZ2luKCk7IGkgIT0gZTsg
KytpKSB7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKICAgICAgICAgICAgIGZvciAo
Q2FjaGVkUmVzb3VyY2VJdGVtOjppdGVyYXRvciBpdGVtSXRlcmF0b3IgPSBpLT52YWx1ZS0+YmVn
aW4oKTsgaXRlbUl0ZXJhdG9yICE9IGktPnZhbHVlLT5lbmQoKTsgKytpdGVtSXRlcmF0b3IpIHsK
LSAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBpdGVtSXRlcmF0b3It
PnZhbHVlOworICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNlJiByZXNvdXJjZSA9ICppdGVt
SXRlcmF0b3ItPnZhbHVlOwogI2Vsc2UKLSAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UgPSBpLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UgPSAqaS0+dmFsdWU7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlc291
cmNlLT50eXBlKCkpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlc291cmNlLnR5cGUoKSkg
ewogICAgICAgICAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CiAg
ICAgICAgICAgICAgICAgICAgIHN0YXRzLmltYWdlcy5hZGRSZXNvdXJjZShyZXNvdXJjZSk7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzI2LDE3ICs3MjYsMTcgQEAgdm9pZCBNZW1v
cnlDYWNoZTo6c2V0RGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgZm9yICg7OykgewotICAgICAgICBTZXNzaW9uQ2FjaGVkUmVzb3VyY2VNYXA6Oml0ZXJhdG9y
IHNlc3Npb25JdGVyYXRvciA9IG1fc2Vzc2lvblJlc291cmNlcy5iZWdpbigpOworICAgICAgICBh
dXRvIHNlc3Npb25JdGVyYXRvciA9IG1fc2Vzc2lvblJlc291cmNlcy5iZWdpbigpOwogICAgICAg
ICBpZiAoc2Vzc2lvbkl0ZXJhdG9yID09IG1fc2Vzc2lvblJlc291cmNlcy5lbmQoKSkKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBDYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0b3Igb3V0ZXJJ
dGVyYXRvciA9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUtPmJlZ2luKCk7CisgICAgICAgIGF1dG8g
b3V0ZXJJdGVyYXRvciA9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUtPmJlZ2luKCk7CiAgICAgICAg
IGlmIChvdXRlckl0ZXJhdG9yID09IHNlc3Npb25JdGVyYXRvci0+dmFsdWUtPmVuZCgpKQogICAg
ICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICAgICAg
Q2FjaGVkUmVzb3VyY2VJdGVtOjppdGVyYXRvciBpbm5lckl0ZXJhdG9yID0gb3V0ZXJJdGVyYXRv
ci0+dmFsdWUtPmJlZ2luKCk7Ci0gICAgICAgIHJlbW92ZShpbm5lckl0ZXJhdG9yLT52YWx1ZSk7
CisgICAgICAgIGF1dG8gaW5uZXJJdGVyYXRvciA9IG91dGVySXRlcmF0b3ItPnZhbHVlLT5iZWdp
bigpOworICAgICAgICByZW1vdmUoKmlubmVySXRlcmF0b3ItPnZhbHVlKTsKICNlbHNlCi0gICAg
ICAgIHJlbW92ZShvdXRlckl0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgIHJlbW92ZSgqb3V0ZXJJ
dGVyYXRvci0+dmFsdWUpOwogI2VuZGlmCiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuaAppbmRleCA1MjNlZDRhNTU5MDJkNzgxY2IwYTU0ZTJlYWQxYmQ3
MjdkMmFmMDU3Li45MWNmN2QzMDkwMjNkYjQ3NWRlODEwMjQzOWQyZTllMTdkNmZkN2IxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAtNzgsNyArNzgsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHsgCiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGFkZFJlc291
cmNlKENhY2hlZFJlc291cmNlKik7CisgICAgICAgIHZvaWQgYWRkUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UmKTsKICAgICB9OwogICAgIAogICAgIHN0cnVjdCBTdGF0aXN0aWNzIHsKQEAgLTkyLDEz
ICs5MiwxMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ2FjaGVkUmVzb3VyY2UqIHJl
c291cmNlRm9yVVJMKGNvbnN0IFVSTCYsIFNlc3Npb25JRCA9IFNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpKTsKICAgICBXRUJDT1JFX0VYUE9SVCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2VG
b3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNlc3Npb25JRCk7CiAKLSAgICBib29s
IGFkZChDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQgcmVtb3ZlKENhY2hlZFJlc291cmNlKik7
CisgICAgYm9vbCBhZGQoQ2FjaGVkUmVzb3VyY2UmKTsKKyAgICB2b2lkIHJlbW92ZShDYWNoZWRS
ZXNvdXJjZSYpOwogCiAgICAgc3RhdGljIFVSTCByZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5l
ZWRlZChjb25zdCBVUkwmIG9yaWdpbmFsVVJMKTsKICAgICAKLSAgICB2b2lkIHJldmFsaWRhdGlv
blN1Y2NlZWRlZChDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0aW5nUmVzb3VyY2UsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHJldmFsaWRhdGlvbkZhaWxlZChDYWNoZWRSZXNv
dXJjZSogcmV2YWxpZGF0aW5nUmVzb3VyY2UpOworICAgIHZvaWQgcmV2YWxpZGF0aW9uU3VjY2Vl
ZGVkKENhY2hlZFJlc291cmNlJiByZXZhbGlkYXRpbmdSZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOworICAgIHZvaWQgcmV2YWxpZGF0aW9uRmFpbGVkKENhY2hlZFJlc291cmNlJiBy
ZXZhbGlkYXRpbmdSZXNvdXJjZSk7CiAgICAgCiAgICAgLy8gU2V0cyB0aGUgY2FjaGUncyBtZW1v
cnkgY2FwYWNpdGllcywgaW4gYnl0ZXMuIFRoZXNlIHdpbGwgaG9sZCBvbmx5IGFwcHJveGltYXRl
bHksIAogICAgIC8vIHNpbmNlIHRoZSBkZWNvZGVkIGNvc3Qgb2YgcmVzb3VyY2VzIGxpa2Ugc2Ny
aXB0cyBhbmQgc3R5bGVzaGVldHMgaXMgbm90IGtub3duLgpAQCAtMTIwLDI5ICsxMjAsMjkgQEAg
cHVibGljOgogICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgZGVhZERlY29kZWREYXRhRGVs
ZXRpb25JbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVhZERlY29kZWREYXRhRGVsZXRpb25J
bnRlcnZhbDsgfQogCiAgICAgLy8gQ2FsbHMgdG8gcHV0IHRoZSBjYWNoZWQgcmVzb3VyY2UgaW50
byBhbmQgb3V0IG9mIExSVSBsaXN0cy4KLSAgICB2b2lkIGluc2VydEluTFJVTGlzdChDYWNoZWRS
ZXNvdXJjZSopOwotICAgIHZvaWQgcmVtb3ZlRnJvbUxSVUxpc3QoQ2FjaGVkUmVzb3VyY2UqKTsK
KyAgICB2b2lkIGluc2VydEluTFJVTGlzdChDYWNoZWRSZXNvdXJjZSYpOworICAgIHZvaWQgcmVt
b3ZlRnJvbUxSVUxpc3QoQ2FjaGVkUmVzb3VyY2UmKTsKIAogICAgIC8vIENhbGxlZCB0byBhZGp1
c3QgdGhlIGNhY2hlIHRvdGFscyB3aGVuIGEgcmVzb3VyY2UgY2hhbmdlcyBzaXplLgogICAgIHZv
aWQgYWRqdXN0U2l6ZShib29sIGxpdmUsIGludCBkZWx0YSk7CiAKICAgICAvLyBUcmFjayBkZWNv
ZGVkIHJlc291cmNlcyB0aGF0IGFyZSBpbiB0aGUgY2FjaGUgYW5kIHJlZmVyZW5jZWQgYnkgYSBX
ZWIgcGFnZS4KLSAgICB2b2lkIGluc2VydEluTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KENhY2hl
ZFJlc291cmNlKik7Ci0gICAgdm9pZCByZW1vdmVGcm9tTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0
KENhY2hlZFJlc291cmNlKik7CisgICAgdm9pZCBpbnNlcnRJbkxpdmVEZWNvZGVkUmVzb3VyY2Vz
TGlzdChDYWNoZWRSZXNvdXJjZSYpOworICAgIHZvaWQgcmVtb3ZlRnJvbUxpdmVEZWNvZGVkUmVz
b3VyY2VzTGlzdChDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgdm9pZCBhZGRUb0xpdmVSZXNvdXJj
ZXNTaXplKENhY2hlZFJlc291cmNlKik7Ci0gICAgdm9pZCByZW1vdmVGcm9tTGl2ZVJlc291cmNl
c1NpemUoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICB2b2lkIGFkZFRvTGl2ZVJlc291cmNlc1NpemUo
Q2FjaGVkUmVzb3VyY2UmKTsKKyAgICB2b2lkIHJlbW92ZUZyb21MaXZlUmVzb3VyY2VzU2l6ZShD
YWNoZWRSZXNvdXJjZSYpOwogCi0gICAgc3RhdGljIHZvaWQgcmVtb3ZlUmVxdWVzdEZyb21TZXNz
aW9uQ2FjaGVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgLy8gRnVu
Y3Rpb24gdG8gY29sbGVjdCBjYWNoZSBzdGF0aXN0aWNzIGZvciB0aGUgY2FjaGVzIHdpbmRvdyBp
biB0aGUgU2FmYXJpIERlYnVnIG1lbnUuCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RhdGlzdGljcyBn
ZXRTdGF0aXN0aWNzKCk7CiAgICAgCi0gICAgdm9pZCByZXNvdXJjZUFjY2Vzc2VkKENhY2hlZFJl
c291cmNlKik7CisgICAgdm9pZCByZXNvdXJjZUFjY2Vzc2VkKENhY2hlZFJlc291cmNlJik7CiAg
ICAgYm9vbCBpbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UpIGNvbnN0IHsgcmV0dXJuIG1fbGl2ZURlY29kZWRSZXNvdXJjZXMuY29udGFpbnMoJnJlc291
cmNlKTsgfQogCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IFNl
Y3VyaXR5T3JpZ2luU2V0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUmVzb3VyY2Vz
V2l0aE9yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlUmVzb3VyY2VzV2l0aE9yaWdpbihTZWN1cml0eU9yaWdpbiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZ2V0T3JpZ2luc1dpdGhDYWNoZShTZWN1cml0eU9yaWdpblNldCYgb3JpZ2lucyk7
CiAKICNpZiBVU0UoQ0cpCkBAIC0xNzYsNyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICBNZW1vcnlD
YWNoZSgpOwogICAgIH5NZW1vcnlDYWNoZSgpOyAvLyBOb3QgaW1wbGVtZW50ZWQgdG8gbWFrZSBz
dXJlIG5vYm9keSBhY2NpZGVudGFsbHkgY2FsbHMgZGVsZXRlIC0tIFdlYkNvcmUgZG9lcyBub3Qg
ZGVsZXRlIHNpbmdsZXRvbnMuCiAKLSAgICBMUlVMaXN0KiBscnVMaXN0Rm9yKENhY2hlZFJlc291
cmNlKik7CisgICAgTFJVTGlzdCogbHJ1TGlzdEZvcihDYWNoZWRSZXNvdXJjZSYpOwogI2lmbmRl
ZiBOREVCVUcKICAgICB2b2lkIGR1bXBTdGF0cygpOwogICAgIHZvaWQgZHVtcExSVUxpc3RzKGJv
b2wgaW5jbHVkZUxpdmUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWFza0ltYWdlT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01hc2tJbWFnZU9wZXJhdGlvbi5jcHAKaW5kZXggNGE3YWNkOGRiMDc3ZTY5
MGFmNmI0OWYxNjY3OWIzNWZlY2Q4MGUwMC4uNDI5OWE0MDExOTBmMmQwZDdkM2IwNjdlYTk4MzNm
MmQzZDFlY2NlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWFza0ltYWdlT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NYXNrSW1hZ2VPcGVyYXRpb24uY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBNYXNr
SW1hZ2VPcGVyYXRpb246Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkK
ICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIGNhY2hlZCByZXNvdXJjZSBsb2FkZXIgb2YgdGhl
IGRvY3VtZW50IHdoaWNoIHJlcXVlc3RlZCB0aGlzIG1hc2sga2VlcCBhIGhhbmRsZSB0byB0aGlz
CiAgICAgICAgICAgICAgICAgLy8gY2FjaGVkIGltYWdlIHRvIGVuc3VyZSBpdCBvbmx5IGdldHMg
ZGVsZXRlZCB3aGVuIGl0IHNob3VsZC4KICAgICAgICAgICAgICAgICBpZiAobV9jYWNoZWRSZXNv
dXJjZUxvYWRlci5nZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxv
YWRlci0+YWRkQ2FjaGVkUmVzb3VyY2UobV9zdHlsZUltYWdlLT5jYWNoZWRJbWFnZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+YWRkQ2FjaGVkUmVzb3Vy
Y2UoKm1fc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIC8vIERlc3Ryb3kgdGhlIGN1cnJlbnQgU1ZHIGRvY3VtZW50IGFz
IGl0cyBubyBsb25nZXIgbmVlZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNw
cAppbmRleCAyNGZlZjE5Njg0MzAzNjlhODg3OTg4OTJjMjMyN2JlNjM0OWRmODcyLi5kYjgyY2Vh
MzY1NjNiYTc2NTM4ZTUyMTBlZWY5ZTAxY2EwMWVmYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJj
ZUNhY2hlTWFuYWdlci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFdlYlJlc291cmNlQ2Fj
aGVNYW5hZ2VyOjpjbGVhckNhY2hlRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
b3JpZwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm47CiAKLSAgICBtZW1vcnlDYWNo
ZSgpLnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4ob3JpZ2luLmdldCgpKTsKKyAgICBtZW1vcnlD
YWNoZSgpLnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4oKm9yaWdpbik7CiAKICNpZiBVU0UoQ0ZV
UkxDQUNIRSkKICAgICBpZiAocmVzb3VyY2VDYWNoZXNUb0NsZWFyICE9IEluTWVtb3J5UmVzb3Vy
Y2VDYWNoZXNPbmx5KSB7IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245747</attachid>
            <date>2015-01-30 14:52:55 -0800</date>
            <delta_ts>2015-01-30 16:04:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141099-20150130145302.patch</filename>
            <type>text/plain</type>
            <size>48409</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2EzOTYwOTVmYWZmZjU4
ZGY4MDU5ODJkNGE5ZDhlNzkwMTUwZjRlYy4uZDNiNzYxNTQ4NDNmYzE4NWI5YzQ3MTM4ZDk2MTYw
NzIyMGYzZGY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDE1LTAxLTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIE1lbW9yeUNhY2hl
IGNvZGUgdG8gdXNlIG1vcmUgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEwOTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAxNS0wMS0zMCAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjE3OTQwMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhYTNjZGI5NWNjNWYyZGRmODQ2NmRjOTllYjA0
YzhmZjVmYTNlMGUyLi41YzIyZTVhNGY0ODQ4MmMyMjJkNzZiMWNhNzk1Mzg4YjhhNGFjODYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTUtMDEtMzAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBVcGRhdGUgTWVtb3J5Q2FjaGUgY29kZSB0byB1c2Ug
bW9yZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTA5OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VD
YWNoZU1hbmFnZXI6OmNsZWFyQ2FjaGVGb3JPcmlnaW4pOgorCisyMDE1LTAxLTMwICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgUmVuYW1lIHNoYXJlZCgpIHN0YXRp
YyBtZW1iZXIgZnVuY3Rpb25zIHRvIHNpbmdsZXRvbigpIGZvciBzaW5nbGV0b24gY2xhc3Nlcy4K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTA4OAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDAyZjg1ODdhMDU5ZjM3Y2IyYTcwN2I3MjY3ODk2YjM3
ZTRmODY5N2MuLmRiNDEwYTY0YzljZTlkM2Q2NzE0ZWM3MGU4OGQzZDg1NGIwODE2NjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC0xOTYsNyArMTk2LDcgQEAgX19aTjdXZWJDb3JlMTFNZW1vcnlD
YWNoZTE1YWRkSW1hZ2VUb0NhY2hlRVA3Q0dJbWFnZVJLTlNfM1VSTEVSS04zV1RGNlN0cmluZ0UK
IF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxOHJlc291cmNlRm9yUmVxdWVzdEVSS05TXzE1UmVz
b3VyY2VSZXF1ZXN0RU5TXzlTZXNzaW9uSURFCiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTln
ZXRPcmlnaW5zV2l0aENhY2hlRVJOM1dURjdIYXNoU2V0SU5TMV82UmVmUHRySU5TXzE0U2VjdXJp
dHlPcmlnaW5FRUVOU18xOFNlY3VyaXR5T3JpZ2luSGFzaEVOUzFfMTBIYXNoVHJhaXRzSVM1X0VF
RUUKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUyMHJlbW92ZUltYWdlRnJvbUNhY2hlRVJLTlNf
M1VSTEVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUyNXJlbW92ZVJl
c291cmNlc1dpdGhPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCitfX1pON1dlYkNvcmUxMU1l
bW9yeUNhY2hlMjVyZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2luRVJOU18xNFNlY3VyaXR5T3JpZ2lu
RQogX19aTjdXZWJDb3JlMTFQYWdlT3ZlcmxheTE1c2V0TmVlZHNEaXNwbGF5RVJLTlNfN0ludFJl
Y3RFCiBfX1pON1dlYkNvcmUxMVBhZ2VPdmVybGF5MTVzZXROZWVkc0Rpc3BsYXlFdgogX19aTjdX
ZWJDb3JlMTFQYWdlT3ZlcmxheTIwc3RvcEZhZGVPdXRBbmltYXRpb25FdgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01V
UkwuY3BwCmluZGV4IGQ0NTlmNTdhZDU4NjJhMjhiOWE0MGY2Y2UxZDMwOGZiZjQxNDcyMDMuLjFh
YTU1YTgzOTk2ZGY1MjA5MWUxMzg1NDk3MzJjMzA0OTg0NTIwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVS
TC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIERPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbgogI2lmIEVO
QUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAgICAgcmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBh
cnRpdGlvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0LT50b3BPcmlnaW4oKS0+ZG9tYWluRm9yQ2Fj
aGVQYXJ0aXRpb24oKSk7CiAjZW5kaWYKLSAgICBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZy
b21TZXNzaW9uQ2FjaGVzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHJlcXVlc3QpOworICAgIE1l
bW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMoKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIHJlcXVlc3QpOwogCiAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHVibGlj
VVJMTWFuYWdlcigpLnJldm9rZSh1cmwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IGIzOWRjNGI4YmJkMjUzZjli
MzRjMjg0OTc2NjU0MzdlODY4OTE3ODIuLjEyMGZmZTgzMmE4ZTBhZjllMzcxOWI5OGNlOTljYzY2
OTZmMDE0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKQEAgLTcxMCw3ICs3MTAsNyBAQCB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OnJlcGxheVhIUihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
KQogCiAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gbWVtb3J5Q2FjaGUoKS5y
ZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdCwgbV9wYWdlQWdlbnQtPnBhZ2UoKS0+c2Vzc2lvbklE
KCkpOwogICAgIGlmIChjYWNoZWRSZXNvdXJjZSkKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZW1v
dmUoY2FjaGVkUmVzb3VyY2UpOworICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZSgqY2FjaGVk
UmVzb3VyY2UpOwogCiAgICAgeGhyLT5vcGVuKHhoclJlcGxheURhdGEtPm1ldGhvZCgpLCB4aHJS
ZXBsYXlEYXRhLT51cmwoKSwgeGhyUmVwbGF5RGF0YS0+YXN5bmMoKSwgSUdOT1JFX0VYQ0VQVElP
Tik7CiAgICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiB4aHJSZXBsYXlEYXRhLT5oZWFkZXJz
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBjYWE1MTI3
NmRlYThlYTI5MDE2MmEyOGM1NTZhZjViMDk1MGZhOWJmLi5jMTY3MWJmMzgyZGQ3OGFjOGZlZGJm
OTExMDhhODdmNmIzODc1YzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExv
YWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpCiAgICAgLy8gYW5kIGRlbnkgdGhlIGFwcGNhY2hlIHRo
ZSBjaGFuY2UgdG8gaW50ZXJjZXB0IGl0IGluIHRoZSBmdXR1cmUsIHNvIHJlbW92ZSBmcm9tIHRo
ZSBtZW1vcnkgY2FjaGUuCiAgICAgaWYgKG1fZnJhbWUpIHsKICAgICAgICAgaWYgKG1fbWFpblJl
c291cmNlICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmhhc01hbmlmZXN0KCkpCi0gICAgICAgICAg
ICBtZW1vcnlDYWNoZSgpLnJlbW92ZShtX21haW5SZXNvdXJjZS5nZXQoKSk7CisgICAgICAgICAg
ICBtZW1vcnlDYWNoZSgpLnJlbW92ZSgqbV9tYWluUmVzb3VyY2UpOwogICAgIH0KICAgICBtX2Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LT5maW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKIH0KQEAg
LTU5OSw3ICs1OTksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZQogICAgIC8vIFRoZSBtZW1v
cnkgY2FjaGUgZG9lc24ndCB1bmRlcnN0YW5kIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBvciBpdHMg
Y2FjaGluZyBydWxlcy4gU28gaWYgYSBtYWluIHJlc291cmNlIGlzIHNlcnZlZAogICAgIC8vIGZy
b20gdGhlIGFwcGxpY2F0aW9uIGNhY2hlLCBlbnN1cmUgd2UgZG9uJ3Qgc2F2ZSB0aGUgcmVzdWx0
IGZvciBmdXR1cmUgdXNlLgogICAgIGlmICh3aWxsTG9hZEZhbGxiYWNrKQotICAgICAgICBtZW1v
cnlDYWNoZSgpLnJlbW92ZShtX21haW5SZXNvdXJjZS5nZXQoKSk7CisgICAgICAgIG1lbW9yeUNh
Y2hlKCkucmVtb3ZlKCptX21haW5SZXNvdXJjZSk7CiAKICAgICBpZiAod2lsbExvYWRGYWxsYmFj
aykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggYWE1YzJjZDA4MzlmZDMwMGVkMzZmZjRiZjBiN2ZlNWU3Yzk1NjM5NC4u
YjMyMmZkMWI0OTE0NTMyN2FhOGYyZjIzZGVkM2UwZmY4ODBhMDUyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9p
ZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgbmV3
UmVxdWVzdCwgY29uc3QgUmVzb3UKICAgICAgICAgLy8gRG9pbmcgc28gd291bGQgaGF2ZSB1cyBy
ZXVzaW5nIHRoZSByZXNvdXJjZSBmcm9tIHRoZSBmaXJzdCByZXF1ZXN0IGlmIHRoZSBzZWNvbmQg
cmVxdWVzdCdzIHJldmFsaWRhdGlvbiBzdWNjZWVkcy4KICAgICAgICAgaWYgKG5ld1JlcXVlc3Qu
aXNDb25kaXRpb25hbCgpICYmIG1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkgJiYg
bmV3UmVxdWVzdC51cmwoKSAhPSBtX3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpLT5y
ZXNwb25zZSgpLnVybCgpKSB7CiAgICAgICAgICAgICBuZXdSZXF1ZXN0Lm1ha2VVbmNvbmRpdGlv
bmFsKCk7Ci0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvbkZhaWxlZChtX3Jl
c291cmNlKTsKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmV2YWxpZGF0aW9uRmFpbGVkKCpt
X3Jlc291cmNlKTsKICAgICAgICAgICAgIGlmIChtX2ZyYW1lKQogICAgICAgICAgICAgICAgIG1f
ZnJhbWUtPm1haW5GcmFtZSgpLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3Rp
Y01lc3NhZ2VXaXRoUmVzdWx0KERpYWdub3N0aWNMb2dnaW5nS2V5czo6Y2FjaGVkUmVzb3VyY2VS
ZXZhbGlkYXRpb25LZXkoKSwgZW1wdHlTdHJpbmcoKSwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRG
YWlsKTsKICAgICAgICAgfQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
ICAgICAgICAgICAgIC8vIDMwNCBOb3QgbW9kaWZpZWQgLyBVc2UgbG9jYWwgY29weQogICAgICAg
ICAgICAgLy8gRXhpc3RpbmcgcmVzb3VyY2UgaXMgb2ssIGp1c3QgdXNlIGl0IHVwZGF0aW5nIHRo
ZSBleHBpcmF0aW9uIHRpbWUuCiAgICAgICAgICAgICBtX3Jlc291cmNlLT5zZXRSZXNwb25zZShy
ZXNwb25zZSk7Ci0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvblN1Y2NlZWRl
ZChtX3Jlc291cmNlLCByZXNwb25zZSk7CisgICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJldmFs
aWRhdGlvblN1Y2NlZWRlZCgqbV9yZXNvdXJjZSwgcmVzcG9uc2UpOwogICAgICAgICAgICAgaWYg
KG1fZnJhbWUpCiAgICAgICAgICAgICAgICAgbV9mcmFtZS0+bWFpbkZyYW1lKCkuZGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpjYWNoZWRSZXNvdXJjZVJldmFsaWRhdGlvbktleSgpLCBlbXB0eVN0cmlu
ZygpLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFBhc3MpOwogICAgICAgICAgICAgaWYgKCFyZWFj
aGVkVGVybWluYWxTdGF0ZSgpKQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAvLyBEaWQgbm90IGdl
dCAzMDQgcmVzcG9uc2UsIGNvbnRpbnVlIGFzIGEgcmVndWxhciByZXNvdXJjZSBsb2FkLgotICAg
ICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvbkZhaWxlZChtX3Jlc291cmNlKTsKKyAgICAg
ICAgbWVtb3J5Q2FjaGUoKS5yZXZhbGlkYXRpb25GYWlsZWQoKm1fcmVzb3VyY2UpOwogICAgICAg
ICBpZiAobV9mcmFtZSkKICAgICAgICAgICAgIG1fZnJhbWUtPm1haW5GcmFtZSgpLmRpYWdub3N0
aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KERpYWdub3N0
aWNMb2dnaW5nS2V5czo6Y2FjaGVkUmVzb3VyY2VSZXZhbGlkYXRpb25LZXkoKSwgZW1wdHlTdHJp
bmcoKSwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRGYWlsKTsKICAgICB9CkBAIC0zODUsMTAgKzM4
NSwxMCBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBwcm90
ZWN0UmVzb3VyY2UobV9yZXNvdXJjZSk7CiAgICAgbV9zdGF0ZSA9IEZpbmlzaGluZzsKICAgICBp
ZiAobV9yZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSkKLSAgICAgICAgbWVtb3J5Q2Fj
aGUoKS5yZXZhbGlkYXRpb25GYWlsZWQobV9yZXNvdXJjZSk7CisgICAgICAgIG1lbW9yeUNhY2hl
KCkucmV2YWxpZGF0aW9uRmFpbGVkKCptX3Jlc291cmNlKTsKICAgICBtX3Jlc291cmNlLT5zZXRS
ZXNvdXJjZUVycm9yKGVycm9yKTsKICAgICBpZiAoIW1fcmVzb3VyY2UtPmlzUHJlbG9hZGVkKCkp
Ci0gICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlKG1fcmVzb3VyY2UpOworICAgICAgICBtZW1v
cnlDYWNoZSgpLnJlbW92ZSgqbV9yZXNvdXJjZSk7CiAgICAgbV9yZXNvdXJjZS0+ZXJyb3IoQ2Fj
aGVkUmVzb3VyY2U6OkxvYWRFcnJvcik7CiAgICAgY2xlYW51cEZvckVycm9yKGVycm9yKTsKICAg
ICBub3RpZnlEb25lKCk7CkBAIC00MTgsOSArNDE4LDkgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBtX3N0YXRlID0g
RmluaXNoaW5nOwogI2VuZGlmCiAgICAgaWYgKG1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlk
YXRlKCkpCi0gICAgICAgIG1lbW9yeUNhY2hlKCkucmV2YWxpZGF0aW9uRmFpbGVkKG1fcmVzb3Vy
Y2UpOworICAgICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvbkZhaWxlZCgqbV9yZXNvdXJj
ZSk7CiAgICAgbV9yZXNvdXJjZS0+c2V0UmVzb3VyY2VFcnJvcihlcnJvcik7Ci0gICAgbWVtb3J5
Q2FjaGUoKS5yZW1vdmUobV9yZXNvdXJjZSk7CisgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmUoKm1f
cmVzb3VyY2UpOwogfQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRDYW5jZWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAppbmRleCA1MGI1MzJkMWMwZDFlMGI3MzBhNzg3MDFhNzk2NmJjODczZjQyYzA1Li5hN2Mz
NzcwZjk0OTA5MmFjMzc1MWQ2NTZiNWE2ZjZlNGViMDVjYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTM4MSw3ICszODEsNyBAQCB2b2lkIENh
Y2hlZEltYWdlOjphZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQog
ICAgICAgICAvLyBJbWFnZSBkZWNvZGluZyBmYWlsZWQuIEVpdGhlciB3ZSBuZWVkIG1vcmUgaW1h
Z2UgZGF0YSBvciB0aGUgaW1hZ2UgZGF0YSBpcyBtYWxmb3JtZWQuCiAgICAgICAgIGVycm9yKGVy
cm9yT2NjdXJyZWQoKSA/IHN0YXR1cygpIDogRGVjb2RlRXJyb3IpOwogICAgICAgICBpZiAoaW5D
YWNoZSgpKQotICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmUodGhpcyk7CisgICAgICAg
ICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZSgqdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgLy8gSW1hZ2UgZGVjb2RpbmcgZmFpbGVkOyB0aGUg
aW1hZ2UgZGF0YSBpcyBtYWxmb3JtZWQuCiAgICAgICAgIGVycm9yKGVycm9yT2NjdXJyZWQoKSA/
IHN0YXR1cygpIDogRGVjb2RlRXJyb3IpOwogICAgICAgICBpZiAoaW5DYWNoZSgpKQotICAgICAg
ICAgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmUodGhpcyk7CisgICAgICAgICAgICBtZW1vcnlDYWNo
ZSgpLnJlbW92ZSgqdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDAyNWM1ZTIxNTM3
NzczNTFiZGZmYWNiZTI5OGUwMzE2YmNkYTcwYjcuLmJmZWY4NWJmODcwZGU3MTU3Y2RhNmQzNjdh
NzE2NDQ2NjAwZjgzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIENhY2hlZFJlc291cmNlOjp+Q2FjaGVk
UmVzb3VyY2UoKQogI2VuZGlmCiAKICAgICBpZiAobV9vd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRl
cikKLSAgICAgICAgbV9vd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVtb3ZlQ2FjaGVkUmVz
b3VyY2UodGhpcyk7CisgICAgICAgIG1fb3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlbW92
ZUNhY2hlZFJlc291cmNlKCp0aGlzKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmFpbEJl
Zm9yZVN0YXJ0aW5nKCkKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpm
YWlsQmVmb3JlU3RhcnRpbmcoKQogICAgIC8vIEZJWE1FOiBXaGF0IGlmIHJlc291cmNlcyBpbiBv
dGhlciBmcmFtZXMgd2VyZSB3YWl0aW5nIGZvciB0aGlzIHJldmFsaWRhdGlvbj8KICAgICBMT0co
UmVzb3VyY2VMb2FkaW5nLCAiQ2Fubm90IHN0YXJ0IGxvYWRpbmcgJyVzJyIsIHVybCgpLnN0cmlu
ZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgaWYgKG1fcmVzb3VyY2VUb1JldmFsaWRhdGUpIAot
ICAgICAgICBtZW1vcnlDYWNoZSgpLnJldmFsaWRhdGlvbkZhaWxlZCh0aGlzKTsgCisgICAgICAg
IG1lbW9yeUNhY2hlKCkucmV2YWxpZGF0aW9uRmFpbGVkKCp0aGlzKTsKICAgICBlcnJvcihDYWNo
ZWRSZXNvdXJjZTo6TG9hZEVycm9yKTsKIH0KIApAQCAtNDE1LDcgKzQxNSw3IEBAIGJvb2wgQ2Fj
aGVkUmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQp
CiAgICAgICAgICAgICBtX3ByZWxvYWRSZXN1bHQgPSBQcmVsb2FkUmVmZXJlbmNlZDsKICAgICB9
CiAgICAgaWYgKCFoYXNDbGllbnRzKCkgJiYgaW5DYWNoZSgpKQotICAgICAgICBtZW1vcnlDYWNo
ZSgpLmFkZFRvTGl2ZVJlc291cmNlc1NpemUodGhpcyk7CisgICAgICAgIG1lbW9yeUNhY2hlKCku
YWRkVG9MaXZlUmVzb3VyY2VzU2l6ZSgqdGhpcyk7CiAKICAgICBpZiAoKG1fdHlwZSA9PSBSYXdS
ZXNvdXJjZSB8fCBtX3R5cGUgPT0gTWFpblJlc291cmNlKSAmJiAhbV9yZXNwb25zZS5pc051bGwo
KSAmJiAhbV9wcm94eVJlc291cmNlKSB7CiAgICAgICAgIC8vIENlcnRhaW4gcmVzb3VyY2VzIChl
c3BlY2lhbGx5IFhIUnMgYW5kIG1haW4gcmVzb3VyY2VzKSBkbyBjcmF6eSB0aGluZ3MgaWYgYW4g
YXN5bmNocm9ub3VzIGxvYWQgcmV0dXJucwpAQCAtNDQ3LDggKzQ0Nyw4IEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2U6OnJlbW92ZUNsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogICAg
IGJvb2wgZGVsZXRlZCA9IGRlbGV0ZUlmUG9zc2libGUoKTsKICAgICBpZiAoIWRlbGV0ZWQgJiYg
IWhhc0NsaWVudHMoKSkgewogICAgICAgICBpZiAoaW5DYWNoZSgpKSB7Ci0gICAgICAgICAgICBt
ZW1vcnlDYWNoZSgpLnJlbW92ZUZyb21MaXZlUmVzb3VyY2VzU2l6ZSh0aGlzKTsKLSAgICAgICAg
ICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlRnJvbUxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCh0aGlz
KTsKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlRnJvbUxpdmVSZXNvdXJjZXNTaXpl
KCp0aGlzKTsKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlRnJvbUxpdmVEZWNvZGVk
UmVzb3VyY2VzTGlzdCgqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFtX3N3aXRjaGlu
Z0NsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UpCiAgICAgICAgICAgICBhbGxDbGllbnRzUmVt
b3ZlZCgpOwpAQCAtNDU4LDcgKzQ1OCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlbW92ZUNs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogICAgICAgICAgICAgLy8gIm5vLXN0
b3JlOiAuLi4gTVVTVCBtYWtlIGEgYmVzdC1lZmZvcnQgYXR0ZW1wdCB0byByZW1vdmUgdGhlIGlu
Zm9ybWF0aW9uIGZyb20gdm9sYXRpbGUgc3RvcmFnZSBhcyBwcm9tcHRseSBhcyBwb3NzaWJsZSIK
ICAgICAgICAgICAgIC8vICIuLi4gSGlzdG9yeSBidWZmZXJzIE1BWSBzdG9yZSBzdWNoIHJlc3Bv
bnNlcyBhcyBwYXJ0IG9mIHRoZWlyIG5vcm1hbCBvcGVyYXRpb24uIgogICAgICAgICAgICAgLy8g
V2UgYWxsb3cgbm9uLXNlY3VyZSBjb250ZW50IHRvIGJlIHJldXNlZCBpbiBoaXN0b3J5LCBidXQg
d2UgZG8gbm90IGFsbG93IHNlY3VyZSBjb250ZW50IHRvIGJlIHJldXNlZC4KLSAgICAgICAgICAg
IG1lbW9yeUNhY2hlKCkucmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS5y
ZW1vdmUoKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIG1lbW9yeUNhY2hlKCkucHJ1bmUoKTsK
ICAgICB9CkBAIC00OTksMTMgKzQ5OSwxMyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpzZXREZWNv
ZGVkU2l6ZSh1bnNpZ25lZCBzaXplKQogICAgIC8vIFRoZSBvYmplY3QgbXVzdCBiZSBtb3ZlZCB0
byBhIGRpZmZlcmVudCBxdWV1ZSwgc2luY2UgaXRzIHNpemUgaGFzIGJlZW4gY2hhbmdlZC4KICAg
ICAvLyBSZW1vdmUgYmVmb3JlIHVwZGF0aW5nIG1fZGVjb2RlZFNpemUsIHNvIHdlIGZpbmQgdGhl
IHJlc291cmNlIGluIHRoZSBjb3JyZWN0IExSVSBsaXN0LgogICAgIGlmIChpbkNhY2hlKCkpCi0g
ICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlRnJvbUxSVUxpc3QodGhpcyk7CisgICAgICAgIG1l
bW9yeUNhY2hlKCkucmVtb3ZlRnJvbUxSVUxpc3QoKnRoaXMpOwogICAgIAogICAgIG1fZGVjb2Rl
ZFNpemUgPSBzaXplOwogICAgCiAgICAgaWYgKGluQ2FjaGUoKSkgeyAKICAgICAgICAgLy8gTm93
IGluc2VydCBpbnRvIHRoZSBuZXcgTFJVIGxpc3QuCi0gICAgICAgIG1lbW9yeUNhY2hlKCkuaW5z
ZXJ0SW5MUlVMaXN0KHRoaXMpOworICAgICAgICBtZW1vcnlDYWNoZSgpLmluc2VydEluTFJVTGlz
dCgqdGhpcyk7CiAgICAgICAgIAogICAgICAgICAvLyBJbnNlcnQgaW50byBvciByZW1vdmUgZnJv
bSB0aGUgbGl2ZSBkZWNvZGVkIGxpc3QgaWYgbmVjZXNzYXJ5LgogICAgICAgICAvLyBXaGVuIGlu
c2VydGluZyBpbnRvIHRoZSBMaXZlRGVjb2RlZFJlc291cmNlc0xpc3QgaXQgaXMgcG9zc2libGUK
QEAgLTUxNiw5ICs1MTYsOSBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpzZXREZWNvZGVkU2l6ZSh1
bnNpZ25lZCBzaXplKQogICAgICAgICAvLyBhIHByb2JsZW0uIEZvciBtb3JlIGRldGFpbHMgcGxl
YXNlIHNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMjA5CiAg
ICAgICAgIGJvb2wgaW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QgPSBtZW1vcnlDYWNoZSgpLmlu
TGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KCp0aGlzKTsKICAgICAgICAgaWYgKG1fZGVjb2RlZFNp
emUgJiYgIWluTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0ICYmIGhhc0NsaWVudHMoKSkKLSAgICAg
ICAgICAgIG1lbW9yeUNhY2hlKCkuaW5zZXJ0SW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QodGhp
cyk7CisgICAgICAgICAgICBtZW1vcnlDYWNoZSgpLmluc2VydEluTGl2ZURlY29kZWRSZXNvdXJj
ZXNMaXN0KCp0aGlzKTsKICAgICAgICAgZWxzZSBpZiAoIW1fZGVjb2RlZFNpemUgJiYgaW5MaXZl
RGVjb2RlZFJlc291cmNlc0xpc3QpCi0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZUZy
b21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QodGhpcyk7CisgICAgICAgICAgICBtZW1vcnlDYWNo
ZSgpLnJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoKnRoaXMpOwogCiAgICAgICAg
IC8vIFVwZGF0ZSB0aGUgY2FjaGUncyBzaXplIHRvdGFscy4KICAgICAgICAgbWVtb3J5Q2FjaGUo
KS5hZGp1c3RTaXplKGhhc0NsaWVudHMoKSwgZGVsdGEpOwpAQCAtNTM1LDEyICs1MzUsMTIgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0RW5jb2RlZFNpemUodW5zaWduZWQgc2l6ZSkKICAgICAv
LyBUaGUgb2JqZWN0IG11c3QgYmUgbW92ZWQgdG8gYSBkaWZmZXJlbnQgcXVldWUsIHNpbmNlIGl0
cyBzaXplIGhhcyBiZWVuIGNoYW5nZWQuCiAgICAgLy8gUmVtb3ZlIGJlZm9yZSB1cGRhdGluZyBt
X2VuY29kZWRTaXplLCBzbyB3ZSBmaW5kIHRoZSByZXNvdXJjZSBpbiB0aGUgY29ycmVjdCBMUlUg
bGlzdC4KICAgICBpZiAoaW5DYWNoZSgpKQotICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZUZy
b21MUlVMaXN0KHRoaXMpOworICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZUZyb21MUlVMaXN0
KCp0aGlzKTsKIAogICAgIG1fZW5jb2RlZFNpemUgPSBzaXplOwogCiAgICAgaWYgKGluQ2FjaGUo
KSkgeyAKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS5pbnNlcnRJbkxSVUxpc3QodGhpcyk7CisgICAg
ICAgIG1lbW9yeUNhY2hlKCkuaW5zZXJ0SW5MUlVMaXN0KCp0aGlzKTsKICAgICAgICAgbWVtb3J5
Q2FjaGUoKS5hZGp1c3RTaXplKGhhc0NsaWVudHMoKSwgZGVsdGEpOwogICAgIH0KIH0KQEAgLTU1
MSw4ICs1NTEsOCBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpkaWRBY2Nlc3NEZWNvZGVkRGF0YShk
b3VibGUgdGltZVN0YW1wKQogICAgIAogICAgIGlmIChpbkNhY2hlKCkpIHsKICAgICAgICAgaWYg
KG1lbW9yeUNhY2hlKCkuaW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoKnRoaXMpKSB7Ci0gICAg
ICAgICAgICBtZW1vcnlDYWNoZSgpLnJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3Qo
dGhpcyk7Ci0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLmluc2VydEluTGl2ZURlY29kZWRSZXNv
dXJjZXNMaXN0KHRoaXMpOworICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmVGcm9tTGl2
ZURlY29kZWRSZXNvdXJjZXNMaXN0KCp0aGlzKTsKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCku
aW5zZXJ0SW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoKnRoaXMpOwogICAgICAgICB9CiAgICAg
ICAgIG1lbW9yeUNhY2hlKCkucHJ1bmUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oCmluZGV4IGNlNzM5MjIwYmExYWVj
ODFmMGIzNDI1N2NmMzA4YWQxMDhkYWRiMzcuLjg2Nzc5Mzk0N2RmMDY2N2Q0NTNjODVjOGEzNzRi
MDgxOGNlMjg1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKIAogICAgIFIqIGdl
dCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Uio+KENhY2hlZFJlc291cmNlSGFu
ZGxlQmFzZTo6Z2V0KCkpOyB9CiAgICAgUiogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdl
dCgpOyB9CisgICAgUiYgb3BlcmF0b3IqKCkgY29uc3QgeyBBU1NFUlQoZ2V0KCkpOyByZXR1cm4g
KmdldCgpOyB9CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZSYgb3BlcmF0b3I9KFIqIHJlcykg
eyBzZXRSZXNvdXJjZShyZXMpOyByZXR1cm4gKnRoaXM7IH0gCiAgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGUmIG9wZXJhdG9yPShjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZSYgbykgeyBzZXRSZXNv
dXJjZShvLmdldCgpKTsgcmV0dXJuICp0aGlzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCA5NWNjNTA1YzM4YmFj
YzY0NWE1YzRjMzRmNTc0NmQ1NTYxMzkxMWUzLi4zZGNhMWFlNDg3N2UwMjRiZjQyYTU2NmQ1NDFi
ZTc0OGM1NmZhZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIxOCwxNCArMjE4LDE0IEBAIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0VXNlckNTU1N0CiAgICAgaWYgKENhY2hlZFJlc291cmNlKiBleGlzdGluZyA9IG1lbW9yeUNh
Y2hlKCkucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHNlc3Np
b25JRCgpKSkgewogICAgICAgICBpZiAoaXM8Q2FjaGVkQ1NTU3R5bGVTaGVldD4oKmV4aXN0aW5n
KSkKICAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0PihleGlz
dGluZyk7Ci0gICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlKGV4aXN0aW5nKTsKKyAgICAgICAg
bWVtb3J5Q2FjaGUoKS5yZW1vdmUoKmV4aXN0aW5nKTsKICAgICB9CiAgICAgaWYgKHVybC5zdHJp
bmcoKSAhPSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKQogICAgICAgICByZXF1ZXN0
Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5zZXRVUkwodXJsKTsKIAogICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IHVzZXJTaGVldCA9IG5ldyBDYWNoZWRDU1NT
dHlsZVNoZWV0KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QuY2hhcnNldCgpLCBz
ZXNzaW9uSUQoKSk7CiAKLSAgICBtZW1vcnlDYWNoZSgpLmFkZCh1c2VyU2hlZXQuZ2V0KCkpOwor
ICAgIG1lbW9yeUNhY2hlKCkuYWRkKCp1c2VyU2hlZXQpOwogICAgIC8vIEZJWE1FOiBsb2FkUmVz
b3VyY2UgY2FsbHMgc2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBpZiB0aGUgcmVzb3Vy
Y2UgY291bGRuJ3QgYmUgYWRkZWQgdG8gY2FjaGUuIERvZXMgdGhpcyBmdW5jdGlvbiBuZWVkIHRv
IGNhbGwgaXQsIHRvbz8KIAogICAgIHVzZXJTaGVldC0+bG9hZCgqdGhpcywgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zKERvTm90U2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBB
bGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JBbGxDcmVkZW50aWFscywgU2tpcFNl
Y3VyaXR5Q2hlY2ssIFVzZURlZmF1bHRPcmlnaW5SZXN0cmljdGlvbnNGb3JUeXBlLCBEb05vdElu
Y2x1ZGVDZXJ0aWZpY2F0ZUluZm8pKTsKQEAgLTQ4OSw3ICs0ODksNyBAQCBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNv
dXJjZShDYWNoZQogICAgIGNvbnN0IFJldmFsaWRhdGlvblBvbGljeSBwb2xpY3kgPSBkZXRlcm1p
bmVSZXZhbGlkYXRpb25Qb2xpY3kodHlwZSwgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0
KCksIHJlcXVlc3QuZm9yUHJlbG9hZCgpLCByZXNvdXJjZS5nZXQoKSwgcmVxdWVzdC5kZWZlcigp
KTsKICAgICBzd2l0Y2ggKHBvbGljeSkgewogICAgIGNhc2UgUmVsb2FkOgotICAgICAgICBtZW1v
cnlDYWNoZSgpLnJlbW92ZShyZXNvdXJjZS5nZXQoKSk7CisgICAgICAgIG1lbW9yeUNhY2hlKCku
cmVtb3ZlKCpyZXNvdXJjZSk7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgTG9hZDoK
ICAgICAgICAgaWYgKHJlc291cmNlKQpAQCAtNTA1LDcgKzUwNSw3IEBAIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291
cmNlKENhY2hlCiAgICAgICAgIGlmICghc2hvdWxkQ29udGludWVBZnRlck5vdGlmeWluZ0xvYWRl
ZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0LCByZXNvdXJjZS5nZXQoKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgbG9nTWVtb3J5Q2FjaGVSZXNvdXJjZVJlcXVlc3QoZnJh
bWUoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbk1lbW9yeUNhY2hlS2V5KCksIERpYWdub3N0
aWNMb2dnaW5nS2V5czo6dXNlZEtleSgpKTsKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZXNvdXJj
ZUFjY2Vzc2VkKHJlc291cmNlLmdldCgpKTsKKyAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZXNvdXJj
ZUFjY2Vzc2VkKCpyZXNvdXJjZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNTIxLDcg
KzUyMSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAgICAgICAgIC8vIFdlIGRvbid0IHN1
cHBvcnQgaW1tZWRpYXRlIGxvYWRzLCBidXQgd2UgZG8gc3VwcG9ydCBpbW1lZGlhdGUgZmFpbHVy
ZS4KICAgICAgICAgaWYgKHJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpIHsKICAgICAgICAgICAg
IGlmIChyZXNvdXJjZS0+aW5DYWNoZSgpKQotICAgICAgICAgICAgICAgIG1lbW9yeUNhY2hlKCku
cmVtb3ZlKHJlc291cmNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBtZW1vcnlDYWNoZSgpLnJl
bW92ZSgqcmVzb3VyY2UpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
ICAgICB9CkBAIC01NTUsOCArNTU1LDggQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2UoY28KICAgICBM
T0coUmVzb3VyY2VMb2FkaW5nLCAiUmVzb3VyY2UgJXAgY3JlYXRlZCB0byByZXZhbGlkYXRlICVw
IiwgbmV3UmVzb3VyY2UuZ2V0KCksIHJlc291cmNlKTsKICAgICBuZXdSZXNvdXJjZS0+c2V0UmVz
b3VyY2VUb1JldmFsaWRhdGUocmVzb3VyY2UpOwogICAgIAotICAgIG1lbW9yeUNhY2hlKCkucmVt
b3ZlKHJlc291cmNlKTsKLSAgICBtZW1vcnlDYWNoZSgpLmFkZChuZXdSZXNvdXJjZS5nZXQoKSk7
CisgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmUoKnJlc291cmNlKTsKKyAgICBtZW1vcnlDYWNoZSgp
LmFkZCgqbmV3UmVzb3VyY2UpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9USU1JTkcpCiAgICAgc3Rv
cmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uKHJlc291cmNlLCByZXF1ZXN0KTsK
ICNlbHNlCkBAIC01NzMsNyArNTczLDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UoQ2FjaGVkUmUKIAogICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IGNyZWF0ZVJl
c291cmNlKHR5cGUsIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LmNo
YXJzZXQoKSwgc2Vzc2lvbklEKCkpOwogCi0gICAgaWYgKCFtZW1vcnlDYWNoZSgpLmFkZChyZXNv
dXJjZS5nZXQoKSkpCisgICAgaWYgKCFtZW1vcnlDYWNoZSgpLmFkZCgqcmVzb3VyY2UpKQogICAg
ICAgICByZXNvdXJjZS0+c2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIodGhpcyk7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX1RJTUlORykKICAgICBzdG9yZVJlc291cmNlVGltaW5nSW5pdGlhdG9y
SW5mb3JtYXRpb24ocmVzb3VyY2UsIHJlcXVlc3QpOwpAQCAtNzg5LDIyICs3ODksMjIgQEAgQ2Fj
aGVQb2xpY3kgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhY2hlUG9saWN5KENhY2hlZFJlc291cmNl
OjpUeXBlIHR5cGUpIGNvbnN0CiAgICAgfQogfQogCi12b2lkIENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpIGNvbnN0Cit2
b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIERvY3VtZW50UmVzb3VyY2VN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9kb2N1bWVudFJlc291cmNlcy5maW5kKHJlc291cmNlLT51cmwo
KSk7CisgICAgRG9jdW1lbnRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2RvY3VtZW50UmVz
b3VyY2VzLmZpbmQocmVzb3VyY2UudXJsKCkpOwogICAgIGlmIChpdCAhPSBtX2RvY3VtZW50UmVz
b3VyY2VzLmVuZCgpKQotICAgICAgICBBU1NFUlQoaXQtPnZhbHVlLmdldCgpID09IHJlc291cmNl
KTsKKyAgICAgICAgQVNTRVJUKGl0LT52YWx1ZS5nZXQoKSA9PSAmcmVzb3VyY2UpOwogI2VuZGlm
Ci0gICAgbV9kb2N1bWVudFJlc291cmNlcy5yZW1vdmUocmVzb3VyY2UtPnVybCgpKTsKKyAgICBt
X2RvY3VtZW50UmVzb3VyY2VzLnJlbW92ZShyZXNvdXJjZS51cmwoKSk7CiB9CiAKLXZvaWQgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmFkZENhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmFkZENhY2hlZFJlc291cmNlKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICBtX2RvY3VtZW50UmVzb3VyY2VzLnNldChyZXNv
dXJjZS0+dXJsKCksIHJlc291cmNlKTsKKyAgICBtX2RvY3VtZW50UmVzb3VyY2VzLnNldChyZXNv
dXJjZS51cmwoKSwgJnJlc291cmNlKTsKIAogICAgIGlmICghbWVtb3J5Q2FjaGUoKS5hZGQocmVz
b3VyY2UpKQotICAgICAgICByZXNvdXJjZS0+c2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIo
dGhpcyk7CisgICAgICAgIHJlc291cmNlLnNldE93bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKHRo
aXMpOwogfQogCiB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkRG9uZShDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UsIGJvb2wgc2hvdWxkUGVyZm9ybVBvc3RMb2FkQWN0aW9ucykKQEAgLTk4
NSwxMyArOTg1LDExIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNsZWFyUHJlbG9hZHMo
KQogICAgIGlmICghbV9wcmVsb2FkcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGlzdEhhc2hT
ZXQ8Q2FjaGVkUmVzb3VyY2UqPjo6aXRlcmF0b3IgZW5kID0gbV9wcmVsb2Fkcy0+ZW5kKCk7Ci0g
ICAgZm9yIChMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+OjppdGVyYXRvciBpdCA9IG1fcHJl
bG9hZHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBDYWNoZWRSZXNvdXJj
ZSogcmVzID0gKml0OwotICAgICAgICByZXMtPmRlY3JlYXNlUHJlbG9hZENvdW50KCk7Ci0gICAg
ICAgIGJvb2wgZGVsZXRlZCA9IHJlcy0+ZGVsZXRlSWZQb3NzaWJsZSgpOwotICAgICAgICBpZiAo
IWRlbGV0ZWQgJiYgcmVzLT5wcmVsb2FkUmVzdWx0KCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlByZWxv
YWROb3RSZWZlcmVuY2VkKQotICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS5yZW1vdmUocmVzKTsK
KyAgICBmb3IgKGF1dG8qIHJlc291cmNlIDogKm1fcHJlbG9hZHMpIHsKKyAgICAgICAgcmVzb3Vy
Y2UtPmRlY3JlYXNlUHJlbG9hZENvdW50KCk7CisgICAgICAgIGJvb2wgZGVsZXRlZCA9IHJlc291
cmNlLT5kZWxldGVJZlBvc3NpYmxlKCk7CisgICAgICAgIGlmICghZGVsZXRlZCAmJiByZXNvdXJj
ZS0+cHJlbG9hZFJlc3VsdCgpID09IENhY2hlZFJlc291cmNlOjpQcmVsb2FkTm90UmVmZXJlbmNl
ZCkKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlKCpyZXNvdXJjZSk7CiAgICAgfQog
ICAgIG1fcHJlbG9hZHMgPSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCAxZmQ1NzBiMjljMzA1N2QzOWYx
MDA1NTg4ZTg4ZWY3YjlkNTNkNzg2Li44MTdlMzYwNzViMWMwZTdiOWIyYzYzZjY3NGI1NTM2OTBk
Njk4ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaApAQCAtMTEzLDggKzExMyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFy
RG9jdW1lbnRMb2FkZXIoKSB7IG1fZG9jdW1lbnRMb2FkZXIgPSAwOyB9CiAgICAgU2Vzc2lvbklE
IHNlc3Npb25JRCgpIGNvbnN0OwogCi0gICAgdm9pZCByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZSopIGNvbnN0OwotICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UqKTsKKyAgICB2b2lkIHJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJik7
CisgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgdm9p
ZCBsb2FkRG9uZShDYWNoZWRSZXNvdXJjZSosIGJvb2wgc2hvdWxkUGVyZm9ybVBvc3RMb2FkQWN0
aW9ucyA9IHRydWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcAppbmRleCBhNTA4MDZiMDU4NmI5Y2M2MDM1ZDFjNzZhZTJjMjBkNjliNGFlMzgzLi5iNWI1
MGNkMmM2YTk1NTBhM2M4OWI4YTQxM2M2ZTRlOTdiNmVjNWRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTk5LDgxICs5OSw4MiBAQCBVUkwgTWVt
b3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKGNvbnN0IFVSTCYgb3Jp
Z2luYWxVUkwpCiAgICAgcmV0dXJuIHVybDsKIH0KIAotYm9vbCBNZW1vcnlDYWNoZTo6YWRkKENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSkKK2Jvb2wgTWVtb3J5Q2FjaGU6OmFkZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgaWYgKGRpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKIAotICAgIENhY2hlZFJl
c291cmNlTWFwJiByZXNvdXJjZXMgPSBnZXRTZXNzaW9uTWFwKHJlc291cmNlLT5zZXNzaW9uSUQo
KSk7CisgICAgQ2FjaGVkUmVzb3VyY2VNYXAmIHJlc291cmNlcyA9IGdldFNlc3Npb25NYXAocmVz
b3VyY2Uuc2Vzc2lvbklEKCkpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAg
Q2FjaGVkUmVzb3VyY2VJdGVtKiBvcmlnaW5NYXAgPSByZXNvdXJjZXMuZ2V0KHJlc291cmNlLT51
cmwoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VJdGVtKiBvcmlnaW5NYXAgPSByZXNvdXJjZXMuZ2V0
KHJlc291cmNlLnVybCgpKTsKICAgICBpZiAoIW9yaWdpbk1hcCkgewogICAgICAgICBvcmlnaW5N
YXAgPSBuZXcgQ2FjaGVkUmVzb3VyY2VJdGVtOwotICAgICAgICByZXNvdXJjZXMuc2V0KHJlc291
cmNlLT51cmwoKSwgYWRvcHRQdHIob3JpZ2luTWFwKSk7CisgICAgICAgIHJlc291cmNlcy5zZXQo
cmVzb3VyY2UudXJsKCksIGFkb3B0UHRyKG9yaWdpbk1hcCkpOwogICAgIH0KLSAgICBvcmlnaW5N
YXAtPnNldChyZXNvdXJjZS0+Y2FjaGVQYXJ0aXRpb24oKSwgcmVzb3VyY2UpOworICAgIG9yaWdp
bk1hcC0+c2V0KHJlc291cmNlLmNhY2hlUGFydGl0aW9uKCksICZyZXNvdXJjZSk7CiAjZWxzZQot
ICAgIHJlc291cmNlcy5zZXQocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZSk7CisgICAgcmVzb3Vy
Y2VzLnNldChyZXNvdXJjZS51cmwoKSwgJnJlc291cmNlKTsKICNlbmRpZgotICAgIHJlc291cmNl
LT5zZXRJbkNhY2hlKHRydWUpOworICAgIHJlc291cmNlLnNldEluQ2FjaGUodHJ1ZSk7CiAgICAg
CiAgICAgcmVzb3VyY2VBY2Nlc3NlZChyZXNvdXJjZSk7CiAgICAgCi0gICAgTE9HKFJlc291cmNl
TG9hZGluZywgIk1lbW9yeUNhY2hlOjphZGQgQWRkZWQgJyVzJywgcmVzb3VyY2UgJXBcbiIsIHJl
c291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIHJlc291cmNlKTsKKyAgICBM
T0coUmVzb3VyY2VMb2FkaW5nLCAiTWVtb3J5Q2FjaGU6OmFkZCBBZGRlZCAnJXMnLCByZXNvdXJj
ZSAlcFxuIiwgcmVzb3VyY2UudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCAmcmVzb3Vy
Y2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE1lbW9yeUNhY2hlOjpyZXZhbGlkYXRp
b25TdWNjZWVkZWQoQ2FjaGVkUmVzb3VyY2UqIHJldmFsaWRhdGluZ1Jlc291cmNlLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCB0YWtlIGEg
cmVmZXJlbmNlLgordm9pZCBNZW1vcnlDYWNoZTo6cmV2YWxpZGF0aW9uU3VjY2VlZGVkKENhY2hl
ZFJlc291cmNlJiByZXZhbGlkYXRpbmdSZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcmV2YWxpZGF0aW5n
UmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCk7Ci0gICAgQVNTRVJUKHJlc291cmNlKTsK
LSAgICBBU1NFUlQoIXJlc291cmNlLT5pbkNhY2hlKCkpOwotICAgIEFTU0VSVChyZXNvdXJjZS0+
aXNMb2FkZWQoKSk7Ci0gICAgQVNTRVJUKHJldmFsaWRhdGluZ1Jlc291cmNlLT5pbkNhY2hlKCkp
OworICAgIEFTU0VSVChyZXZhbGlkYXRpbmdSZXNvdXJjZS5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgp
KTsKKyAgICBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UgPSAqcmV2YWxpZGF0aW5nUmVzb3VyY2Uu
cmVzb3VyY2VUb1JldmFsaWRhdGUoKTsKKyAgICBBU1NFUlQoIXJlc291cmNlLmluQ2FjaGUoKSk7
CisgICAgQVNTRVJUKHJlc291cmNlLmlzTG9hZGVkKCkpOworICAgIEFTU0VSVChyZXZhbGlkYXRp
bmdSZXNvdXJjZS5pbkNhY2hlKCkpOwogCiAgICAgLy8gQ2FsbGluZyByZW1vdmUoKSBjYW4gcG90
ZW50aWFsbHkgZGVsZXRlIHJldmFsaWRhdGluZ1Jlc291cmNlLCB3aGljaCB3ZSB1c2UKICAgICAv
LyBiZWxvdy4gVGhpcyBtdXN0bid0IGJlIHRoZSBjYXNlIHNpbmNlIHJldmFsaWRhdGlvbiBtZWFu
cyBpdCBpcyBsb2FkZWQKICAgICAvLyBhbmQgc28gY2FuRGVsZXRlKCkgaXMgZmFsc2UuCi0gICAg
QVNTRVJUKCFyZXZhbGlkYXRpbmdSZXNvdXJjZS0+Y2FuRGVsZXRlKCkpOworICAgIEFTU0VSVCgh
cmV2YWxpZGF0aW5nUmVzb3VyY2UuY2FuRGVsZXRlKCkpOwogCiAgICAgcmVtb3ZlKHJldmFsaWRh
dGluZ1Jlc291cmNlKTsKIAotICAgIENhY2hlZFJlc291cmNlTWFwJiByZXNvdXJjZXMgPSBnZXRT
ZXNzaW9uTWFwKHJlc291cmNlLT5zZXNzaW9uSUQoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VNYXAm
IHJlc291cmNlcyA9IGdldFNlc3Npb25NYXAocmVzb3VyY2Uuc2Vzc2lvbklEKCkpOwogI2lmIEVO
QUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgQVNTRVJUKCFyZXNvdXJjZXMuZ2V0KHJlc291
cmNlLT51cmwoKSkgfHwgIXJlc291cmNlcy5nZXQocmVzb3VyY2UtPnVybCgpKS0+Z2V0KHJlc291
cmNlLT5jYWNoZVBhcnRpdGlvbigpKSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2VJdGVtKiBvcmlnaW5N
YXAgPSByZXNvdXJjZXMuZ2V0KHJlc291cmNlLT51cmwoKSk7CisgICAgQVNTRVJUKCFyZXNvdXJj
ZXMuZ2V0KHJlc291cmNlLnVybCgpKSB8fCAhcmVzb3VyY2VzLmdldChyZXNvdXJjZS51cmwoKSkt
PmdldChyZXNvdXJjZS5jYWNoZVBhcnRpdGlvbigpKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VJdGVt
KiBvcmlnaW5NYXAgPSByZXNvdXJjZXMuZ2V0KHJlc291cmNlLnVybCgpKTsKICAgICBpZiAoIW9y
aWdpbk1hcCkgewogICAgICAgICBvcmlnaW5NYXAgPSBuZXcgQ2FjaGVkUmVzb3VyY2VJdGVtOwot
ICAgICAgICByZXNvdXJjZXMuc2V0KHJlc291cmNlLT51cmwoKSwgYWRvcHRQdHIob3JpZ2luTWFw
KSk7CisgICAgICAgIHJlc291cmNlcy5zZXQocmVzb3VyY2UudXJsKCksIGFkb3B0UHRyKG9yaWdp
bk1hcCkpOwogICAgIH0KLSAgICBvcmlnaW5NYXAtPnNldChyZXNvdXJjZS0+Y2FjaGVQYXJ0aXRp
b24oKSwgcmVzb3VyY2UpOworICAgIG9yaWdpbk1hcC0+c2V0KHJlc291cmNlLmNhY2hlUGFydGl0
aW9uKCksICZyZXNvdXJjZSk7CiAjZWxzZQotICAgIEFTU0VSVCghcmVzb3VyY2VzLmdldChyZXNv
dXJjZS0+dXJsKCkpKTsKLSAgICByZXNvdXJjZXMuc2V0KHJlc291cmNlLT51cmwoKSwgcmVzb3Vy
Y2UpOworICAgIEFTU0VSVCghcmVzb3VyY2VzLmdldChyZXNvdXJjZS51cmwoKSkpOworICAgIHJl
c291cmNlcy5zZXQocmVzb3VyY2UudXJsKCksICZyZXNvdXJjZSk7CiAjZW5kaWYKLSAgICByZXNv
dXJjZS0+c2V0SW5DYWNoZSh0cnVlKTsKLSAgICByZXNvdXJjZS0+dXBkYXRlUmVzcG9uc2VBZnRl
clJldmFsaWRhdGlvbihyZXNwb25zZSk7CisgICAgcmVzb3VyY2Uuc2V0SW5DYWNoZSh0cnVlKTsK
KyAgICByZXNvdXJjZS51cGRhdGVSZXNwb25zZUFmdGVyUmV2YWxpZGF0aW9uKHJlc3BvbnNlKTsK
ICAgICBpbnNlcnRJbkxSVUxpc3QocmVzb3VyY2UpOwotICAgIGludCBkZWx0YSA9IHJlc291cmNl
LT5zaXplKCk7Ci0gICAgaWYgKHJlc291cmNlLT5kZWNvZGVkU2l6ZSgpICYmIHJlc291cmNlLT5o
YXNDbGllbnRzKCkpCisgICAgaW50IGRlbHRhID0gcmVzb3VyY2Uuc2l6ZSgpOworICAgIGlmIChy
ZXNvdXJjZS5kZWNvZGVkU2l6ZSgpICYmIHJlc291cmNlLmhhc0NsaWVudHMoKSkKICAgICAgICAg
aW5zZXJ0SW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QocmVzb3VyY2UpOwogICAgIGlmIChkZWx0
YSkKLSAgICAgICAgYWRqdXN0U2l6ZShyZXNvdXJjZS0+aGFzQ2xpZW50cygpLCBkZWx0YSk7Cisg
ICAgICAgIGFkanVzdFNpemUocmVzb3VyY2UuaGFzQ2xpZW50cygpLCBkZWx0YSk7CiAgICAgCi0g
ICAgcmV2YWxpZGF0aW5nUmVzb3VyY2UtPnN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3Vy
Y2UoKTsKLSAgICBBU1NFUlQoIXJldmFsaWRhdGluZ1Jlc291cmNlLT5tX2RlbGV0ZWQpOworICAg
IHJldmFsaWRhdGluZ1Jlc291cmNlLnN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2Uo
KTsKKyAgICBBU1NFUlQoIXJldmFsaWRhdGluZ1Jlc291cmNlLm1fZGVsZXRlZCk7CiAgICAgLy8g
dGhpcyBkZWxldGVzIHRoZSByZXZhbGlkYXRpbmcgcmVzb3VyY2UKLSAgICByZXZhbGlkYXRpbmdS
ZXNvdXJjZS0+Y2xlYXJSZXNvdXJjZVRvUmV2YWxpZGF0ZSgpOworICAgIHJldmFsaWRhdGluZ1Jl
c291cmNlLmNsZWFyUmVzb3VyY2VUb1JldmFsaWRhdGUoKTsKIH0KIAotdm9pZCBNZW1vcnlDYWNo
ZTo6cmV2YWxpZGF0aW9uRmFpbGVkKENhY2hlZFJlc291cmNlKiByZXZhbGlkYXRpbmdSZXNvdXJj
ZSkKK3ZvaWQgTWVtb3J5Q2FjaGU6OnJldmFsaWRhdGlvbkZhaWxlZChDYWNoZWRSZXNvdXJjZSYg
cmV2YWxpZGF0aW5nUmVzb3VyY2UpCiB7CiAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkp
OwotICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJSZXZhbGlkYXRpb24gZmFpbGVkIGZvciAlcCIs
IHJldmFsaWRhdGluZ1Jlc291cmNlKTsKLSAgICBBU1NFUlQocmV2YWxpZGF0aW5nUmVzb3VyY2Ut
PnJlc291cmNlVG9SZXZhbGlkYXRlKCkpOwotICAgIHJldmFsaWRhdGluZ1Jlc291cmNlLT5jbGVh
clJlc291cmNlVG9SZXZhbGlkYXRlKCk7CisgICAgTE9HKFJlc291cmNlTG9hZGluZywgIlJldmFs
aWRhdGlvbiBmYWlsZWQgZm9yICVwIiwgJnJldmFsaWRhdGluZ1Jlc291cmNlKTsKKyAgICBBU1NF
UlQocmV2YWxpZGF0aW5nUmVzb3VyY2UucmVzb3VyY2VUb1JldmFsaWRhdGUoKSk7CisgICAgcmV2
YWxpZGF0aW5nUmVzb3VyY2UuY2xlYXJSZXNvdXJjZVRvUmV2YWxpZGF0ZSgpOwogfQogCiBDYWNo
ZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgcmVzb3Vy
Y2VVUkwsIFNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0xOTMsNyArMTk0LDcgQEAgQ2FjaGVkUmVz
b3VyY2UqIE1lbW9yeUNhY2hlOjpyZXNvdXJjZUZvclJlcXVlc3RJbXBsKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWUKIAogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAgICAgQ2Fj
aGVkUmVzb3VyY2VJdGVtKiBpdGVtID0gcmVzb3VyY2VzLmdldCh1cmwpOwotICAgIENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSA9IDA7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbnVs
bHB0cjsKICAgICBpZiAoaXRlbSkKICAgICAgICAgcmVzb3VyY2UgPSBpdGVtLT5nZXQocmVxdWVz
dC5jYWNoZVBhcnRpdGlvbigpKTsKICNlbHNlCkBAIC0yNDUsNyArMjQ2LDcgQEAgYm9vbCBNZW1v
cnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3QKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIGNhY2hl
ZEltYWdlLT5yZXNvdXJjZVJlcXVlc3QoKS5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihkb21h
aW5Gb3JDYWNoZVBhcnRpdGlvbik7CiAjZW5kaWYKLSAgICByZXR1cm4gYWRkKGNhY2hlZEltYWdl
LnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIGFkZCgqY2FjaGVkSW1hZ2UucmVsZWFzZSgpKTsKIH0K
IAogdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlSW1hZ2VGcm9tQ2FjaGUoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pCkBAIC0yNjYsNyArMjY3LDcg
QEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlSW1hZ2VGcm9tQ2FjaGUoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgZG9tYWluRm9yQ2EKIAogICAgIC8vIEEgcmVzb3VyY2UgZXhpc3RzIGFu
ZCBpcyBub3QgYSBtYW51YWxseSBjYWNoZWQgaW1hZ2UsIHNvIGp1c3QgcmVtb3ZlIGl0LgogICAg
IGlmICghaXM8Q2FjaGVkSW1hZ2U+KCpyZXNvdXJjZSkgfHwgIWRvd25jYXN0PENhY2hlZEltYWdl
PigqcmVzb3VyY2UpLmlzTWFudWFsbHlDYWNoZWQoKSkgewotICAgICAgICByZW1vdmUocmVzb3Vy
Y2UpOworICAgICAgICByZW1vdmUoKnJlc291cmNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMzgzLDcgKzM4NCw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lRGVhZFJlc291cmNl
c1RvU2l6ZSh1bnNpZ25lZCB0YXJnZXRTaXplKQogICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHByZXZpb3VzID0gY3VycmVudC0+bV9wcmV2SW5BbGxSZXNv
dXJjZXNMaXN0OwogICAgICAgICAgICAgQVNTRVJUKCFwcmV2aW91cyB8fCBwcmV2aW91cy0+aW5D
YWNoZSgpKTsKICAgICAgICAgICAgIGlmICghY3VycmVudC0+aGFzQ2xpZW50cygpICYmICFjdXJy
ZW50LT5pc1ByZWxvYWRlZCgpICYmICFjdXJyZW50LT5pc0NhY2hlVmFsaWRhdG9yKCkpIHsKLSAg
ICAgICAgICAgICAgICByZW1vdmUoY3VycmVudCk7CisgICAgICAgICAgICAgICAgcmVtb3ZlKCpj
dXJyZW50KTsKICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0U2l6ZSAmJiBtX2RlYWRTaXplIDw9
IHRhcmdldFNpemUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
QEAgLTQxMSw3MyArNDEyLDczIEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnNldENhcGFjaXRpZXModW5z
aWduZWQgbWluRGVhZEJ5dGVzLCB1bnNpZ25lZCBtYXhEZWFkQnl0ZXMsIHVuCiAgICAgcHJ1bmUo
KTsKIH0KIAotdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlKENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSkKK3ZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7
CiAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwotICAgIExPRyhSZXNvdXJjZUxvYWRp
bmcsICJFdmljdGluZyByZXNvdXJjZSAlcCBmb3IgJyVzJyBmcm9tIGNhY2hlIiwgcmVzb3VyY2Us
IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOworICAgIExPRyhSZXNv
dXJjZUxvYWRpbmcsICJFdmljdGluZyByZXNvdXJjZSAlcCBmb3IgJyVzJyBmcm9tIGNhY2hlIiwg
JnJlc291cmNlLCByZXNvdXJjZS51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogICAg
IC8vIFRoZSByZXNvdXJjZSBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBieSBzb21lb25l
IG90aGVyIHRoYW4gb3VyIGNhbGxlciwKICAgICAvLyB3aG8gbmVlZGVkIGEgZnJlc2ggY29weSBm
b3IgYSByZWxvYWQuIFNlZSA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI0NzkjYzY+LgotICAgIENhY2hlZFJlc291cmNlTWFwJiByZXNvdXJjZXMgPSBnZXRTZXNzaW9u
TWFwKHJlc291cmNlLT5zZXNzaW9uSUQoKSk7Ci0gICAgaWYgKHJlc291cmNlLT5pbkNhY2hlKCkp
IHsKKyAgICBDYWNoZWRSZXNvdXJjZU1hcCYgcmVzb3VyY2VzID0gZ2V0U2Vzc2lvbk1hcChyZXNv
dXJjZS5zZXNzaW9uSUQoKSk7CisgICAgaWYgKHJlc291cmNlLmluQ2FjaGUoKSkgewogICAgICAg
ICAvLyBSZW1vdmUgZnJvbSB0aGUgcmVzb3VyY2UgbWFwLgogI2lmIEVOQUJMRShDQUNIRV9QQVJU
SVRJT05JTkcpCi0gICAgICAgIENhY2hlZFJlc291cmNlSXRlbSogaXRlbSA9IHJlc291cmNlcy5n
ZXQocmVzb3VyY2UtPnVybCgpKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VJdGVtKiBpdGVtID0g
cmVzb3VyY2VzLmdldChyZXNvdXJjZS51cmwoKSk7CiAgICAgICAgIGlmIChpdGVtKSB7Ci0gICAg
ICAgICAgICBpdGVtLT5yZW1vdmUocmVzb3VyY2UtPmNhY2hlUGFydGl0aW9uKCkpOworICAgICAg
ICAgICAgaXRlbS0+cmVtb3ZlKHJlc291cmNlLmNhY2hlUGFydGl0aW9uKCkpOwogICAgICAgICAg
ICAgaWYgKCFpdGVtLT5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmVzb3VyY2VzLnJlbW92ZShy
ZXNvdXJjZS0+dXJsKCkpOworICAgICAgICAgICAgICAgIHJlc291cmNlcy5yZW1vdmUocmVzb3Vy
Y2UudXJsKCkpOwogICAgICAgICB9CiAjZWxzZQotICAgICAgICByZXNvdXJjZXMucmVtb3ZlKHJl
c291cmNlLT51cmwoKSk7CisgICAgICAgIHJlc291cmNlcy5yZW1vdmUocmVzb3VyY2UudXJsKCkp
OwogI2VuZGlmCi0gICAgICAgIHJlc291cmNlLT5zZXRJbkNhY2hlKGZhbHNlKTsKKyAgICAgICAg
cmVzb3VyY2Uuc2V0SW5DYWNoZShmYWxzZSk7CiAKICAgICAgICAgLy8gUmVtb3ZlIGZyb20gdGhl
IGFwcHJvcHJpYXRlIExSVSBsaXN0LgogICAgICAgICByZW1vdmVGcm9tTFJVTGlzdChyZXNvdXJj
ZSk7CiAgICAgICAgIHJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QocmVzb3VyY2Up
OwotICAgICAgICBhZGp1c3RTaXplKHJlc291cmNlLT5oYXNDbGllbnRzKCksIC1zdGF0aWNfY2Fz
dDxpbnQ+KHJlc291cmNlLT5zaXplKCkpKTsKKyAgICAgICAgYWRqdXN0U2l6ZShyZXNvdXJjZS5o
YXNDbGllbnRzKCksIC1zdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlLnNpemUoKSkpOwogICAgIH0g
ZWxzZQogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgICAgIEFTU0VSVCghcmVz
b3VyY2VzLmdldChyZXNvdXJjZS0+dXJsKCkpIHx8IHJlc291cmNlcy5nZXQocmVzb3VyY2UtPnVy
bCgpKS0+Z2V0KHJlc291cmNlLT5jYWNoZVBhcnRpdGlvbigpKSAhPSByZXNvdXJjZSk7CisgICAg
ICAgIEFTU0VSVCghcmVzb3VyY2VzLmdldChyZXNvdXJjZS51cmwoKSkgfHwgcmVzb3VyY2VzLmdl
dChyZXNvdXJjZS51cmwoKSktPmdldChyZXNvdXJjZS5jYWNoZVBhcnRpdGlvbigpKSAhPSAmcmVz
b3VyY2UpOwogI2Vsc2UKLSAgICAgICAgQVNTRVJUKHJlc291cmNlcy5nZXQocmVzb3VyY2UtPnVy
bCgpKSAhPSByZXNvdXJjZSk7CisgICAgICAgIEFTU0VSVChyZXNvdXJjZXMuZ2V0KHJlc291cmNl
LnVybCgpKSAhPSAmcmVzb3VyY2UpOwogI2VuZGlmCiAKLSAgICByZXNvdXJjZS0+ZGVsZXRlSWZQ
b3NzaWJsZSgpOworICAgIHJlc291cmNlLmRlbGV0ZUlmUG9zc2libGUoKTsKIH0KIAotTWVtb3J5
Q2FjaGU6OkxSVUxpc3QqIE1lbW9yeUNhY2hlOjpscnVMaXN0Rm9yKENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSkKK01lbW9yeUNhY2hlOjpMUlVMaXN0KiBNZW1vcnlDYWNoZTo6bHJ1TGlzdEZvcihD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgdW5zaWduZWQgYWNjZXNzQ291bnQgPSBz
dGQ6Om1heChyZXNvdXJjZS0+YWNjZXNzQ291bnQoKSwgMVUpOwotICAgIHVuc2lnbmVkIHF1ZXVl
SW5kZXggPSBXVEY6OmZhc3RMb2cyKHJlc291cmNlLT5zaXplKCkgLyBhY2Nlc3NDb3VudCk7Cisg
ICAgdW5zaWduZWQgYWNjZXNzQ291bnQgPSBzdGQ6Om1heChyZXNvdXJjZS5hY2Nlc3NDb3VudCgp
LCAxVSk7CisgICAgdW5zaWduZWQgcXVldWVJbmRleCA9IFdURjo6ZmFzdExvZzIocmVzb3VyY2Uu
c2l6ZSgpIC8gYWNjZXNzQ291bnQpOwogI2lmbmRlZiBOREVCVUcKLSAgICByZXNvdXJjZS0+bV9s
cnVJbmRleCA9IHF1ZXVlSW5kZXg7CisgICAgcmVzb3VyY2UubV9scnVJbmRleCA9IHF1ZXVlSW5k
ZXg7CiAjZW5kaWYKICAgICBpZiAobV9hbGxSZXNvdXJjZXMuc2l6ZSgpIDw9IHF1ZXVlSW5kZXgp
CiAgICAgICAgIG1fYWxsUmVzb3VyY2VzLmdyb3cocXVldWVJbmRleCArIDEpOwogICAgIHJldHVy
biAmbV9hbGxSZXNvdXJjZXNbcXVldWVJbmRleF07CiB9CiAKLXZvaWQgTWVtb3J5Q2FjaGU6OnJl
bW92ZUZyb21MUlVMaXN0KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3ZvaWQgTWVtb3J5Q2Fj
aGU6OnJlbW92ZUZyb21MUlVMaXN0KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHsKICAgICAv
LyBJZiB3ZSd2ZSBuZXZlciBiZWVuIGFjY2Vzc2VkLCB0aGVuIHdlJ3JlIGJyYW5kIG5ldyBhbmQg
bm90IGluIGFueSBsaXN0LgotICAgIGlmIChyZXNvdXJjZS0+YWNjZXNzQ291bnQoKSA9PSAwKQor
ICAgIGlmICghcmVzb3VyY2UuYWNjZXNzQ291bnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYg
IUFTU0VSVF9ESVNBQkxFRAotICAgIHVuc2lnbmVkIG9sZExpc3RJbmRleCA9IHJlc291cmNlLT5t
X2xydUluZGV4OworICAgIHVuc2lnbmVkIG9sZExpc3RJbmRleCA9IHJlc291cmNlLm1fbHJ1SW5k
ZXg7CiAjZW5kaWYKIAogICAgIExSVUxpc3QqIGxpc3QgPSBscnVMaXN0Rm9yKHJlc291cmNlKTsK
IAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgbGlzdCB3ZSBn
b3QgaXMgdGhlIGxpc3Qgd2Ugd2FudC4KLSAgICBBU1NFUlQocmVzb3VyY2UtPm1fbHJ1SW5kZXgg
PT0gb2xkTGlzdEluZGV4KTsKKyAgICBBU1NFUlQocmVzb3VyY2UubV9scnVJbmRleCA9PSBvbGRM
aXN0SW5kZXgpOwogCiAgICAgLy8gVmVyaWZ5IHRoYXQgd2UgYXJlIGluIGZhY3QgaW4gdGhpcyBs
aXN0LgogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICBmb3IgKENhY2hlZFJlc291cmNlKiBj
dXJyZW50ID0gbGlzdC0+bV9oZWFkOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bV9uZXh0
SW5BbGxSZXNvdXJjZXNMaXN0KSB7Ci0gICAgICAgIGlmIChjdXJyZW50ID09IHJlc291cmNlKSB7
CisgICAgICAgIGlmIChjdXJyZW50ID09ICZyZXNvdXJjZSkgewogICAgICAgICAgICAgZm91bmQg
PSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTQ4NSw0OSArNDg2LDQ5
IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZUZyb21MUlVMaXN0KENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSkKICAgICBBU1NFUlQoZm91bmQpOwogI2VuZGlmCiAKLSAgICBDYWNoZWRSZXNvdXJj
ZSogbmV4dCA9IHJlc291cmNlLT5tX25leHRJbkFsbFJlc291cmNlc0xpc3Q7Ci0gICAgQ2FjaGVk
UmVzb3VyY2UqIHByZXYgPSByZXNvdXJjZS0+bV9wcmV2SW5BbGxSZXNvdXJjZXNMaXN0OworICAg
IENhY2hlZFJlc291cmNlKiBuZXh0ID0gcmVzb3VyY2UubV9uZXh0SW5BbGxSZXNvdXJjZXNMaXN0
OworICAgIENhY2hlZFJlc291cmNlKiBwcmV2ID0gcmVzb3VyY2UubV9wcmV2SW5BbGxSZXNvdXJj
ZXNMaXN0OwogICAgIAotICAgIGlmIChuZXh0ID09IDAgJiYgcHJldiA9PSAwICYmIGxpc3QtPm1f
aGVhZCAhPSByZXNvdXJjZSkKKyAgICBpZiAoIW5leHQgJiYgIXByZXYgJiYgbGlzdC0+bV9oZWFk
ICE9ICZyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHJlc291cmNlLT5tX25l
eHRJbkFsbFJlc291cmNlc0xpc3QgPSAwOwotICAgIHJlc291cmNlLT5tX3ByZXZJbkFsbFJlc291
cmNlc0xpc3QgPSAwOworICAgIHJlc291cmNlLm1fbmV4dEluQWxsUmVzb3VyY2VzTGlzdCA9IG51
bGxwdHI7CisgICAgcmVzb3VyY2UubV9wcmV2SW5BbGxSZXNvdXJjZXNMaXN0ID0gbnVsbHB0cjsK
ICAgICAKICAgICBpZiAobmV4dCkKICAgICAgICAgbmV4dC0+bV9wcmV2SW5BbGxSZXNvdXJjZXNM
aXN0ID0gcHJldjsKLSAgICBlbHNlIGlmIChsaXN0LT5tX3RhaWwgPT0gcmVzb3VyY2UpCisgICAg
ZWxzZSBpZiAobGlzdC0+bV90YWlsID09ICZyZXNvdXJjZSkKICAgICAgICAgbGlzdC0+bV90YWls
ID0gcHJldjsKIAogICAgIGlmIChwcmV2KQogICAgICAgICBwcmV2LT5tX25leHRJbkFsbFJlc291
cmNlc0xpc3QgPSBuZXh0OwotICAgIGVsc2UgaWYgKGxpc3QtPm1faGVhZCA9PSByZXNvdXJjZSkK
KyAgICBlbHNlIGlmIChsaXN0LT5tX2hlYWQgPT0gJnJlc291cmNlKQogICAgICAgICBsaXN0LT5t
X2hlYWQgPSBuZXh0OwogfQogCi12b2lkIE1lbW9yeUNhY2hlOjppbnNlcnRJbkxSVUxpc3QoQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9pZCBNZW1vcnlDYWNoZTo6aW5zZXJ0SW5MUlVMaXN0
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHsKICAgICAvLyBNYWtlIHN1cmUgd2UgYXJlbid0
IGluIHNvbWUgbGlzdCBhbHJlYWR5LgotICAgIEFTU0VSVCghcmVzb3VyY2UtPm1fbmV4dEluQWxs
UmVzb3VyY2VzTGlzdCAmJiAhcmVzb3VyY2UtPm1fcHJldkluQWxsUmVzb3VyY2VzTGlzdCk7Ci0g
ICAgQVNTRVJUKHJlc291cmNlLT5pbkNhY2hlKCkpOwotICAgIEFTU0VSVChyZXNvdXJjZS0+YWNj
ZXNzQ291bnQoKSA+IDApOworICAgIEFTU0VSVCghcmVzb3VyY2UubV9uZXh0SW5BbGxSZXNvdXJj
ZXNMaXN0ICYmICFyZXNvdXJjZS5tX3ByZXZJbkFsbFJlc291cmNlc0xpc3QpOworICAgIEFTU0VS
VChyZXNvdXJjZS5pbkNhY2hlKCkpOworICAgIEFTU0VSVChyZXNvdXJjZS5hY2Nlc3NDb3VudCgp
ID4gMCk7CiAgICAgCiAgICAgTFJVTGlzdCogbGlzdCA9IGxydUxpc3RGb3IocmVzb3VyY2UpOwog
Ci0gICAgcmVzb3VyY2UtPm1fbmV4dEluQWxsUmVzb3VyY2VzTGlzdCA9IGxpc3QtPm1faGVhZDsK
KyAgICByZXNvdXJjZS5tX25leHRJbkFsbFJlc291cmNlc0xpc3QgPSBsaXN0LT5tX2hlYWQ7CiAg
ICAgaWYgKGxpc3QtPm1faGVhZCkKLSAgICAgICAgbGlzdC0+bV9oZWFkLT5tX3ByZXZJbkFsbFJl
c291cmNlc0xpc3QgPSByZXNvdXJjZTsKLSAgICBsaXN0LT5tX2hlYWQgPSByZXNvdXJjZTsKKyAg
ICAgICAgbGlzdC0+bV9oZWFkLT5tX3ByZXZJbkFsbFJlc291cmNlc0xpc3QgPSAmcmVzb3VyY2U7
CisgICAgbGlzdC0+bV9oZWFkID0gJnJlc291cmNlOwogICAgIAotICAgIGlmICghcmVzb3VyY2Ut
Pm1fbmV4dEluQWxsUmVzb3VyY2VzTGlzdCkKLSAgICAgICAgbGlzdC0+bV90YWlsID0gcmVzb3Vy
Y2U7CisgICAgaWYgKCFyZXNvdXJjZS5tX25leHRJbkFsbFJlc291cmNlc0xpc3QpCisgICAgICAg
IGxpc3QtPm1fdGFpbCA9ICZyZXNvdXJjZTsKICAgICAgICAgCiAjaWYgIUFTU0VSVF9ESVNBQkxF
RAogICAgIC8vIFZlcmlmeSB0aGF0IHdlIGFyZSBpbiBub3cgaW4gdGhlIGxpc3QgbGlrZSB3ZSBz
aG91bGQgYmUuCiAgICAgbGlzdCA9IGxydUxpc3RGb3IocmVzb3VyY2UpOwogICAgIGJvb2wgZm91
bmQgPSBmYWxzZTsKICAgICBmb3IgKENhY2hlZFJlc291cmNlKiBjdXJyZW50ID0gbGlzdC0+bV9o
ZWFkOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bV9uZXh0SW5BbGxSZXNvdXJjZXNMaXN0
KSB7Ci0gICAgICAgIGlmIChjdXJyZW50ID09IHJlc291cmNlKSB7CisgICAgICAgIGlmIChjdXJy
ZW50ID09ICZyZXNvdXJjZSkgewogICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTUzNywzMyArNTM4LDMzIEBAIHZvaWQgTWVtb3J5Q2Fj
aGU6Omluc2VydEluTFJVTGlzdChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAKIH0KIAotdm9p
ZCBNZW1vcnlDYWNoZTo6cmVzb3VyY2VBY2Nlc3NlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Up
Cit2b2lkIE1lbW9yeUNhY2hlOjpyZXNvdXJjZUFjY2Vzc2VkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSkKIHsKLSAgICBBU1NFUlQocmVzb3VyY2UtPmluQ2FjaGUoKSk7CisgICAgQVNTRVJUKHJl
c291cmNlLmluQ2FjaGUoKSk7CiAgICAgCiAgICAgLy8gTmVlZCB0byBtYWtlIHN1cmUgdG8gcmVt
b3ZlIGJlZm9yZSB3ZSBpbmNyZWFzZSB0aGUgYWNjZXNzIGNvdW50LCBzaW5jZQogICAgIC8vIHRo
ZSBxdWV1ZSB3aWxsIHBvc3NpYmx5IGNoYW5nZS4KICAgICByZW1vdmVGcm9tTFJVTGlzdChyZXNv
dXJjZSk7CiAgICAgCiAgICAgLy8gSWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB0aGUgcmVzb3Vy
Y2UgaGFzIGJlZW4gYWNjZXNzZWQsIGFkanVzdCB0aGUgc2l6ZSBvZiB0aGUgY2FjaGUgdG8gYWNj
b3VudCBmb3IgaXRzIGluaXRpYWwgc2l6ZS4KLSAgICBpZiAoIXJlc291cmNlLT5hY2Nlc3NDb3Vu
dCgpKQotICAgICAgICBhZGp1c3RTaXplKHJlc291cmNlLT5oYXNDbGllbnRzKCksIHJlc291cmNl
LT5zaXplKCkpOworICAgIGlmICghcmVzb3VyY2UuYWNjZXNzQ291bnQoKSkKKyAgICAgICAgYWRq
dXN0U2l6ZShyZXNvdXJjZS5oYXNDbGllbnRzKCksIHJlc291cmNlLnNpemUoKSk7CiAgICAgCiAg
ICAgLy8gQWRkIHRvIG91ciBhY2Nlc3MgY291bnQuCi0gICAgcmVzb3VyY2UtPmluY3JlYXNlQWNj
ZXNzQ291bnQoKTsKKyAgICByZXNvdXJjZS5pbmNyZWFzZUFjY2Vzc0NvdW50KCk7CiAgICAgCiAg
ICAgLy8gTm93IGluc2VydCBpbnRvIHRoZSBuZXcgcXVldWUuCiAgICAgaW5zZXJ0SW5MUlVMaXN0
KHJlc291cmNlKTsKIH0KIAotdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0aE9y
aWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQordm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVz
b3VyY2VzV2l0aE9yaWdpbihTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogewogICAgIFZlY3RvcjxD
YWNoZWRSZXNvdXJjZSo+IHJlc291cmNlc1dpdGhPcmlnaW47CiAKICAgICBmb3IgKGF1dG8mIHJl
c291cmNlcyA6IG1fc2Vzc2lvblJlc291cmNlcykgewogICAgICAgICBDYWNoZWRSZXNvdXJjZU1h
cDo6aXRlcmF0b3IgZSA9IHJlc291cmNlcy52YWx1ZS0+ZW5kKCk7CiAjaWYgRU5BQkxFKENBQ0hF
X1BBUlRJVElPTklORykKLSAgICAgICAgU3RyaW5nIG9yaWdpblBhcnRpdGlvbiA9IFJlc291cmNl
UmVxdWVzdDo6cGFydGl0aW9uTmFtZShvcmlnaW4tPmhvc3QoKSk7CisgICAgICAgIFN0cmluZyBv
cmlnaW5QYXJ0aXRpb24gPSBSZXNvdXJjZVJlcXVlc3Q6OnBhcnRpdGlvbk5hbWUob3JpZ2luLmhv
c3QoKSk7CiAjZW5kaWYKIAogICAgICAgICBmb3IgKENhY2hlZFJlc291cmNlTWFwOjppdGVyYXRv
ciBpdCA9IHJlc291cmNlcy52YWx1ZS0+YmVnaW4oKTsgaXQgIT0gZTsgKytpdCkgewpAQCAtNTgx
LDcgKzU4Miw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4o
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICAgICAgICAgICAgICBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IHJlc291cmNlT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
cmVzb3VyY2UtPnVybCgpKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc291cmNlT3JpZ2luKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAocmVzb3Vy
Y2VPcmlnaW4tPmVxdWFsKG9yaWdpbikpCisgICAgICAgICAgICAgICAgaWYgKHJlc291cmNlT3Jp
Z2luLT5lcXVhbCgmb3JpZ2luKSkKICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzV2l0aE9y
aWdpbi5hcHBlbmQocmVzb3VyY2UpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAg
ICAgICAgICAgICB9CkBAIC01ODksOCArNTkwLDggQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3Zl
UmVzb3VyY2VzV2l0aE9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXNvdXJjZXNXaXRoT3JpZ2luLnNp
emUoKTsgKytpKQotICAgICAgICByZW1vdmUocmVzb3VyY2VzV2l0aE9yaWdpbltpXSk7CisgICAg
Zm9yIChhdXRvKiByZXNvdXJjZSA6IHJlc291cmNlc1dpdGhPcmlnaW4pCisgICAgICAgIHJlbW92
ZSgqcmVzb3VyY2UpOwogfQogCiB2b2lkIE1lbW9yeUNhY2hlOjpnZXRPcmlnaW5zV2l0aENhY2hl
KFNlY3VyaXR5T3JpZ2luU2V0JiBvcmlnaW5zKQpAQCAtNjEzLDI4ICs2MTQsMjggQEAgdm9pZCBN
ZW1vcnlDYWNoZTo6Z2V0T3JpZ2luc1dpdGhDYWNoZShTZWN1cml0eU9yaWdpblNldCYgb3JpZ2lu
cykKICAgICB9CiB9CiAKLXZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZUZyb21MaXZlRGVjb2RlZFJl
c291cmNlc0xpc3QoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9pZCBNZW1vcnlDYWNoZTo6
cmVtb3ZlRnJvbUxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UpCiB7Ci0gICAgbV9saXZlRGVjb2RlZFJlc291cmNlcy5yZW1vdmUocmVzb3VyY2UpOworICAg
IG1fbGl2ZURlY29kZWRSZXNvdXJjZXMucmVtb3ZlKCZyZXNvdXJjZSk7CiB9CiAKLXZvaWQgTWVt
b3J5Q2FjaGU6Omluc2VydEluTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSkKK3ZvaWQgTWVtb3J5Q2FjaGU6Omluc2VydEluTGl2ZURlY29kZWRSZXNvdXJj
ZXNMaXN0KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHsKICAgICAvLyBNYWtlIHN1cmUgd2Ug
YXJlbid0IGluIHRoZSBsaXN0IGFscmVhZHkuCi0gICAgQVNTRVJUKCFtX2xpdmVEZWNvZGVkUmVz
b3VyY2VzLmNvbnRhaW5zKHJlc291cmNlKSk7Ci0gICAgbV9saXZlRGVjb2RlZFJlc291cmNlcy5h
ZGQocmVzb3VyY2UpOworICAgIEFTU0VSVCghbV9saXZlRGVjb2RlZFJlc291cmNlcy5jb250YWlu
cygmcmVzb3VyY2UpKTsKKyAgICBtX2xpdmVEZWNvZGVkUmVzb3VyY2VzLmFkZCgmcmVzb3VyY2Up
OwogfQogCi12b2lkIE1lbW9yeUNhY2hlOjphZGRUb0xpdmVSZXNvdXJjZXNTaXplKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSkKK3ZvaWQgTWVtb3J5Q2FjaGU6OmFkZFRvTGl2ZVJlc291cmNlc1Np
emUoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIG1fbGl2ZVNpemUgKz0gcmVzb3Vy
Y2UtPnNpemUoKTsKLSAgICBtX2RlYWRTaXplIC09IHJlc291cmNlLT5zaXplKCk7CisgICAgbV9s
aXZlU2l6ZSArPSByZXNvdXJjZS5zaXplKCk7CisgICAgbV9kZWFkU2l6ZSAtPSByZXNvdXJjZS5z
aXplKCk7CiB9CiAKLXZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZUZyb21MaXZlUmVzb3VyY2VzU2l6
ZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVGcm9t
TGl2ZVJlc291cmNlc1NpemUoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIG1fbGl2
ZVNpemUgLT0gcmVzb3VyY2UtPnNpemUoKTsKLSAgICBtX2RlYWRTaXplICs9IHJlc291cmNlLT5z
aXplKCk7CisgICAgbV9saXZlU2l6ZSAtPSByZXNvdXJjZS5zaXplKCk7CisgICAgbV9kZWFkU2l6
ZSArPSByZXNvdXJjZS5zaXplKCk7CiB9CiAKIHZvaWQgTWVtb3J5Q2FjaGU6OmFkanVzdFNpemUo
Ym9vbCBsaXZlLCBpbnQgZGVsdGEpCkBAIC02NDgsMzAgKzY0OSwyOSBAQCB2b2lkIE1lbW9yeUNh
Y2hlOjphZGp1c3RTaXplKGJvb2wgbGl2ZSwgaW50IGRlbHRhKQogICAgIH0KIH0KIAotdm9pZCBN
ZW1vcnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9uQ2FjaGVzKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQg
TWVtb3J5Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlcyhTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0g
ICAgQVNTRVJUKGNvbnRleHQpOwotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRl
eHQpKSB7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkgewogICAgICAg
ICBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGEqIHJlcXVlc3REYXRhID0gcmVxdWVzdC5j
b3B5RGF0YSgpLmxlYWtQdHIoKTsKLSAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KCpjb250ZXh0KS50aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIo
W3JlcXVlc3REYXRhXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkud29ya2VyTG9h
ZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKFtyZXF1ZXN0RGF0YV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIE93blB0cjxSZXNvdXJjZVJlcXVlc3Q+
IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0OjphZG9wdChhZG9wdFB0cihyZXF1ZXN0RGF0YSkpKTsK
LSAgICAgICAgICAgIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMo
JmNvbnRleHQsICpyZXF1ZXN0KTsKKyAgICAgICAgICAgIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXF1
ZXN0RnJvbVNlc3Npb25DYWNoZXMoY29udGV4dCwgKnJlcXVlc3QpOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgcmVzb3VyY2VzIDogbWVtb3J5
Q2FjaGUoKS5tX3Nlc3Npb25SZXNvdXJjZXMpIHsKICAgICAgICAgaWYgKENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCkucmVzb3VyY2VGb3JSZXF1ZXN0SW1wbChyZXF1ZXN0
LCAqcmVzb3VyY2VzLnZhbHVlKSkKLSAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlKHJl
c291cmNlKTsKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkucmVtb3ZlKCpyZXNvdXJjZSk7CiAg
ICAgfQogfQogCi12b2lkIE1lbW9yeUNhY2hlOjpUeXBlU3RhdGlzdGljOjphZGRSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZSogbykKK3ZvaWQgTWVtb3J5Q2FjaGU6OlR5cGVTdGF0aXN0aWM6OmFkZFJl
c291cmNlKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHsKICAgICBjb3VudCsrOwotICAgIHNp
emUgKz0gby0+c2l6ZSgpOwotICAgIGxpdmVTaXplICs9IG8tPmhhc0NsaWVudHMoKSA/IG8tPnNp
emUoKSA6IDA7Ci0gICAgZGVjb2RlZFNpemUgKz0gby0+ZGVjb2RlZFNpemUoKTsKKyAgICBzaXpl
ICs9IHJlc291cmNlLnNpemUoKTsKKyAgICBsaXZlU2l6ZSArPSByZXNvdXJjZS5oYXNDbGllbnRz
KCkgPyByZXNvdXJjZS5zaXplKCkgOiAwOworICAgIGRlY29kZWRTaXplICs9IHJlc291cmNlLmRl
Y29kZWRTaXplKCk7CiB9CiAKIE1lbW9yeUNhY2hlOjpTdGF0aXN0aWNzIE1lbW9yeUNhY2hlOjpn
ZXRTdGF0aXN0aWNzKCkKQEAgLTY4MywxMSArNjgzLDExIEBAIE1lbW9yeUNhY2hlOjpTdGF0aXN0
aWNzIE1lbW9yeUNhY2hlOjpnZXRTdGF0aXN0aWNzKCkKICAgICAgICAgZm9yIChDYWNoZWRSZXNv
dXJjZU1hcDo6aXRlcmF0b3IgaSA9IHJlc291cmNlcy52YWx1ZS0+YmVnaW4oKTsgaSAhPSBlOyAr
K2kpIHsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgICAgICAgICAgZm9yIChD
YWNoZWRSZXNvdXJjZUl0ZW06Oml0ZXJhdG9yIGl0ZW1JdGVyYXRvciA9IGktPnZhbHVlLT5iZWdp
bigpOyBpdGVtSXRlcmF0b3IgIT0gaS0+dmFsdWUtPmVuZCgpOyArK2l0ZW1JdGVyYXRvcikgewot
ICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGl0ZW1JdGVyYXRvci0+
dmFsdWU7CisgICAgICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlID0gKml0ZW1J
dGVyYXRvci0+dmFsdWU7CiAjZWxzZQotICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSA9IGktPnZhbHVlOworICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSA9ICppLT52YWx1ZTsKICNlbmRpZgotICAgICAgICAgICAgICAgIHN3aXRjaCAocmVzb3Vy
Y2UtPnR5cGUoKSkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAocmVzb3VyY2UudHlwZSgpKSB7
CiAgICAgICAgICAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAg
ICAgICAgICAgICAgICAgICAgc3RhdHMuaW1hZ2VzLmFkZFJlc291cmNlKHJlc291cmNlKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC03MjYsMTcgKzcyNiwxNyBAQCB2b2lkIE1lbW9y
eUNhY2hlOjpzZXREaXNhYmxlZChib29sIGRpc2FibGVkKQogICAgICAgICByZXR1cm47CiAKICAg
ICBmb3IgKDs7KSB7Ci0gICAgICAgIFNlc3Npb25DYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0b3Ig
c2Vzc2lvbkl0ZXJhdG9yID0gbV9zZXNzaW9uUmVzb3VyY2VzLmJlZ2luKCk7CisgICAgICAgIGF1
dG8gc2Vzc2lvbkl0ZXJhdG9yID0gbV9zZXNzaW9uUmVzb3VyY2VzLmJlZ2luKCk7CiAgICAgICAg
IGlmIChzZXNzaW9uSXRlcmF0b3IgPT0gbV9zZXNzaW9uUmVzb3VyY2VzLmVuZCgpKQogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIENhY2hlZFJlc291cmNlTWFwOjppdGVyYXRvciBvdXRlckl0
ZXJhdG9yID0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS0+YmVnaW4oKTsKKyAgICAgICAgYXV0byBv
dXRlckl0ZXJhdG9yID0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS0+YmVnaW4oKTsKICAgICAgICAg
aWYgKG91dGVySXRlcmF0b3IgPT0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS0+ZW5kKCkpCiAgICAg
ICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAgICAgICBD
YWNoZWRSZXNvdXJjZUl0ZW06Oml0ZXJhdG9yIGlubmVySXRlcmF0b3IgPSBvdXRlckl0ZXJhdG9y
LT52YWx1ZS0+YmVnaW4oKTsKLSAgICAgICAgcmVtb3ZlKGlubmVySXRlcmF0b3ItPnZhbHVlKTsK
KyAgICAgICAgYXV0byBpbm5lckl0ZXJhdG9yID0gb3V0ZXJJdGVyYXRvci0+dmFsdWUtPmJlZ2lu
KCk7CisgICAgICAgIHJlbW92ZSgqaW5uZXJJdGVyYXRvci0+dmFsdWUpOwogI2Vsc2UKLSAgICAg
ICAgcmVtb3ZlKG91dGVySXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgcmVtb3ZlKCpvdXRlckl0
ZXJhdG9yLT52YWx1ZSk7CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IDUyM2VkNGE1NTkwMmQ3ODFjYjBhNTRlMmVhZDFiZDcy
N2QyYWYwNTcuLjkxY2Y3ZDMwOTAyM2RiNDc1ZGU4MTAyNDM5ZDJlOWUxN2Q2ZmQ3YjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC03OCw3ICs3OCw3IEBA
IHB1YmxpYzoKICAgICAgICAgeyAKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgYWRkUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICAgICAgdm9pZCBhZGRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSYpOwogICAgIH07CiAgICAgCiAgICAgc3RydWN0IFN0YXRpc3RpY3MgewpAQCAtOTIsMTMg
KzkyLDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2VGb3JVUkwoY29uc3QgVVJMJiwgU2Vzc2lvbklEID0gU2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpOwogICAgIFdFQkNPUkVfRVhQT1JUIENhY2hlZFJlc291cmNlKiByZXNvdXJjZUZv
clJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2Vzc2lvbklEKTsKIAotICAgIGJvb2wg
YWRkKENhY2hlZFJlc291cmNlKik7Ci0gICAgdm9pZCByZW1vdmUoQ2FjaGVkUmVzb3VyY2UqKTsK
KyAgICBib29sIGFkZChDYWNoZWRSZXNvdXJjZSYpOworICAgIHZvaWQgcmVtb3ZlKENhY2hlZFJl
c291cmNlJik7CiAKICAgICBzdGF0aWMgVVJMIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVl
ZGVkKGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwpOwogICAgIAotICAgIHZvaWQgcmV2YWxpZGF0aW9u
U3VjY2VlZGVkKENhY2hlZFJlc291cmNlKiByZXZhbGlkYXRpbmdSZXNvdXJjZSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgcmV2YWxpZGF0aW9uRmFpbGVkKENhY2hlZFJlc291
cmNlKiByZXZhbGlkYXRpbmdSZXNvdXJjZSk7CisgICAgdm9pZCByZXZhbGlkYXRpb25TdWNjZWVk
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJldmFsaWRhdGluZ1Jlc291cmNlLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CisgICAgdm9pZCByZXZhbGlkYXRpb25GYWlsZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
dmFsaWRhdGluZ1Jlc291cmNlKTsKICAgICAKICAgICAvLyBTZXRzIHRoZSBjYWNoZSdzIG1lbW9y
eSBjYXBhY2l0aWVzLCBpbiBieXRlcy4gVGhlc2Ugd2lsbCBob2xkIG9ubHkgYXBwcm94aW1hdGVs
eSwgCiAgICAgLy8gc2luY2UgdGhlIGRlY29kZWQgY29zdCBvZiByZXNvdXJjZXMgbGlrZSBzY3Jp
cHRzIGFuZCBzdHlsZXNoZWV0cyBpcyBub3Qga25vd24uCkBAIC0xMjAsMjkgKzEyMCwyOSBAQCBw
dWJsaWM6CiAgICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBkZWFkRGVjb2RlZERhdGFEZWxl
dGlvbkludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9kZWFkRGVjb2RlZERhdGFEZWxldGlvbklu
dGVydmFsOyB9CiAKICAgICAvLyBDYWxscyB0byBwdXQgdGhlIGNhY2hlZCByZXNvdXJjZSBpbnRv
IGFuZCBvdXQgb2YgTFJVIGxpc3RzLgotICAgIHZvaWQgaW5zZXJ0SW5MUlVMaXN0KENhY2hlZFJl
c291cmNlKik7Ci0gICAgdm9pZCByZW1vdmVGcm9tTFJVTGlzdChDYWNoZWRSZXNvdXJjZSopOwor
ICAgIHZvaWQgaW5zZXJ0SW5MUlVMaXN0KENhY2hlZFJlc291cmNlJik7CisgICAgdm9pZCByZW1v
dmVGcm9tTFJVTGlzdChDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgLy8gQ2FsbGVkIHRvIGFkanVz
dCB0aGUgY2FjaGUgdG90YWxzIHdoZW4gYSByZXNvdXJjZSBjaGFuZ2VzIHNpemUuCiAgICAgdm9p
ZCBhZGp1c3RTaXplKGJvb2wgbGl2ZSwgaW50IGRlbHRhKTsKIAogICAgIC8vIFRyYWNrIGRlY29k
ZWQgcmVzb3VyY2VzIHRoYXQgYXJlIGluIHRoZSBjYWNoZSBhbmQgcmVmZXJlbmNlZCBieSBhIFdl
YiBwYWdlLgotICAgIHZvaWQgaW5zZXJ0SW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoQ2FjaGVk
UmVzb3VyY2UqKTsKLSAgICB2b2lkIHJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3Qo
Q2FjaGVkUmVzb3VyY2UqKTsKKyAgICB2b2lkIGluc2VydEluTGl2ZURlY29kZWRSZXNvdXJjZXNM
aXN0KENhY2hlZFJlc291cmNlJik7CisgICAgdm9pZCByZW1vdmVGcm9tTGl2ZURlY29kZWRSZXNv
dXJjZXNMaXN0KENhY2hlZFJlc291cmNlJik7CiAKLSAgICB2b2lkIGFkZFRvTGl2ZVJlc291cmNl
c1NpemUoQ2FjaGVkUmVzb3VyY2UqKTsKLSAgICB2b2lkIHJlbW92ZUZyb21MaXZlUmVzb3VyY2Vz
U2l6ZShDYWNoZWRSZXNvdXJjZSopOworICAgIHZvaWQgYWRkVG9MaXZlUmVzb3VyY2VzU2l6ZShD
YWNoZWRSZXNvdXJjZSYpOworICAgIHZvaWQgcmVtb3ZlRnJvbUxpdmVSZXNvdXJjZXNTaXplKENh
Y2hlZFJlc291cmNlJik7CiAKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVSZXF1ZXN0RnJvbVNlc3Np
b25DYWNoZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OworICAgIHN0YXRpYyB2b2lkIHJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlcyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKICAgICAvLyBGdW5j
dGlvbiB0byBjb2xsZWN0IGNhY2hlIHN0YXRpc3RpY3MgZm9yIHRoZSBjYWNoZXMgd2luZG93IGlu
IHRoZSBTYWZhcmkgRGVidWcgbWVudS4KICAgICBXRUJDT1JFX0VYUE9SVCBTdGF0aXN0aWNzIGdl
dFN0YXRpc3RpY3MoKTsKICAgICAKLSAgICB2b2lkIHJlc291cmNlQWNjZXNzZWQoQ2FjaGVkUmVz
b3VyY2UqKTsKKyAgICB2b2lkIHJlc291cmNlQWNjZXNzZWQoQ2FjaGVkUmVzb3VyY2UmKTsKICAg
ICBib29sIGluTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkgY29uc3QgeyByZXR1cm4gbV9saXZlRGVjb2RlZFJlc291cmNlcy5jb250YWlucygmcmVzb3Vy
Y2UpOyB9CiAKICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gU2Vj
dXJpdHlPcmlnaW5TZXQ7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVSZXNvdXJjZXNX
aXRoT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1v
dmVSZXNvdXJjZXNXaXRoT3JpZ2luKFNlY3VyaXR5T3JpZ2luJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnZXRPcmlnaW5zV2l0aENhY2hlKFNlY3VyaXR5T3JpZ2luU2V0JiBvcmlnaW5zKTsK
IAogI2lmIFVTRShDRykKQEAgLTE3Niw3ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIE1lbW9yeUNh
Y2hlKCk7CiAgICAgfk1lbW9yeUNhY2hlKCk7IC8vIE5vdCBpbXBsZW1lbnRlZCB0byBtYWtlIHN1
cmUgbm9ib2R5IGFjY2lkZW50YWxseSBjYWxscyBkZWxldGUgLS0gV2ViQ29yZSBkb2VzIG5vdCBk
ZWxldGUgc2luZ2xldG9ucy4KIAotICAgIExSVUxpc3QqIGxydUxpc3RGb3IoQ2FjaGVkUmVzb3Vy
Y2UqKTsKKyAgICBMUlVMaXN0KiBscnVMaXN0Rm9yKENhY2hlZFJlc291cmNlJik7CiAjaWZuZGVm
IE5ERUJVRwogICAgIHZvaWQgZHVtcFN0YXRzKCk7CiAgICAgdm9pZCBkdW1wTFJVTGlzdHMoYm9v
bCBpbmNsdWRlTGl2ZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NYXNrSW1hZ2VPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWFza0ltYWdlT3BlcmF0aW9uLmNwcAppbmRleCA0YTdhY2Q4ZGIwNzdlNjkw
YWY2YjQ5ZjE2Njc5YjM1ZmVjZDgwZTAwLi40Mjk5YTQwMTE5MGYyZDBkN2QzYjA2N2VhOTgzM2Yy
ZDNkMWVjY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
YXNrSW1hZ2VPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01hc2tJbWFnZU9wZXJhdGlvbi5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIE1hc2tJ
bWFnZU9wZXJhdGlvbjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQog
ICAgICAgICAgICAgICAgIC8vIExldCB0aGUgY2FjaGVkIHJlc291cmNlIGxvYWRlciBvZiB0aGUg
ZG9jdW1lbnQgd2hpY2ggcmVxdWVzdGVkIHRoaXMgbWFzayBrZWVwIGEgaGFuZGxlIHRvIHRoaXMK
ICAgICAgICAgICAgICAgICAvLyBjYWNoZWQgaW1hZ2UgdG8gZW5zdXJlIGl0IG9ubHkgZ2V0cyBk
ZWxldGVkIHdoZW4gaXQgc2hvdWxkLgogICAgICAgICAgICAgICAgIGlmIChtX2NhY2hlZFJlc291
cmNlTG9hZGVyLmdldCgpKQotICAgICAgICAgICAgICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9h
ZGVyLT5hZGRDYWNoZWRSZXNvdXJjZShtX3N0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCkpOworICAg
ICAgICAgICAgICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5hZGRDYWNoZWRSZXNvdXJj
ZSgqbV9zdHlsZUltYWdlLT5jYWNoZWRJbWFnZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICAgICAgLy8gRGVzdHJveSB0aGUgY3VycmVudCBTVkcgZG9jdW1lbnQgYXMg
aXRzIG5vIGxvbmdlciBuZWVkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3Bw
CmluZGV4IDI0ZmVmMTk2ODQzMDM2OWE4ODc5ODg5MmMyMzI3YmU2MzQ5ZGY4NzIuLmRiODJjZWEz
NjU2M2JhNzY1MzhlNTIxMGVlZjllMDFjYTAxZWZhZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNl
Q2FjaGVNYW5hZ2VyLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VDYWNo
ZU1hbmFnZXI6OmNsZWFyQ2FjaGVGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cmlnCiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1lbW9yeUNhY2hl
KCkucmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbihvcmlnaW4uZ2V0KCkpOworICAgIG1lbW9yeUNh
Y2hlKCkucmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbigqb3JpZ2luKTsKIAogI2lmIFVTRShDRlVS
TENBQ0hFKQogICAgIGlmIChyZXNvdXJjZUNhY2hlc1RvQ2xlYXIgIT0gSW5NZW1vcnlSZXNvdXJj
ZUNhY2hlc09ubHkpIHsgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>