<?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>59765</bug_id>
          
          <creation_ts>2011-04-28 17:44:32 -0700</creation_ts>
          <short_desc>[GTK] Share the GTK+ key binding code between WebKit1 and WebKit2</short_desc>
          <delta_ts>2011-05-13 09:00:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>alex</cc>
    
    <cc>cgarcia</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>394990</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-28 17:44:32 -0700</bug_when>
    <thetext>Currently the GTK+ keybinding code is duplicated in both WebKit1 and WebKit2. By pushing it into a WebCore utility class we may share the code and also make the EditorClientGtk class smaller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394993</commentid>
    <comment_count>1</comment_count>
      <attachid>91609</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-28 17:48:56 -0700</bug_when>
    <thetext>Created attachment 91609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395155</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-04-29 00:11:54 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=91609) [details]
&gt; Patch

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402605</commentid>
    <comment_count>3</comment_count>
      <attachid>91609</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-11 20:37:45 -0700</bug_when>
    <thetext>Comment on attachment 91609
Patch

OK.  rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403575</commentid>
    <comment_count>4</comment_count>
      <attachid>91609</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-13 09:00:40 -0700</bug_when>
    <thetext>Comment on attachment 91609
Patch

Clearing flags on attachment: 91609

Committed r86436: &lt;http://trac.webkit.org/changeset/86436&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403576</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-13 09:00:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91609</attachid>
            <date>2011-04-28 17:48:56 -0700</date>
            <delta_ts>2011-05-13 09:00:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59765-20110428174855.patch</filename>
            <type>text/plain</type>
            <size>47047</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUyNTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZjY0MDU5YWRjZDQzMTFj
