<?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>206483</bug_id>
          
          <creation_ts>2020-01-19 05:08:12 -0800</creation_ts>
          <short_desc>[LFC][Integration] Use integration specific layout tree builder and data structures</short_desc>
          <delta_ts>2020-01-19 08:31:11 -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>Layout and Rendering</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1608546</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-19 05:08:12 -0800</bug_when>
    <thetext>Faster layout tree building and more efficient storage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608547</commentid>
    <comment_count>1</comment_count>
      <attachid>388179</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-19 05:19:53 -0800</bug_when>
    <thetext>Created attachment 388179
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608565</commentid>
    <comment_count>2</comment_count>
      <attachid>388179</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-01-19 06:05:46 -0800</bug_when>
    <thetext>Comment on attachment 388179
patch

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

&gt; Source/WebCore/layout/layouttree/LayoutBox.h:75
&gt;  

v.nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608567</commentid>
    <comment_count>3</comment_count>
      <attachid>388187</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-19 06:58:03 -0800</bug_when>
    <thetext>Created attachment 388187
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608579</commentid>
    <comment_count>4</comment_count>
      <attachid>388187</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-19 08:30:33 -0800</bug_when>
    <thetext>Comment on attachment 388187
patch

Clearing flags on attachment: 388187

Committed r254806: &lt;https://trac.webkit.org/changeset/254806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608580</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-19 08:30:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608581</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-19 08:31:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/58720633&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388179</attachid>
            <date>2020-01-19 05:19:53 -0800</date>
            <delta_ts>2020-01-19 06:58:03 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-integration-boxtree.patch</filename>
            <type>text/plain</type>
            <size>33636</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MDY3YjE5NWFmZC4uODQ3NmM5ZDMxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAyMC0wMS0xOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFVzZSBpbnRlZ3JhdGlvbiBzcGVjaWZpYyBs
YXlvdXQgdHJlZSBidWlsZGVyIGFuZCBkYXRhIHN0cnVjdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQ4MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBnZW5lcmljIHRyZWUgYnVpbGRlciBh
bmQgdGhlIExheW91dFRyZWVDb250ZW50IGNsYXNzIGFyZSBub3Qgb3B0aW1hbCBmb3IgaW50ZWdy
YXRlZCBsYXlvdXQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIExheW91dEludGVncmF0aW9u
OjpCb3hUcmVlIHR5cGUgZm9yIGJ1aWxkaW5nIGFuZCBvd25pbmcgTGF5b3V0OjpCb3hlcyBmb3Ig
YSBzaW5nbGUgZmxvdy4KKyAgICAgICAgSXQgYWxzbyBkZXZpcnR1YWxpemVzIExheW91dDo6Qm94
IGZvciBmYXN0ZXIgZGVzdHJ1Y3Rpb24gKHRoZSBvbmx5IHZpcnR1YWwgZnVuY3Rpb24gd2FzIHRo
ZSBkZXN0cnVjdG9yKS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94VHJlZTo6Qm94VHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94VHJlZTo6YnVpbGRUcmVlKToKKworICAgICAgICBPbmx5
IGhhbmRsZSBzdXBwb3J0ZWQgY29udGVudC4KKworICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OkJveFRyZWU6OmxheW91dEJveEZvclJlbmRlcmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hUcmVlOjpyZW5kZXJlckZvckxheW91dEJv
eCBjb25zdCk6CisKKyAgICAgICAgRm9yIHNtYWxsIGNvbnRlbnQganVzdCB0cmF2ZXJzZSB0aGUg
dmVjdG9yLiBDb25zdHJ1Y3QgbG9va3VwIG1hcHMgbGF6aWx5IGZvciBsYXJnZXIgY29udGVudC4K
KworICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29u
dGFpbmVyLmguCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94VHJlZTo6
cm9vdExheW91dEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6Qm94VHJlZTo6cm9vdExheW91dEJveCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6TGluZUxheW91dCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojp0ZXh0Qm94ZXNGb3IgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmVsZW1lbnRC
b3hGb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVM
YXlvdXQ6OnJvb3RMYXlvdXRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnJvb3RMYXlvdXRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmhpdFRlc3QpOgorICAgICAgICAqIGxheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaDoKKyAgICAgICAgKiBs
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCb3g6On5Cb3gpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oOgor
CisgICAgICAgIERldmlydHVhbGl6ZS4KKworICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xh
eW91dENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRhaW5lcjo6
YXBwZW5kQ2hpbGQpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5l
ci5oOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmNyZWF0ZUJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVUZXh0Qm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmNyZWF0ZUNvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3gpOgorCisg
ICAgICAgIEZhY3RvciBvd25lcnNoaXAgaGFuZGxpbmcgdG8gdGhlc2UgY3JlYXRlIGZ1bmN0aW9u
cy4KKworICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6YnVpbGRUYWJsZVN0
cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpidWlsZFN1
YlRyZWUpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFRyZWVDb250ZW50OjphZGRCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRUcmVlQ29udGVudDo6YWRkQ29udGFpbmVy
KToKKworICAgICAgICBQdXQgQm94ZXMgYW5kIENvbnRhaW5lcnMgdG8gZGlmZmVyZW50IG1hcHMg
Zm9yIGNvcnJlY3QgZGVzdHJ1Y3Rpb24uCisKIDIwMjAtMDEtMTggIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjU0NzkwKTogVXBkYXRl
IERlcml2ZWRTb3VyY2VzLXtpbnB1dCxvdXRwdXR9LnhjZmlsZWxpc3QgdG8gZml4IGJ1aWxkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IDdhYmM0N2MzMDRhLi5jZDU2N2FmN2MzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
QEAgLTE0NTUsNiArMTQ1NSw3IEBAIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVC
dWlsZGVyLmNwcAogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwCiBs
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5jcHAKIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL3RleHQvVGV4dFV0aWwuY3BwCitsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Cb3hUcmVlLmNwcAogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uTGluZUxheW91dC5jcHAKIGxheW91dC9pbnZhbGlkYXRpb24vSW52YWxpZGF0aW9uQ29udGV4
dC5jcHAKIGxheW91dC9pbnZhbGlkYXRpb24vSW52YWxpZGF0aW9uU3RhdGUuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDg5
MWEyZmY5MDIuLjRiMjE4OTUxMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODE0LDYgKzQ4MTQsNyBAQAogCQlFM0ZBMzg2
NDFENzE4MTJEMDBBQTU5NTAgLyogUGVuZGluZ1NjcmlwdENsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGQTM4NjExRDcxNkU3NjAwQUE1OTUw
IC8qIFBlbmRpbmdTY3JpcHRDbGllbnQuaCAqLzsgfTsKIAkJRTQwMUMyNzUxN0NFNTNFQzAwQzQx
QTM1IC8qIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MDFDMjc0MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVt
ZW50SXRlcmF0b3JBc3NlcnRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTQwMUUwQTQxQzNDMEI4MzAwRjM0RDEwIC8qIFN0eWxlQ2hhbmdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDAxRTBB
MzFDM0MwQjgzMDBGMzREMTAgLyogU3R5bGVDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNDE4MDI1NTIzRDQ1NDlCMDBGRkIwNzEgLyog
TGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNDE4MDI1MzIzRDQ1NDlBMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdy
YXRpb25Cb3hUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTQxOTA0MUYxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQxOTA0MUUx
Q0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0MjA1MDE3MjE0MTkwMUIwMDY2RUYz
QiAvKiBQcm9jZXNzV2FybWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQyMDUwMTQyMTQxOTAxQTAwNjZFRjNCIC8qIFByb2Nlc3NXYXJtaW5nLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQyNEEz
OUUxMzMwREYwMTAwQ0Y2REM5IC8qIExlZ2FjeVRpbGVHcmlkVGlsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQyNEEzOUQxMzMwREYwMTAwQ0Y2REM5
IC8qIExlZ2FjeVRpbGVHcmlkVGlsZS5oICovOyB9OwpAQCAtMTUxODgsNiArMTUxODksOCBAQAog
CQlFNDAxRTBBMzFDM0MwQjgzMDBGMzREMTAgLyogU3R5bGVDaGFuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVDaGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTQwMUUwQTUxQzNDMENGNzAwRjM0RDEwIC8qIFN0eWxlQ2hhbmdlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlQ2hhbmdlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQwNkYzRkIxMTk4MzA3RDAwOUQ1OUQ2IC8qIENvbG9y
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb2xvckRhdGEu
Y3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db2xvckRhdGEuY3BwOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQlFNDE4MDI1MzIzRDQ1NDlBMDBGRkIwNzEg
LyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExheW91dEludGVncmF0aW9uQm94VHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFNDE4MDI1NjIzRDQ1NEI1MDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hU
cmVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dEludGVncmF0aW9uQm94VHJlZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MTkwNDFFMUNDNjQ4NkIwMEMzNUY1RCAv
KiBGb250U2VsZWN0b3JDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Rm9udFNlbGVjdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MUVB
MDM4MTE5ODM2REIwMDcxMEJDNSAvKiBDU1NQcm9wZXJ0eU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1Byb3BlcnR5TmFtZXMuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NQcm9wZXJ0eU5hbWVzLmNwcDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTQxRUEwMzkxMTk4Mzc0OTAwNzEwQkM1IC8qIENTU1Zh
bHVlS2V5d29yZHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NT
VmFsdWVLZXl3b3Jkcy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1ZhbHVl
S2V5d29yZHMuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMjcz
MDYsNiArMjczMDksOCBAQAogCQlFNEZCNEIxRTIzOTUzNTZGMDAzQzMzNkEgLyogaW50ZWdyYXRp
b24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUU0MTgw
MjU2MjNENDU0QjUwMEZGQjA3MSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwICovLAor
CQkJCUU0MTgwMjUzMjNENDU0OUEwMEZGQjA3MSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUu
aCAqLywKIAkJCQlFNEFCQUJERTIzNjA4OTNEMDBGQTQzNDUgLyogTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmNwcCAqLywKIAkJCQlFNEFCQUJEQjIzNjA4OEZEMDBGQTQzNDUgLyogTGF5b3V0
SW50ZWdyYXRpb25MaW5lTGF5b3V0LmggKi8sCiAJCQkpOwpAQCAtMzIwNDUsNiArMzIwNTAsNyBA
QAogCQkJCTQ1OEZFNDBBMTU4OURGMEIwMDU2MDlFNiAvKiBSZW5kZXJTZWFyY2hGaWVsZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYxMUE1NEYwRjM5MjMzMTAwQzM3ODg0IC8qIFJlbmRlclNlbGVj
dGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUFCMjQ3QTZEMEFGRDYzODMwMDNGQTVGRCAv
KiBSZW5kZXJTbGlkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0MTgwMjU1MjNENDU0OUIwMEZG
QjA3MSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
OTU1QTg4MTYwRDE5OTIwMDg1ODAyNSAvKiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM4QzhGQUUwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjY2ODBFODFDQjcxMDBCMjU5NjUgLyogUmVuZGVyU3R5
bGVDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTI2NTMzYWYzZmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25Cb3hUcmVlLmNwcApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBF
TkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uQm94VHJlZS5oIgorCisjaW5jbHVkZSAiUmVuZGVy
QmxvY2tGbG93LmgiCisjaW5jbHVkZSAiUmVuZGVyQ2hpbGRJdGVyYXRvci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24geworCitzdGF0aWMgY29u
c3RleHByIHNpemVfdCBzbWFsbFRyZWVUaHJlc2hvbGQgPSA4OworCitCb3hUcmVlOjpCb3hUcmVl
KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKKyAgICA6IG1fcm9vdCh7IH0sIFJlbmRlclN0
eWxlOjpjbG9uZShmbG93LnN0eWxlKCkpKQoreworICAgIGJ1aWxkVHJlZShmbG93KTsKK30KKwor
dm9pZCBCb3hUcmVlOjpidWlsZFRyZWUoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93KQorewor
ICAgIGZvciAoYXV0byYgY2hpbGRSZW5kZXJlciA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlck9iamVj
dD4oZmxvdykpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExheW91dDo6Qm94PiBjaGlsZEJv
eDsKKyAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpKSB7CisgICAgICAg
ICAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRl
cmVyKTsKKyAgICAgICAgICAgIGF1dG8gdGV4dENvbnRlbnQgPSBMYXlvdXQ6OlRleHRDb250ZXh0
IHsgdGV4dFJlbmRlcmVyLnRleHQoKSwgdGV4dFJlbmRlcmVyLmNhblVzZVNpbXBsaWZpZWRUZXh0
TWVhc3VyaW5nKCkgfTsKKyAgICAgICAgICAgIGNoaWxkQm94ID0gbWFrZVVuaXF1ZTxMYXlvdXQ6
OkJveD4oV1RGTW92ZSh0ZXh0Q29udGVudCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNT
dHlsZVdpdGhEaXNwbGF5KG1fcm9vdC5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6SW5saW5lKSk7Cisg
ICAgICAgICAgICBjaGlsZEJveC0+c2V0SXNBbm9ueW1vdXMoKTsKKyAgICAgICAgfSBlbHNlIGlm
IChjaGlsZFJlbmRlcmVyLmlzTGluZUJyZWFrKCkpIHsKKyAgICAgICAgICAgIGF1dG8gY2xvbmVk
U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoY2hpbGRSZW5kZXJlci5zdHlsZSgpKTsKKyAgICAg
ICAgICAgIGNsb25lZFN0eWxlLnNldERpc3BsYXkoRGlzcGxheVR5cGU6OklubGluZSk7CisgICAg
ICAgICAgICBjbG9uZWRTdHlsZS5zZXRGbG9hdGluZyhGbG9hdDo6Tm8pOworICAgICAgICAgICAg
Y2hpbGRCb3ggPSBtYWtlVW5pcXVlPExheW91dDo6Qm94PihMYXlvdXQ6OkJveDo6RWxlbWVudEF0
dHJpYnV0ZXMgeyBMYXlvdXQ6OkJveDo6RWxlbWVudFR5cGU6OkhhcmRMaW5lQnJlYWsgfSwgV1RG
TW92ZShjbG9uZWRTdHlsZSkpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChjaGlsZEJveCk7
CisKKyAgICAgICAgbV9yb290LmFwcGVuZENoaWxkKCpjaGlsZEJveCk7CisgICAgICAgIG1fYm94
ZXMuYXBwZW5kKHsgV1RGTW92ZShjaGlsZEJveCksICZjaGlsZFJlbmRlcmVyIH0pOworICAgIH0K
K30KKworY29uc3QgTGF5b3V0OjpCb3gqIEJveFRyZWU6OmxheW91dEJveEZvclJlbmRlcmVyKGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIGNvbnN0Cit7CisgICAgaWYgKG1fYm94ZXMuc2l6
ZSgpIDw9IHNtYWxsVHJlZVRocmVzaG9sZCkgeworICAgICAgICBhdXRvIGluZGV4ID0gbV9ib3hl
cy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGVudHJ5KSB7CisgICAgICAgICAgICByZXR1cm4gZW50
cnkucmVuZGVyZXIgPT0gJnJlbmRlcmVyOworICAgICAgICB9KTsKKyAgICAgICAgaWYgKGluZGV4
ID09IG5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVy
biBtX2JveGVzW2luZGV4XS5ib3guZ2V0KCk7CisgICAgfQorCisgICAgaWYgKG1fcmVuZGVyZXJU
b0JveE1hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fYm94ZXMp
CisgICAgICAgICAgICBtX3JlbmRlcmVyVG9Cb3hNYXAuYWRkKGVudHJ5LnJlbmRlcmVyLCBlbnRy
eS5ib3guZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gbV9yZW5kZXJlclRvQm94TWFwLmdldCgm
cmVuZGVyZXIpOworfQorCitjb25zdCBSZW5kZXJPYmplY3QqIEJveFRyZWU6OnJlbmRlcmVyRm9y
TGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiBib3gpIGNvbnN0Cit7CisgICAgaWYgKG1fYm94
ZXMuc2l6ZSgpIDw9IHNtYWxsVHJlZVRocmVzaG9sZCkgeworICAgICAgICBhdXRvIGluZGV4ID0g
bV9ib3hlcy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGVudHJ5KSB7CisgICAgICAgICAgICByZXR1
cm4gZW50cnkuYm94LmdldCgpID09ICZib3g7CisgICAgICAgIH0pOworICAgICAgICBpZiAoaW5k
ZXggPT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIG1fYm94ZXNbaW5kZXhdLnJlbmRlcmVyOworICAgIH0KKworICAgIGlmIChtX2JveFRvUmVu
ZGVyZXJNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2JveGVz
KQorICAgICAgICAgICAgbV9ib3hUb1JlbmRlcmVyTWFwLmFkZChlbnRyeS5ib3guZ2V0KCksIGVu
dHJ5LnJlbmRlcmVyKTsKKyAgICB9CisgICAgcmV0dXJuIG1fYm94VG9SZW5kZXJlck1hcC5nZXQo
JmJveCk7Cit9CisKK30KK30KKworI2VuZGlmCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40ZjA2MjFhZTI5MAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkJveFRyZWUuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUg
IkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlckJsb2Nr
RmxvdzsKKworbmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKKworY2xhc3MgQm94VHJlZSB7
CitwdWJsaWM6CisgICAgQm94VHJlZShjb25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKKworICAgIGNv
bnN0IExheW91dDo6Q29udGFpbmVyJiByb290TGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9y
b290OyB9CisgICAgTGF5b3V0OjpDb250YWluZXImIHJvb3RMYXlvdXRCb3goKSB7IHJldHVybiBt
X3Jvb3Q7IH0KKworICAgIGNvbnN0IExheW91dDo6Qm94KiBsYXlvdXRCb3hGb3JSZW5kZXJlcihj
b25zdCBSZW5kZXJPYmplY3QmKSBjb25zdDsKKyAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyRm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JikgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBidWlsZFRyZWUoY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CisKKyAgICBMYXlvdXQ6
OkNvbnRhaW5lciBtX3Jvb3Q7CisgICAgc3RydWN0IEJveEFuZFJlbmRlcmVyIHsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPGNvbnN0IExheW91dDo6Qm94PiBib3g7CisgICAgICAgIGNvbnN0IFJl
bmRlck9iamVjdCogcmVuZGVyZXIgeyBudWxscHRyIH07CisgICAgfTsKKyAgICBWZWN0b3I8Qm94
QW5kUmVuZGVyZXIsIDE+IG1fYm94ZXM7CisKKyAgICBtdXRhYmxlIEhhc2hNYXA8Y29uc3QgUmVu
ZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0OjpCb3gqPiBtX3JlbmRlcmVyVG9Cb3hNYXA7CisgICAg
bXV0YWJsZSBIYXNoTWFwPGNvbnN0IExheW91dDo6Qm94KiwgY29uc3QgUmVuZGVyT2JqZWN0Kj4g
bV9ib3hUb1JlbmRlcmVyTWFwOworfTsKKworfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uTGluZUxheW91dC5jcHAKaW5kZXggMmY2Mzk3N2RhNTYuLjFhMzg3ZGQwMWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtNTIsOCArNTIsOCBAQCBuYW1lc3BhY2Ug
TGF5b3V0SW50ZWdyYXRpb24gewogCiBMaW5lTGF5b3V0OjpMaW5lTGF5b3V0KGNvbnN0IFJlbmRl
ckJsb2NrRmxvdyYgZmxvdykKICAgICA6IG1fZmxvdyhmbG93KQorICAgICwgbV9ib3hUcmVlKGZs
b3cpCiB7Ci0gICAgbV90cmVlQ29udGVudCA9IExheW91dDo6VHJlZUJ1aWxkZXI6OmJ1aWxkTGF5
b3V0VHJlZUZvckludGVncmF0aW9uKGZsb3cpOwogfQogCiBMaW5lTGF5b3V0Ojp+TGluZUxheW91
dCgpID0gZGVmYXVsdDsKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBMaW5lTGF5b3V0Ojp1cGRhdGVT
dHlsZSgpCiB2b2lkIExpbmVMYXlvdXQ6OmxheW91dCgpCiB7CiAgICAgaWYgKCFtX2xheW91dFN0
YXRlKSB7Ci0gICAgICAgIG1fbGF5b3V0U3RhdGUuZW1wbGFjZShtX2Zsb3cuZG9jdW1lbnQoKSwg
bV90cmVlQ29udGVudC0+cm9vdExheW91dEJveCgpKTsKKyAgICAgICAgbV9sYXlvdXRTdGF0ZS5l
bXBsYWNlKG1fZmxvdy5kb2N1bWVudCgpLCBtX2JveFRyZWUucm9vdExheW91dEJveCgpKTsKICAg
ICAgICAgbV9sYXlvdXRTdGF0ZS0+c2V0SXNJbnRlZ3JhdGVkUm9vdEJveEZpcnN0Q2hpbGQobV9m
bG93LnBhcmVudCgpLT5maXJzdENoaWxkKCkgPT0gJm1fZmxvdyk7CiAgICAgfQogCkBAIC0xNzYs
NyArMTc2LDcgQEAgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveEl0ZXJhdG9yIExpbmVMYXlv
dXQ6OnRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0JgogICAgIGF1dG8qIGlubGluZUNvbnRl
bnQgPSBkaXNwbGF5SW5saW5lQ29udGVudCgpOwogICAgIGlmICghaW5saW5lQ29udGVudCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICBhdXRvKiBsYXlvdXRCb3ggPSBtX3RyZWVDb250ZW50LT5s
YXlvdXRCb3hGb3JSZW5kZXJlcihyZW5kZXJUZXh0KTsKKyAgICBhdXRvKiBsYXlvdXRCb3ggPSBt
X2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVyVGV4dCk7CiAgICAgQVNTRVJUKGxh
eW91dEJveCk7CiAKICAgICBPcHRpb25hbDxzaXplX3Q+IGZpcnN0SW5kZXg7CkBAIC0yMDEsNyAr
MjAxLDcgQEAgTGluZUxheW91dFRyYXZlcnNhbDo6RWxlbWVudEJveEl0ZXJhdG9yIExpbmVMYXlv
dXQ6OmVsZW1lbnRCb3hGb3IoY29uc3QgUmVuZGVyTGkKICAgICBhdXRvKiBpbmxpbmVDb250ZW50
ID0gZGlzcGxheUlubGluZUNvbnRlbnQoKTsKICAgICBpZiAoIWlubGluZUNvbnRlbnQpCiAgICAg
ICAgIHJldHVybiB7IH07Ci0gICAgYXV0byogbGF5b3V0Qm94ID0gbV90cmVlQ29udGVudC0+bGF5
b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVyTGluZUJyZWFrKTsKKyAgICBhdXRvKiBsYXlvdXRCb3gg
PSBtX2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVyTGluZUJyZWFrKTsKICAgICBB
U1NFUlQobGF5b3V0Qm94KTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5saW5lQ29u
dGVudC0+cnVucy5zaXplKCk7ICsraSkgewpAQCAtMjE1LDEyICsyMTUsMTIgQEAgTGluZUxheW91
dFRyYXZlcnNhbDo6RWxlbWVudEJveEl0ZXJhdG9yIExpbmVMYXlvdXQ6OmVsZW1lbnRCb3hGb3Io
Y29uc3QgUmVuZGVyTGkKIAogY29uc3QgTGF5b3V0OjpDb250YWluZXImIExpbmVMYXlvdXQ6OnJv
b3RMYXlvdXRCb3goKSBjb25zdAogewotICAgIHJldHVybiBtX3RyZWVDb250ZW50LT5yb290TGF5
b3V0Qm94KCk7CisgICAgcmV0dXJuIG1fYm94VHJlZS5yb290TGF5b3V0Qm94KCk7CiB9CiAKIExh
eW91dDo6Q29udGFpbmVyJiBMaW5lTGF5b3V0Ojpyb290TGF5b3V0Qm94KCkKIHsKLSAgICByZXR1
cm4gbV90cmVlQ29udGVudC0+cm9vdExheW91dEJveCgpOworICAgIHJldHVybiBtX2JveFRyZWUu
cm9vdExheW91dEJveCgpOwogfQogCiB2b2lkIExpbmVMYXlvdXQ6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCkBAIC0zMTQsNyArMzE0
LDcgQEAgYm9vbCBMaW5lTGF5b3V0OjpoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1
ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGMKICAgICAgICAgaWYgKHN0eWxlLnZpc2liaWxp
dHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlIHx8IHN0eWxlLnBvaW50ZXJFdmVudHMoKSA9PSBQ
b2ludGVyRXZlbnRzOjpOb25lKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0
byYgcmVuZGVyZXIgPSBjb25zdF9jYXN0PFJlbmRlck9iamVjdCY+KCptX3RyZWVDb250ZW50LT5y
ZW5kZXJlckZvckxheW91dEJveChydW4ubGF5b3V0Qm94KCkpKTsKKyAgICAgICAgYXV0byYgcmVu
ZGVyZXIgPSBjb25zdF9jYXN0PFJlbmRlck9iamVjdCY+KCptX2JveFRyZWUucmVuZGVyZXJGb3JM
YXlvdXRCb3gocnVuLmxheW91dEJveCgpKSk7CiAKICAgICAgICAgcmVuZGVyZXIudXBkYXRlSGl0
VGVzdFJlc3VsdChyZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIHRvTGF5b3V0
U2l6ZShhY2N1bXVsYXRlZE9mZnNldCkpOwogICAgICAgICBpZiAocmVzdWx0LmFkZE5vZGVUb0xp
c3RCYXNlZFRlc3RSZXN1bHQocmVuZGVyZXIubm9kZSgpLCByZXF1ZXN0LCBsb2NhdGlvbkluQ29u
dGFpbmVyLCBydW5SZWN0KSA9PSBIaXRUZXN0UHJvZ3Jlc3M6OlN0b3ApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5
b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25MaW5lTGF5b3V0LmgKaW5kZXggY2Y2MjVjM2E5YzguLmMzN2RjZDRhYTg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5l
TGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoTEFZ
T1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAorI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uQm94
VHJlZS5oIgogI2luY2x1ZGUgIkxheW91dFBvaW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUu
aCIKICNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCkBAIC04Niw3ICs4Nyw3IEBAIHBy
aXZhdGU6CiAgICAgU2hhZG93RGF0YSogZGVidWdUZXh0U2hhZG93KCk7CiAKICAgICBjb25zdCBS
ZW5kZXJCbG9ja0Zsb3cmIG1fZmxvdzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0OjpMYXlv
dXRUcmVlQ29udGVudD4gbV90cmVlQ29udGVudDsKKyAgICBCb3hUcmVlIG1fYm94VHJlZTsKICAg
ICBPcHRpb25hbDxMYXlvdXQ6OkxheW91dFN0YXRlPiBtX2xheW91dFN0YXRlOwogICAgIExheW91
dFVuaXQgbV9jb250ZW50TG9naWNhbEhlaWdodDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAppbmRleCBkNmNlZDQwMGVlOS4uN2Q2NDcxMmQ5
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNw
cApAQCAtNjUsNyArNjUsOCBAQCBCb3g6OkJveChUZXh0Q29udGV4dCYmIHRleHRDb250ZXh0LCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQogCiBCb3g6On5Cb3goKQogewotICAgIHJlbW92ZVJhcmVEYXRh
KCk7CisgICAgaWYgKFVOTElLRUxZKG1faGFzUmFyZURhdGEpKQorICAgICAgICByZW1vdmVSYXJl
RGF0YSgpOwogfQogCiB2b2lkIEJveDo6dXBkYXRlU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIG5l
d1N0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaApp
bmRleCBiYTJiMmM2YTViZi4uY2U1ZTIyM2I0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKIAogICAg
IEJveChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4sIFJlbmRlclN0eWxlJiYpOwogICAgIEJv
eChUZXh0Q29udGV4dCYmLCBSZW5kZXJTdHlsZSYmKTsKLSAgICB2aXJ0dWFsIH5Cb3goKTsKKyAg
ICB+Qm94KCk7CiAKICAgICBib29sIGVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSBjb25z
dDsKICAgICBib29sIGVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFp
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5l
ci5jcHAKaW5kZXggNjRlYTQwMGVkMjIuLjBmNTA1ZjI2MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5jcHAKQEAgLTkxLDYg
KzkxLDE5IEBAIHZvaWQgQ29udGFpbmVyOjpzZXRMYXN0Q2hpbGQoQm94JiBjaGlsZEJveCkKICAg
ICBtX2xhc3RDaGlsZCA9ICZjaGlsZEJveDsKIH0KIAordm9pZCBDb250YWluZXI6OmFwcGVuZENo
aWxkKEJveCYgY2hpbGRCb3gpCit7CisgICAgY2hpbGRCb3guc2V0UGFyZW50KCp0aGlzKTsKKwor
ICAgIGlmIChtX2xhc3RDaGlsZCkgeworICAgICAgICBtX2xhc3RDaGlsZC0+c2V0TmV4dFNpYmxp
bmcoY2hpbGRCb3gpOworICAgICAgICBjaGlsZEJveC5zZXRQcmV2aW91c1NpYmxpbmcoKm1fbGFz
dENoaWxkKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9maXJzdENoaWxkID0gJmNoaWxkQm94Owor
CisgICAgbV9sYXN0Q2hpbGQgPSAmY2hpbGRCb3g7Cit9CisKIH0KIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXIuaAppbmRl
eCA0ZTE4Yzk5MGEyOS4uOTBhMjFiYWFkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0Rmlyc3RDaGlsZChCb3gmKTsKICAgICB2b2lkIHNldExhc3RDaGls
ZChCb3gmKTsKKyAgICB2b2lkIGFwcGVuZENoaWxkKEJveCYpOwogCiBwcml2YXRlOgogICAgIEJv
eCogbV9maXJzdENoaWxkIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDFmZDM5ODY5ZjRh
Li5kYWQzMTI1NTUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtMTU4LDcgKzE1OCwzMSBAQCB2b2lkIFRy
ZWVCdWlsZGVyOjpidWlsZFRyZWUoKQogICAgIGJ1aWxkU3ViVHJlZShtX2xheW91dFRyZWVDb250
ZW50LnJvb3RSZW5kZXJlcigpLCBtX2xheW91dFRyZWVDb250ZW50LnJvb3RMYXlvdXRCb3goKSk7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3go
Y29uc3QgQ29udGFpbmVyJiBwYXJlbnRDb250YWluZXIsIGNvbnN0IFJlbmRlck9iamVjdCYgY2hp
bGRSZW5kZXJlcikKK0JveCYgVHJlZUJ1aWxkZXI6OmNyZWF0ZUJveChPcHRpb25hbDxCb3g6OkVs
ZW1lbnRBdHRyaWJ1dGVzPiBlbGVtZW50QXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSkK
K3sKKyAgICBhdXRvIG5ld0JveCA9IG1ha2VVbmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcywg
V1RGTW92ZShzdHlsZSkpOworICAgIGF1dG8mIGJveCA9ICpuZXdCb3g7CisgICAgbV9sYXlvdXRU
cmVlQ29udGVudC5hZGRCb3goV1RGTW92ZShuZXdCb3gpKTsKKyAgICByZXR1cm4gYm94OworfQor
CitCb3gmIFRyZWVCdWlsZGVyOjpjcmVhdGVUZXh0Qm94KFRleHRDb250ZXh0JiYgdGV4dENvbnRl
bnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCit7CisgICAgYXV0byBuZXdCb3ggPSBtYWtlVW5pcXVl
PEJveD4oV1RGTW92ZSh0ZXh0Q29udGVudCksIFdURk1vdmUoc3R5bGUpKTsKKyAgICBhdXRvJiBi
b3ggPSAqbmV3Qm94OworICAgIG1fbGF5b3V0VHJlZUNvbnRlbnQuYWRkQm94KFdURk1vdmUobmV3
Qm94KSk7CisgICAgcmV0dXJuIGJveDsKK30KKworQ29udGFpbmVyJiBUcmVlQnVpbGRlcjo6Y3Jl
YXRlQ29udGFpbmVyKE9wdGlvbmFsPEJveDo6RWxlbWVudEF0dHJpYnV0ZXM+IGVsZW1lbnRBdHRy
aWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQoreworICAgIGF1dG8gbmV3Q29udGFpbmVyID0g
bWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzLCBXVEZNb3ZlKHN0eWxlKSk7
CisgICAgYXV0byYgY29udGFpbmVyID0gKm5ld0NvbnRhaW5lcjsKKyAgICBtX2xheW91dFRyZWVD
b250ZW50LmFkZENvbnRhaW5lcihXVEZNb3ZlKG5ld0NvbnRhaW5lcikpOworICAgIHJldHVybiBj
b250YWluZXI7Cit9CisKK0JveCogVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveChjb25zdCBD
b250YWluZXImIHBhcmVudENvbnRhaW5lciwgY29uc3QgUmVuZGVyT2JqZWN0JiBjaGlsZFJlbmRl
cmVyKQogewogICAgIGF1dG8gZWxlbWVudEF0dHJpYnV0ZXMgPSBbXSAoY29uc3QgUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIpIC0+IE9wdGlvbmFsPEJveDo6RWxlbWVudEF0dHJpYnV0ZXM+IHsKICAg
ICAgICAgaWYgKHJlbmRlcmVyLmlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIoKSkKQEAgLTE3OCwx
NiArMjAyLDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlv
dXRCb3goY29uc3QgQ29udGFpbmVyJiBwYXJlbnRDb250YWluCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGNoaWxkTGF5b3V0
Qm94OworICAgIEJveCogY2hpbGRMYXlvdXRCb3ggPSBudWxscHRyOwogICAgIGlmIChpczxSZW5k
ZXJUZXh0PihjaGlsZFJlbmRlcmVyKSkgewogICAgICAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBk
b3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKTsKICAgICAgICAgLy8gUmVuZGVyVGV4
dDo6dGV4dCgpIGhhcyBhbHJlYWR5IGFwcGxpZWQgdGV4dC10cmFuc2Zvcm0gYW5kIHRleHQtc2Vj
dXJpdHkgcHJvcGVydGllcy4KICAgICAgICAgU3RyaW5nIHRleHQgPSB0ZXh0UmVuZGVyZXIudGV4
dCgpOwogICAgICAgICBhdXRvIHRleHRDb250ZW50ID0gVGV4dENvbnRleHQgeyB0ZXh0LCBjYW5V
c2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZyh0ZXh0LCBwYXJlbnRDb250YWluZXIuc3R5bGUoKS5m
b250Q2FzY2FkZSgpLCBwYXJlbnRDb250YWluZXIuc3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2Uo
KSkgfTsKICAgICAgICAgaWYgKHBhcmVudENvbnRhaW5lci5zdHlsZSgpLmRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6SW5saW5lKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5p
cXVlPEJveD4oV1RGTW92ZSh0ZXh0Q29udGVudCksIFJlbmRlclN0eWxlOjpjbG9uZShwYXJlbnRD
b250YWluZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSAmY3JlYXRl
VGV4dEJveChXVEZNb3ZlKHRleHRDb250ZW50KSwgUmVuZGVyU3R5bGU6OmNsb25lKHBhcmVudENv
bnRhaW5lci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0
Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KFdURk1vdmUodGV4dENvbnRlbnQpLCBSZW5kZXJTdHlsZTo6
Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRDb250YWluZXIuc3R5bGUoKSwg
RGlzcGxheVR5cGU6OklubGluZSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSAmY3Jl
YXRlVGV4dEJveChXVEZNb3ZlKHRleHRDb250ZW50KSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50Q29udGFpbmVyLnN0eWxlKCksIERpc3BsYXlUeXBl
OjpJbmxpbmUpKTsKICAgICAgICAgY2hpbGRMYXlvdXRCb3gtPnNldElzQW5vbnltb3VzKCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVt
ZW50PihjaGlsZFJlbmRlcmVyKTsKQEAgLTE5OCwxNiArMjIyLDE2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxCb3g+IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgQ29udGFpbmVyJiBwYXJl
bnRDb250YWluCiAgICAgICAgIGlmIChpczxSZW5kZXJMaW5lQnJlYWs+KHJlbmRlcmVyKSkgewog
ICAgICAgICAgICAgY2xvbmVkU3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6SW5saW5lKTsK
ICAgICAgICAgICAgIGNsb25lZFN0eWxlLnNldEZsb2F0aW5nKEZsb2F0OjpObyk7Ci0gICAgICAg
ICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhy
ZW5kZXJlciksIFdURk1vdmUoY2xvbmVkU3R5bGUpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0
Qm94ID0gJmNyZWF0ZUJveChlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoY2xv
bmVkU3R5bGUpKTsKICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJUYWJsZT4ocmVuZGVyZXIp
KSB7CiAgICAgICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIHByaW5jaXBhbCB0YWJsZSB3cmFwcGVy
IGJveCAoYW5kIG5vdCB0aGUgdGFibGUgYm94IGl0c2VsZikuCi0gICAgICAgICAgICBjaGlsZExh
eW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsg
Qm94OjpFbGVtZW50VHlwZTo6VGFibGVXcmFwcGVyQm94IH0sIFdURk1vdmUoY2xvbmVkU3R5bGUp
KTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gJmNyZWF0ZUNvbnRhaW5lcihCb3g6OkVs
ZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVXcmFwcGVyQm94IH0sIFdU
Rk1vdmUoY2xvbmVkU3R5bGUpKTsKICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94LT5zZXRJc0Fu
b255bW91cygpOwogICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlclJlcGxhY2VkPihyZW5kZXJl
cikpIHsKICAgICAgICAgICAgIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6QmxvY2sp
Ci0gICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oZWxlbWVu
dEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKGNsb25lZFN0eWxlKSk7CisgICAgICAgICAg
ICAgICAgY2hpbGRMYXlvdXRCb3ggPSAmY3JlYXRlQm94KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRl
cmVyKSwgV1RGTW92ZShjbG9uZWRTdHlsZSkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVz
KHJlbmRlcmVyKSwgV1RGTW92ZShjbG9uZWRTdHlsZSkpOworICAgICAgICAgICAgICAgIGNoaWxk
TGF5b3V0Qm94ID0gJmNyZWF0ZUJveChlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1v
dmUoY2xvbmVkU3R5bGUpKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCB5ZXQgc3Vw
cG9ydCBhbGwgcmVwbGFjZWQgZWxlbWVudHMgYW5kIHRoaXMgaXMgdGVtcG9yYXJ5IGFueXdheS4K
ICAgICAgICAgICAgIGlmIChjaGlsZExheW91dEJveC0+cmVwbGFjZWQoKSkKICAgICAgICAgICAg
ICAgICBjaGlsZExheW91dEJveC0+cmVwbGFjZWQoKS0+c2V0SW50cmluc2ljU2l6ZShkb3duY2Fz
dDxSZW5kZXJSZXBsYWNlZD4ocmVuZGVyZXIpLmludHJpbnNpY1NpemUoKSk7CkBAIC0yMjMsMjAg
KzI0NywyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0
Qm94KGNvbnN0IENvbnRhaW5lciYgcGFyZW50Q29udGFpbgogICAgICAgICAgICAgICAgIGlmIChh
dXRvIG9mZnNldCA9IGFjY3VtdWxhdGVkT2Zmc2V0Rm9ySW5GbG93UG9zaXRpb25lZENvbnRpbnVh
dGlvbihkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgY2xvbmVkU3R5bGUuc2V0VG9wKHsgb2Zmc2V0LT5oZWlnaHQoKSwgRml4ZWQgfSk7CiAgICAg
ICAgICAgICAgICAgICAgIGNsb25lZFN0eWxlLnNldExlZnQoeyBvZmZzZXQtPndpZHRoKCksIEZp
eGVkIH0pOwotICAgICAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8
Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoY2xvbmVkU3R5
bGUpKTsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSAmY3JlYXRlQ29udGFp
bmVyKGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RGTW92ZShjbG9uZWRTdHlsZSkpOwog
ICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBjaGlsZExheW91dEJv
eCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdU
Rk1vdmUoY2xvbmVkU3R5bGUpKTsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gg
PSAmY3JlYXRlQ29udGFpbmVyKGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RGTW92ZShj
bG9uZWRTdHlsZSkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNw
bGF5VHlwZTo6SW5saW5lKQotICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVu
aXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RGTW92ZShjbG9u
ZWRTdHlsZSkpOworICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gJmNyZWF0ZUNvbnRh
aW5lcihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoY2xvbmVkU3R5bGUpKTsK
ICAgICAgICAgICAgIGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpJbmxpbmVC
bG9jaykKLSAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFp
bmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoY2xvbmVkU3R5bGUpKTsK
KyAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9ICZjcmVhdGVDb250YWluZXIoZWxlbWVu
dEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKGNsb25lZFN0eWxlKSk7CiAgICAgICAgICAg
ICBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDYXB0aW9uIHx8IGRp
c3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNlbGwpIHsKLSAgICAgICAgICAgICAgICBj
aGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhy
ZW5kZXJlciksIFdURk1vdmUoY2xvbmVkU3R5bGUpKTsKKyAgICAgICAgICAgICAgICBjaGlsZExh
eW91dEJveCA9ICZjcmVhdGVDb250YWluZXIoZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBX
VEZNb3ZlKGNsb25lZFN0eWxlKSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGRpc3BsYXlUeXBl
ID09IERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3VwIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlU
eXBlOjpUYWJsZUhlYWRlckdyb3VwIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJs
ZUZvb3Rlckdyb3VwCiAgICAgICAgICAgICAgICAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5
cGU6OlRhYmxlUm93IHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdy
b3VwKSB7Ci0gICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRh
aW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKGNsb25lZFN0eWxlKSk7
CisgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSAmY3JlYXRlQ29udGFpbmVyKGVsZW1l
bnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RGTW92ZShjbG9uZWRTdHlsZSkpOwogICAgICAgICAg
ICAgfSBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW4pIHsK
LSAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihl
bGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoY2xvbmVkU3R5bGUpKTsKKyAgICAg
ICAgICAgICAgICBjaGlsZExheW91dEJveCA9ICZjcmVhdGVDb250YWluZXIoZWxlbWVudEF0dHJp
YnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKGNsb25lZFN0eWxlKSk7CiAgICAgICAgICAgICAgICAg
YXV0byYgdGFibGVDb2xFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFRhYmxlQ29sRWxlbWVudCY+
KCpyZW5kZXJlci5lbGVtZW50KCkpOwogICAgICAgICAgICAgICAgIGF1dG8gY29sdW1uV2lkdGgg
PSB0YWJsZUNvbEVsZW1lbnQud2lkdGgoKTsKICAgICAgICAgICAgICAgICBpZiAoIWNvbHVtbldp
ZHRoLmlzRW1wdHkoKSkKQEAgLTI0NSw3ICsyNjksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBU
cmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IENvbnRhaW5lciYgcGFyZW50Q29udGFp
bgogICAgICAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveC0+c2V0Q29sdW1uU3Bhbih0YWJs
ZUNvbEVsZW1lbnQuc3BhbigpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKQEAgLTI3MywzOSArMjk3LDM0IEBAIHZvaWQgVHJlZUJ1aWxkZXI6OmJ1aWxkVGFi
bGVTdHJ1Y3R1cmUoY29uc3QgUmVuZGVyVGFibGUmIHRhYmxlUmVuZGVyZXIsIENvbnRhaW5lCiAg
ICAgYXV0byogdGFibGVDaGlsZCA9IHRhYmxlUmVuZGVyZXIuZmlyc3RDaGlsZCgpOwogICAgIHdo
aWxlIChpczxSZW5kZXJUYWJsZUNhcHRpb24+KHRhYmxlQ2hpbGQpKSB7CiAgICAgICAgIGF1dG8m
IGNhcHRpb25SZW5kZXJlciA9ICp0YWJsZUNoaWxkOwotICAgICAgICBhdXRvIGNhcHRpb25Cb3gg
PSBjcmVhdGVMYXlvdXRCb3godGFibGVXcmFwcGVyQm94LCBjYXB0aW9uUmVuZGVyZXIpOworICAg
ICAgICBhdXRvKiBjYXB0aW9uQm94ID0gY3JlYXRlTGF5b3V0Qm94KHRhYmxlV3JhcHBlckJveCwg
Y2FwdGlvblJlbmRlcmVyKTsKICAgICAgICAgYXBwZW5kQ2hpbGQodGFibGVXcmFwcGVyQm94LCAq
Y2FwdGlvbkJveCk7CiAgICAgICAgIGF1dG8mIGNhcHRpb25Db250YWluZXIgPSBkb3duY2FzdDxD
b250YWluZXI+KCpjYXB0aW9uQm94KTsKICAgICAgICAgYnVpbGRTdWJUcmVlKGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KGNhcHRpb25SZW5kZXJlciksIGNhcHRpb25Db250YWluZXIpOwotICAgICAg
ICBtX2xheW91dFRyZWVDb250ZW50LmFkZEJveChXVEZNb3ZlKGNhcHRpb25Cb3gpKTsKICAgICAg
ICAgdGFibGVDaGlsZCA9IHRhYmxlQ2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQogCi0gICAg
YXV0byB0YWJsZUJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1
dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25lKHRh
YmxlUmVuZGVyZXIuc3R5bGUoKSkpOwotICAgIGFwcGVuZENoaWxkKHRhYmxlV3JhcHBlckJveCwg
KnRhYmxlQm94KTsKKyAgICBhdXRvJiB0YWJsZUJveCA9IGNyZWF0ZUNvbnRhaW5lcihCb3g6OkVs
ZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVCb3ggfSwgUmVuZGVyU3R5
bGU6OmNsb25lKHRhYmxlUmVuZGVyZXIuc3R5bGUoKSkpOworICAgIGFwcGVuZENoaWxkKHRhYmxl
V3JhcHBlckJveCwgdGFibGVCb3gpOwogICAgIGF1dG8qIHNlY3Rpb25SZW5kZXJlciA9IHRhYmxl
Q2hpbGQ7CiAgICAgd2hpbGUgKHNlY3Rpb25SZW5kZXJlcikgewotICAgICAgICBhdXRvIHNlY3Rp
b25Cb3ggPSBjcmVhdGVMYXlvdXRCb3goKnRhYmxlQm94LCAqc2VjdGlvblJlbmRlcmVyKTsKLSAg
ICAgICAgYXBwZW5kQ2hpbGQoKnRhYmxlQm94LCAqc2VjdGlvbkJveCk7CisgICAgICAgIGF1dG8q
IHNlY3Rpb25Cb3ggPSBjcmVhdGVMYXlvdXRCb3godGFibGVCb3gsICpzZWN0aW9uUmVuZGVyZXIp
OworICAgICAgICBhcHBlbmRDaGlsZCh0YWJsZUJveCwgKnNlY3Rpb25Cb3gpOwogICAgICAgICBh
dXRvJiBzZWN0aW9uQ29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPigqc2VjdGlvbkJveCk7
CiAgICAgICAgIGJ1aWxkU3ViVHJlZShkb3duY2FzdDxSZW5kZXJFbGVtZW50Pigqc2VjdGlvblJl
bmRlcmVyKSwgc2VjdGlvbkNvbnRhaW5lcik7Ci0gICAgICAgIG1fbGF5b3V0VHJlZUNvbnRlbnQu
YWRkQm94KFdURk1vdmUoc2VjdGlvbkJveCkpOwogICAgICAgICBzZWN0aW9uUmVuZGVyZXIgPSBz
ZWN0aW9uUmVuZGVyZXItPm5leHRTaWJsaW5nKCk7CiAgICAgfQotICAgIG1fbGF5b3V0VHJlZUNv
bnRlbnQuYWRkQm94KFdURk1vdmUodGFibGVCb3gpKTsKIH0KIAogdm9pZCBUcmVlQnVpbGRlcjo6
YnVpbGRTdWJUcmVlKGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbmRlcmVyLCBDb250YWlu
ZXImIHBhcmVudENvbnRhaW5lcikKIHsKICAgICBmb3IgKGF1dG8mIGNoaWxkUmVuZGVyZXIgOiBj
aGlsZHJlbk9mVHlwZTxSZW5kZXJPYmplY3Q+KHBhcmVudFJlbmRlcmVyKSkgewotICAgICAgICBh
dXRvIGNoaWxkTGF5b3V0Qm94ID0gY3JlYXRlTGF5b3V0Qm94KHBhcmVudENvbnRhaW5lciwgY2hp
bGRSZW5kZXJlcik7CisgICAgICAgIGF1dG8qIGNoaWxkTGF5b3V0Qm94ID0gY3JlYXRlTGF5b3V0
Qm94KHBhcmVudENvbnRhaW5lciwgY2hpbGRSZW5kZXJlcik7CiAgICAgICAgIGFwcGVuZENoaWxk
KHBhcmVudENvbnRhaW5lciwgKmNoaWxkTGF5b3V0Qm94KTsKICAgICAgICAgaWYgKGNoaWxkTGF5
b3V0Qm94LT5pc1RhYmxlV3JhcHBlckJveCgpKQogICAgICAgICAgICAgYnVpbGRUYWJsZVN0cnVj
dHVyZShkb3duY2FzdDxSZW5kZXJUYWJsZT4oY2hpbGRSZW5kZXJlciksIGRvd25jYXN0PENvbnRh
aW5lcj4oKmNoaWxkTGF5b3V0Qm94KSk7CiAgICAgICAgIGVsc2UgaWYgKGlzPENvbnRhaW5lcj4o
KmNoaWxkTGF5b3V0Qm94KSkKICAgICAgICAgICAgIGJ1aWxkU3ViVHJlZShkb3duY2FzdDxSZW5k
ZXJFbGVtZW50PihjaGlsZFJlbmRlcmVyKSwgZG93bmNhc3Q8Q29udGFpbmVyPigqY2hpbGRMYXlv
dXRCb3gpKTsKLQotICAgICAgICBtX2xheW91dFRyZWVDb250ZW50LmFkZEJveChXVEZNb3ZlKGNo
aWxkTGF5b3V0Qm94KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaAppbmRleCA2NGM5NjA4YmM0NC4uMTJj
YjE3OGJkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dFRyZWVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0VHJlZUJ1aWxkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKExBWU9V
VF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKKyNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAt
NDEsOCArNDIsNiBAQCBjbGFzcyBSZW5kZXJWaWV3OwogCiBuYW1lc3BhY2UgTGF5b3V0IHsKIAot
Y2xhc3MgQm94OwotY2xhc3MgQ29udGFpbmVyOwogY2xhc3MgTGF5b3V0U3RhdGU7CiAKIGNsYXNz
IExheW91dFRyZWVDb250ZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPExheW91dFRyZWVDb250
ZW50PiB7CkBAIC01NSw3ICs1NCwxMiBAQCBwdWJsaWM6CiAgICAgQ29udGFpbmVyJiByb290TGF5
b3V0Qm94KCkgeyByZXR1cm4gKm1fcm9vdExheW91dEJveDsgfQogICAgIGNvbnN0IFJlbmRlckJv
eCYgcm9vdFJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290UmVuZGVyZXI7IH0KIAotICAg
IHZvaWQgYWRkQm94KHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGJveCkgeyBtX2JveGVzLmFkZChXVEZN
b3ZlKGJveCkpOyB9CisgICAgdm9pZCBhZGRCb3goc3RkOjp1bmlxdWVfcHRyPEJveD4gYm94KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCFib3gtPmlzQ29udGFpbmVyKCkpOworICAgICAgICBtX2Jv
eGVzLmFkZChXVEZNb3ZlKGJveCkpOworICAgIH0KKyAgICB2b2lkIGFkZENvbnRhaW5lcihzdGQ6
OnVuaXF1ZV9wdHI8Q29udGFpbmVyPiBjb250YWluZXIpIHsgbV9jb250YWluZXJzLmFkZChXVEZN
b3ZlKGNvbnRhaW5lcikpOyB9CiAKICAgICBCb3gqIGxheW91dEJveEZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIHsgcmV0dXJuIG1fcmVuZGVyT2JqZWN0VG9MYXlvdXRC
b3guZ2V0KCZyZW5kZXJlcik7IH0KICAgICBjb25zdCBCb3gqIGxheW91dEJveEZvclJlbmRlcmVy
KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyT2Jq
ZWN0VG9MYXlvdXRCb3guZ2V0KCZyZW5kZXJlcik7IH0KQEAgLTY4LDYgKzcyLDcgQEAgcHJpdmF0
ZToKICAgICBjb25zdCBSZW5kZXJCb3gmIG1fcm9vdFJlbmRlcmVyOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxDb250YWluZXI+IG1fcm9vdExheW91dEJveDsKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVl
X3B0cjxCb3g+PiBtX2JveGVzOworICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnRhaW5l
cj4+IG1fY29udGFpbmVyczsKIAogICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0KiwgQm94
Kj4gbV9yZW5kZXJPYmplY3RUb0xheW91dEJveDsKICAgICBIYXNoTWFwPGNvbnN0IEJveCosIGNv
bnN0IFJlbmRlck9iamVjdCo+IG1fbGF5b3V0Qm94VG9SZW5kZXJPYmplY3Q7CkBAIC04NCw3ICs4
OSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgYnVpbGRUcmVlKCk7CiAgICAgdm9pZCBidWlsZFN1
YlRyZWUoY29uc3QgUmVuZGVyRWxlbWVudCYgcGFyZW50UmVuZGVyZXIsIENvbnRhaW5lciYgcGFy
ZW50Q29udGFpbmVyKTsKICAgICB2b2lkIGJ1aWxkVGFibGVTdHJ1Y3R1cmUoY29uc3QgUmVuZGVy
VGFibGUmIHRhYmxlUmVuZGVyZXIsIENvbnRhaW5lciYgdGFibGVXcmFwcGVyQm94KTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8Qm94PiBjcmVhdGVMYXlvdXRCb3goY29uc3QgQ29udGFpbmVyJiBwYXJl
bnRDb250YWluZXIsIGNvbnN0IFJlbmRlck9iamVjdCYgY2hpbGRSZW5kZXJlcik7CisgICAgQm94
KiBjcmVhdGVMYXlvdXRCb3goY29uc3QgQ29udGFpbmVyJiBwYXJlbnRDb250YWluZXIsIGNvbnN0
IFJlbmRlck9iamVjdCYgY2hpbGRSZW5kZXJlcik7CisKKyAgICBCb3gmIGNyZWF0ZUJveChPcHRp
b25hbDxCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzPiwgUmVuZGVyU3R5bGUmJik7CisgICAgQm94JiBj
cmVhdGVUZXh0Qm94KFRleHRDb250ZXh0JiYsIFJlbmRlclN0eWxlJiYpOworICAgIENvbnRhaW5l
ciYgY3JlYXRlQ29udGFpbmVyKE9wdGlvbmFsPEJveDo6RWxlbWVudEF0dHJpYnV0ZXM+LCBSZW5k
ZXJTdHlsZSYmKTsKIAogICAgIExheW91dFRyZWVDb250ZW50JiBtX2xheW91dFRyZWVDb250ZW50
OwogfTsK
</data>
<flag name="review"
          id="403937"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388187</attachid>
            <date>2020-01-19 06:58:03 -0800</date>
            <delta_ts>2020-01-19 08:30:33 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-integration-boxtree-2.patch</filename>
            <type>text/plain</type>
            <size>35378</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MDY3YjE5NWFmZC4uMDc4MmFhZGNiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAyMC0wMS0xOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFVzZSBpbnRlZ3JhdGlvbiBzcGVjaWZpYyBs