MTdiZmM2YTFkMmRjYThlMzU0ZDIyZDc5Li4wYTdjYjUzMGJhYTdmYzhmMjY4ZjZjMzJiYTIzNWZh
ODNkMGMwMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDQtMjggIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFNoYXJlIHRoZSBHVEsrIGtleSBiaW5k
aW5nIGNvZGUgYmV0d2VlbiBXZWJLaXQxIGFuZCBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTc2NQorCisgICAgICAgIE1vdmUgdGhlIGtl
eWJpbmRpbmcgY29kZSBmb3JtIFdlYktpdDEvV2ViS2l0MiB0byB0aGlzIHV0aWxpdHkgY2xhc3Mu
IFRoaXMgY29kZSBpcworICAgICAgICBhbG1vc3QgZGlyZWN0bHkgbW92ZWQgZnJvbSB0aGUgV2Vi
S2l0IGxheWVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBpcyBjb3ZlcmVkIGJ5IHRo
ZSBlZGl0aW5nIHRlc3RzLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmJhY2tzcGFjZUNhbGxiYWNrKTpBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnNlbGVjdEFsbENhbGxiYWNrKTpBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmN1dENsaXBib2Fy
ZENhbGxiYWNrKTpBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDbGlwYm9hcmRDYWxsYmFj
ayk6QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpwYXN0ZUNsaXBib2FyZENhbGxiYWNrKTpBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvZ2dsZU92ZXJ3cml0ZUNhbGxiYWNrKTpBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OnBvcHVwTWVudUNhbGxiYWNrKTpBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OnNob3dIZWxwQ2FsbGJhY2spOkFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlRnJv
bUN1cnNvckNhbGxiYWNrKTpBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1vdmVDdXJzb3JDYWxs
YmFjayk6QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpLZXlCaW5kaW5nVHJhbnNsYXRvcjo6S2V5
QmluZGluZ1RyYW5zbGF0b3IpOkFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6S2V5QmluZGluZ1Ry
YW5zbGF0b3I6OmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQpOkFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OktleUJpbmRpbmdUcmFuc2xhdG9yOjphZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCk6QWRk
ZWQuCisKIDIwMTEtMDQtMjggIEpheSBDaXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCA0MDk3MDcxYzIyYWYzMzUwZDQ0OGQxNTIxODNjOWE1ZjUxY2EzOTNmLi4wNjlh
MWJhNTk2ZDRhODJhNzZjNWUwY2I0ODdmZDdiZGEwM2ViZDllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTM3NzEsNiArMzc3MSw4IEBAIHdlYmNvcmVndGtfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1BsdWdpbldpZGdldC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5jIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0tVUkxHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VH
dGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0
ay5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0tleUJpbmRp
bmdUcmFuc2xhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlCaW5kaW5n
VHJhbnNsYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODkwMzFjMDkwZmYwZmM1NjJjNDczY2Y0NWYzZjk0
N2UzZDU1OTI4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAKQEAgLTAsMCArMSwyNTcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAsIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVT
QQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJLZXlCaW5kaW5nVHJhbnNs
YXRvci5oIgorCisjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgorI2luY2x1ZGUgPGdkay9nZGtr
ZXlzeW1zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit0eXBlZGVmIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4gSW50Q29uc3RDaGFySGFzaE1h
cDsKKworc3RhdGljIHZvaWQgYmFja3NwYWNlQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEtl
eUJpbmRpbmdUcmFuc2xhdG9yKiB0cmFuc2xhdG9yKQoreworICAgIGdfc2lnbmFsX3N0b3BfZW1p
c3Npb25fYnlfbmFtZSh3aWRnZXQsICJiYWNrc3BhY2UiKTsKKyAgICB0cmFuc2xhdG9yLT5hZGRQ
ZW5kaW5nRWRpdG9yQ29tbWFuZCgiRGVsZXRlQmFja3dhcmQiKTsKK30KKworc3RhdGljIHZvaWQg
c2VsZWN0QWxsQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIGdib29sZWFuIHNlbGVjdCwgS2V5
QmluZGluZ1RyYW5zbGF0b3IqIHRyYW5zbGF0b3IpCit7CisgICAgZ19zaWduYWxfc3RvcF9lbWlz
c2lvbl9ieV9uYW1lKHdpZGdldCwgInNlbGVjdC1hbGwiKTsKKyAgICB0cmFuc2xhdG9yLT5hZGRQ
ZW5kaW5nRWRpdG9yQ29tbWFuZChzZWxlY3QgPyAiU2VsZWN0QWxsIiA6ICJVbnNlbGVjdCIpOwor
fQorCitzdGF0aWMgdm9pZCBjdXRDbGlwYm9hcmRDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwg
S2V5QmluZGluZ1RyYW5zbGF0b3IqIHRyYW5zbGF0b3IpCit7CisgICAgZ19zaWduYWxfc3RvcF9l
bWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgImN1dC1jbGlwYm9hcmQiKTsKKyAgICB0cmFuc2xhdG9y
LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiQ3V0Iik7Cit9CisKK3N0YXRpYyB2b2lkIGNvcHlD
bGlwYm9hcmRDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgS2V5QmluZGluZ1RyYW5zbGF0b3Iq
IHRyYW5zbGF0b3IpCit7CisgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdl
dCwgImNvcHktY2xpcGJvYXJkIik7CisgICAgdHJhbnNsYXRvci0+YWRkUGVuZGluZ0VkaXRvckNv
bW1hbmQoIkNvcHkiKTsKK30KKworc3RhdGljIHZvaWQgcGFzdGVDbGlwYm9hcmRDYWxsYmFjayhH
dGtXaWRnZXQqIHdpZGdldCwgS2V5QmluZGluZ1RyYW5zbGF0b3IqIHRyYW5zbGF0b3IpCit7Cisg
ICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgInBhc3RlLWNsaXBib2Fy
ZCIpOworICAgIHRyYW5zbGF0b3ItPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJQYXN0ZSIpOwor
fQorCitzdGF0aWMgdm9pZCB0b2dnbGVPdmVyd3JpdGVDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdl
dCwgS2V5QmluZGluZ1RyYW5zbGF0b3IqKQoreworICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgdG9n
Z2xpbmcgdGhlIG92ZXJ3cml0ZSBtb2RlLCBidXQgdGhlIGRlZmF1bHQgY2FsbGJhY2sgZXhwZWN0
cworICAgIC8vIHRoZSBHdGtUZXh0VmlldyB0byBoYXZlIGEgbGF5b3V0LCBzbyB3ZSBoYW5kbGUg
dGhpcyBzaWduYWwganVzdCB0byBzdG9wIGl0LgorICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25f
YnlfbmFtZSh3aWRnZXQsICJ0b2dnbGUtb3ZlcndyaXRlIik7Cit9CisKKy8vIEdUSysgd2lsbCBz
dGlsbCBzZW5kIHRoZXNlIHNpZ25hbHMgdG8gdGhlIHdlYiB2aWV3LiBTbyB3ZSBjYW4gc2FmZWx5
IHN0b3Agc2lnbmFsCisvLyBlbWlzc2lvbiB3aXRob3V0IGJyZWFraW5nIGFjY2Vzc2liaWxpdHku
CitzdGF0aWMgdm9pZCBwb3B1cE1lbnVDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgS2V5Qmlu
ZGluZ1RyYW5zbGF0b3IqKQoreworICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3
aWRnZXQsICJwb3B1cC1tZW51Iik7Cit9CisKK3N0YXRpYyB2b2lkIHNob3dIZWxwQ2FsbGJhY2so
R3RrV2lkZ2V0KiB3aWRnZXQsIEtleUJpbmRpbmdUcmFuc2xhdG9yKikKK3sKKyAgICBnX3NpZ25h
bF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAic2hvdy1oZWxwIik7Cit9CisKK3N0YXRp
YyBjb25zdCBjaGFyKiBjb25zdCBndGtEZWxldGVDb21tYW5kc1tdWzJdID0geworICAgIHsgIkRl
bGV0ZUJhY2t3YXJkIiwgICAgICAgICAgICAgICAiRGVsZXRlRm9yd2FyZCIgICAgICAgICAgICAg
ICAgICAgICAgICB9LCAvLyBDaGFyYWN0ZXJzCisgICAgeyAiRGVsZXRlV29yZEJhY2t3YXJkIiwg
ICAgICAgICAgICJEZWxldGVXb3JkRm9yd2FyZCIgICAgICAgICAgICAgICAgICAgIH0sIC8vIFdv
cmQgZW5kcworICAgIHsgIkRlbGV0ZVdvcmRCYWNrd2FyZCIsICAgICAgICAgICAiRGVsZXRlV29y
ZEZvcndhcmQiICAgICAgICAgICAgICAgICAgICB9LCAvLyBXb3JkcworICAgIHsgIkRlbGV0ZVRv
QmVnaW5uaW5nT2ZMaW5lIiwgICAgICAiRGVsZXRlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAg
ICAgICB9LCAvLyBMaW5lcworICAgIHsgIkRlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgICAgICAi
RGVsZXRlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAgICB9LCAvLyBMaW5lIGVuZHMKKyAg
ICB7ICJEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwgIkRlbGV0ZVRvRW5kT2ZQYXJhZ3Jh
cGgiICAgICAgICAgICAgICAgfSwgLy8gUGFyYWdyYXBoIGVuZHMKKyAgICB7ICJEZWxldGVUb0Jl
Z2lubmluZ09mUGFyYWdyYXBoIiwgIkRlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgiICAgICAgICAgICAg
ICAgfSwgLy8gUGFyYWdyYXBocworICAgIHsgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IC8vIFdoaXRlc3BhY2Ug
KE0tXCBpbiBFbWFjcykKK307CisKK3N0YXRpYyB2b2lkIGRlbGV0ZUZyb21DdXJzb3JDYWxsYmFj
ayhHdGtXaWRnZXQqIHdpZGdldCwgR3RrRGVsZXRlVHlwZSBkZWxldGVUeXBlLCBnaW50IGNvdW50
LCBLZXlCaW5kaW5nVHJhbnNsYXRvciogdHJhbnNsYXRvcikKK3sKKyAgICBnX3NpZ25hbF9zdG9w
X2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAiZGVsZXRlLWZyb20tY3Vyc29yIik7CisgICAgaW50
IGRpcmVjdGlvbiA9IGNvdW50ID4gMCA/IDEgOiAwOworCisgICAgLy8gRW5zdXJpbmcgdGhhdCBk
ZWxldGVUeXBlIDw9IEdfTl9FTEVNRU5UUyBoZXJlIHJlc3VsdHMgaW4gYSBjb21waWxlciB3YXJu
aW5nCisgICAgLy8gdGhhdCB0aGUgY29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlLgorCisgICAgaWYg
KGRlbGV0ZVR5cGUgPT0gR1RLX0RFTEVURV9XT1JEUykgeworICAgICAgICBpZiAoIWRpcmVjdGlv
bikgeworICAgICAgICAgICAgdHJhbnNsYXRvci0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1v
dmVXb3JkRm9yd2FyZCIpOworICAgICAgICAgICAgdHJhbnNsYXRvci0+YWRkUGVuZGluZ0VkaXRv
ckNvbW1hbmQoIk1vdmVXb3JkQmFja3dhcmQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHRyYW5zbGF0b3ItPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlV29yZEJhY2t3YXJk
Iik7CisgICAgICAgICAgICB0cmFuc2xhdG9yLT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92
ZVdvcmRGb3J3YXJkIik7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGRlbGV0ZVR5cGUgPT0g
R1RLX0RFTEVURV9ESVNQTEFZX0xJTkVTKSB7CisgICAgICAgIGlmICghZGlyZWN0aW9uKQorICAg
ICAgICAgICAgdHJhbnNsYXRvci0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVUb0JlZ2lu
bmluZ09mTGluZSIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0cmFuc2xhdG9yLT5hZGRQ
ZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVRvRW5kT2ZMaW5lIik7CisgICAgfSBlbHNlIGlmIChk
ZWxldGVUeXBlID09IEdUS19ERUxFVEVfUEFSQUdSQVBIUykgeworICAgICAgICBpZiAoIWRpcmVj
dGlvbikKKyAgICAgICAgICAgIHRyYW5zbGF0b3ItPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJN
b3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0
cmFuc2xhdG9yLT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVRvRW5kT2ZQYXJhZ3JhcGgi
KTsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyKiByYXdDb21tYW5kID0gZ3RrRGVsZXRlQ29tbWFu
ZHNbZGVsZXRlVHlwZV1bZGlyZWN0aW9uXTsKKyAgICBpZiAoIXJhd0NvbW1hbmQpCisgICAgICBy
ZXR1cm47CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGFicyhjb3VudCk7IGkrKykKKyAgICAg
ICAgdHJhbnNsYXRvci0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQocmF3Q29tbWFuZCk7Cit9CisK
K3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBndGtNb3ZlQ29tbWFuZHNbXVs0XSA9IHsKKyAgICB7
ICJNb3ZlQmFja3dhcmQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVG
b3J3YXJkIiwKKyAgICAgICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICAgICAg
ICAgICAgICAgIk1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICB9LCAv
LyBGb3J3YXJkL2JhY2t3YXJkIGdyYXBoZW1lCisgICAgeyAiTW92ZUxlZnQiLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUmlnaHQiLAorICAgICAgIk1vdmVCYWNr
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAgICAgICAgICAiTW92ZUZvcndhcmRBbmRN
b2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgIH0sIC8vIExlZnQvcmlnaHQgZ3JhcGhlbWUKKyAg
ICB7ICJNb3ZlV29yZEJhY2t3YXJkIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1v
dmVXb3JkRm9yd2FyZCIsCisgICAgICAiTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlv
biIsICAgICAgICAgICAgICJNb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAg
ICAgfSwgLy8gRm9yd2FyZC9iYWNrd2FyZCB3b3JkCisgICAgeyAiTW92ZVVwIiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93biIsCisgICAgICAiTW92ZVVw
QW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93bkFuZE1v
ZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgfSwgLy8gVXAvZG93biBsaW5lCisgICAgeyAi
TW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9F
bmRPZkxpbmUiLAorICAgICAgIk1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlv
biIsICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgIH0s
IC8vIFVwL2Rvd24gbGluZSBlbmRzCisgICAgeyAiTW92ZVBhcmFncmFwaEZvcndhcmQiLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFyYWdyYXBoQmFja3dhcmQiLAorICAgICAgIk1v
dmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICAiTW92ZVBhcmFn
cmFwaEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiAgIH0sIC8vIFVwL2Rvd24gcGFyYWdyYXBo
cworICAgIHsgIk1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwgICAgICAgICAgICAgICAgICAg
ICAiTW92ZVRvRW5kT2ZQYXJhZ3JhcGgiLAorICAgICAgIk1vdmVUb0JlZ2lubmluZ09mUGFyYWdy
YXBoQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAiTW92ZVRvRW5kT2ZQYXJhZ3JhcGhBbmRNb2RpZnlT
ZWxlY3Rpb24iICAgIH0sIC8vIFVwL2Rvd24gcGFyYWdyYXBoIGVuZHMuCisgICAgeyAiTW92ZVBh
Z2VVcCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24i
LAorICAgICAgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICAgICAgICAgICAgICAg
ICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgIH0sIC8vIFVwL2Rv
d24gcGFnZQorICAgIHsgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiLCAgICAgICAgICAgICAg
ICAgICAgICAiTW92ZVRvRW5kT2ZEb2N1bWVudCIsCisgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZE
b2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9k
aWZ5U2VsZWN0aW9uIiAgICAgfSwgLy8gQmVnaW4vZW5kIG9mIGJ1ZmZlcgorICAgIHsgMCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gLy8gSG9yaXpvbnRhbCBwYWdlIG1v
dmVtZW50Cit9OworCitzdGF0aWMgdm9pZCBtb3ZlQ3Vyc29yQ2FsbGJhY2soR3RrV2lkZ2V0KiB3
aWRnZXQsIEd0a01vdmVtZW50U3RlcCBzdGVwLCBnaW50IGNvdW50LCBnYm9vbGVhbiBleHRlbmRT
ZWxlY3Rpb24sIEtleUJpbmRpbmdUcmFuc2xhdG9yKiB0cmFuc2xhdG9yKQoreworICAgIGdfc2ln
bmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJtb3ZlLWN1cnNvciIpOworICAgIGlu
dCBkaXJlY3Rpb24gPSBjb3VudCA+IDAgPyAxIDogMDsKKyAgICBpZiAoZXh0ZW5kU2VsZWN0aW9u
KQorICAgICAgICBkaXJlY3Rpb24gKz0gMjsKKworICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc3RlcCkgPj0gR19OX0VMRU1FTlRTKGd0a01vdmVDb21tYW5kcykpCisgICAgICAgIHJldHVy
bjsKKworICAgIGNvbnN0IGNoYXIqIHJhd0NvbW1hbmQgPSBndGtNb3ZlQ29tbWFuZHNbc3RlcF1b
ZGlyZWN0aW9uXTsKKyAgICBpZiAoIXJhd0NvbW1hbmQpCisgICAgICAgIHJldHVybjsKKworICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgYWJzKGNvdW50KTsgaSsrKQorICAgICAgICB0cmFuc2xhdG9y
LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZChyYXdDb21tYW5kKTsKK30KKworS2V5QmluZGluZ1Ry
YW5zbGF0b3I6OktleUJpbmRpbmdUcmFuc2xhdG9yKCkKKyAgICA6IG1fbmF0aXZlV2lkZ2V0KGd0
a190ZXh0X3ZpZXdfbmV3KCkpCit7CisgICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdl
dC5nZXQoKSwgImJhY2tzcGFjZSIsIEdfQ0FMTEJBQ0soYmFja3NwYWNlQ2FsbGJhY2spLCB0aGlz
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAiY3V0LWNsaXBi
b2FyZCIsIEdfQ0FMTEJBQ0soY3V0Q2xpcGJvYXJkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3Np
Z25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAiY29weS1jbGlwYm9hcmQiLCBHX0NB
TExCQUNLKGNvcHlDbGlwYm9hcmRDYWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJwYXN0ZS1jbGlwYm9hcmQiLCBHX0NBTExCQUNLKHBh
c3RlQ2xpcGJvYXJkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0
aXZlV2lkZ2V0LmdldCgpLCAic2VsZWN0LWFsbCIsIEdfQ0FMTEJBQ0soc2VsZWN0QWxsQ2FsbGJh
Y2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAi
bW92ZS1jdXJzb3IiLCBHX0NBTExCQUNLKG1vdmVDdXJzb3JDYWxsYmFjayksIHRoaXMpOworICAg
IGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJkZWxldGUtZnJvbS1jdXJz
b3IiLCBHX0NBTExCQUNLKGRlbGV0ZUZyb21DdXJzb3JDYWxsYmFjayksIHRoaXMpOworICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJ0b2dnbGUtb3ZlcndyaXRlIiwg
R19DQUxMQkFDSyh0b2dnbGVPdmVyd3JpdGVDYWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJwb3B1cC1tZW51IiwgR19DQUxMQkFDSyhw
b3B1cE1lbnVDYWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVX
aWRnZXQuZ2V0KCksICJzaG93LWhlbHAiLCBHX0NBTExCQUNLKHNob3dIZWxwQ2FsbGJhY2spLCB0
aGlzKTsKK30KKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIEN0cmxLZXkgPSAxIDw8IDA7CitzdGF0
aWMgY29uc3QgdW5zaWduZWQgQWx0S2V5ID0gMSA8PCAxOworc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFNoaWZ0S2V5ID0gMSA8PCAyOworCitzdHJ1Y3QgS2V5Q29tYmluYXRpb25FbnRyeSB7CisgICAg
dW5zaWduZWQgZ2RrS2V5Q29kZTsKKyAgICB1bnNpZ25lZCBzdGF0ZTsKKyAgICBjb25zdCBjaGFy
KiBuYW1lOworfTsKKworc3RhdGljIGNvbnN0IEtleUNvbWJpbmF0aW9uRW50cnkga2V5RG93bkVu
dHJpZXNbXSA9IHsKKyAgICB7IEdES19iLCAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAg
ICAgICAgICAgIlRvZ2dsZUJvbGQiICAgIH0sCisgICAgeyBHREtfaSwgICAgICAgICBHREtfQ09O
VFJPTF9NQVNLLCAgICAgICAgICAgICAgICJUb2dnbGVJdGFsaWMiICB9LAorICAgIHsgR0RLX0Vz
Y2FwZSwgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsIiAgICAgICAg
fSwKKyAgICB7IEdES19ncmVhdGVyLCAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAg
IkNhbmNlbCIgICAgICAgIH0sCit9OworCisvLyBUaGVzZSBjb21tYW5kcyBhcmUgdGV4dCBpbnNl
cnRpb24gY29tbWFuZHMsIHNvIHNob3VsZCB0YWtlIHBsYWNlCisvLyB3aGlsZSBoYW5kbGluZyB0
aGUgS2V5UHJlc3MgZXZlbnQuCitzdGF0aWMgY29uc3QgS2V5Q29tYmluYXRpb25FbnRyeSBrZXlQ
cmVzc0VudHJpZXNbXSA9IHsKKyAgICB7IEdES19UYWIsICAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkluc2VydFRhYiIgICAgIH0sCisgICAgeyBHREtfVGFiLCAgICAgICBH
REtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiB9LAorICAgIHsg
R0RLX1RhYiwgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFi
IiAgICAgfSwKKyAgICB7IEdES19UYWIsICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAg
ICAgICAgIkluc2VydEJhY2t0YWIiIH0sCisgICAgeyBHREtfUmV0dXJuLCAgICAwLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiB9LAorICAgIHsgR0RLX1JldHVy
biwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgfSwK
KyAgICB7IEdES19SZXR1cm4sICAgIEdES19NT0QxX01BU0ssICAgICAgICAgICAgICAgICAgIklu
c2VydE5ld2xpbmUiIH0sCisgICAgeyBHREtfUmV0dXJuLCAgICBHREtfTU9EMV9NQVNLIHwgR0RL
X1NISUZUX01BU0ssICJJbnNlcnROZXdsaW5lIiB9LAorICAgIHsgR0RLX0tQX0VudGVyLCAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgfSwKKyAgICB7IEdE
S19LUF9FbnRlciwgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgIkluc2VydE5ld2xp
bmUiIH0sCisgICAgeyBHREtfS1BfRW50ZXIsICBHREtfTU9EMV9NQVNLLCAgICAgICAgICAgICAg
ICAgICJJbnNlcnROZXdsaW5lIiB9LAorICAgIHsgR0RLX0tQX0VudGVyLCAgR0RLX01PRDFfTUFT
SyB8IEdES19TSElGVF9NQVNLLCAiSW5zZXJ0TmV3bGluZSIgfSwKKyAgICB7IEdES19JU09fRW50
ZXIsIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiIH0sCisg
ICAgeyBHREtfSVNPX0VudGVyLCBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICJJbnNl
cnROZXdsaW5lIiB9LAorICAgIHsgR0RLX0lTT19FbnRlciwgR0RLX01PRDFfTUFTSywgICAgICAg
ICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgfSwKKyAgICB7IEdES19JU09fRW50ZXIsIEdES19N
T0QxX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIkluc2VydE5ld2xpbmUiIH0sCit9OworCit2b2lk
IEtleUJpbmRpbmdUcmFuc2xhdG9yOjpnZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KEdka0V2
ZW50S2V5KiBldmVudCwgRXZlbnRUeXBlIHR5cGUsIFZlY3RvcjxXVEY6OlN0cmluZz4mIGNvbW1h
bmRMaXN0KQoreworICAgIG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLmNsZWFyKCk7CisKKyNpZmRl
ZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIGd0a19iaW5kaW5nc19hY3RpdmF0ZV9ldmVudChHVEtf
T0JKRUNUKG1fbmF0aXZlV2lkZ2V0LmdldCgpKSwgZXZlbnQpOworI2Vsc2UKKyAgICBndGtfYmlu
ZGluZ3NfYWN0aXZhdGVfZXZlbnQoR19PQkpFQ1QobV9uYXRpdmVXaWRnZXQuZ2V0KCkpLCBldmVu
dCk7CisjZW5kaWYKKworICAgIGlmICghbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuaXNFbXB0eSgp
KSB7CisgICAgICAgIGNvbW1hbmRMaXN0LmFwcGVuZChtX3BlbmRpbmdFZGl0b3JDb21tYW5kcyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEludENv
bnN0Q2hhckhhc2hNYXAsIGtleURvd25Db21tYW5kc01hcCwgKCkpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoSW50Q29uc3RDaGFySGFzaE1hcCwga2V5UHJlc3NDb21tYW5kc01hcCwgKCkpOwor
CisgICAgaWYgKGtleURvd25Db21tYW5kc01hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyhrZXlEb3duRW50cmllcyk7IGkrKykKKyAg
ICAgICAgICAgIGtleURvd25Db21tYW5kc01hcC5zZXQoa2V5RG93bkVudHJpZXNbaV0uc3RhdGUg
PDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS5nZGtLZXlDb2RlLCBrZXlEb3duRW50cmllc1tpXS5u
YW1lKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTKGtl
eVByZXNzRW50cmllcyk7IGkrKykKKyAgICAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAuc2V0
KGtleVByZXNzRW50cmllc1tpXS5zdGF0ZSA8PCAxNiB8IGtleVByZXNzRW50cmllc1tpXS5nZGtL
ZXlDb2RlLCBrZXlQcmVzc0VudHJpZXNbaV0ubmFtZSk7CisgICAgfQorCisgICAgLy8gRm9yIGtl
eXByZXNzIGV2ZW50cywgd2Ugd2FudCBjaGFyQ29kZSgpLCBidXQga2V5Q29kZSgpIGRvZXMgdGhh
dC4KKyAgICBpbnQgbWFwS2V5ID0gZXZlbnQtPnN0YXRlIDw8IDE2IHwgZXZlbnQtPmtleXZhbDsK
KyAgICBpZiAobWFwS2V5KSB7CisgICAgICAgIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGNv
bW1hbmRNYXAgPSB0eXBlID09IEtleURvd24gPyAgJmtleURvd25Db21tYW5kc01hcCA6ICZrZXlQ
cmVzc0NvbW1hbmRzTWFwOworICAgICAgICBpZiAoY29uc3QgY2hhciogY29tbWFuZFN0cmluZyA9
IGNvbW1hbmRNYXAtPmdldChtYXBLZXkpKSB7CisgICAgICAgICAgICBjb21tYW5kTGlzdC5hcHBl
bmQoY29tbWFuZFN0cmluZyk7ICAKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTkxYTQ0YjJi
OGM5ZTc3MDY1YjFmYmU0ODQxNzg2MDg4NjQ4ZThiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmgKQEAgLTAsMCArMSw0
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBLZXlCaW5kaW5nVHJhbnNsYXRvcl9o
CisjZGVmaW5lIEtleUJpbmRpbmdUcmFuc2xhdG9yX2gKKworI2luY2x1ZGUgIkdSZWZQdHJHdGsu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KwordHlwZWRlZiBzdHJ1Y3QgX0dka0V2ZW50S2V5IEdka0V2ZW50S2V5OworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEtleUJpbmRpbmdUcmFuc2xhdG9yIHsKK3B1YmxpYzoKKyAgICBL
ZXlCaW5kaW5nVHJhbnNsYXRvcigpOworCisgICAgZW51bSBFdmVudFR5cGUgeyBLZXlEb3duLCBL
ZXlQcmVzcyB9OworICAgIHZvaWQgZ2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChHZGtFdmVu
dEtleSosIEV2ZW50VHlwZSwgVmVjdG9yPFdURjo6U3RyaW5nPiYpOworICAgIHZvaWQgYWRkUGVu
ZGluZ0VkaXRvckNvbW1hbmQoY29uc3QgY2hhciogY29tbWFuZCkgeyBtX3BlbmRpbmdFZGl0b3JD
b21tYW5kcy5hcHBlbmQoV1RGOjpTdHJpbmcoY29tbWFuZCkpOyB9CisKK3ByaXZhdGU6CisgICAg
R1JlZlB0cjxHdGtXaWRnZXQ+IG1fbmF0aXZlV2lkZ2V0OworICAgIFZlY3RvcjxXVEY6OlN0cmlu
Zz4gbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA4MjU0MjhjN2VkODNhZTU0YTBmYmM2
NWNhMDJmYmI5OGIyMGUxYTFlLi4yMGU0ZDdiZmZjYTY1NjBkYjIxOGE1YzhkYzJjZjM3Y2VhZDJl
N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDQtMjggIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFNoYXJlIHRoZSBHVEsrIGtleSBiaW5k
aW5nIGNvZGUgYmV0d2VlbiBXZWJLaXQxIGFuZCBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTc2NQorCisgICAgICAgIFVzZSB0aGUgbmV3
IEtleUJpbmRpbmdUcmFuc2xhdG9yIGNsYXNzIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9ndGsuIFdp
dGggdGhpcyB1dGlsaXR5CisgICAgICAgIGNsYXNzIHdlIGNhbiBub3cgc2hhcmUgdGhlIGNvZGUg
d2l0aCBXZWJLaXQyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50OjpleGVjdXRlUGVuZGluZ0VkaXRv
ckNvbW1hbmRzKTogVXBkYXRlZCB0byByZWZsZWN0IHRoZSBmYWN0IHRoYXQKKyAgICAgICAgdGhl
IGNvbW1hbmQgdmVjdG9yIG5vdyBjb250YWlucyBXVEY6OnN0cmluZy4KKyAgICAgICAgKFdlYktp
dDo6RWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KTogVXNlIHRoZSBuZXcgaGVscGVy
IHV0aWxpdHkgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6RWRpdG9yQ2xp
ZW50KTogCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmg6IFJlbW92
ZSB1bm5lY2Vzc2FyeSBtZW1iZXIuIEFkZCB0aGUgdXRpbGl0eSBjbGFzcy4KKwogMjAxMS0wNC0y
OCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBi
dWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50R3RrLmNwcAppbmRleCA3ZjBiMGFhNGE4NmZjZmRiZGRkODIyYzVlODljYjVmN2Fk
M2MwOTY3Li42YjNiNjkzMTdlZTI5MTIyN2ZmNjdiN2MxZjBkMjI1NTZmZmM1NDE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5j
cHAKQEAgLTk5LDE0MiArOTksNiBAQCBzdGF0aWMgdm9pZCBpbUNvbnRleHRQcmVlZGl0Q2hhbmdl
ZChHdGtJTUNvbnRleHQqIGNvbnRleHQsIEVkaXRvckNsaWVudCogY2xpZW50KQogICAgIGZyYW1l
LT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdFN0cmluZywgdW5kZXJsaW5lcywgMCwg
MCk7CiB9CiAKLXN0YXRpYyB2b2lkIGJhY2tzcGFjZUNhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0
LCBFZGl0b3JDbGllbnQqIGNsaWVudCkKLXsKLSAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5
X25hbWUod2lkZ2V0LCAiYmFja3NwYWNlIik7Ci0gICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9y
Q29tbWFuZCgiRGVsZXRlQmFja3dhcmQiKTsKLX0KLQotc3RhdGljIHZvaWQgc2VsZWN0QWxsQ2Fs
bGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIGdib29sZWFuIHNlbGVjdCwgRWRpdG9yQ2xpZW50KiBj
bGllbnQpCi17Ci0gICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgInNl
bGVjdC1hbGwiKTsKLSAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKHNlbGVjdCA/
ICJTZWxlY3RBbGwiIDogIlVuc2VsZWN0Iik7Ci19Ci0KLXN0YXRpYyB2b2lkIGN1dENsaXBib2Fy
ZENhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBFZGl0b3JDbGllbnQqIGNsaWVudCkKLXsKLSAg
ICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAiY3V0LWNsaXBib2FyZCIp
OwotICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIkN1dCIpOwotfQotCi1zdGF0
aWMgdm9pZCBjb3B5Q2xpcGJvYXJkQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEVkaXRvckNs
aWVudCogY2xpZW50KQotewotICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRn
ZXQsICJjb3B5LWNsaXBib2FyZCIpOwotICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1h
bmQoIkNvcHkiKTsKLX0KLQotc3RhdGljIHZvaWQgcGFzdGVDbGlwYm9hcmRDYWxsYmFjayhHdGtX
aWRnZXQqIHdpZGdldCwgRWRpdG9yQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgZ19zaWduYWxfc3Rv
cF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgInBhc3RlLWNsaXBib2FyZCIpOwotICAgIGNsaWVu
dC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIlBhc3RlIik7Ci19Ci0KLXN0YXRpYyB2b2lkIHRv
Z2dsZU92ZXJ3cml0ZUNhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBFZGl0b3JDbGllbnQqKQot
ewotICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgdG9nZ2xpbmcgdGhlIG92ZXJ3cml0ZSBtb2RlLCBi
dXQgdGhlIGRlZmF1bHQgY2FsbGJhY2sgZXhwZWN0cwotICAgIC8vIHRoZSBHdGtUZXh0VmlldyB0
byBoYXZlIGEgbGF5b3V0LCBzbyB3ZSBoYW5kbGUgdGhpcyBzaWduYWwganVzdCB0byBzdG9wIGl0
LgotICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJ0b2dnbGUtb3Zl
cndyaXRlIik7Ci19Ci0KLS8vIEdUSysgd2lsbCBzdGlsbCBzZW5kIHRoZXNlIHNpZ25hbHMgdG8g
dGhlIHdlYiB2aWV3LiBTbyB3ZSBjYW4gc2FmZWx5IHN0b3Agc2lnbmFsCi0vLyBlbWlzc2lvbiB3
aXRob3V0IGJyZWFraW5nIGFjY2Vzc2liaWxpdHkuCi1zdGF0aWMgdm9pZCBwb3B1cE1lbnVDYWxs
YmFjayhHdGtXaWRnZXQqIHdpZGdldCwgRWRpdG9yQ2xpZW50KikKLXsKLSAgICBnX3NpZ25hbF9z
dG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAicG9wdXAtbWVudSIpOwotfQotCi1zdGF0aWMg
dm9pZCBzaG93SGVscENhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBFZGl0b3JDbGllbnQqKQot
ewotICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJzaG93LWhlbHAi
KTsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGd0a0RlbGV0ZUNvbW1hbmRzW11bMl0g
PSB7Ci0gICAgeyAiRGVsZXRlQmFja3dhcmQiLCAgICAgICAgICAgICAgICJEZWxldGVGb3J3YXJk
IiAgICAgICAgICAgICAgICAgICAgICAgIH0sIC8vIENoYXJhY3RlcnMKLSAgICB7ICJEZWxldGVX
b3JkQmFja3dhcmQiLCAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIiAgICAgICAgICAgICAg
ICAgICAgfSwgLy8gV29yZCBlbmRzCi0gICAgeyAiRGVsZXRlV29yZEJhY2t3YXJkIiwgICAgICAg
ICAgICJEZWxldGVXb3JkRm9yd2FyZCIgICAgICAgICAgICAgICAgICAgIH0sIC8vIFdvcmRzCi0g
ICAgeyAiRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUiLCAgICAgICJEZWxldGVUb0VuZE9mTGluZSIg
ICAgICAgICAgICAgICAgICAgIH0sIC8vIExpbmVzCi0gICAgeyAiRGVsZXRlVG9CZWdpbm5pbmdP
ZkxpbmUiLCAgICAgICJEZWxldGVUb0VuZE9mTGluZSIgICAgICAgICAgICAgICAgICAgIH0sIC8v
IExpbmUgZW5kcwotICAgIHsgIkRlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgiLCAiRGVsZXRl
VG9FbmRPZlBhcmFncmFwaCIgICAgICAgICAgICAgICB9LCAvLyBQYXJhZ3JhcGggZW5kcwotICAg
IHsgIkRlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgiLCAiRGVsZXRlVG9FbmRPZlBhcmFncmFw
aCIgICAgICAgICAgICAgICB9LCAvLyBQYXJhZ3JhcGhzCi0gICAgeyAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
Ly8gV2hpdGVzcGFjZSAoTS1cIGluIEVtYWNzKQotfTsKLQotc3RhdGljIHZvaWQgZGVsZXRlRnJv
bUN1cnNvckNhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtEZWxldGVUeXBlIGRlbGV0ZVR5
cGUsIGdpbnQgY291bnQsIEVkaXRvckNsaWVudCogY2xpZW50KQotewotICAgIGdfc2lnbmFsX3N0
b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJkZWxldGUtZnJvbS1jdXJzb3IiKTsKLSAgICBp
bnQgZGlyZWN0aW9uID0gY291bnQgPiAwID8gMSA6IDA7Ci0KLSAgICAvLyBFbnN1cmluZyB0aGF0
IGRlbGV0ZVR5cGUgPD0gR19OX0VMRU1FTlRTIGhlcmUgcmVzdWx0cyBpbiBhIGNvbXBpbGVyIHdh
cm5pbmcKLSAgICAvLyB0aGF0IHRoZSBjb25kaXRpb24gaXMgYWx3YXlzIHRydWUuCi0KLSAgICBp
ZiAoZGVsZXRlVHlwZSA9PSBHVEtfREVMRVRFX1dPUkRTKSB7Ci0gICAgICAgIGlmICghZGlyZWN0
aW9uKSB7Ci0gICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3Zl
V29yZEZvcndhcmQiKTsKLSAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1h
bmQoIk1vdmVXb3JkQmFja3dhcmQiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNs
aWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVXb3JkQmFja3dhcmQiKTsKLSAgICAg
ICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVXb3JkRm9yd2FyZCIp
OwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChkZWxldGVUeXBlID09IEdUS19ERUxFVEVfRElT
UExBWV9MSU5FUykgewotICAgICAgICBpZiAoIWRpcmVjdGlvbikKLSAgICAgICAgICAgIGNsaWVu
dC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09mTGluZSIpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJN
b3ZlVG9FbmRPZkxpbmUiKTsKLSAgICB9IGVsc2UgaWYgKGRlbGV0ZVR5cGUgPT0gR1RLX0RFTEVU
RV9QQVJBR1JBUEhTKSB7Ci0gICAgICAgIGlmICghZGlyZWN0aW9uKQotICAgICAgICAgICAgY2xp
ZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgi
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29t
bWFuZCgiTW92ZVRvRW5kT2ZQYXJhZ3JhcGgiKTsKLSAgICB9Ci0KLSAgICBjb25zdCBjaGFyKiBy
YXdDb21tYW5kID0gZ3RrRGVsZXRlQ29tbWFuZHNbZGVsZXRlVHlwZV1bZGlyZWN0aW9uXTsKLSAg
ICBpZiAoIXJhd0NvbW1hbmQpCi0gICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGludCBpID0gMDsg
aSA8IGFicyhjb3VudCk7IGkrKykKLSAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29t
bWFuZChyYXdDb21tYW5kKTsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGd0a01vdmVD
b21tYW5kc1tdWzRdID0gewotICAgIHsgIk1vdmVCYWNrd2FyZCIsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiTW92ZUZvcndhcmQiLAotICAgICAgIk1vdmVCYWNrd2FyZEFuZE1v
ZGlmeVNlbGVjdGlvbiIsICAgICAgICAgICAgICAgICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24iICAgICAgICAgICAgIH0sIC8vIEZvcndhcmQvYmFja3dhcmQgZ3JhcGhlbWUKLSAgICB7
ICJNb3ZlTGVmdCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVS
aWdodCIsCi0gICAgICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICAg
ICAgICAgICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgfSwgLy8g
TGVmdC9yaWdodCBncmFwaGVtZQotICAgIHsgIk1vdmVXb3JkQmFja3dhcmQiLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiTW92ZVdvcmRGb3J3YXJkIiwKLSAgICAgICJNb3ZlV29yZEJh
Y2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZEFu
ZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICB9LCAvLyBGb3J3YXJkL2JhY2t3YXJkIHdvcmQKLSAg
ICB7ICJNb3ZlVXAiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1v
dmVEb3duIiwKLSAgICAgICJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICAgICAgICAgICAg
ICAgICAgICAgIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICB9LCAv
LyBVcC9kb3duIGxpbmUKLSAgICB7ICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZSIsCi0gICAgICAiTW92ZVRvQmVnaW5uaW5n
T2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICJNb3ZlVG9FbmRPZkxpbmVBbmRNb2Rp
ZnlTZWxlY3Rpb24iICAgICAgICAgfSwgLy8gVXAvZG93biBsaW5lIGVuZHMKLSAgICB7ICJNb3Zl
UGFyYWdyYXBoRm9yd2FyZCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVQYXJhZ3Jh
cGhCYWNrd2FyZCIsCi0gICAgICAiTW92ZVBhcmFncmFwaEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rp
b24iLCAgICAgICAgICJNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iICAg
fSwgLy8gVXAvZG93biBwYXJhZ3JhcGhzCi0gICAgeyAiTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3Jh
cGgiLCAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZlBhcmFncmFwaCIsCi0gICAgICAi
TW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICJNb3ZlVG9F
bmRPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgfSwgLy8gVXAvZG93biBwYXJhZ3Jh
cGggZW5kcy4KLSAgICB7ICJNb3ZlUGFnZVVwIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIk1vdmVQYWdlRG93biIsCi0gICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVj
dGlvbiIsICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24i
ICAgICAgICAgICAgfSwgLy8gVXAvZG93biBwYWdlCi0gICAgeyAiTW92ZVRvQmVnaW5uaW5nT2ZE
b2N1bWVudCIsICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50IiwKLSAg
ICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgIk1v
dmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICB9LCAvLyBCZWdpbi9lbmQg
b2YgYnVmZmVyCi0gICAgeyAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsCi0gICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSAvLyBIb3Jpem9udGFsIHBhZ2UgbW92ZW1lbnQKLX07Ci0KLXN0YXRpYyB2b2lkIG1vdmVDdXJz
b3JDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgR3RrTW92ZW1lbnRTdGVwIHN0ZXAsIGdpbnQg
Y291bnQsIGdib29sZWFuIGV4dGVuZFNlbGVjdGlvbiwgRWRpdG9yQ2xpZW50KiBjbGllbnQpCi17
Ci0gICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgIm1vdmUtY3Vyc29y
Iik7Ci0gICAgaW50IGRpcmVjdGlvbiA9IGNvdW50ID4gMCA/IDEgOiAwOwotICAgIGlmIChleHRl
bmRTZWxlY3Rpb24pCi0gICAgICAgIGRpcmVjdGlvbiArPSAyOwotCi0gICAgaWYgKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzdGVwKSA+PSBHX05fRUxFTUVOVFMoZ3RrTW92ZUNvbW1hbmRzKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgY29uc3QgY2hhciogcmF3Q29tbWFuZCA9IGd0a01vdmVDb21t
YW5kc1tzdGVwXVtkaXJlY3Rpb25dOwotICAgIGlmICghcmF3Q29tbWFuZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhYnMoY291bnQpOyBpKyspCi0gICAgICAg
IGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQocmF3Q29tbWFuZCk7Ci19CiAKIHZvaWQg
RWRpdG9yQ2xpZW50Ojp1cGRhdGVQZW5kaW5nQ29tcG9zaXRpb24oY29uc3QgZ2NoYXIqIG5ld0Nv
bXBvc2l0aW9uKQogewpAQCAtNTg2LDk1ICs0NTAsMTEgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OnRv
Z2dsZUdyYW1tYXJDaGVja2luZygpCiB7CiB9CiAKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBDdHJs
S2V5ID0gMSA8PCAwOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIEFsdEtleSA9IDEgPDwgMTsKLXN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTaGlmdEtleSA9IDEgPDwgMjsKLQotc3RydWN0IEtleURvd25F
bnRyeSB7Ci0gICAgdW5zaWduZWQgdmlydHVhbEtleTsKLSAgICB1bnNpZ25lZCBtb2RpZmllcnM7
Ci0gICAgY29uc3QgY2hhciogbmFtZTsKLX07Ci0KLXN0cnVjdCBLZXlQcmVzc0VudHJ5IHsKLSAg
ICB1bnNpZ25lZCBjaGFyQ29kZTsKLSAgICB1bnNpZ25lZCBtb2RpZmllcnM7Ci0gICAgY29uc3Qg
Y2hhciogbmFtZTsKLX07Ci0KLXN0YXRpYyBjb25zdCBLZXlEb3duRW50cnkga2V5RG93bkVudHJp
ZXNbXSA9IHsKLSAgICB7ICdCJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlQm9s
ZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7ICdJJywgICAgICAg
Q3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlSXRhbGljIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICB7IFZLX0VTQ0FQRSwgMCwgICAgICAgICAgICAgICAgICAiQ2FuY2Vs
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX09FTV9Q
RVJJT0QsIEN0cmxLZXksICAgICAgICAiQ2FuY2VsIiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICB7IFZLX1RBQiwgICAgMCwgICAgICAgICAgICAgICAgICAiSW5z
ZXJ0VGFiIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1RB
QiwgICAgU2hpZnRLZXksICAgICAgICAgICAiSW5zZXJ0QmFja3RhYiIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JFVFVSTiwgMCwgICAgICAgICAgICAgICAgICAi
SW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZL
X1JFVFVSTiwgQ3RybEtleSwgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JFVFVSTiwgQWx0S2V5LCAgICAgICAgICAg
ICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7
IFZLX1JFVFVSTiwgQWx0S2V5IHwgU2hpZnRLZXksICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBLZXlQcmVzc0VudHJ5
IGtleVByZXNzRW50cmllc1tdID0gewotICAgIHsgJ1x0JywgICAwLCAgICAgICAgICAgICAgICAg
ICJJbnNlcnRUYWIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsg
J1x0JywgICBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAotICAgIHsgJ1xyJywgICAwLCAgICAgICAgICAgICAgICAgICJJ
bnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgJ1xy
JywgICBDdHJsS2V5LCAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAotICAgIHsgJ1xyJywgICBBbHRLZXksICAgICAgICAgICAgICJJbnNl
cnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgJ1xyJywg
ICBBbHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAotfTsKLQotdm9pZCBFZGl0b3JDbGllbnQ6OmdlbmVyYXRlRWRpdG9yQ29t
bWFuZHMoY29uc3QgS2V5Ym9hcmRFdmVudCogZXZlbnQpCi17Ci0gICAgQVNTRVJUKGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KTsKLQotICAgIG1fcGVuZGluZ0VkaXRvckNvbW1hbmRz
LmNsZWFyKCk7Ci0KLSAgICAvLyBGaXJzdCB0cnkgdG8gaW50ZXJwcmV0IHRoZSBjb21tYW5kIGFz
IGEgbmF0aXZlIEdUSysga2V5IGJpbmRpbmcuCi0jaWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIKLSAg
ICBndGtfYmluZGluZ3NfYWN0aXZhdGVfZXZlbnQoR1RLX09CSkVDVChtX25hdGl2ZVdpZGdldC5n
ZXQoKSksIGV2ZW50LT5rZXlFdmVudCgpLT5nZGtFdmVudEtleSgpKTsKLSNlbHNlCi0gICAgZ3Rr
X2JpbmRpbmdzX2FjdGl2YXRlX2V2ZW50KEdfT0JKRUNUKG1fbmF0aXZlV2lkZ2V0LmdldCgpKSwg
ZXZlbnQtPmtleUV2ZW50KCktPmdka0V2ZW50S2V5KCkpOwotI2VuZGlmCi0gICAgaWYgKG1fcGVu
ZGluZ0VkaXRvckNvbW1hbmRzLnNpemUoKSA+IDApCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0
YXRpYyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+IGtleURvd25Db21tYW5kc01hcDsKLSAgICBz
dGF0aWMgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPiBrZXlQcmVzc0NvbW1hbmRzTWFwOwotCi0g
ICAgaWYgKGtleURvd25Db21tYW5kc01hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyhrZXlEb3duRW50cmllcyk7IGkrKykKLSAgICAg
ICAgICAgIGtleURvd25Db21tYW5kc01hcC5zZXQoa2V5RG93bkVudHJpZXNbaV0ubW9kaWZpZXJz
IDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwga2V5RG93bkVudHJpZXNbaV0u
bmFtZSk7Ci0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyhr
ZXlQcmVzc0VudHJpZXMpOyBpKyspCi0gICAgICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwLnNl
dChrZXlQcmVzc0VudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ld
LmNoYXJDb2RlLCBrZXlQcmVzc0VudHJpZXNbaV0ubmFtZSk7Ci0gICAgfQotCi0gICAgdW5zaWdu
ZWQgbW9kaWZpZXJzID0gMDsKLSAgICBpZiAoZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgIG1v
ZGlmaWVycyB8PSBTaGlmdEtleTsKLSAgICBpZiAoZXZlbnQtPmFsdEtleSgpKQotICAgICAgICBt
b2RpZmllcnMgfD0gQWx0S2V5OwotICAgIGlmIChldmVudC0+Y3RybEtleSgpKQotICAgICAgICBt
b2RpZmllcnMgfD0gQ3RybEtleTsKLQotICAgIC8vIEZvciBrZXlwcmVzcyBldmVudHMsIHdlIHdh
bnQgY2hhckNvZGUoKSwgYnV0IGtleUNvZGUoKSBkb2VzIHRoYXQuCi0gICAgaW50IG1hcEtleSA9
IG1vZGlmaWVycyA8PCAxNiB8IGV2ZW50LT5rZXlDb2RlKCk7Ci0gICAgaWYgKCFtYXBLZXkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+KiBjb21tYW5kTWFw
ID0gZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50ID8KLSAgICAgICAg
JmtleURvd25Db21tYW5kc01hcCA6ICZrZXlQcmVzc0NvbW1hbmRzTWFwOwotICAgIGlmIChjb25z
dCBjaGFyKiBjb21tYW5kU3RyaW5nID0gY29tbWFuZE1hcC0+Z2V0KG1hcEtleSkpCi0gICAgICAg
IG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLmFwcGVuZChjb21tYW5kU3RyaW5nKTsKLX0KLQogYm9v
bCBFZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoRnJhbWUqIGZyYW1l
LCBib29sIGFsbG93VGV4dEluc2VydGlvbikKIHsKICAgICBWZWN0b3I8RWRpdG9yOjpDb21tYW5k
PiBjb21tYW5kczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGVuZGluZ0VkaXRvckNv
bW1hbmRzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGNvbW1hbmRTdHJpbmcg
PSBtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5hdChpKTsKLSAgICAgICAgQVNTRVJUKGNvbW1hbmRT
dHJpbmcpOwotICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3Io
KS0+Y29tbWFuZChjb21tYW5kU3RyaW5nKTsKKyAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1h
bmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQobV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXQo
aSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGlmIChjb21tYW5kLmlzVGV4dEluc2VydGlvbigp
ICYmICFhbGxvd1RleHRJbnNlcnRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTcxMCw3ICs0OTAsOSBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChL
ZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAoIXBsYXRmb3JtRXZlbnQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGdlbmVyYXRlRWRpdG9yQ29tbWFuZHMoZXZlbnQpOworICAgIEtleUJpbmRp
bmdUcmFuc2xhdG9yOjpFdmVudFR5cGUgdHlwZSA9IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmtleWRvd25FdmVudCA/CisgICAgICAgIEtleUJpbmRpbmdUcmFuc2xhdG9yOjpLZXlEb3du
IDogS2V5QmluZGluZ1RyYW5zbGF0b3I6OktleVByZXNzOworICAgIG1fa2V5QmluZGluZ1RyYW5z
bGF0b3IuZ2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChwbGF0Zm9ybUV2ZW50LT5nZGtFdmVu
dEtleSgpLCB0eXBlLCBtX3BlbmRpbmdFZGl0b3JDb21tYW5kcyk7CiAgICAgaWYgKG1fcGVuZGlu
Z0VkaXRvckNvbW1hbmRzLnNpemUoKSA+IDApIHsKIAogICAgICAgICAvLyBEdXJpbmcgUmF3S2V5
RG93biBldmVudHMgaWYgYW4gZWRpdG9yIGNvbW1hbmQgd2lsbCBpbnNlcnQgdGV4dCwgZGVmZXIK
QEAgLTg0NCwyMiArNjI2LDEwIEBAIEVkaXRvckNsaWVudDo6RWRpdG9yQ2xpZW50KFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCiAgICAgLCBtX3dlYlZpZXcod2ViVmlldykKICAgICAsIG1fcHJldmVu
dE5leHRDb21wb3NpdGlvbkNvbW1pdChmYWxzZSkKICAgICAsIG1fdHJlYXRDb250ZXh0Q29tbWl0
QXNLZXlFdmVudChmYWxzZSkKLSAgICAsIG1fbmF0aXZlV2lkZ2V0KGd0a190ZXh0X3ZpZXdfbmV3
KCkpCiB7CiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSBtX3dlYlZpZXctPnByaXY7
CiAgICAgZ19zaWduYWxfY29ubmVjdChwcml2LT5pbUNvbnRleHQuZ2V0KCksICJjb21taXQiLCBH
X0NBTExCQUNLKGltQ29udGV4dENvbW1pdHRlZCksIHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5l
Y3QocHJpdi0+aW1Db250ZXh0LmdldCgpLCAicHJlZWRpdC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhp
bUNvbnRleHRQcmVlZGl0Q2hhbmdlZCksIHRoaXMpOwotCi0gICAgZ19zaWduYWxfY29ubmVjdCht
X25hdGl2ZVdpZGdldC5nZXQoKSwgImJhY2tzcGFjZSIsIEdfQ0FMTEJBQ0soYmFja3NwYWNlQ2Fs
bGJhY2spLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgp
LCAiY3V0LWNsaXBib2FyZCIsIEdfQ0FMTEJBQ0soY3V0Q2xpcGJvYXJkQ2FsbGJhY2spLCB0aGlz
KTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAiY29weS1jbGlw
Ym9hcmQiLCBHX0NBTExCQUNLKGNvcHlDbGlwYm9hcmRDYWxsYmFjayksIHRoaXMpOwotICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJwYXN0ZS1jbGlwYm9hcmQiLCBH
X0NBTExCQUNLKHBhc3RlQ2xpcGJvYXJkQ2FsbGJhY2spLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9j
b25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAic2VsZWN0LWFsbCIsIEdfQ0FMTEJBQ0soc2Vs
ZWN0QWxsQ2FsbGJhY2spLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lk
Z2V0LmdldCgpLCAibW92ZS1jdXJzb3IiLCBHX0NBTExCQUNLKG1vdmVDdXJzb3JDYWxsYmFjayks
IHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJkZWxl
dGUtZnJvbS1jdXJzb3IiLCBHX0NBTExCQUNLKGRlbGV0ZUZyb21DdXJzb3JDYWxsYmFjayksIHRo
aXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJ0b2dnbGUt
b3ZlcndyaXRlIiwgR19DQUxMQkFDSyh0b2dnbGVPdmVyd3JpdGVDYWxsYmFjayksIHRoaXMpOwot
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJwb3B1cC1tZW51Iiwg
R19DQUxMQkFDSyhwb3B1cE1lbnVDYWxsYmFjayksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJzaG93LWhlbHAiLCBHX0NBTExCQUNLKHNob3dIZWxw
Q2FsbGJhY2spLCB0aGlzKTsKIH0KIAogRWRpdG9yQ2xpZW50Ojp+RWRpdG9yQ2xpZW50KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0
ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgK
aW5kZXggMzUwNzMzYTU2YTg3ODZhNzkzYjZlYzhmMWJiYTY5Mjg5ZTFkZWZlMy4uNzgwZDc0ZjE1
M2E5YzhjMTZmZmFiZWViY2VkNmEzYzQ0YWIyZWI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgKQEAgLTMyLDggKzMyLDggQEAK
ICNkZWZpbmUgRWRpdG9yQ2xpZW50R3RrX2gKIAogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgor
I2luY2x1ZGUgIktleUJpbmRpbmdUcmFuc2xhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJD
bGllbnQuaCIKLQogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgpAQCAtMTQ2LDggKzE0Niw5IEBA
IGNsYXNzIEVkaXRvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGllbnQgewogICAg
ICAgICBib29sIG1fcHJldmVudE5leHRDb21wb3NpdGlvbkNvbW1pdDsKICAgICAgICAgYm9vbCBt
X3RyZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQ7CiAgICAgICAgIEdPd25QdHI8Z2NoYXI+IG1f
cGVuZGluZ0NvbXBvc2l0aW9uOwotICAgICAgICBWZWN0b3I8Y29uc3QgY2hhcio+IG1fcGVuZGlu
Z0VkaXRvckNvbW1hbmRzOwotICAgICAgICBHUmVmUHRyPEd0a1dpZGdldD4gbV9uYXRpdmVXaWRn
ZXQ7CisKKyAgICAgICAgV2ViQ29yZTo6S2V5QmluZGluZ1RyYW5zbGF0b3IgbV9rZXlCaW5kaW5n
VHJhbnNsYXRvcjsKKyAgICAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX3BlbmRpbmdFZGl0b3JD
b21tYW5kczsKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjBjOGM2MmRiNmI4OGY0OTZkMzBh
NWFmMzJiMGEwNTQzYTEyNDA3YS4uY2RjMzUxNjA4NGViYzIxMzQ5YjAyZmYxMDEyYTE2MzBkMDYw
NmY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTA0LTI4ICBNYXJ0aW4gUm9i
aW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBTaGFyZSB0aGUgR1RLKyBrZXkgYmluZGluZyBj
b2RlIGJldHdlZW4gV2ViS2l0MSBhbmQgV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk3NjUKKworICAgICAgICBVc2UgdGhlIG5ldyBLZXlC
aW5kaW5nVHJhbnNsYXRvciBjbGFzcyBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vZ3RrLiBXaXRoIHRo
aXMgdXRpbGl0eQorICAgICAgICBjbGFzcyB3ZSBjYW4gbm93IHNoYXJlIHRoZSBjb2RlIHdpdGgg
V2ViS2l0Mi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKTogTm8g
bG9uZ2VyIG5lZWQgdG8gaW5pdGlhbGl6ZSBrZXliaW5kaW5nIGNvZGUuCisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpnZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KTogVXNlIHRo
ZSBuZXcgdXRpbGl0eSBjbGFzcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5oOiBSZW1vdmUgdW5uZWNlc3NhcnkgbWVtYmVycy4gQWRkIHV0aWxpdHkgY2xhc3Mg
bWVtYmVyLgorCiAyMDExLTA0LTI3ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXgg
N2ZlZmI0NDhlOTYwNjg3ZjNiYTRiM2I2ZDc4Yjg1NzMwODA2ZGQxOC4uNjY5YzI4NjczYTE3Y2M5
YjRhYjgzNTBhZjA2MWVlMDQ3NzRjNWRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMzksMjAxICszOSwxMyBAQAog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCi10eXBlZGVmIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4gSW50Q29uc3RDaGFySGFzaE1h
cDsKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1z
dGF0aWMgdm9pZCBiYWNrc3BhY2VDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgUGFnZUNsaWVu
dEltcGwqIGNsaWVudCkKLXsKLSAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lk
Z2V0LCAiYmFja3NwYWNlIik7Ci0gICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgi
RGVsZXRlQmFja3dhcmQiKTsKLX0KLQotc3RhdGljIHZvaWQgc2VsZWN0QWxsQ2FsbGJhY2soR3Rr
V2lkZ2V0KiB3aWRnZXQsIGdib29sZWFuIHNlbGVjdCwgUGFnZUNsaWVudEltcGwqIGNsaWVudCkK
LXsKLSAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAic2VsZWN0LWFs
bCIpOwotICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoc2VsZWN0ID8gIlNlbGVj
dEFsbCIgOiAiVW5zZWxlY3QiKTsKLX0KLQotc3RhdGljIHZvaWQgY3V0Q2xpcGJvYXJkQ2FsbGJh
Y2soR3RrV2lkZ2V0KiB3aWRnZXQsIFBhZ2VDbGllbnRJbXBsKiBjbGllbnQpCi17Ci0gICAgZ19z
aWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgImN1dC1jbGlwYm9hcmQiKTsKLSAg
ICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJDdXQiKTsKLX0KLQotc3RhdGljIHZv
aWQgY29weUNsaXBib2FyZENhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBQYWdlQ2xpZW50SW1w
bCogY2xpZW50KQotewotICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQs
ICJjb3B5LWNsaXBib2FyZCIpOwotICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQo
IkNvcHkiKTsKLX0KLQotc3RhdGljIHZvaWQgcGFzdGVDbGlwYm9hcmRDYWxsYmFjayhHdGtXaWRn
ZXQqIHdpZGdldCwgUGFnZUNsaWVudEltcGwqIGNsaWVudCkKLXsKLSAgICBnX3NpZ25hbF9zdG9w
X2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAicGFzdGUtY2xpcGJvYXJkIik7Ci0gICAgY2xpZW50
LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiUGFzdGUiKTsKLX0KLQotc3RhdGljIHZvaWQgdG9n
Z2xlT3ZlcndyaXRlQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEVkaXRvckNsaWVudCopCi17
Ci0gICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCB0b2dnbGluZyB0aGUgb3ZlcndyaXRlIG1vZGUsIGJ1
dCB0aGUgZGVmYXVsdCBjYWxsYmFjayBleHBlY3RzCi0gICAgLy8gdGhlIEd0a1RleHRWaWV3IHRv
IGhhdmUgYSBsYXlvdXQsIHNvIHdlIGhhbmRsZSB0aGlzIHNpZ25hbCBqdXN0IHRvIHN0b3AgaXQu
Ci0gICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgInRvZ2dsZS1vdmVy
d3JpdGUiKTsKLX0KLQotLy8gR1RLKyB3aWxsIHN0aWxsIHNlbmQgdGhlc2Ugc2lnbmFscyB0byB0
aGUgd2ViIHZpZXcuIFNvIHdlIGNhbiBzYWZlbHkgc3RvcCBzaWduYWwKLS8vIGVtaXNzaW9uIHdp
dGhvdXQgYnJlYWtpbmcgYWNjZXNzaWJpbGl0eS4KLXN0YXRpYyB2b2lkIHBvcHVwTWVudUNhbGxi
YWNrKEd0a1dpZGdldCogd2lkZ2V0LCBFZGl0b3JDbGllbnQqKQotewotICAgIGdfc2lnbmFsX3N0
b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJwb3B1cC1tZW51Iik7Ci19Ci0KLXN0YXRpYyB2
b2lkIHNob3dIZWxwQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEVkaXRvckNsaWVudCopCi17
Ci0gICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgInNob3ctaGVscCIp
OwotfQotCi1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgZ3RrRGVsZXRlQ29tbWFuZHNbXVsyXSA9
IHsKLSAgICB7ICJEZWxldGVCYWNrd2FyZCIsICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQi
ICAgICAgICAgICAgICAgICAgICAgICAgfSwgLy8gQ2hhcmFjdGVycwotICAgIHsgIkRlbGV0ZVdv
cmRCYWNrd2FyZCIsICAgICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQiICAgICAgICAgICAgICAg
ICAgICB9LCAvLyBXb3JkIGVuZHMKLSAgICB7ICJEZWxldGVXb3JkQmFja3dhcmQiLCAgICAgICAg
ICAgIkRlbGV0ZVdvcmRGb3J3YXJkIiAgICAgICAgICAgICAgICAgICAgfSwgLy8gV29yZHMKLSAg
ICB7ICJEZWxldGVUb0JlZ2lubmluZ09mTGluZSIsICAgICAgIkRlbGV0ZVRvRW5kT2ZMaW5lIiAg
ICAgICAgICAgICAgICAgICAgfSwgLy8gTGluZXMKLSAgICB7ICJEZWxldGVUb0JlZ2lubmluZ09m
TGluZSIsICAgICAgIkRlbGV0ZVRvRW5kT2ZMaW5lIiAgICAgICAgICAgICAgICAgICAgfSwgLy8g
TGluZSBlbmRzCi0gICAgeyAiRGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCIsICJEZWxldGVU
b0VuZE9mUGFyYWdyYXBoIiAgICAgICAgICAgICAgIH0sIC8vIFBhcmFncmFwaCBlbmRzCi0gICAg
eyAiRGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCIsICJEZWxldGVUb0VuZE9mUGFyYWdyYXBo
IiAgICAgICAgICAgICAgIH0sIC8vIFBhcmFncmFwaHMKLSAgICB7IDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAv
LyBXaGl0ZXNwYWNlIChNLVwgaW4gRW1hY3MpCi19OwotCi1zdGF0aWMgdm9pZCBkZWxldGVGcm9t
Q3Vyc29yQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a0RlbGV0ZVR5cGUgZGVsZXRlVHlw
ZSwgZ2ludCBjb3VudCwgUGFnZUNsaWVudEltcGwqIGNsaWVudCkKLXsKLSAgICBnX3NpZ25hbF9z
dG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAiZGVsZXRlLWZyb20tY3Vyc29yIik7Ci0gICAg
aW50IGRpcmVjdGlvbiA9IGNvdW50ID4gMCA/IDEgOiAwOwotCi0gICAgLy8gRW5zdXJpbmcgdGhh
dCBkZWxldGVUeXBlIDw9IEdfTl9FTEVNRU5UUyBoZXJlIHJlc3VsdHMgaW4gYSBjb21waWxlciB3
YXJuaW5nCi0gICAgLy8gdGhhdCB0aGUgY29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlLgotCi0gICAg
aWYgKGRlbGV0ZVR5cGUgPT0gR1RLX0RFTEVURV9XT1JEUykgewotICAgICAgICBpZiAoIWRpcmVj
dGlvbikgewotICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92
ZVdvcmRGb3J3YXJkIik7Ci0gICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21t
YW5kKCJNb3ZlV29yZEJhY2t3YXJkIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBj
bGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlV29yZEJhY2t3YXJkIik7Ci0gICAg
ICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlV29yZEZvcndhcmQi
KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoZGVsZXRlVHlwZSA9PSBHVEtfREVMRVRFX0RJ
U1BMQVlfTElORVMpIHsKLSAgICAgICAgaWYgKCFkaXJlY3Rpb24pCi0gICAgICAgICAgICBjbGll
bnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgi
TW92ZVRvRW5kT2ZMaW5lIik7Ci0gICAgfSBlbHNlIGlmIChkZWxldGVUeXBlID09IEdUS19ERUxF
VEVfUEFSQUdSQVBIUykgewotICAgICAgICBpZiAoIWRpcmVjdGlvbikKLSAgICAgICAgICAgIGNs
aWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBo
Iik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNv
bW1hbmQoIk1vdmVUb0VuZE9mUGFyYWdyYXBoIik7Ci0gICAgfQotCi0gICAgY29uc3QgY2hhciog
cmF3Q29tbWFuZCA9IGd0a0RlbGV0ZUNvbW1hbmRzW2RlbGV0ZVR5cGVdW2RpcmVjdGlvbl07Ci0g
ICAgaWYgKCFyYXdDb21tYW5kKQotICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBhYnMoY291bnQpOyBpKyspCi0gICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNv
bW1hbmQocmF3Q29tbWFuZCk7Ci19Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBndGtNb3Zl
Q29tbWFuZHNbXVs0XSA9IHsKLSAgICB7ICJNb3ZlQmFja3dhcmQiLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk1vdmVGb3J3YXJkIiwKLSAgICAgICJNb3ZlQmFja3dhcmRBbmRN
b2RpZnlTZWxlY3Rpb24iLCAgICAgICAgICAgICAgICAgIk1vdmVGb3J3YXJkQW5kTW9kaWZ5U2Vs
ZWN0aW9uIiAgICAgICAgICAgICB9LCAvLyBGb3J3YXJkL2JhY2t3YXJkIGdyYXBoZW1lCi0gICAg
eyAiTW92ZUxlZnQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3Zl
UmlnaHQiLAotICAgICAgIk1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAg
ICAgICAgICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgIH0sIC8v
IExlZnQvcmlnaHQgZ3JhcGhlbWUKLSAgICB7ICJNb3ZlV29yZEJhY2t3YXJkIiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZCIsCi0gICAgICAiTW92ZVdvcmRC
YWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAgICAgICJNb3ZlV29yZEZvcndhcmRB
bmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgfSwgLy8gRm9yd2FyZC9iYWNrd2FyZCB3b3JkCi0g
ICAgeyAiTW92ZVVwIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJN
b3ZlRG93biIsCi0gICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgfSwg
Ly8gVXAvZG93biBsaW5lCi0gICAgeyAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiLAotICAgICAgIk1vdmVUb0JlZ2lubmlu
Z09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lQW5kTW9k
aWZ5U2VsZWN0aW9uIiAgICAgICAgIH0sIC8vIFVwL2Rvd24gbGluZSBlbmRzCi0gICAgeyAiTW92
ZVBhcmFncmFwaEZvcndhcmQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFyYWdy
YXBoQmFja3dhcmQiLAotICAgICAgIk1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uIiwgICAgICAgICAiTW92ZVBhcmFncmFwaEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiAg
IH0sIC8vIFVwL2Rvd24gcGFyYWdyYXBocwotICAgIHsgIk1vdmVUb0JlZ2lubmluZ09mUGFyYWdy
YXBoIiwgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZQYXJhZ3JhcGgiLAotICAgICAg
Ik1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAiTW92ZVRv
RW5kT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24iICAgIH0sIC8vIFVwL2Rvd24gcGFyYWdy
YXBoIGVuZHMuCi0gICAgeyAiTW92ZVBhZ2VVcCIsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlUGFnZURvd24iLAotICAgICAgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxl
Y3Rpb24iLCAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9u
IiAgICAgICAgICAgIH0sIC8vIFVwL2Rvd24gcGFnZQotICAgIHsgIk1vdmVUb0JlZ2lubmluZ09m
RG9jdW1lbnQiLCAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZEb2N1bWVudCIsCi0g
ICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICJN
b3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgfSwgLy8gQmVnaW4vZW5k
IG9mIGJ1ZmZlcgotICAgIHsgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLAotICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0gLy8gSG9yaXpvbnRhbCBwYWdlIG1vdmVtZW50Ci19OwotCi1zdGF0aWMgdm9pZCBtb3ZlQ3Vy
c29yQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a01vdmVtZW50U3RlcCBzdGVwLCBnaW50
IGNvdW50LCBnYm9vbGVhbiBleHRlbmRTZWxlY3Rpb24sIFBhZ2VDbGllbnRJbXBsKiBjbGllbnQp
Ci17Ci0gICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgIm1vdmUtY3Vy
c29yIik7Ci0gICAgaW50IGRpcmVjdGlvbiA9IGNvdW50ID4gMCA/IDEgOiAwOwotICAgIGlmIChl
eHRlbmRTZWxlY3Rpb24pCi0gICAgICAgIGRpcmVjdGlvbiArPSAyOwotCi0gICAgaWYgKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdGVwKSA+PSBHX05fRUxFTUVOVFMoZ3RrTW92ZUNvbW1hbmRzKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgY29uc3QgY2hhciogcmF3Q29tbWFuZCA9IGd0a01vdmVD
b21tYW5kc1tzdGVwXVtkaXJlY3Rpb25dOwotICAgIGlmICghcmF3Q29tbWFuZCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhYnMoY291bnQpOyBpKyspCi0gICAg
ICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQocmF3Q29tbWFuZCk7Ci19Ci0KLXN0
YXRpYyBjb25zdCB1bnNpZ25lZCBDdHJsS2V5ID0gMSA8PCAwOwotc3RhdGljIGNvbnN0IHVuc2ln
bmVkIEFsdEtleSA9IDEgPDwgMTsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBTaGlmdEtleSA9IDEg
PDwgMjsKLQotc3RydWN0IEtleURvd25FbnRyeSB7Ci0gICAgdW5zaWduZWQgdmlydHVhbEtleTsK
LSAgICB1bnNpZ25lZCBtb2RpZmllcnM7Ci0gICAgY29uc3QgY2hhciogbmFtZTsKLX07Ci0KLXN0
cnVjdCBLZXlQcmVzc0VudHJ5IHsKLSAgICB1bnNpZ25lZCBjaGFyQ29kZTsKLSAgICB1bnNpZ25l
ZCBtb2RpZmllcnM7Ci0gICAgY29uc3QgY2hhciogbmFtZTsKLX07Ci0KLXN0YXRpYyBjb25zdCBL
ZXlEb3duRW50cnkga2V5RG93bkVudHJpZXNbXSA9IHsKLSAgICB7ICdCJywgICAgICAgQ3RybEtl
eSwgICAgICAgICAgICAiVG9nZ2xlQm9sZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKLSAgICB7ICdJJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlSXRhbGlj
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX0VTQ0FQRSwgMCwg
ICAgICAgICAgICAgICAgICAiQ2FuY2VsIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICB7IFZLX09FTV9QRVJJT0QsIEN0cmxLZXksICAgICAgICAiQ2FuY2VsIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1RBQiwgICAg
MCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFiIiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICB7IFZLX1RBQiwgICAgU2hpZnRLZXksICAgICAgICAgICAiSW5zZXJ0
QmFja3RhYiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JFVFVS
TiwgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JFVFVSTiwgQ3RybEtleSwgICAgICAgICAgICAiSW5z
ZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JF
VFVSTiwgQWx0S2V5LCAgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JFVFVSTiwgQWx0S2V5IHwgU2hpZnRLZXksICAi
SW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLX07Ci0KLXN0
YXRpYyBjb25zdCBLZXlQcmVzc0VudHJ5IGtleVByZXNzRW50cmllc1tdID0gewotICAgIHsgJ1x0
JywgICAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnRUYWIiICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAotICAgIHsgJ1x0JywgICBTaGlmdEtleSwgICAgICAgICAgICJJbnNl
cnRCYWNrdGFiIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgJ1xyJywg
ICAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAotICAgIHsgJ1xyJywgICBDdHJsS2V5LCAgICAgICAgICAgICJJbnNlcnRO
ZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgJ1xyJywgICBB
bHRLZXksICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9LAotICAgIHsgJ1xyJywgICBBbHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXds
aW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotfTsKLQogUGFnZUNsaWVudElt
cGw6OlBhZ2VDbGllbnRJbXBsKEd0a1dpZGdldCogdmlld1dpZGdldCkKICAgICA6IG1fdmlld1dp
ZGdldCh2aWV3V2lkZ2V0KQotICAgICwgbV9uYXRpdmVXaWRnZXQoZ3RrX3RleHRfdmlld19uZXco
KSkKIHsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAiYmFja3Nw
YWNlIiwgR19DQUxMQkFDSyhiYWNrc3BhY2VDYWxsYmFjayksIHRoaXMpOwotICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJjdXQtY2xpcGJvYXJkIiwgR19DQUxMQkFD
SyhjdXRDbGlwYm9hcmRDYWxsYmFjayksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9u
YXRpdmVXaWRnZXQuZ2V0KCksICJjb3B5LWNsaXBib2FyZCIsIEdfQ0FMTEJBQ0soY29weUNsaXBi
b2FyZENhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdl
dC5nZXQoKSwgInBhc3RlLWNsaXBib2FyZCIsIEdfQ0FMTEJBQ0socGFzdGVDbGlwYm9hcmRDYWxs
YmFjayksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCks
ICJzZWxlY3QtYWxsIiwgR19DQUxMQkFDSyhzZWxlY3RBbGxDYWxsYmFjayksIHRoaXMpOwotICAg
IGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJtb3ZlLWN1cnNvciIsIEdf
Q0FMTEJBQ0sobW92ZUN1cnNvckNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVj
dChtX25hdGl2ZVdpZGdldC5nZXQoKSwgImRlbGV0ZS1mcm9tLWN1cnNvciIsIEdfQ0FMTEJBQ0so
ZGVsZXRlRnJvbUN1cnNvckNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdCht
X25hdGl2ZVdpZGdldC5nZXQoKSwgInRvZ2dsZS1vdmVyd3JpdGUiLCBHX0NBTExCQUNLKHRvZ2ds
ZU92ZXJ3cml0ZUNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2
ZVdpZGdldC5nZXQoKSwgInBvcHVwLW1lbnUiLCBHX0NBTExCQUNLKHBvcHVwTWVudUNhbGxiYWNr
KSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgInNo
b3ctaGVscCIsIEdfQ0FMTEJBQ0soc2hvd0hlbHBDYWxsYmFjayksIHRoaXMpOwogfQogCiBQYWdl
Q2xpZW50SW1wbDo6flBhZ2VDbGllbnRJbXBsKCkKQEAgLTI0Miw0OCArNTQsMTAgQEAgUGFnZUNs
aWVudEltcGw6On5QYWdlQ2xpZW50SW1wbCgpCiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmdldEVk
aXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZl
bnQsIFZlY3RvcjxXVEY6OlN0cmluZz4mIGNvbW1hbmRMaXN0KQogewotICAgIG1fcGVuZGluZ0Vk
aXRvckNvbW1hbmRzLmNsZWFyKCk7Ci0KLSNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotICAgIGd0
a19iaW5kaW5nc19hY3RpdmF0ZV9ldmVudChHVEtfT0JKRUNUKG1fbmF0aXZlV2lkZ2V0LmdldCgp
KSwgY29uc3RfY2FzdDxHZGtFdmVudEtleSo+KCZldmVudC5uYXRpdmVFdmVudCgpLT5rZXkpKTsK
LSNlbHNlCi0gICAgZ3RrX2JpbmRpbmdzX2FjdGl2YXRlX2V2ZW50KEdfT0JKRUNUKG1fbmF0aXZl
V2lkZ2V0LmdldCgpKSwgY29uc3RfY2FzdDxHZGtFdmVudEtleSo+KCZldmVudC5uYXRpdmVFdmVu
dCgpLT5rZXkpKTsKLSNlbmRpZgotCi0gICAgaWYgKG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLmlz
RW1wdHkoKSkgewotICAgICAgICBjb21tYW5kTGlzdC5hcHBlbmQobV9wZW5kaW5nRWRpdG9yQ29t
bWFuZHMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChJbnRDb25zdENoYXJIYXNoTWFwLCBrZXlEb3duQ29tbWFuZHNNYXAsICgpKTsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEludENvbnN0Q2hhckhhc2hNYXAsIGtleVByZXNzQ29tbWFuZHNNYXAs
ICgpKTsKLQotICAgIGlmIChrZXlEb3duQ29tbWFuZHNNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoa2V5RG93bkVudHJpZXMpOyBp
KyspCi0gICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAuc2V0KGtleURvd25FbnRyaWVzW2ld
Lm1vZGlmaWVycyA8PCAxNiB8IGtleURvd25FbnRyaWVzW2ldLnZpcnR1YWxLZXksIGtleURvd25F
bnRyaWVzW2ldLm5hbWUpOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHX05f
RUxFTUVOVFMoa2V5UHJlc3NFbnRyaWVzKTsgaSsrKQotICAgICAgICAgICAga2V5UHJlc3NDb21t
YW5kc01hcC5zZXQoa2V5UHJlc3NFbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleVByZXNz
RW50cmllc1tpXS5jaGFyQ29kZSwga2V5UHJlc3NFbnRyaWVzW2ldLm5hbWUpOwotICAgIH0KLQot
ICAgIHVuc2lnbmVkIG1vZGlmaWVycyA9IDA7Ci0gICAgaWYgKGV2ZW50LnNoaWZ0S2V5KCkpCi0g
ICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsKLSAgICBpZiAoZXZlbnQuYWx0S2V5KCkpCi0g
ICAgICAgIG1vZGlmaWVycyB8PSBBbHRLZXk7Ci0gICAgaWYgKGV2ZW50LmNvbnRyb2xLZXkoKSkK
LSAgICAgICAgbW9kaWZpZXJzIHw9IEN0cmxLZXk7Ci0KLSAgICAvLyBGb3Iga2V5cHJlc3MgZXZl
bnRzLCB3ZSB3YW50IGNoYXJDb2RlKCksIGJ1dCBrZXlDb2RlKCkgZG9lcyB0aGF0LgotICAgIGlu
dCBtYXBLZXkgPSBtb2RpZmllcnMgPDwgMTYgfCBldmVudC5uYXRpdmVWaXJ0dWFsS2V5Q29kZSgp
OwotICAgIGlmIChtYXBLZXkpIHsKLSAgICAgICAgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPiog
Y29tbWFuZE1hcCA9IGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93biA/Ci0gICAgICAg
ICAgICAma2V5RG93bkNvbW1hbmRzTWFwIDogJmtleVByZXNzQ29tbWFuZHNNYXA7Ci0gICAgICAg
IGlmIChjb25zdCBjaGFyKiBjb21tYW5kU3RyaW5nID0gY29tbWFuZE1hcC0+Z2V0KG1hcEtleSkp
Ci0gICAgICAgICAgICBtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5hcHBlbmQoY29tbWFuZFN0cmlu
Zyk7Ci0gICAgfQotCi0gICAgY29tbWFuZExpc3QuYXBwZW5kKG1fcGVuZGluZ0VkaXRvckNvbW1h
bmRzKTsKKyAgICBBU1NFUlQoZXZlbnQudHlwZSA9PSBXZWJFdmVudDo6S2V5RG93biB8fCBldmVu
dC50eXBlID09IFdlYkV2ZW50LktleVByZXNzKTsKKyAgICBLZXlCaW5kaW5nVHJhbnNsYXRvcjo6
RXZlbnRUeXBlIHR5cGUgPSBXZWJFdmVudDo6S2V5RG93biA/IAorICAgICAgICBLZXlCaW5kaW5n
VHJhbnNsYXRvcjo6S2V5RG93biA6IEtleUJpbmRpbmdUcmFuc2xhdG9yOjpLZXlQcmVzczsKKyAg
ICBtX2tleUJpbmRpbmdUcmFuc2xhdG9yLmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29u
c3RfY2FzdDxHZGtFdmVudEtleSo+KCZldmVudC5uYXRpdmVFdmVudCgpLT5rZXkpLCB0eXBlLCBj
b21tYW5kTGlzdCk7CiB9CiAKIC8vIFBhZ2VDbGllbnQncyBwdXJlIHZpcnR1YWwgZnVuY3Rpb25z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
aAppbmRleCA4OWMyZWU4ZjMyMGNhZDkxMGY3ZWNjZDcyYTM0NmFjM2RiMDVjOTA0Li5lYzUwYzcy
MjlhODdkMWYwZjZjYzk2MmI2ZjJlM2M1YmYzOThiMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpZm5kZWYgUGFnZUNsaWVudEltcGxfaAogI2RlZmluZSBQYWdlQ2xpZW50SW1wbF9oCiAKKyNp
bmNsdWRlICJLZXlCaW5kaW5nVHJhbnNsYXRvci5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rl
cy5oIgpAQCAtNDcsOCArNDgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgUGFnZUNsaWVudEltcGwodmlld1dpZGdldCkpOwogICAgIH0KIAotICAgIHZvaWQgYWRkUGVu
ZGluZ0VkaXRvckNvbW1hbmQoY29uc3QgY2hhciogY29tbWFuZCkgeyBtX3BlbmRpbmdFZGl0b3JD
b21tYW5kcy5hcHBlbmQoV1RGOjpTdHJpbmcoY29tbWFuZCkpOyB9Ci0KIHByaXZhdGU6CiAgICAg
UGFnZUNsaWVudEltcGwoR3RrV2lkZ2V0Kik7CiAKQEAgLTk5LDggKzk4LDcgQEAgcHJpdmF0ZToK
IAogICAgIC8vIE1lbWJlcnMgb2YgUGFnZUNsaWVudEltcGwgY2xhc3MKICAgICBHdGtXaWRnZXQq
IG1fdmlld1dpZGdldDsKLSAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fcGVuZGluZ0VkaXRvckNv
bW1hbmRzOwotICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiBtX25hdGl2ZVdpZGdldDsKKyAgICBXZWJD
b3JlOjpLZXlCaW5kaW5nVHJhbnNsYXRvciBtX2tleUJpbmRpbmdUcmFuc2xhdG9yOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>