YXlvdXQgdHJlZSBidWlsZGVyIGFuZCBkYXRhIHN0cnVjdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQ4MworCisgICAgICAgIFJldmlld2Vk
IGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICBUaGUgZ2VuZXJpYyB0cmVlIGJ1aWxkZXIgYW5k
IHRoZSBMYXlvdXRUcmVlQ29udGVudCBjbGFzcyBhcmUgbm90IG9wdGltYWwgZm9yIGludGVncmF0
ZWQgbGF5b3V0LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBMYXlvdXRJbnRlZ3JhdGlvbjo6
Qm94VHJlZSB0eXBlIGZvciBidWlsZGluZyBhbmQgb3duaW5nIExheW91dDo6Qm94ZXMgZm9yIGEg
c2luZ2xlIGZsb3cuCisgICAgICAgIEl0IGFsc28gZGV2aXJ0dWFsaXplcyBMYXlvdXQ6OkJveCBm
b3IgZmFzdGVyIGRlc3RydWN0aW9uICh0aGUgb25seSB2aXJ0dWFsIGZ1bmN0aW9uIHdhcyB0aGUg
ZGVzdHJ1Y3RvcikuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uQm94VHJlZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OkJveFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OmJ1aWxkVHJlZSk6CisKKyAgICAgICAgT25seSBo
YW5kbGUgc3VwcG9ydGVkIGNvbnRlbnQuCisKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpCb3hUcmVlOjpsYXlvdXRCb3hGb3JSZW5kZXJlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94VHJlZTo6cmVuZGVyZXJGb3JMYXlvdXRCb3gg
Y29uc3QpOgorCisgICAgICAgIEZvciBzbWFsbCBjb250ZW50IGp1c3QgdHJhdmVyc2UgdGhlIHZl
Y3Rvci4gQ29uc3RydWN0IGxvb2t1cCBtYXBzIGxhemlseSBmb3IgbGFyZ2VyIGNvbnRlbnQuCisK
KyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRh
aW5lci5oLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OnJv
b3RMYXlvdXRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkJveFRyZWU6OnJvb3RMYXlvdXRCb3gpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OkxpbmVMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmxheW91dCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6dGV4dEJveGVzRm9yIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjplbGVtZW50Qm94
Rm9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5
b3V0Ojpyb290TGF5b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpMaW5lTGF5b3V0Ojpyb290TGF5b3V0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpoaXRUZXN0KToKKyAgICAgICAgKiBsYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0Lmg6CisgICAgICAgICogbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Qm94Ojp+Qm94KToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaDoKKwor
ICAgICAgICBEZXZpcnR1YWxpemUuCisKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpDb250YWluZXI6OmFw
cGVuZENoaWxkKToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXIu
aDoKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlVGV4dEJveCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVDb250YWluZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KToKKworICAg
ICAgICBGYWN0b3Igb3duZXJzaGlwIGhhbmRsaW5nIHRvIHRoZXNlIGNyZWF0ZSBmdW5jdGlvbnMu
CisKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmJ1aWxkVGFibGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6YnVpbGRTdWJU
cmVlKToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRUcmVlQ29udGVudDo6YWRkQm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0VHJlZUNvbnRlbnQ6OmFkZENvbnRhaW5lcik6
CisKKyAgICAgICAgUHV0IEJveGVzIGFuZCBDb250YWluZXJzIHRvIGRpZmZlcmVudCBtYXBzIGZv
ciBjb3JyZWN0IGRlc3RydWN0aW9uLgorCiAyMDIwLTAxLTE4ICBEYXZpZCBLaWx6ZXIgIDxkZGtp
bHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI1NDc5MCk6IFVwZGF0ZSBE
ZXJpdmVkU291cmNlcy17aW5wdXQsb3V0cHV0fS54Y2ZpbGVsaXN0IHRvIGZpeCBidWlsZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCA3YWJjNDdjMzA0YS4uY2Q1NjdhZjdjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0xNDU1LDYgKzE0NTUsNyBAQCBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVp
bGRlci5jcHAKIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcAogbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3BwCiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy90ZXh0L1RleHRVdGlsLmNwcAorbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uQm94VHJlZS5jcHAKIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuY3BwCiBsYXlvdXQvaW52YWxpZGF0aW9uL0ludmFsaWRhdGlvbkNvbnRleHQu
Y3BwCiBsYXlvdXQvaW52YWxpZGF0aW9uL0ludmFsaWRhdGlvblN0YXRlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ4OTFh
MmZmOTAyLi40YjIxODk1MTJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDgxNCw2ICs0ODE0LDcgQEAKIAkJRTNGQTM4NjQx
RDcxODEyRDAwQUE1OTUwIC8qIFBlbmRpbmdTY3JpcHRDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRkEzODYxMUQ3MTZFNzYwMEFBNTk1MCAv
KiBQZW5kaW5nU2NyaXB0Q2xpZW50LmggKi87IH07CiAJCUU0MDFDMjc1MTdDRTUzRUMwMEM0MUEz
NSAvKiBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDAxQzI3NDE3Q0U1M0VDMDBDNDFBMzUgLyogRWxlbWVu
dEl0ZXJhdG9yQXNzZXJ0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUU0MDFFMEE0MUMzQzBCODMwMEYzNEQxMCAvKiBTdHlsZUNoYW5nZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQwMUUwQTMx
QzNDMEI4MzAwRjM0RDEwIC8qIFN0eWxlQ2hhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTQxODAyNTUyM0Q0NTQ5QjAwRkZCMDcxIC8qIExh
eW91dEludGVncmF0aW9uQm94VHJlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTQxODAyNTMyM0Q0NTQ5QTAwRkZCMDcxIC8qIExheW91dEludGVncmF0
aW9uQm94VHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUU0MTkwNDFGMUNDNjQ4NkIwMEMzNUY1RCAvKiBGb250U2VsZWN0b3JDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MTkwNDFFMUND
NjQ4NkIwMEMzNUY1RCAvKiBGb250U2VsZWN0b3JDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDIwNTAxNzIxNDE5MDFCMDA2NkVGM0Ig
LyogUHJvY2Vzc1dhcm1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0MjA1MDE0MjE0MTkwMUEwMDY2RUYzQiAvKiBQcm9jZXNzV2FybWluZy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0MjRBMzlF
MTMzMERGMDEwMENGNkRDOSAvKiBMZWdhY3lUaWxlR3JpZFRpbGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MjRBMzlEMTMzMERGMDEwMENGNkRDOSAv
KiBMZWdhY3lUaWxlR3JpZFRpbGUuaCAqLzsgfTsKQEAgLTE1MTg4LDYgKzE1MTg5LDggQEAKIAkJ
RTQwMUUwQTMxQzNDMEI4MzAwRjM0RDEwIC8qIFN0eWxlQ2hhbmdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQ2hhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUU0MDFFMEE1MUMzQzBDRjcwMEYzNEQxMCAvKiBTdHlsZUNoYW5nZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUNoYW5nZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MDZGM0ZCMTE5ODMwN0QwMDlENTlENiAvKiBDb2xvckRh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29sb3JEYXRhLmNw
cDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29sb3JEYXRhLmNwcDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRTQxODAyNTMyM0Q0NTQ5QTAwRkZCMDcxIC8q
IExheW91dEludGVncmF0aW9uQm94VHJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTQxODAyNTYyM0Q0NTRCNTAwRkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94VHJl
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDE5MDQxRTFDQzY0ODZCMDBDMzVGNUQgLyog
Rm9udFNlbGVjdG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZv
bnRTZWxlY3RvckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDFFQTAz
ODExOTgzNkRCMDA3MTBCQzUgLyogQ1NTUHJvcGVydHlOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NQcm9wZXJ0eU5hbWVzLmNwcDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTUHJvcGVydHlOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCUU0MUVBMDM5MTE5ODM3NDkwMDcxMEJDNSAvKiBDU1NWYWx1
ZUtleXdvcmRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1Zh
bHVlS2V5d29yZHMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1ZUtl
eXdvcmRzLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTI3MzA2
LDYgKzI3MzA5LDggQEAKIAkJRTRGQjRCMUUyMzk1MzU2RjAwM0MzMzZBIC8qIGludGVncmF0aW9u
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFNDE4MDI1
NjIzRDQ1NEI1MDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcCAqLywKKwkJ
CQlFNDE4MDI1MzIzRDQ1NDlBMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmgg
Ki8sCiAJCQkJRTRBQkFCREUyMzYwODkzRDAwRkE0MzQ1IC8qIExheW91dEludGVncmF0aW9uTGlu
ZUxheW91dC5jcHAgKi8sCiAJCQkJRTRBQkFCREIyMzYwODhGRDAwRkE0MzQ1IC8qIExheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5oICovLAogCQkJKTsKQEAgLTMyMDQ1LDYgKzMyMDUwLDcgQEAK
IAkJCQk0NThGRTQwQTE1ODlERjBCMDA1NjA5RTYgLyogUmVuZGVyU2VhcmNoRmllbGQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMTFBNTRGMEYzOTIzMzEwMEMzNzg4NCAvKiBSZW5kZXJTZWxlY3Rp
b25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQjI0N0E2RDBBRkQ2MzgzMDAzRkE1RkQgLyog
UmVuZGVyU2xpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDE4MDI1NTIzRDQ1NDlCMDBGRkIw
NzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTk1
NUE4ODE2MEQxOTkyMDA4NTgwMjUgLyogUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDOEM4RkFFMEREQ0QzMUIwMEI1OTJGNCAvKiBSZW5kZXJTdHlsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2NjgwRTgxQ0I3MTAwQjI1OTY1IC8qIFJlbmRlclN0eWxl
Q29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQyMWEyMDc0ODBjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uQm94VHJlZS5jcHAKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaCIKKworI2luY2x1ZGUgIlJlbmRlckJs
b2NrRmxvdy5oIgorI2luY2x1ZGUgIlJlbmRlckNoaWxkSXRlcmF0b3IuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKKworc3RhdGljIGNvbnN0
ZXhwciBzaXplX3Qgc21hbGxUcmVlVGhyZXNob2xkID0gODsKKworc3RhdGljIFJlbmRlclN0eWxl
IHJvb3RCb3hTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgYXV0byBjbG9u
ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShzdHlsZSk7CisgICAgY2xvbmVkU3R5bGUuc2V0
RGlzcGxheShEaXNwbGF5VHlwZTo6QmxvY2spOworICAgIHJldHVybiBjbG9uZWRTdHlsZTsKK30K
KworQm94VHJlZTo6Qm94VHJlZShjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCisgICAgOiBt
X3Jvb3QoeyB9LCByb290Qm94U3R5bGUoZmxvdy5zdHlsZSgpKSkKK3sKKyAgICBpZiAoZmxvdy5p
c0Fub255bW91cygpKQorICAgICAgICBtX3Jvb3Quc2V0SXNBbm9ueW1vdXMoKTsKKworICAgIGJ1
aWxkVHJlZShmbG93KTsKK30KKwordm9pZCBCb3hUcmVlOjpidWlsZFRyZWUoY29uc3QgUmVuZGVy
QmxvY2tGbG93JiBmbG93KQoreworICAgIGZvciAoYXV0byYgY2hpbGRSZW5kZXJlciA6IGNoaWxk
cmVuT2ZUeXBlPFJlbmRlck9iamVjdD4oZmxvdykpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PExheW91dDo6Qm94PiBjaGlsZEJveDsKKyAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxk
UmVuZGVyZXIpKSB7CisgICAgICAgICAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxS
ZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKTsKKyAgICAgICAgICAgIGF1dG8gdGV4dENvbnRlbnQg
PSBMYXlvdXQ6OlRleHRDb250ZXh0IHsgdGV4dFJlbmRlcmVyLnRleHQoKSwgdGV4dFJlbmRlcmVy
LmNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nKCkgfTsKKyAgICAgICAgICAgIGNoaWxkQm94
ID0gbWFrZVVuaXF1ZTxMYXlvdXQ6OkJveD4oV1RGTW92ZSh0ZXh0Q29udGVudCksIFJlbmRlclN0
eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KG1fcm9vdC5zdHlsZSgpLCBEaXNw
bGF5VHlwZTo6SW5saW5lKSk7CisgICAgICAgICAgICBjaGlsZEJveC0+c2V0SXNBbm9ueW1vdXMo
KTsKKyAgICAgICAgfSBlbHNlIGlmIChjaGlsZFJlbmRlcmVyLmlzTGluZUJyZWFrKCkpIHsKKyAg
ICAgICAgICAgIGF1dG8gY2xvbmVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoY2hpbGRSZW5k
ZXJlci5zdHlsZSgpKTsKKyAgICAgICAgICAgIGNsb25lZFN0eWxlLnNldERpc3BsYXkoRGlzcGxh
eVR5cGU6OklubGluZSk7CisgICAgICAgICAgICBjbG9uZWRTdHlsZS5zZXRGbG9hdGluZyhGbG9h
dDo6Tm8pOworICAgICAgICAgICAgY2hpbGRCb3ggPSBtYWtlVW5pcXVlPExheW91dDo6Qm94PihM
YXlvdXQ6OkJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBMYXlvdXQ6OkJveDo6RWxlbWVudFR5cGU6
OkhhcmRMaW5lQnJlYWsgfSwgV1RGTW92ZShjbG9uZWRTdHlsZSkpOworICAgICAgICB9CisgICAg
ICAgIEFTU0VSVChjaGlsZEJveCk7CisKKyAgICAgICAgbV9yb290LmFwcGVuZENoaWxkKCpjaGls
ZEJveCk7CisgICAgICAgIG1fYm94ZXMuYXBwZW5kKHsgV1RGTW92ZShjaGlsZEJveCksICZjaGls
ZFJlbmRlcmVyIH0pOworICAgIH0KK30KKworY29uc3QgTGF5b3V0OjpCb3gqIEJveFRyZWU6Omxh
eW91dEJveEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIGNvbnN0Cit7
CisgICAgaWYgKG1fYm94ZXMuc2l6ZSgpIDw9IHNtYWxsVHJlZVRocmVzaG9sZCkgeworICAgICAg
ICBhdXRvIGluZGV4ID0gbV9ib3hlcy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGVudHJ5KSB7Cisg
ICAgICAgICAgICByZXR1cm4gZW50cnkucmVuZGVyZXIgPT0gJnJlbmRlcmVyOworICAgICAgICB9
KTsKKyAgICAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIHJldHVybiBtX2JveGVzW2luZGV4XS5ib3guZ2V0KCk7CisgICAgfQor
CisgICAgaWYgKG1fcmVuZGVyZXJUb0JveE1hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgZm9yIChh
dXRvJiBlbnRyeSA6IG1fYm94ZXMpCisgICAgICAgICAgICBtX3JlbmRlcmVyVG9Cb3hNYXAuYWRk
KGVudHJ5LnJlbmRlcmVyLCBlbnRyeS5ib3guZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gbV9y
ZW5kZXJlclRvQm94TWFwLmdldCgmcmVuZGVyZXIpOworfQorCitjb25zdCBSZW5kZXJPYmplY3Qq
IEJveFRyZWU6OnJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiBib3gpIGNv
bnN0Cit7CisgICAgaWYgKG1fYm94ZXMuc2l6ZSgpIDw9IHNtYWxsVHJlZVRocmVzaG9sZCkgewor
ICAgICAgICBhdXRvIGluZGV4ID0gbV9ib3hlcy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGVudHJ5
KSB7CisgICAgICAgICAgICByZXR1cm4gZW50cnkuYm94LmdldCgpID09ICZib3g7CisgICAgICAg
IH0pOworICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG1fYm94ZXNbaW5kZXhdLnJlbmRlcmVyOworICAgIH0K
KworICAgIGlmIChtX2JveFRvUmVuZGVyZXJNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIGZvciAo
YXV0byYgZW50cnkgOiBtX2JveGVzKQorICAgICAgICAgICAgbV9ib3hUb1JlbmRlcmVyTWFwLmFk
ZChlbnRyeS5ib3guZ2V0KCksIGVudHJ5LnJlbmRlcmVyKTsKKyAgICB9CisgICAgcmV0dXJuIG1f
Ym94VG9SZW5kZXJlck1hcC5nZXQoJmJveCk7Cit9CisKK30KK30KKworI2VuZGlmCisKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uQm94VHJlZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uQm94VHJlZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li40ZjA2MjFhZTI5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaApAQCAtMCwwICsxLDY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdf
Q09OVEVYVCkKKworI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFJlbmRlckJsb2NrRmxvdzsKKworbmFtZXNwYWNlIExheW91dEludGVncmF0aW9u
IHsKKworY2xhc3MgQm94VHJlZSB7CitwdWJsaWM6CisgICAgQm94VHJlZShjb25zdCBSZW5kZXJC
bG9ja0Zsb3cmKTsKKworICAgIGNvbnN0IExheW91dDo6Q29udGFpbmVyJiByb290TGF5b3V0Qm94
KCkgY29uc3QgeyByZXR1cm4gbV9yb290OyB9CisgICAgTGF5b3V0OjpDb250YWluZXImIHJvb3RM
YXlvdXRCb3goKSB7IHJldHVybiBtX3Jvb3Q7IH0KKworICAgIGNvbnN0IExheW91dDo6Qm94KiBs
YXlvdXRCb3hGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdDsKKyAgICBjb25z
dCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94Jikg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgdm9pZCBidWlsZFRyZWUoY29uc3QgUmVuZGVyQmxvY2tG
bG93Jik7CisKKyAgICBMYXlvdXQ6OkNvbnRhaW5lciBtX3Jvb3Q7CisgICAgc3RydWN0IEJveEFu
ZFJlbmRlcmVyIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IExheW91dDo6Qm94PiBi
b3g7CisgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIgeyBudWxscHRyIH07Cisg
ICAgfTsKKyAgICBWZWN0b3I8Qm94QW5kUmVuZGVyZXIsIDE+IG1fYm94ZXM7CisKKyAgICBtdXRh
YmxlIEhhc2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0OjpCb3gqPiBtX3Jl
bmRlcmVyVG9Cb3hNYXA7CisgICAgbXV0YWJsZSBIYXNoTWFwPGNvbnN0IExheW91dDo6Qm94Kiwg
Y29uc3QgUmVuZGVyT2JqZWN0Kj4gbV9ib3hUb1JlbmRlcmVyTWFwOworfTsKKworfQorfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggMmY2Mzk3N2RhNTYu
LjFhMzg3ZGQwMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtNTIs
OCArNTIsOCBAQCBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCiBMaW5lTGF5b3V0OjpM
aW5lTGF5b3V0KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKICAgICA6IG1fZmxvdyhmbG93
KQorICAgICwgbV9ib3hUcmVlKGZsb3cpCiB7Ci0gICAgbV90cmVlQ29udGVudCA9IExheW91dDo6
VHJlZUJ1aWxkZXI6OmJ1aWxkTGF5b3V0VHJlZUZvckludGVncmF0aW9uKGZsb3cpOwogfQogCiBM
aW5lTGF5b3V0Ojp+TGluZUxheW91dCgpID0gZGVmYXVsdDsKQEAgLTk2LDcgKzk2LDcgQEAgdm9p
ZCBMaW5lTGF5b3V0Ojp1cGRhdGVTdHlsZSgpCiB2b2lkIExpbmVMYXlvdXQ6OmxheW91dCgpCiB7
CiAgICAgaWYgKCFtX2xheW91dFN0YXRlKSB7Ci0gICAgICAgIG1fbGF5b3V0U3RhdGUuZW1wbGFj
ZShtX2Zsb3cuZG9jdW1lbnQoKSwgbV90cmVlQ29udGVudC0+cm9vdExheW91dEJveCgpKTsKKyAg
ICAgICAgbV9sYXlvdXRTdGF0ZS5lbXBsYWNlKG1fZmxvdy5kb2N1bWVudCgpLCBtX2JveFRyZWUu
cm9vdExheW91dEJveCgpKTsKICAgICAgICAgbV9sYXlvdXRTdGF0ZS0+c2V0SXNJbnRlZ3JhdGVk
Um9vdEJveEZpcnN0Q2hpbGQobV9mbG93LnBhcmVudCgpLT5maXJzdENoaWxkKCkgPT0gJm1fZmxv
dyk7CiAgICAgfQogCkBAIC0xNzYsNyArMTc2LDcgQEAgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4
dEJveEl0ZXJhdG9yIExpbmVMYXlvdXQ6OnRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0Jgog
ICAgIGF1dG8qIGlubGluZUNvbnRlbnQgPSBkaXNwbGF5SW5saW5lQ29udGVudCgpOwogICAgIGlm
ICghaW5saW5lQ29udGVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBhdXRvKiBsYXlvdXRC
b3ggPSBtX3RyZWVDb250ZW50LT5sYXlvdXRCb3hGb3JSZW5kZXJlcihyZW5kZXJUZXh0KTsKKyAg
ICBhdXRvKiBsYXlvdXRCb3ggPSBtX2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVy
VGV4dCk7CiAgICAgQVNTRVJUKGxheW91dEJveCk7CiAKICAgICBPcHRpb25hbDxzaXplX3Q+IGZp
cnN0SW5kZXg7CkBAIC0yMDEsNyArMjAxLDcgQEAgTGluZUxheW91dFRyYXZlcnNhbDo6RWxlbWVu
dEJveEl0ZXJhdG9yIExpbmVMYXlvdXQ6OmVsZW1lbnRCb3hGb3IoY29uc3QgUmVuZGVyTGkKICAg
ICBhdXRvKiBpbmxpbmVDb250ZW50ID0gZGlzcGxheUlubGluZUNvbnRlbnQoKTsKICAgICBpZiAo
IWlubGluZUNvbnRlbnQpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgYXV0byogbGF5b3V0Qm94
ID0gbV90cmVlQ29udGVudC0+bGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVyTGluZUJyZWFrKTsK
KyAgICBhdXRvKiBsYXlvdXRCb3ggPSBtX2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVu
ZGVyTGluZUJyZWFrKTsKICAgICBBU1NFUlQobGF5b3V0Qm94KTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaW5saW5lQ29udGVudC0+cnVucy5zaXplKCk7ICsraSkgewpAQCAtMjE1LDEy
ICsyMTUsMTIgQEAgTGluZUxheW91dFRyYXZlcnNhbDo6RWxlbWVudEJveEl0ZXJhdG9yIExpbmVM
YXlvdXQ6OmVsZW1lbnRCb3hGb3IoY29uc3QgUmVuZGVyTGkKIAogY29uc3QgTGF5b3V0OjpDb250
YWluZXImIExpbmVMYXlvdXQ6OnJvb3RMYXlvdXRCb3goKSBjb25zdAogewotICAgIHJldHVybiBt
X3RyZWVDb250ZW50LT5yb290TGF5b3V0Qm94KCk7CisgICAgcmV0dXJuIG1fYm94VHJlZS5yb290
TGF5b3V0Qm94KCk7CiB9CiAKIExheW91dDo6Q29udGFpbmVyJiBMaW5lTGF5b3V0Ojpyb290TGF5
b3V0Qm94KCkKIHsKLSAgICByZXR1cm4gbV90cmVlQ29udGVudC0+cm9vdExheW91dEJveCgpOwor
ICAgIHJldHVybiBtX2JveFRyZWUucm9vdExheW91dEJveCgpOwogfQogCiB2b2lkIExpbmVMYXlv
dXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQpCkBAIC0zMTQsNyArMzE0LDcgQEAgYm9vbCBMaW5lTGF5b3V0OjpoaXRUZXN0KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGMKICAgICAg
ICAgaWYgKHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlIHx8IHN0eWxl
LnBvaW50ZXJFdmVudHMoKSA9PSBQb2ludGVyRXZlbnRzOjpOb25lKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBjb25zdF9jYXN0PFJlbmRlck9iamVj
dCY+KCptX3RyZWVDb250ZW50LT5yZW5kZXJlckZvckxheW91dEJveChydW4ubGF5b3V0Qm94KCkp
KTsKKyAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBjb25zdF9jYXN0PFJlbmRlck9iamVjdCY+KCpt
X2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3gocnVuLmxheW91dEJveCgpKSk7CiAKICAgICAg
ICAgcmVuZGVyZXIudXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIGxvY2F0aW9uSW5Db250YWlu
ZXIucG9pbnQoKSAtIHRvTGF5b3V0U2l6ZShhY2N1bXVsYXRlZE9mZnNldCkpOwogICAgICAgICBp
ZiAocmVzdWx0LmFkZE5vZGVUb0xpc3RCYXNlZFRlc3RSZXN1bHQocmVuZGVyZXIubm9kZSgpLCBy
ZXF1ZXN0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBydW5SZWN0KSA9PSBIaXRUZXN0UHJvZ3Jlc3M6
OlN0b3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKaW5kZXggY2Y2MjVjM2E5YzguLmMz
N2RjZDRhYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAorI2luY2x1ZGUg
IkxheW91dEludGVncmF0aW9uQm94VHJlZS5oIgogI2luY2x1ZGUgIkxheW91dFBvaW50LmgiCiAj
aW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgi
CkBAIC04Niw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgU2hhZG93RGF0YSogZGVidWdUZXh0U2hh
ZG93KCk7CiAKICAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIG1fZmxvdzsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8TGF5b3V0OjpMYXlvdXRUcmVlQ29udGVudD4gbV90cmVlQ29udGVudDsKKyAgICBC
b3hUcmVlIG1fYm94VHJlZTsKICAgICBPcHRpb25hbDxMYXlvdXQ6OkxheW91dFN0YXRlPiBtX2xh
eW91dFN0YXRlOwogICAgIExheW91dFVuaXQgbV9jb250ZW50TG9naWNhbEhlaWdodDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAppbmRleCBk
NmNlZDQwMGVlOS4uN2Q2NDcxMmQ5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtNjUsNyArNjUsOCBAQCBCb3g6OkJveChUZXh0Q29u
dGV4dCYmIHRleHRDb250ZXh0LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogCiBCb3g6On5Cb3goKQog
ewotICAgIHJlbW92ZVJhcmVEYXRhKCk7CisgICAgaWYgKFVOTElLRUxZKG1faGFzUmFyZURhdGEp
KQorICAgICAgICByZW1vdmVSYXJlRGF0YSgpOwogfQogCiB2b2lkIEJveDo6dXBkYXRlU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRCb3guaAppbmRleCBiYTJiMmM2YTViZi4uY2U1ZTIyM2I0ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCkBAIC03MSw3ICs3
MSw3IEBAIHB1YmxpYzoKIAogICAgIEJveChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4sIFJl
bmRlclN0eWxlJiYpOwogICAgIEJveChUZXh0Q29udGV4dCYmLCBSZW5kZXJTdHlsZSYmKTsKLSAg
ICB2aXJ0dWFsIH5Cb3goKTsKKyAgICB+Qm94KCk7CiAKICAgICBib29sIGVzdGFibGlzaGVzRm9y
bWF0dGluZ0NvbnRleHQoKSBjb25zdDsKICAgICBib29sIGVzdGFibGlzaGVzQmxvY2tGb3JtYXR0
aW5nQ29udGV4dCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dENvbnRhaW5lci5jcHAKaW5kZXggNjRlYTQwMGVkMjIuLjBmNTA1ZjI2MTVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250
YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENv
bnRhaW5lci5jcHAKQEAgLTkxLDYgKzkxLDE5IEBAIHZvaWQgQ29udGFpbmVyOjpzZXRMYXN0Q2hp
bGQoQm94JiBjaGlsZEJveCkKICAgICBtX2xhc3RDaGlsZCA9ICZjaGlsZEJveDsKIH0KIAordm9p
ZCBDb250YWluZXI6OmFwcGVuZENoaWxkKEJveCYgY2hpbGRCb3gpCit7CisgICAgY2hpbGRCb3gu
c2V0UGFyZW50KCp0aGlzKTsKKworICAgIGlmIChtX2xhc3RDaGlsZCkgeworICAgICAgICBtX2xh
c3RDaGlsZC0+c2V0TmV4dFNpYmxpbmcoY2hpbGRCb3gpOworICAgICAgICBjaGlsZEJveC5zZXRQ
cmV2aW91c1NpYmxpbmcoKm1fbGFzdENoaWxkKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9maXJz
dENoaWxkID0gJmNoaWxkQm94OworCisgICAgbV9sYXN0Q2hpbGQgPSAmY2hpbGRCb3g7Cit9CisK
IH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRDb250YWluZXIuaAppbmRleCA0ZTE4Yzk5MGEyOS4uOTBhMjFiYWFkNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5oCkBA
IC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Rmlyc3RDaGlsZChCb3gmKTsK
ICAgICB2b2lkIHNldExhc3RDaGlsZChCb3gmKTsKKyAgICB2b2lkIGFwcGVuZENoaWxkKEJveCYp
OwogCiBwcml2YXRlOgogICAgIEJveCogbV9maXJzdENoaWxkIHsgbnVsbHB0ciB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIu
Y3BwCmluZGV4IDFmZDM5ODY5ZjRhLi41M2QxN2QzMzZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtMTMy
LDMzICsxMzIsNDEgQEAgc3RkOjp1bmlxdWVfcHRyPExheW91dDo6TGF5b3V0VHJlZUNvbnRlbnQ+
IFRyZWVCdWlsZGVyOjpidWlsZExheW91dFRyZWUoY29uc3QgUmUKICAgICByZXR1cm4gbGF5b3V0
VHJlZUNvbnRlbnQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxMYXlvdXQ6OkxheW91dFRyZWVDb250
ZW50PiBUcmVlQnVpbGRlcjo6YnVpbGRMYXlvdXRUcmVlRm9ySW50ZWdyYXRpb24oY29uc3QgUmVu
ZGVyQmxvY2tGbG93JiByZW5kZXJCbG9ja0Zsb3cpCitUcmVlQnVpbGRlcjo6VHJlZUJ1aWxkZXIo
TGF5b3V0VHJlZUNvbnRlbnQmIGxheW91dFRyZWVDb250ZW50KQorICAgIDogbV9sYXlvdXRUcmVl
Q29udGVudChsYXlvdXRUcmVlQ29udGVudCkKIHsKLSAgICBQaGFzZVNjb3BlIHNjb3BlKFBoYXNl
OjpUeXBlOjpUcmVlQnVpbGRpbmcpOwotCi0gICAgYXV0byBjbG9uZWRTdHlsZSA9IFJlbmRlclN0
eWxlOjpjbG9uZShyZW5kZXJCbG9ja0Zsb3cuc3R5bGUoKSk7Ci0gICAgY2xvbmVkU3R5bGUuc2V0
RGlzcGxheShEaXNwbGF5VHlwZTo6QmxvY2spOworfQogCi0gICAgYXV0byByb290TGF5b3V0Q29u
dGFpbmVyID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBC
b3g6OkVsZW1lbnRUeXBlOjpHZW5lcmljRWxlbWVudCB9LCBXVEZNb3ZlKGNsb25lZFN0eWxlKSk7
Ci0gICAgaWYgKHJlbmRlckJsb2NrRmxvdy5pc0Fub255bW91cygpKQotICAgICAgICByb290TGF5
b3V0Q29udGFpbmVyLT5zZXRJc0Fub255bW91cygpOwordm9pZCBUcmVlQnVpbGRlcjo6YnVpbGRU
cmVlKCkKK3sKKyAgICBidWlsZFN1YlRyZWUobV9sYXlvdXRUcmVlQ29udGVudC5yb290UmVuZGVy
ZXIoKSwgbV9sYXlvdXRUcmVlQ29udGVudC5yb290TGF5b3V0Qm94KCkpOworfQogCi0gICAgYXV0
byBsYXlvdXRUcmVlQ29udGVudCA9IG1ha2VVbmlxdWU8TGF5b3V0VHJlZUNvbnRlbnQ+KHJlbmRl
ckJsb2NrRmxvdywgV1RGTW92ZShyb290TGF5b3V0Q29udGFpbmVyKSk7Ci0gICAgVHJlZUJ1aWxk
ZXIoKmxheW91dFRyZWVDb250ZW50KS5idWlsZFRyZWUoKTsKLSAgICByZXR1cm4gbGF5b3V0VHJl
ZUNvbnRlbnQ7CitCb3gmIFRyZWVCdWlsZGVyOjpjcmVhdGVCb3goT3B0aW9uYWw8Qm94OjpFbGVt
ZW50QXR0cmlidXRlcz4gZWxlbWVudEF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUpCit7
CisgICAgYXV0byBuZXdCb3ggPSBtYWtlVW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMsIFdU
Rk1vdmUoc3R5bGUpKTsKKyAgICBhdXRvJiBib3ggPSAqbmV3Qm94OworICAgIG1fbGF5b3V0VHJl
ZUNvbnRlbnQuYWRkQm94KFdURk1vdmUobmV3Qm94KSk7CisgICAgcmV0dXJuIGJveDsKIH0KIAot
VHJlZUJ1aWxkZXI6OlRyZWVCdWlsZGVyKExheW91dFRyZWVDb250ZW50JiBsYXlvdXRUcmVlQ29u
dGVudCkKLSAgICA6IG1fbGF5b3V0VHJlZUNvbnRlbnQobGF5b3V0VHJlZUNvbnRlbnQpCitCb3gm
IFRyZWVCdWlsZGVyOjpjcmVhdGVUZXh0Qm94KFRleHRDb250ZXh0JiYgdGV4dENvbnRlbnQsIFJl
bmRlclN0eWxlJiYgc3R5bGUpCiB7CisgICAgYXV0byBuZXdCb3ggPSBtYWtlVW5pcXVlPEJveD4o
V1RGTW92ZSh0ZXh0Q29udGVudCksIFdURk1vdmUoc3R5bGUpKTsKKyAgICBhdXRvJiBib3ggPSAq
bmV3Qm94OworICAgIG1fbGF5b3V0VHJlZUNvbnRlbnQuYWRkQm94KFdURk1vdmUobmV3Qm94KSk7
CisgICAgcmV0dXJuIGJveDsKIH0KIAotdm9pZCBUcmVlQnVpbGRlcjo6YnVpbGRUcmVlKCkKK0Nv
bnRhaW5lciYgVHJlZUJ1aWxkZXI6OmNyZWF0ZUNvbnRhaW5lcihPcHRpb25hbDxCb3g6OkVsZW1l
bnRBdHRyaWJ1dGVzPiBlbGVtZW50QXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsK
LSAgICBidWlsZFN1YlRyZWUobV9sYXlvdXRUcmVlQ29udGVudC5yb290UmVuZGVyZXIoKSwgbV9s
YXlvdXRUcmVlQ29udGVudC5yb290TGF5b3V0Qm94KCkpOworICAgIGF1dG8gbmV3Q29udGFpbmVy
ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzLCBXVEZNb3ZlKHN0eWxl
KSk7CisgICAgYXV0byYgY29udGFpbmVyID0gKm5ld0NvbnRhaW5lcjsKKyAgICBtX2xheW91dFRy
ZWVDb250ZW50LmFkZENvbnRhaW5lcihXVEZNb3ZlKG5ld0NvbnRhaW5lcikpOworICAgIHJldHVy
biBjb250YWluZXI7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWlsZGVyOjpjcmVh
dGVMYXlvdXRCb3goY29uc3QgQ29udGFpbmVyJiBwYXJlbnRDb250YWluZXIsIGNvbnN0IFJlbmRl
ck9iamVjdCYgY2hpbGRSZW5kZXJlcikKK0JveCogVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJv
eChjb25zdCBDb250YWluZXImIHBhcmVudENvbnRhaW5lciwgY29uc3QgUmVuZGVyT2JqZWN0JiBj
aGlsZFJlbmRlcmVyKQogewogICAgIGF1dG8gZWxlbWVudEF0dHJpYnV0ZXMgPSBbXSAoY29uc3Qg
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpIC0+IE9wdGlvbmFsPEJveDo6RWxlbWVudEF0dHJpYnV0
ZXM+IHsKICAgICAgICAgaWYgKHJlbmRlcmVyLmlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIoKSkK
QEAgLTE3OCwxNiArMTg2LDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWlsZGVyOjpj
cmVhdGVMYXlvdXRCb3goY29uc3QgQ29udGFpbmVyJiBwYXJlbnRDb250YWluCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGNo
aWxkTGF5b3V0Qm94OworICAgIEJveCogY2hpbGRMYXlvdXRCb3ggPSBudWxscHRyOwogICAgIGlm
IChpczxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKSkgewogICAgICAgICBhdXRvJiB0ZXh0UmVu
ZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKTsKICAgICAgICAgLy8g
UmVuZGVyVGV4dDo6dGV4dCgpIGhhcyBhbHJlYWR5IGFwcGxpZWQgdGV4dC10cmFuc2Zvcm0gYW5k
IHRleHQtc2VjdXJpdHkgcHJvcGVydGllcy4KICAgICAgICAgU3RyaW5nIHRleHQgPSB0ZXh0UmVu
ZGVyZXIudGV4dCgpOwogICAgICAgICBhdXRvIHRleHRDb250ZW50ID0gVGV4dENvbnRleHQgeyB0
ZXh0LCBjYW5Vc2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZyh0ZXh0LCBwYXJlbnRDb250YWluZXIu
c3R5bGUoKS5mb250Q2FzY2FkZSgpLCBwYXJlbnRDb250YWluZXIuc3R5bGUoKS5jb2xsYXBzZVdo
aXRlU3BhY2UoKSkgfTsKICAgICAgICAgaWYgKHBhcmVudENvbnRhaW5lci5zdHlsZSgpLmRpc3Bs
YXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gg
PSBtYWtlVW5pcXVlPEJveD4oV1RGTW92ZSh0ZXh0Q29udGVudCksIFJlbmRlclN0eWxlOjpjbG9u
ZShwYXJlbnRDb250YWluZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gg
PSAmY3JlYXRlVGV4dEJveChXVEZNb3ZlKHRleHRDb250ZW50KSwgUmVuZGVyU3R5bGU6OmNsb25l
KHBhcmVudENvbnRhaW5lci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNo
aWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KFdURk1vdmUodGV4dENvbnRlbnQpLCBSZW5k
ZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRDb250YWluZXIu
c3R5bGUoKSwgRGlzcGxheVR5cGU6OklubGluZSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRC
b3ggPSAmY3JlYXRlVGV4dEJveChXVEZNb3ZlKHRleHRDb250ZW50KSwgUmVuZGVyU3R5bGU6OmNy
ZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50Q29udGFpbmVyLnN0eWxlKCksIERp
c3BsYXlUeXBlOjpJbmxpbmUpKTsKICAgICAgICAgY2hpbGRMYXlvdXRCb3gtPnNldElzQW5vbnlt
b3VzKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBkb3duY2FzdDxS
ZW5kZXJFbGVtZW50PihjaGlsZFJlbmRlcmVyKTsKQEAgLTE5OCwxNiArMjA2LDE2IEBAIHN0ZDo6
dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgQ29udGFp
bmVyJiBwYXJlbnRDb250YWluCiAgICAgICAgIGlmIChpczxSZW5kZXJMaW5lQnJlYWs+KHJlbmRl
cmVyKSkgewogICAgICAgICAgICAgY2xvbmVkU3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6
SW5saW5lKTsKICAgICAgICAgICAgIGNsb25lZFN0eWxlLnNldEZsb2F0aW5nKEZsb2F0OjpObyk7
Ci0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94PihlbGVtZW50QXR0
cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoY2xvbmVkU3R5bGUpKTsKKyAgICAgICAgICAgIGNo
aWxkTGF5b3V0Qm94ID0gJmNyZWF0ZUJveChlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdU
Rk1vdmUoY2xvbmVkU3R5bGUpKTsKICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJUYWJsZT4o
cmVuZGVyZXIpKSB7CiAgICAgICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIHByaW5jaXBhbCB0YWJs
ZSB3cmFwcGVyIGJveCAoYW5kIG5vdCB0aGUgdGFibGUgYm94IGl0c2VsZikuCi0gICAgICAgICAg
ICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRy
aWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVXcmFwcGVyQm94IH0sIFdURk1vdmUoY2xv
bmVkU3R5bGUpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gJmNyZWF0ZUNvbnRhaW5l
cihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVXcmFwcGVy
Qm94IH0sIFdURk1vdmUoY2xvbmVkU3R5bGUpKTsKICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94
LT5zZXRJc0Fub255bW91cygpOwogICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlclJlcGxhY2Vk
PihyZW5kZXJlcikpIHsKICAgICAgICAgICAgIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlw
ZTo6QmxvY2spCi0gICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJv
eD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKGNsb25lZFN0eWxlKSk7Cisg
ICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSAmY3JlYXRlQm94KGVsZW1lbnRBdHRyaWJ1
dGVzKHJlbmRlcmVyKSwgV1RGTW92ZShjbG9uZWRTdHlsZSkpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGVsZW1lbnRB
dHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RGTW92ZShjbG9uZWRTdHlsZSkpOworICAgICAgICAgICAg
ICAgIGNoaWxkTGF5b3V0Qm94ID0gJmNyZWF0ZUJveChlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJl
ciksIFdURk1vdmUoY2xvbmVkU3R5bGUpKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24n
dCB5ZXQgc3VwcG9ydCBhbGwgcmVwbGFjZWQgZWxlbWVudHMgYW5kIHRoaXMgaXMgdGVtcG9yYXJ5
IGFueXdheS4KICAgICAgICAgICAgIGlmIChjaGlsZExheW91dEJveC0+cmVwbGFjZWQoKSkKICAg
ICAgICAgICAgICAgICBjaGlsZExheW91dEJveC0+cmVwbGFjZWQoKS0+c2V0SW50cmluc2ljU2l6
ZShkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4ocmVuZGVyZXIpLmludHJpbnNpY1NpemUoKSk7CkBA
IC0yMjMsMjAgKzIzMSwyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3Jl
YXRlTGF5b3V0Qm94KGNvbnN0IENvbnRhaW5lciYgcGFyZW50Q29udGFpbgogICAgICAgICAgICAg
ICAgIGlmIChhdXRvIG9mZnNldCA9IGFjY3VtdWxhdGVkT2Zmc2V0Rm9ySW5GbG93UG9zaXRpb25l
ZENvbnRpbnVhdGlvbihkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKSkpIHsKICAgICAgICAg
ICAgICAgICAgICAgY2xvbmVkU3R5bGUuc2V0VG9wKHsgb2Zmc2V0LT5oZWlnaHQoKSwgRml4ZWQg
fSk7CiAgICAgICAgICAgICAgICAgICAgIGNsb25lZFN0eWxlLnNldExlZnQoeyBvZmZzZXQtPndp
ZHRoKCksIEZpeGVkIH0pOwotICAgICAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1h
a2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUo
Y2xvbmVkU3R5bGUpKTsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSAmY3Jl
YXRlQ29udGFpbmVyKGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RGTW92ZShjbG9uZWRT
dHlsZSkpOwogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBjaGls
ZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5k
ZXJlciksIFdURk1vdmUoY2xvbmVkU3R5bGUpKTsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRM
YXlvdXRCb3ggPSAmY3JlYXRlQ29udGFpbmVyKGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwg
V1RGTW92ZShjbG9uZWRTdHlsZSkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5VHlw
ZSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lKQotICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94
ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RG
TW92ZShjbG9uZWRTdHlsZSkpOworICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gJmNy
ZWF0ZUNvbnRhaW5lcihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoY2xvbmVk
U3R5bGUpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBl
OjpJbmxpbmVCbG9jaykKLSAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlx
dWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoY2xvbmVk
U3R5bGUpKTsKKyAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9ICZjcmVhdGVDb250YWlu
ZXIoZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKGNsb25lZFN0eWxlKSk7CiAg
ICAgICAgICAgICBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDYXB0
aW9uIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNlbGwpIHsKLSAgICAgICAg
ICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0
cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoY2xvbmVkU3R5bGUpKTsKKyAgICAgICAgICAgICAg
ICBjaGlsZExheW91dEJveCA9ICZjcmVhdGVDb250YWluZXIoZWxlbWVudEF0dHJpYnV0ZXMocmVu
ZGVyZXIpLCBXVEZNb3ZlKGNsb25lZFN0eWxlKSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGRp
c3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3VwIHx8IGRpc3BsYXlUeXBlID09
IERpc3BsYXlUeXBlOjpUYWJsZUhlYWRlckdyb3VwIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlU
eXBlOjpUYWJsZUZvb3Rlckdyb3VwCiAgICAgICAgICAgICAgICAgfHwgZGlzcGxheVR5cGUgPT0g
RGlzcGxheVR5cGU6OlRhYmxlUm93IHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJs
ZUNvbHVtbkdyb3VwKSB7Ci0gICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5p
cXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKGNsb25l
ZFN0eWxlKSk7CisgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSAmY3JlYXRlQ29udGFp
bmVyKGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RGTW92ZShjbG9uZWRTdHlsZSkpOwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVD
b2x1bW4pIHsKLSAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29u
dGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoY2xvbmVkU3R5bGUp
KTsKKyAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9ICZjcmVhdGVDb250YWluZXIoZWxl
bWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKGNsb25lZFN0eWxlKSk7CiAgICAgICAg
ICAgICAgICAgYXV0byYgdGFibGVDb2xFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFRhYmxlQ29s
RWxlbWVudCY+KCpyZW5kZXJlci5lbGVtZW50KCkpOwogICAgICAgICAgICAgICAgIGF1dG8gY29s
dW1uV2lkdGggPSB0YWJsZUNvbEVsZW1lbnQud2lkdGgoKTsKICAgICAgICAgICAgICAgICBpZiAo
IWNvbHVtbldpZHRoLmlzRW1wdHkoKSkKQEAgLTI0NSw3ICsyNTMsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IENvbnRhaW5lciYgcGFy
ZW50Q29udGFpbgogICAgICAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveC0+c2V0Q29sdW1u
U3Bhbih0YWJsZUNvbEVsZW1lbnQuc3BhbigpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4geyB9OworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKQEAgLTI3MywzOSArMjgxLDM0IEBAIHZvaWQgVHJlZUJ1aWxkZXI6
OmJ1aWxkVGFibGVTdHJ1Y3R1cmUoY29uc3QgUmVuZGVyVGFibGUmIHRhYmxlUmVuZGVyZXIsIENv
bnRhaW5lCiAgICAgYXV0byogdGFibGVDaGlsZCA9IHRhYmxlUmVuZGVyZXIuZmlyc3RDaGlsZCgp
OwogICAgIHdoaWxlIChpczxSZW5kZXJUYWJsZUNhcHRpb24+KHRhYmxlQ2hpbGQpKSB7CiAgICAg
ICAgIGF1dG8mIGNhcHRpb25SZW5kZXJlciA9ICp0YWJsZUNoaWxkOwotICAgICAgICBhdXRvIGNh
cHRpb25Cb3ggPSBjcmVhdGVMYXlvdXRCb3godGFibGVXcmFwcGVyQm94LCBjYXB0aW9uUmVuZGVy
ZXIpOworICAgICAgICBhdXRvKiBjYXB0aW9uQm94ID0gY3JlYXRlTGF5b3V0Qm94KHRhYmxlV3Jh
cHBlckJveCwgY2FwdGlvblJlbmRlcmVyKTsKICAgICAgICAgYXBwZW5kQ2hpbGQodGFibGVXcmFw
cGVyQm94LCAqY2FwdGlvbkJveCk7CiAgICAgICAgIGF1dG8mIGNhcHRpb25Db250YWluZXIgPSBk
b3duY2FzdDxDb250YWluZXI+KCpjYXB0aW9uQm94KTsKICAgICAgICAgYnVpbGRTdWJUcmVlKGRv
d25jYXN0PFJlbmRlckVsZW1lbnQ+KGNhcHRpb25SZW5kZXJlciksIGNhcHRpb25Db250YWluZXIp
OwotICAgICAgICBtX2xheW91dFRyZWVDb250ZW50LmFkZEJveChXVEZNb3ZlKGNhcHRpb25Cb3gp
KTsKICAgICAgICAgdGFibGVDaGlsZCA9IHRhYmxlQ2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAg
fQogCi0gICAgYXV0byB0YWJsZUJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1l
bnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVCb3ggfSwgUmVuZGVyU3R5bGU6
OmNsb25lKHRhYmxlUmVuZGVyZXIuc3R5bGUoKSkpOwotICAgIGFwcGVuZENoaWxkKHRhYmxlV3Jh
cHBlckJveCwgKnRhYmxlQm94KTsKKyAgICBhdXRvJiB0YWJsZUJveCA9IGNyZWF0ZUNvbnRhaW5l
cihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVCb3ggfSwg
UmVuZGVyU3R5bGU6OmNsb25lKHRhYmxlUmVuZGVyZXIuc3R5bGUoKSkpOworICAgIGFwcGVuZENo
aWxkKHRhYmxlV3JhcHBlckJveCwgdGFibGVCb3gpOwogICAgIGF1dG8qIHNlY3Rpb25SZW5kZXJl
ciA9IHRhYmxlQ2hpbGQ7CiAgICAgd2hpbGUgKHNlY3Rpb25SZW5kZXJlcikgewotICAgICAgICBh
dXRvIHNlY3Rpb25Cb3ggPSBjcmVhdGVMYXlvdXRCb3goKnRhYmxlQm94LCAqc2VjdGlvblJlbmRl
cmVyKTsKLSAgICAgICAgYXBwZW5kQ2hpbGQoKnRhYmxlQm94LCAqc2VjdGlvbkJveCk7CisgICAg
ICAgIGF1dG8qIHNlY3Rpb25Cb3ggPSBjcmVhdGVMYXlvdXRCb3godGFibGVCb3gsICpzZWN0aW9u
UmVuZGVyZXIpOworICAgICAgICBhcHBlbmRDaGlsZCh0YWJsZUJveCwgKnNlY3Rpb25Cb3gpOwog
ICAgICAgICBhdXRvJiBzZWN0aW9uQ29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPigqc2Vj
dGlvbkJveCk7CiAgICAgICAgIGJ1aWxkU3ViVHJlZShkb3duY2FzdDxSZW5kZXJFbGVtZW50Pigq
c2VjdGlvblJlbmRlcmVyKSwgc2VjdGlvbkNvbnRhaW5lcik7Ci0gICAgICAgIG1fbGF5b3V0VHJl
ZUNvbnRlbnQuYWRkQm94KFdURk1vdmUoc2VjdGlvbkJveCkpOwogICAgICAgICBzZWN0aW9uUmVu
ZGVyZXIgPSBzZWN0aW9uUmVuZGVyZXItPm5leHRTaWJsaW5nKCk7CiAgICAgfQotICAgIG1fbGF5
b3V0VHJlZUNvbnRlbnQuYWRkQm94KFdURk1vdmUodGFibGVCb3gpKTsKIH0KIAogdm9pZCBUcmVl
QnVpbGRlcjo6YnVpbGRTdWJUcmVlKGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbmRlcmVy
LCBDb250YWluZXImIHBhcmVudENvbnRhaW5lcikKIHsKICAgICBmb3IgKGF1dG8mIGNoaWxkUmVu
ZGVyZXIgOiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJPYmplY3Q+KHBhcmVudFJlbmRlcmVyKSkgewot
ICAgICAgICBhdXRvIGNoaWxkTGF5b3V0Qm94ID0gY3JlYXRlTGF5b3V0Qm94KHBhcmVudENvbnRh
aW5lciwgY2hpbGRSZW5kZXJlcik7CisgICAgICAgIGF1dG8qIGNoaWxkTGF5b3V0Qm94ID0gY3Jl
YXRlTGF5b3V0Qm94KHBhcmVudENvbnRhaW5lciwgY2hpbGRSZW5kZXJlcik7CiAgICAgICAgIGFw
cGVuZENoaWxkKHBhcmVudENvbnRhaW5lciwgKmNoaWxkTGF5b3V0Qm94KTsKICAgICAgICAgaWYg
KGNoaWxkTGF5b3V0Qm94LT5pc1RhYmxlV3JhcHBlckJveCgpKQogICAgICAgICAgICAgYnVpbGRU
YWJsZVN0cnVjdHVyZShkb3duY2FzdDxSZW5kZXJUYWJsZT4oY2hpbGRSZW5kZXJlciksIGRvd25j
YXN0PENvbnRhaW5lcj4oKmNoaWxkTGF5b3V0Qm94KSk7CiAgICAgICAgIGVsc2UgaWYgKGlzPENv
bnRhaW5lcj4oKmNoaWxkTGF5b3V0Qm94KSkKICAgICAgICAgICAgIGJ1aWxkU3ViVHJlZShkb3du
Y2FzdDxSZW5kZXJFbGVtZW50PihjaGlsZFJlbmRlcmVyKSwgZG93bmNhc3Q8Q29udGFpbmVyPigq
Y2hpbGRMYXlvdXRCb3gpKTsKLQotICAgICAgICBtX2xheW91dFRyZWVDb250ZW50LmFkZEJveChX
VEZNb3ZlKGNoaWxkTGF5b3V0Qm94KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaAppbmRleCA2NGM5NjA4
YmM0NC4uMTkzM2EwNDE2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKKyNpbmNsdWRlICJMYXlvdXRDb250YWlu
ZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KIApAQCAtNDEsOCArNDIsNiBAQCBjbGFzcyBSZW5kZXJWaWV3OwogCiBuYW1lc3BhY2UgTGF5
b3V0IHsKIAotY2xhc3MgQm94OwotY2xhc3MgQ29udGFpbmVyOwogY2xhc3MgTGF5b3V0U3RhdGU7
CiAKIGNsYXNzIExheW91dFRyZWVDb250ZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPExheW91
dFRyZWVDb250ZW50PiB7CkBAIC01NSw3ICs1NCwxMiBAQCBwdWJsaWM6CiAgICAgQ29udGFpbmVy
JiByb290TGF5b3V0Qm94KCkgeyByZXR1cm4gKm1fcm9vdExheW91dEJveDsgfQogICAgIGNvbnN0
IFJlbmRlckJveCYgcm9vdFJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290UmVuZGVyZXI7
IH0KIAotICAgIHZvaWQgYWRkQm94KHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGJveCkgeyBtX2JveGVz
LmFkZChXVEZNb3ZlKGJveCkpOyB9CisgICAgdm9pZCBhZGRCb3goc3RkOjp1bmlxdWVfcHRyPEJv
eD4gYm94KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFib3gtPmlzQ29udGFpbmVyKCkpOworICAg
ICAgICBtX2JveGVzLmFkZChXVEZNb3ZlKGJveCkpOworICAgIH0KKyAgICB2b2lkIGFkZENvbnRh
aW5lcihzdGQ6OnVuaXF1ZV9wdHI8Q29udGFpbmVyPiBjb250YWluZXIpIHsgbV9jb250YWluZXJz
LmFkZChXVEZNb3ZlKGNvbnRhaW5lcikpOyB9CiAKICAgICBCb3gqIGxheW91dEJveEZvclJlbmRl
cmVyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIHsgcmV0dXJuIG1fcmVuZGVyT2JqZWN0
VG9MYXlvdXRCb3guZ2V0KCZyZW5kZXJlcik7IH0KICAgICBjb25zdCBCb3gqIGxheW91dEJveEZv
clJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIGNvbnN0IHsgcmV0dXJuIG1f
cmVuZGVyT2JqZWN0VG9MYXlvdXRCb3guZ2V0KCZyZW5kZXJlcik7IH0KQEAgLTY4LDYgKzcyLDcg
QEAgcHJpdmF0ZToKICAgICBjb25zdCBSZW5kZXJCb3gmIG1fcm9vdFJlbmRlcmVyOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxDb250YWluZXI+IG1fcm9vdExheW91dEJveDsKICAgICBIYXNoU2V0PHN0
ZDo6dW5pcXVlX3B0cjxCb3g+PiBtX2JveGVzOworICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRy
PENvbnRhaW5lcj4+IG1fY29udGFpbmVyczsKIAogICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyT2Jq
ZWN0KiwgQm94Kj4gbV9yZW5kZXJPYmplY3RUb0xheW91dEJveDsKICAgICBIYXNoTWFwPGNvbnN0
IEJveCosIGNvbnN0IFJlbmRlck9iamVjdCo+IG1fbGF5b3V0Qm94VG9SZW5kZXJPYmplY3Q7CkBA
IC03Niw3ICs4MSw2IEBAIHByaXZhdGU6CiBjbGFzcyBUcmVlQnVpbGRlciB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXlvdXQ6OkxheW91dFRyZWVDb250ZW50PiBidWls
ZExheW91dFRyZWUoY29uc3QgUmVuZGVyVmlldyYpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TGF5b3V0OjpMYXlvdXRUcmVlQ29udGVudD4gYnVpbGRMYXlvdXRUcmVlRm9ySW50ZWdyYXRp
b24oY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CiAKIHByaXZhdGU6CiAgICAgVHJlZUJ1aWxkZXIo
TGF5b3V0VHJlZUNvbnRlbnQmKTsKQEAgLTg0LDcgKzg4LDExIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBidWlsZFRyZWUoKTsKICAgICB2b2lkIGJ1aWxkU3ViVHJlZShjb25zdCBSZW5kZXJFbGVtZW50
JiBwYXJlbnRSZW5kZXJlciwgQ29udGFpbmVyJiBwYXJlbnRDb250YWluZXIpOwogICAgIHZvaWQg
YnVpbGRUYWJsZVN0cnVjdHVyZShjb25zdCBSZW5kZXJUYWJsZSYgdGFibGVSZW5kZXJlciwgQ29u
dGFpbmVyJiB0YWJsZVdyYXBwZXJCb3gpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGNyZWF0
ZUxheW91dEJveChjb25zdCBDb250YWluZXImIHBhcmVudENvbnRhaW5lciwgY29uc3QgUmVuZGVy
T2JqZWN0JiBjaGlsZFJlbmRlcmVyKTsKKyAgICBCb3gqIGNyZWF0ZUxheW91dEJveChjb25zdCBD
b250YWluZXImIHBhcmVudENvbnRhaW5lciwgY29uc3QgUmVuZGVyT2JqZWN0JiBjaGlsZFJlbmRl
cmVyKTsKKworICAgIEJveCYgY3JlYXRlQm94KE9wdGlvbmFsPEJveDo6RWxlbWVudEF0dHJpYnV0
ZXM+LCBSZW5kZXJTdHlsZSYmKTsKKyAgICBCb3gmIGNyZWF0ZVRleHRCb3goVGV4dENvbnRleHQm
JiwgUmVuZGVyU3R5bGUmJik7CisgICAgQ29udGFpbmVyJiBjcmVhdGVDb250YWluZXIoT3B0aW9u
YWw8Qm94OjpFbGVtZW50QXR0cmlidXRlcz4sIFJlbmRlclN0eWxlJiYpOwogCiAgICAgTGF5b3V0
VHJlZUNvbnRlbnQmIG1fbGF5b3V0VHJlZUNvbnRlbnQ7CiB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>