<?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>85557</bug_id>
          
          <creation_ts>2012-05-03 17:13:15 -0700</creation_ts>
          <short_desc>IndexedDB: Remove all index metadata records when deleting an index</short_desc>
          <delta_ts>2012-05-04 14:19:49 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>615804</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-03 17:13:15 -0700</bug_when>
    <thetext>IndexedDB: Remove all index metadata records when deleting an index</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615806</commentid>
    <comment_count>1</comment_count>
      <attachid>140129</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-03 17:13:55 -0700</bug_when>
    <thetext>Created attachment 140129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615808</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-03 17:19:08 -0700</bug_when>
    <thetext>Without this patch, loading storage/indexeddb/delete-index-crash.html in Chromium, quitting (or loading an interstitial page), then reloading storage/indexeddb/delete-index-crash.html will hit an ASSERT:

ASSERTION FAILED: !metaDataKey.metaDataType()
../../third_party/WebKit/Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp(723) : virtual void WebCore::IDBLevelDBBackingStore::getIndexes(int64_t, int64_t, WTF::Vector&lt;long int, 0ul&gt;&amp;, WTF::Vector&lt;WTF::String, 0ul&gt;&amp;, WTF::Vector&lt;WTF::String, 0ul&gt;&amp;, WTF::Vector&lt;bool, 0ul&gt;&amp;, WTF::Vector&lt;bool, 0ul&gt;&amp;)

In theory, this should repro in DumpRenderTree - it would require dropping all references to the database and forcing GC to run so the database is dropped from the backing store map. I&apos;m not seeing that happen with a LayoutTest when using window.location to navigate to an interstitial page, although it works in Chromium.

We may be hitting something related to http://webkit.org/b/83074 or something DRT specific that&apos;s causing handles to be retained.

I can land this then land a Chromium-side test, or hold off on landing until I can determine why DRT isn&apos;t releasing handles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615846</commentid>
    <comment_count>3</comment_count>
      <attachid>140129</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-03 17:54:35 -0700</bug_when>
    <thetext>Comment on attachment 140129
Patch

LGTM

Maybe we should try to get this in before the m20 freeze?  That way, in the off chance that this IS causing docs problems, they&apos;ll get the fix a release early without us having to do a merge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616314</commentid>
    <comment_count>4</comment_count>
      <attachid>140129</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-05-04 09:38:44 -0700</bug_when>
    <thetext>Comment on attachment 140129
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        No new tests. Issues does not repro in DumpRenderTree.

Can you add a sentence or two explaining why you are making the change (hitting an assert).  Please land a chromium side test after this gets rolled into chromium.  You could maybe mention that here.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:1093
&gt; +    return encode(databaseId, objectStoreId, indexId, 255);

What is 255?  Should we make it a const somewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616589</commentid>
    <comment_count>5</comment_count>
      <attachid>140308</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-04 13:40:00 -0700</bug_when>
    <thetext>Created attachment 140308
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616590</commentid>
    <comment_count>6</comment_count>
      <attachid>140308</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-04 13:41:30 -0700</bug_when>
    <thetext>Comment on attachment 140308
Patch for landing

Rejecting attachment 140308 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/12565240</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616594</commentid>
    <comment_count>7</comment_count>
      <attachid>140310</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-04 13:43:01 -0700</bug_when>
    <thetext>Created attachment 140310
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616654</commentid>
    <comment_count>8</comment_count>
      <attachid>140310</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-04 14:19:44 -0700</bug_when>
    <thetext>Comment on attachment 140310
Patch for landing

Clearing flags on attachment: 140310

Committed r116170: &lt;http://trac.webkit.org/changeset/116170&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616655</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-04 14:19:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140129</attachid>
            <date>2012-05-03 17:13:55 -0700</date>
            <delta_ts>2012-05-04 13:39:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85557-20120503171354.patch</filename>
            <type>text/plain</type>
            <size>4263</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1OTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlN2Q2YzBjNDkwZDJh
NjU5YzU2ZDMyNTc2MDMyNzhkMTE1Mjg5OS4uYWIxOTgxNTFmNmFiZDAxYTMwOGZkMjQ2M2NkOTM2
OTliYTY3NDhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA1LTAzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZW1v
dmUgYWxsIGluZGV4IG1ldGFkYXRhIHJlY29yZHMgd2hlbiBkZWxldGluZyBhbiBpbmRleAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1NTcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IElzc3VlcyBkb2VzIG5vdCByZXBybyBpbiBEdW1wUmVuZGVyVHJlZS4KKworICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkNvZGluZzo6SW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KToKKyAgICAg
ICAgKElEQkxldmVsREJDb2RpbmcpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJDb2RpbmcuaDoKKyAgICAgICAgKEluZGV4TWV0YURhdGFLZXkpOgorCiAyMDEyLTA1LTAz
ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBjb21waWxlIHRpbWUgYW1iaWd1aXR5IGhhcHBlbnMgd2hlbiBJIHRyeSB0byBh
c3NpZ24gYSBUeXBlQnVpbGRlciBvYmplY3QgdG8gYW4gb3V0IGFyZ3VtZW50LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2lu
Z1N0b3JlLmNwcAppbmRleCBkMzc2OWVhYzEwNzkwODkyYWRlZWY3MTkxODdjNjRkYzM5NDBjMWYw
Li41OWRjYzhlNGYyMDljMTFhMDdlZDRlZjE2NmIzYzg1M2Q0OTI0NDllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2lu
Z1N0b3JlLmNwcApAQCAtODE0LDE5ICs4MTQsMTAgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0
b3JlOjpkZWxldGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmUK
IHsKICAgICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOwogCi0gICAgY29uc3QgVmVjdG9y
PGNoYXI+IG5hbWVLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmVJZCwgaW5kZXhJZCwgMCk7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IHVuaXF1ZUtl
eSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBp
bmRleElkLCAxKTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5UGF0aEtleSA9IEluZGV4TWV0
YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAyKTsK
KyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhNZXRhRGF0YVN0YXJ0ID0gSW5kZXhNZXRhRGF0
YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIDApOworICAg
IGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleE1ldGFEYXRhRW5kID0gSW5kZXhNZXRhRGF0YUtleTo6
ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpOwogCi0gICAg
aWYgKCFtX2N1cnJlbnRUcmFuc2FjdGlvbi0+cmVtb3ZlKG5hbWVLZXkpKSB7Ci0gICAgICAgIExP
R19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAoIW1fY3VycmVudFRyYW5zYWN0aW9uLT5yZW1vdmUodW5pcXVlS2V5KSkg
ewotICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFtX2N1cnJlbnRUcmFuc2FjdGlvbi0+cmVtb3Zl
KGtleVBhdGhLZXkpKSB7CisgICAgaWYgKCFkZWxldGVSYW5nZShtX2N1cnJlbnRUcmFuc2FjdGlv
bi5nZXQoKSwgaW5kZXhNZXRhRGF0YVN0YXJ0LCBpbmRleE1ldGFEYXRhRW5kKSkgewogICAgICAg
ICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJDb2RpbmcuY3BwCmluZGV4IGYwMjYzZjg5ZjNlOGRmNjZiZWMxODNkYTBmYWFlMmNj
YjVkNWM3MzguLmUwNWU0NDc2YTFmODAzOWI0YTQzMGQ2YjI1ODllNjE0NjM1MWU5NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2Rpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2Rp
bmcuY3BwCkBAIC0xMDg4LDYgKzEwODgsMTEgQEAgVmVjdG9yPGNoYXI+IEluZGV4TWV0YURhdGFL
ZXk6OmVuY29kZU1heEtleShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3QKICAg
ICByZXR1cm4gZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIElOVDY0X01BWCwgMjU1
KTsKIH0KIAorVmVjdG9yPGNoYXI+IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZU1heEtleShpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQor
eworICAgIHJldHVybiBlbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwg
MjU1KTsKK30KKwogaW50IEluZGV4TWV0YURhdGFLZXk6OmNvbXBhcmUoY29uc3QgSW5kZXhNZXRh
RGF0YUtleSYgb3RoZXIpCiB7CiAgICAgQVNTRVJUKG1fb2JqZWN0U3RvcmVJZCA+PSAwKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2Rp
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2Rpbmcu
aAppbmRleCAxNGM0MmVhNzMzNjFiNDAyMDZkYWM0ZDBkZmQxNzY0MDc5MGVjY2ZhLi42MDg0YmY2
ZTA0ZjMwODkyNTAzNWM3NDBhNzI3ZTU2ODMyOGRkYzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCkBAIC0xNjMsNiArMTYz
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWNvZGUoY29uc3QgY2hhciog
c3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBJbmRleE1ldGFEYXRhS2V5KiByZXN1bHQpOwogICAg
IHN0YXRpYyBWZWN0b3I8Y2hhcj4gZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIHVuc2lnbmVkIGNoYXIgbWV0YURhdGFUeXBl
KTsKICAgICBzdGF0aWMgVmVjdG9yPGNoYXI+IGVuY29kZU1heEtleShpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CisgICAgc3RhdGljIFZlY3RvcjxjaGFyPiBlbmNv
ZGVNYXhLZXkoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCk7CiAgICAgaW50IGNvbXBhcmUoY29uc3QgSW5kZXhNZXRhRGF0YUtleSYgb3Ro
ZXIpOwogICAgIGludDY0X3QgaW5kZXhJZCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGNoYXIgbWV0
YURhdGFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhRGF0YVR5cGU7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140308</attachid>
            <date>2012-05-04 13:40:00 -0700</date>
            <delta_ts>2012-05-04 13:42:58 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-85557-20120504133959.patch</filename>
            <type>text/plain</type>
            <size>20727</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1OTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlN2Q2YzBjNDkwZDJh
NjU5YzU2ZDMyNTc2MDMyNzhkMTE1Mjg5OS4uNThmZjRlZjkwMzBkYTAwMjdjMWVlNTNhMWFkZGE5
YjNlYmYxNGM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA1LTA0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZW1v
dmUgYWxsIGluZGV4IG1ldGFkYXRhIHJlY29yZHMgd2hlbiBkZWxldGluZyBhbiBpbmRleAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1NTcKKworCisg
ICAgICAgIEFuIGFzc2VydCBpcyBoaXQgd2hlbiByZS1sb2FkaW5nIGRhdGFiYXNlIGZyb20gYmFj
a2luZyBzdG9yZSBkdWUgdG8gc3RhbGUgaW5kZXgKKyAgICAgICAgbWV0YWRhdGEgZW50cnkuIERv
IGEgcmFuZ2UgZGVsZXRlIHRvIGNsZWFyIGFsbCBtZXRhZGF0YSBlbnRyaWVzIHdoZW4gZGVsZXRp
bmcgYW4KKyAgICAgICAgaW5kZXguIERlZmluZSBtZXRhZGF0YSBlbnRyaWVzIGFzIGVudW0gYW5k
IGxpbWl0cyBhcyBjb25zdHMgaW5zdGVhZCBvZiBoYXJkY29kZWQgaW50cy4KKworICAgICAgICBO
byBuZXcgdGVzdHMgLSBpc3N1ZSBkb2VzIG5vdCByZXBybyBhcyBsYXlvdXQgdGVzdC4gV2lsbCBs
YW5kIHRlc3QgaW4gQ2hyb21pdW0uCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEJvb2wpOiBIZWxw
ZXIgZnVuY3Rpb25zOyByZXBsYWNlcyBwYXR0ZXJuIG9mIHB1dEludCgpL3JlYWQgb25seSBsZWFk
IGJ5dGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnB1dEJvb2wpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVz
KTogU2tpcCBzdGFsZSBkYXRhLiBVc2UgZW51bXMsIGhlbHBlcnMuCisgICAgICAgIChXZWJDb3Jl
OjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSk6IFVzZSBlbnVtcy4K
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0
b3JlKTogVXNlIGVudW1zLgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmV3VmVyc2lvbk51bWJlcik6
IFVzZSBlbnVtcy4KKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6Omdl
dEluZGV4ZXMpOiBTa2lwIHN0YWxlIGRhdGEuIFVzZSBlbnVtcywgaGVscGVycy4KKyAgICAgICAg
KFdlYkNvcmU6OmdldE5ld0luZGV4SWQpOiBVc2UgZW51bXMuCisgICAgICAgIChXZWJDb3JlOjpJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6IFVzZSBlbnVtcy4KKyAgICAgICAg
KFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4KTogRGVsZXRlIG1l
dGFkYXRhIGJ5IHJhbmdlLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJD
b2RpbmcuY3BwOgorICAgICAgICAoSURCTGV2ZWxEQkNvZGluZyk6IEFkZCBjb25zdGFudHMgZm9y
IG1ldGFkYXRhIG1heGltdW0gdmFsdWVzLgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNv
ZGluZzo6ZW5jb2RlQm9vbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpk
ZWNvZGVCb29sKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0
b3JlTWV0YURhdGFLZXk6OmVuY29kZU1heEtleSk6IFVzZSBjb25zdHMuCisgICAgICAgIChXZWJD
b3JlOjpJREJMZXZlbERCQ29kaW5nOjpJbmRleE1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkpOiBV
c2UgY29uc3RzLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2Rpbmcu
aDoKKyAgICAgICAgKElEQkxldmVsREJDb2RpbmcpOiBFeHBvc2UgZW51bXMgZm9yIG1ldGFkYXRh
IHR5cGVzLgorCiAyMDEyLTA1LTAzICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBjb21waWxlIHRpbWUgYW1iaWd1aXR5IGhh
cHBlbnMgd2hlbiBJIHRyeSB0byBhc3NpZ24gYSBUeXBlQnVpbGRlciBvYmplY3QgdG8gYW4gb3V0
IGFyZ3VtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCBkMzc2OWVhYzEwNzkwODkyYWRl
ZWY3MTkxODdjNjRkYzM5NDBjMWYwLi4yYzA0ZDNlYTk1ZDM2YTQzNjIzOGJjZTdkOTEwMjcxYzg0
MDM5NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtNDYsNiArNDYsMjMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIElEQkxldmVsREJDb2Rpbmc7CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+CitzdGF0aWMgYm9vbCBnZXRCb29sKERCT3JU
cmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBib29sJiBmb3VuZEJvb2wp
Cit7CisgICAgVmVjdG9yPGNoYXI+IHJlc3VsdDsKKyAgICBpZiAoIWRiLT5nZXQoa2V5LCByZXN1
bHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3VuZEJvb2wgPSBkZWNvZGVCb29s
KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCkpOworICAgIHJldHVybiB0cnVlOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgorc3RhdGljIGJvb2wgcHV0Qm9vbChE
Qk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgYm9vbCB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gZGItPnB1dChrZXksIGVuY29kZUJvb2wodmFsdWUpKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KIHN0YXRpYyBib29sIGdldEludChEQk9y
VHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgaW50NjRfdCYgZm91bmRJ
bnQpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJlc3VsdDsKQEAgLTMzMCwxNiArMzQ3LDIwIEBAIHZv
aWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJh
c2VJZCwgVmVjdG9yPGludDY0X3Q+CiAgICAgICAgIE9iamVjdFN0b3JlTWV0YURhdGFLZXkgbWV0
YURhdGFLZXk7CiAgICAgICAgIHAgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpkZWNvZGUocCwg
bGltaXQsICZtZXRhRGF0YUtleSk7CiAgICAgICAgIEFTU0VSVChwKTsKLSAgICAgICAgaWYgKG1l
dGFEYXRhS2V5Lm1ldGFEYXRhVHlwZSgpKSB7CisgICAgICAgIGlmIChtZXRhRGF0YUtleS5tZXRh
RGF0YVR5cGUoKSAhPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjprTmFtZSkgewogICAgICAgICAg
ICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwotICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgLy8gUG9zc2libGUgc3RhbGUgbWV0YWRhdGEsIGJ1dCBkb24n
dCBmYWlsIHRoZSBsb2FkLgorICAgICAgICAgICAgaXQtPm5leHQoKTsKKyAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgaW50NjRfdCBvYmplY3RTdG9yZUlkID0gbWV0
YURhdGFLZXkub2JqZWN0U3RvcmVJZCgpOworCisgICAgICAgIC8vIEZJWE1FOiBEbyB0aGlzIGJ5
IGRpcmVjdCBrZXkgbG9va3VwIHJhdGhlciB0aGFuIGl0ZXJhdGlvbiwgdG8gc2ltcGxpZnkuCiAg
ICAgICAgIFN0cmluZyBvYmplY3RTdG9yZU5hbWUgPSBkZWNvZGVTdHJpbmcoaXQtPnZhbHVlKCku
YmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwogCiAgICAgICAgIGl0LT5uZXh0KCk7Ci0gICAg
ICAgIGlmICghY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShpdC5nZXQoKSwgc3RvcEtl
eSwgb2JqZWN0U3RvcmVJZCwgMSkpIHsKKyAgICAgICAgaWYgKCFjaGVja09iamVjdFN0b3JlQW5k
TWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9y
ZU1ldGFEYXRhS2V5OjprS2V5UGF0aCkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJu
YWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpA
QCAtMzQ3LDM1ICszNjgsMzMgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmpl
Y3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4KICAgICAgICAgYm9v
bCBoYXNLZXlQYXRoID0gdHJ1ZTsKIAogICAgICAgICBpdC0+bmV4dCgpOwotICAgICAgICBpZiAo
IWNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVj
dFN0b3JlSWQsIDIpKSB7CisgICAgICAgIGlmICghY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRh
VHlwZShpdC5nZXQoKSwgc3RvcEtleSwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0
YUtleTo6a0F1dG9JbmNyZW1lbnQpKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludGVybmFs
IEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgLy8gRklYTUU6IEFkZCBlbmNvZGUvZGVjb2RlIGZ1bmN0aW9ucyBmb3IgYm9vbHMuCi0g
ICAgICAgIGJvb2wgYXV0b0luY3JlbWVudCA9ICppdC0+dmFsdWUoKS5iZWdpbigpOworICAgICAg
ICBib29sIGF1dG9JbmNyZW1lbnQgPSBkZWNvZGVCb29sKGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0
LT52YWx1ZSgpLmVuZCgpKTsKIAogICAgICAgICBpdC0+bmV4dCgpOyAvLyBJcyBldmljYXRibGUu
Ci0gICAgICAgIGlmICghY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShpdC5nZXQoKSwg
c3RvcEtleSwgb2JqZWN0U3RvcmVJZCwgMykpIHsKKyAgICAgICAgaWYgKCFjaGVja09iamVjdFN0
b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlkLCBPYmpl
Y3RTdG9yZU1ldGFEYXRhS2V5OjprRXZpY3RhYmxlKSkgewogICAgICAgICAgICAgTE9HX0VSUk9S
KCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgaXQtPm5leHQoKTsgLy8gTGFzdCB2ZXJzaW9uLgotICAgICAgICBp
ZiAoIWNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9i
amVjdFN0b3JlSWQsIDQpKSB7CisgICAgICAgIGlmICghY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFE
YXRhVHlwZShpdC5nZXQoKSwgc3RvcEtleSwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRh
RGF0YUtleTo6a0xhc3RWZXJzaW9uKSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5h
bCBJbmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgaXQtPm5leHQoKTsgLy8gTWF4aXVtIGluZGV4IGlkIGFsbG9jYXRlZC4KLSAgICAg
ICAgaWYgKCFjaGVja09iamVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5
LCBvYmplY3RTdG9yZUlkLCA1KSkgeworICAgICAgICBpdC0+bmV4dCgpOyAvLyBNYXhpbXVtIGlu
ZGV4IGlkIGFsbG9jYXRlZC4KKyAgICAgICAgaWYgKCFjaGVja09iamVjdFN0b3JlQW5kTWV0YURh
dGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFE
YXRhS2V5OjprTWF4SW5kZXhJZCkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwg
SW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIGl0LT5uZXh0KCk7IC8vIFtvcHRpb25hbF0gaGFzIGtleSBwYXRoIChpcyBub3QgbnVs
bCkKLSAgICAgICAgaWYgKGNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCks
IHN0b3BLZXksIG9iamVjdFN0b3JlSWQsIDYpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQWRk
IGVuY29kZS9kZWNvZGUgZnVuY3Rpb25zIGZvciBib29scy4KLSAgICAgICAgICAgIGhhc0tleVBh
dGggPSAqaXQtPnZhbHVlKCkuYmVnaW4oKTsKKyAgICAgICAgaWYgKGNoZWNrT2JqZWN0U3RvcmVB
bmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0
b3JlTWV0YURhdGFLZXk6OmtIYXNLZXlQYXRoKSkgeworICAgICAgICAgICAgaGFzS2V5UGF0aCA9
IGRlY29kZUJvb2woaXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwogICAg
ICAgICAgICAgaWYgKCFoYXNLZXlQYXRoICYmICFrZXlQYXRoLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC00MTMsMTMgKzQzMiwxMyBAQCBib29sIElEQkxldmVsREJC
YWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3Qg
U3RyaW5nJgogICAgIGlmIChvYmplY3RTdG9yZUlkIDwgMCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgY29uc3QgVmVjdG9yPGNoYXI+IG5hbWVLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRh
S2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgMCk7Ci0gICAgY29uc3QgVmVj
dG9yPGNoYXI+IGtleVBhdGhLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgMSk7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IGF1dG9J
bmNyZW1lbnRLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwgMik7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IGV2aWN0YWJsZUtleSA9
IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
LCAzKTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbGFzdFZlcnNpb25LZXkgPSBPYmplY3RTdG9y
ZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgNCk7Ci0gICAg
Y29uc3QgVmVjdG9yPGNoYXI+IG1heEluZGV4SWRLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgNSk7Ci0gICAgY29uc3QgVmVjdG9y
PGNoYXI+IGhhc0tleVBhdGhLZXkgID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRh
dGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDYpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBuYW1l
S2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0
b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmtOYW1lKTsKKyAgICBjb25zdCBWZWN0b3I8
Y2hhcj4ga2V5UGF0aEtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjprS2V5UGF0aCk7Cisg
ICAgY29uc3QgVmVjdG9yPGNoYXI+IGF1dG9JbmNyZW1lbnRLZXkgPSBPYmplY3RTdG9yZU1ldGFE
YXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRh
RGF0YUtleTo6a0F1dG9JbmNyZW1lbnQpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBldmljdGFi
bGVLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6a0V2aWN0YWJsZSk7CisgICAgY29uc3Qg
VmVjdG9yPGNoYXI+IGxhc3RWZXJzaW9uS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5j
b2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmtM
YXN0VmVyc2lvbik7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IG1heEluZGV4SWRLZXkgPSBPYmpl
Y3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2Jq
ZWN0U3RvcmVNZXRhRGF0YUtleTo6a01heEluZGV4SWQpOworICAgIGNvbnN0IFZlY3RvcjxjaGFy
PiBoYXNLZXlQYXRoS2V5ICA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjprSGFzS2V5UGF0aCk7
CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IG5hbWVzS2V5ID0gT2JqZWN0U3RvcmVOYW1lc0tleTo6
ZW5jb2RlKGRhdGFiYXNlSWQsIG5hbWUpOwogCiAgICAgYm9vbCBvayA9IHB1dFN0cmluZyhtX2N1
cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgbmFtZUtleSwgbmFtZSk7CkBAIC00NTgsNyArNDc3LDcg
QEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90
IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIG9rID0gcHV0SW50KG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBoYXNLZXlQYXRo
S2V5LCAha2V5UGF0aC5pc051bGwoKSk7CisgICAgb2sgPSBwdXRCb29sKG1fY3VycmVudFRyYW5z
YWN0aW9uLmdldCgpLCBoYXNLZXlQYXRoS2V5LCAha2V5UGF0aC5pc051bGwoKSk7CiAgICAgaWYg
KCFvaykgewogICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ4MCw3ICs0OTksNyBAQCB2b2lkIElEQkxldmVs
REJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplYwogICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAKICAgICBTdHJp
bmcgb2JqZWN0U3RvcmVOYW1lOwotICAgIGdldFN0cmluZyhtX2N1cnJlbnRUcmFuc2FjdGlvbi5n
ZXQoKSwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0
b3JlSWQsIDApLCBvYmplY3RTdG9yZU5hbWUpOworICAgIGdldFN0cmluZyhtX2N1cnJlbnRUcmFu
c2FjdGlvbi5nZXQoKSwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmtOYW1lKSwgb2JqZWN0U3Rv
cmVOYW1lKTsKIAogICAgIGlmICghZGVsZXRlUmFuZ2UobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0
KCksIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9y
ZUlkLCAwKSwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQpKSkKICAgICAgICAgcmV0dXJuOyAvLyBGSVhNRTogUmVwb3J0IGVycm9y
LgpAQCAtNTM2LDcgKzU1NSw3IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBpbnQ2NF90IGdldE5ld1Zl
cnNpb25OdW1iZXIoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiB7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+
IGxhc3RWZXJzaW9uS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQsIDQpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBsYXN0VmVyc2lv
bktleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RT
dG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjprTGFzdFZlcnNpb24pOwogCiAgICAgaW50
NjRfdCBsYXN0VmVyc2lvbiA9IC0xOwogICAgIGlmICghZ2V0SW50KHRyYW5zYWN0aW9uLCBsYXN0
VmVyc2lvbktleSwgbGFzdFZlcnNpb24pKQpAQCAtNzE4LDIyICs3MzcsMjYgQEAgdm9pZCBJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUkKICAgICAgICAgSW5kZXhNZXRhRGF0YUtleSBtZXRhRGF0YUtleTsKICAg
ICAgICAgcCA9IEluZGV4TWV0YURhdGFLZXk6OmRlY29kZShwLCBsaW1pdCwgJm1ldGFEYXRhS2V5
KTsKICAgICAgICAgQVNTRVJUKHApOworICAgICAgICBpZiAobWV0YURhdGFLZXkubWV0YURhdGFU
eXBlKCkgIT0gSW5kZXhNZXRhRGF0YUtleTo6a05hbWUpIHsKKyAgICAgICAgICAgIExPR19FUlJP
UigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKKyAgICAgICAgICAgIC8vIFBvc3NpYmxl
IHN0YWxlIG1ldGFkYXRhIGR1ZSB0byBodHRwOi8vd2Via2l0Lm9yZy9iLzg1NTU3IGJ1dCBkb24n
dCBmYWlsIHRoZSBsb2FkLgorICAgICAgICAgICAgaXQtPm5leHQoKTsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CiAKKyAgICAgICAgLy8gRklYTUU6IERvIHRoaXMgYnkgZGlyZWN0
IGtleSBsb29rdXAgcmF0aGVyIHRoYW4gaXRlcmF0aW9uLCB0byBzaW1wbGlmeS4KICAgICAgICAg
aW50NjRfdCBpbmRleElkID0gbWV0YURhdGFLZXkuaW5kZXhJZCgpOwotICAgICAgICBBU1NFUlQo
IW1ldGFEYXRhS2V5Lm1ldGFEYXRhVHlwZSgpKTsKLQogICAgICAgICBTdHJpbmcgaW5kZXhOYW1l
ID0gZGVjb2RlU3RyaW5nKGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsK
IAogICAgICAgICBpdC0+bmV4dCgpOyAvLyB1bmlxdWUgZmxhZwotICAgICAgICBpZiAoIWNoZWNr
SW5kZXhBbmRNZXRhRGF0YUtleShpdC5nZXQoKSwgc3RvcEtleSwgaW5kZXhJZCwgMSkpIHsKKyAg
ICAgICAgaWYgKCFjaGVja0luZGV4QW5kTWV0YURhdGFLZXkoaXQuZ2V0KCksIHN0b3BLZXksIGlu
ZGV4SWQsIEluZGV4TWV0YURhdGFLZXk6OmtVbmlxdWUpKSB7CiAgICAgICAgICAgICBMT0dfRVJS
T1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEFkZCBlbmNvZGUvZGVjb2RlIGZ1bmN0aW9ucyBm
b3IgYm9vbHMuCi0gICAgICAgIGJvb2wgaW5kZXhVbmlxdWUgPSAqaXQtPnZhbHVlKCkuYmVnaW4o
KTsKKyAgICAgICAgYm9vbCBpbmRleFVuaXF1ZSA9IGRlY29kZUJvb2woaXQtPnZhbHVlKCkuYmVn
aW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwogCiAgICAgICAgIGl0LT5uZXh0KCk7IC8vIGtleVBh
dGgKLSAgICAgICAgaWYgKCFjaGVja0luZGV4QW5kTWV0YURhdGFLZXkoaXQuZ2V0KCksIHN0b3BL
ZXksIGluZGV4SWQsIDIpKSB7CisgICAgICAgIGlmICghY2hlY2tJbmRleEFuZE1ldGFEYXRhS2V5
KGl0LmdldCgpLCBzdG9wS2V5LCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5OjprS2V5UGF0aCkp
IHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNzQxLDkgKzc2NCw4IEBAIHZvaWQg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJCiAKICAgICAgICAgaXQtPm5leHQoKTsgLy8gW29wdGlvbmFsXSBt
dWx0aUVudHJ5IGZsYWcKICAgICAgICAgYm9vbCBpbmRleE11bHRpRW50cnkgPSBmYWxzZTsKLSAg
ICAgICAgaWYgKGNoZWNrSW5kZXhBbmRNZXRhRGF0YUtleShpdC5nZXQoKSwgc3RvcEtleSwgaW5k
ZXhJZCwgMykpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgZW5jb2RlL2RlY29kZSBmdW5j
dGlvbnMgZm9yIGJvb2xzLgotICAgICAgICAgICAgaW5kZXhNdWx0aUVudHJ5ID0gKml0LT52YWx1
ZSgpLmJlZ2luKCk7CisgICAgICAgIGlmIChjaGVja0luZGV4QW5kTWV0YURhdGFLZXkoaXQuZ2V0
KCksIHN0b3BLZXksIGluZGV4SWQsIEluZGV4TWV0YURhdGFLZXk6OmtNdWx0aUVudHJ5KSkgewor
ICAgICAgICAgICAgaW5kZXhNdWx0aUVudHJ5ID0gZGVjb2RlQm9vbChpdC0+dmFsdWUoKS5iZWdp
bigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CiAgICAgICAgICAgICBpdC0+bmV4dCgpOwogICAgICAg
ICB9CiAKQEAgLTc1OCw3ICs3ODAsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6Omdl
dEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSQogc3RhdGlj
IGludDY0X3QgZ2V0TmV3SW5kZXhJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKIHsKICAgICBpbnQ2NF90
IG1heEluZGV4SWQgPSAtMTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbWF4SW5kZXhJZEtleSA9
IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
LCA1KTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbWF4SW5kZXhJZEtleSA9IE9iamVjdFN0b3Jl
TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9y
ZU1ldGFEYXRhS2V5OjprTWF4SW5kZXhJZCk7CiAgICAgaWYgKCFnZXRJbnQodHJhbnNhY3Rpb24s
IG1heEluZGV4SWRLZXksIG1heEluZGV4SWQpKQogICAgICAgICBtYXhJbmRleElkID0ga01pbmlt
dW1JbmRleElkOwogCkBAIC03NzgsMTAgKzgwMCwxMCBAQCBib29sIElEQkxldmVsREJCYWNraW5n
U3RvcmU6OmNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZQogICAgIGlmIChpbmRleElkIDwgMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29u
c3QgVmVjdG9yPGNoYXI+IG5hbWVLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgMCk7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+
IHVuaXF1ZUtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RT
dG9yZUlkLCBpbmRleElkLCAxKTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5UGF0aEtleSA9
IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRl
eElkLCAyKTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbXVsdGlFbnRyeUtleSA9IEluZGV4TWV0
YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAzKTsK
KyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbmFtZUtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29k
ZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5Ojpr
TmFtZSk7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IHVuaXF1ZUtleSA9IEluZGV4TWV0YURhdGFL
ZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBJbmRleE1ldGFE
YXRhS2V5OjprVW5pcXVlKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5UGF0aEtleSA9IElu
ZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElk
LCBJbmRleE1ldGFEYXRhS2V5OjprS2V5UGF0aCk7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IG11
bHRpRW50cnlLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVJZCwgaW5kZXhJZCwgSW5kZXhNZXRhRGF0YUtleTo6a011bHRpRW50cnkpOwogCiAgICAg
Ym9vbCBvayA9IHB1dFN0cmluZyhtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgbmFtZUtleSwg
bmFtZSk7CiAgICAgaWYgKCFvaykgewpAQCAtNzg5LDcgKzgxMSw3IEBAIGJvb2wgSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBvayA9IHB1dElu
dChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgdW5pcXVlS2V5LCBpc1VuaXF1ZSk7CisgICAg
b2sgPSBwdXRCb29sKG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCB1bmlxdWVLZXksIGlzVW5p
cXVlKTsKICAgICBpZiAoIW9rKSB7CiAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhl
ZCBEQiBlcnJvci4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODAxLDcgKzgyMyw3IEBA
IGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBvayA9IHB1dEludChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgbXVsdGlFbnRyeUtl
eSwgaXNNdWx0aUVudHJ5KTsKKyAgICBvayA9IHB1dEJvb2wobV9jdXJyZW50VHJhbnNhY3Rpb24u
Z2V0KCksIG11bHRpRW50cnlLZXksIGlzTXVsdGlFbnRyeSk7CiAgICAgaWYgKCFvaykgewogICAg
ICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTgxNCwxOSArODM2LDEwIEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZTo6ZGVsZXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
CiB7CiAgICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9uKTsKIAotICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiBuYW1lS2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsIDApOwotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiB1bmlxdWVL
ZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwg
aW5kZXhJZCwgMSk7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleVBhdGhLZXkgPSBJbmRleE1l
dGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgMik7
CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGluZGV4TWV0YURhdGFTdGFydCA9IEluZGV4TWV0YURh
dGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAwKTsKKyAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhNZXRhRGF0YUVuZCA9IEluZGV4TWV0YURhdGFLZXk6
OmVuY29kZU1heEtleShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKTsKIAotICAg
IGlmICghbV9jdXJyZW50VHJhbnNhY3Rpb24tPnJlbW92ZShuYW1lS2V5KSkgewotICAgICAgICBM
T0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKCFtX2N1cnJlbnRUcmFuc2FjdGlvbi0+cmVtb3ZlKHVuaXF1ZUtleSkp
IHsKLSAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9jdXJyZW50VHJhbnNhY3Rpb24tPnJlbW92
ZShrZXlQYXRoS2V5KSkgeworICAgIGlmICghZGVsZXRlUmFuZ2UobV9jdXJyZW50VHJhbnNhY3Rp
b24uZ2V0KCksIGluZGV4TWV0YURhdGFTdGFydCwgaW5kZXhNZXRhRGF0YUVuZCkpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCTGV2ZWxEQkNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQ29kaW5nLmNwcAppbmRleCBmMDI2M2Y4OWYzZThkZjY2YmVjMTgzZGEwZmFhZTJj
Y2I1ZDVjNzM4Li5iM2U5MTQwNDRhMjdhNTlmNzQxZDFhODE5ZGFhMGE3ZDFlN2QwN2NmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29k
aW5nLmNwcApAQCAtMTI4LDYgKzEyOCwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIElEQkxldmVsREJDb2RpbmcgewogCisjaWZuZGVmIElOVDY0X01BWAorI2RlZmluZSBJTlQ2
NF9NQVggMHg3ZmZmZmZmZmZmZmZmZmZmTEwKKyNlbmRpZgorI2lmbmRlZiBJTlQzMl9NQVgKKyNk
ZWZpbmUgSU5UMzJfTUFYIDB4N2ZmZmZmZmZMCisjZW5kaWYKKwogc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGNoYXIga0lEQktleU51bGxUeXBlQnl0ZSA9IDA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQg
Y2hhciBrSURCS2V5U3RyaW5nVHlwZUJ5dGUgPSAxOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo
YXIga0lEQktleURhdGVUeXBlQnl0ZSA9IDI7CkBAIC0xNTAsMTMgKzE1Nyw4IEBAIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBjaGFyIGtJbmRleEZyZWVMaXN0VHlwZUJ5dGUgPSAxNTE7CiBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgY2hhciBrT2JqZWN0U3RvcmVOYW1lc1R5cGVCeXRlID0gMjAwOwogc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga0luZGV4TmFtZXNLZXlUeXBlQnl0ZSA9IDIwMTsKIAot
I2lmbmRlZiBJTlQ2NF9NQVgKLSNkZWZpbmUgSU5UNjRfTUFYIDB4N2ZmZmZmZmZmZmZmZmZmZkxM
Ci0jZW5kaWYKLSNpZm5kZWYgSU5UMzJfTUFYCi0jZGVmaW5lIElOVDMyX01BWCAweDdmZmZmZmZm
TAotI2VuZGlmCi0KK3N0YXRpYyBjb25zdCBpbnQ2NF90IGtPYmplY3RNZXRhRGF0YVR5cGVNYXhp
bXVtID0gSU5UNjRfTUFYOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga0luZGV4TWV0YURh
dGFUeXBlTWF4aW11bSA9IDI1NTsKIAogVmVjdG9yPGNoYXI+IGVuY29kZUJ5dGUodW5zaWduZWQg
Y2hhciBjKQogewpAQCAtMTc1LDYgKzE3NywxOSBAQCBWZWN0b3I8Y2hhcj4gbWluSURCS2V5KCkK
ICAgICByZXR1cm4gZW5jb2RlQnl0ZShrSURCS2V5TWluS2V5VHlwZUJ5dGUpOwogfQogCitWZWN0
b3I8Y2hhcj4gZW5jb2RlQm9vbChib29sIGIpCit7CisgICAgVmVjdG9yPGNoYXI+IHJldCgxKTsK
KyAgICByZXQuYXBwZW5kKGIgPyAxIDogMCk7CisgICAgcmV0dXJuIHJldDsKK30KKworYm9vbCBk
ZWNvZGVCb29sKGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpCit7CisgICAgQVNT
RVJUKGJlZ2luIDwgZW5kKTsKKyAgICByZXR1cm4gKmJlZ2luOworfQorCiBWZWN0b3I8Y2hhcj4g
ZW5jb2RlSW50KGludDY0X3QgbikKIHsKICAgICBBU1NFUlQobiA+PSAwKTsKQEAgLTEwMTAsMTIg
KzEwMjUsMTIgQEAgVmVjdG9yPGNoYXI+IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3QKIAogVmVjdG9yPGNoYXI+IE9iamVj
dFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZU1heEtleShpbnQ2NF90IGRhdGFiYXNlSWQpCiB7Ci0g
ICAgcmV0dXJuIGVuY29kZShkYXRhYmFzZUlkLCBJTlQ2NF9NQVgsIElOVDY0X01BWCk7CisgICAg
cmV0dXJuIGVuY29kZShkYXRhYmFzZUlkLCBJTlQ2NF9NQVgsIGtPYmplY3RNZXRhRGF0YVR5cGVN
YXhpbXVtKTsKIH0KIAogVmVjdG9yPGNoYXI+IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29k
ZU1heEtleShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKIHsKLSAg
ICByZXR1cm4gZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIElOVDY0X01BWCk7Cisg
ICAgcmV0dXJuIGVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBrT2JqZWN0TWV0YURh
dGFUeXBlTWF4aW11bSk7CiB9CiAKIGludDY0X3QgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6b2Jq
ZWN0U3RvcmVJZCgpIGNvbnN0CkBAIC0xMDg1LDcgKzExMDAsMTIgQEAgVmVjdG9yPGNoYXI+IElu
ZGV4TWV0YURhdGFLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwKIAogVmVjdG9yPGNoYXI+IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZU1heEtleShp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKIHsKLSAgICByZXR1cm4g
ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIElOVDY0X01BWCwgMjU1KTsKKyAgICBy
ZXR1cm4gZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIElOVDY0X01BWCwga0luZGV4
TWV0YURhdGFUeXBlTWF4aW11bSk7Cit9CisKK1ZlY3RvcjxjaGFyPiBJbmRleE1ldGFEYXRhS2V5
OjplbmNvZGVNYXhLZXkoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCkKK3sKKyAgICByZXR1cm4gZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIGluZGV4SWQsIGtJbmRleE1ldGFEYXRhVHlwZU1heGltdW0pOwogfQogCiBpbnQg
SW5kZXhNZXRhRGF0YUtleTo6Y29tcGFyZShjb25zdCBJbmRleE1ldGFEYXRhS2V5JiBvdGhlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJD
b2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2Rp
bmcuaAppbmRleCAxNGM0MmVhNzMzNjFiNDAyMDZkYWM0ZDBkZmQxNzY0MDc5MGVjY2ZhLi5jODAx
ZGY3ZWI1ZWJlOGZlNTM1OGJlOTcwODk5YTA3YzI3ZmRkNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCkBAIC00NSw2ICs0
NSw4IEBAIGNvbnN0IHVuc2lnbmVkIGNoYXIga01pbmltdW1JbmRleElkID0gMzA7CiBWZWN0b3I8
Y2hhcj4gZW5jb2RlQnl0ZSh1bnNpZ25lZCBjaGFyKTsKIFZlY3RvcjxjaGFyPiBtYXhJREJLZXko
KTsKIFZlY3RvcjxjaGFyPiBtaW5JREJLZXkoKTsKK1ZlY3RvcjxjaGFyPiBlbmNvZGVCb29sKGJv
b2wpOworYm9vbCBkZWNvZGVCb29sKGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQp
OwogVmVjdG9yPGNoYXI+IGVuY29kZUludChpbnQ2NF90KTsKIGludDY0X3QgZGVjb2RlSW50KGNv
bnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpOwogVmVjdG9yPGNoYXI+IGVuY29kZVZh
ckludChpbnQ2NF90KTsKQEAgLTE0Myw2ICsxNDUsMTYgQEAgcHVibGljOgogCiBjbGFzcyBPYmpl
Y3RTdG9yZU1ldGFEYXRhS2V5IHsKIHB1YmxpYzoKKyAgICBlbnVtIE1ldGFEYXRhVHlwZSB7Cisg
ICAgICAgIGtOYW1lID0gMCwKKyAgICAgICAga0tleVBhdGggPSAxLAorICAgICAgICBrQXV0b0lu
Y3JlbWVudCA9IDIsCisgICAgICAgIGtFdmljdGFibGUgPSAzLAorICAgICAgICBrTGFzdFZlcnNp
b24gPSA0LAorICAgICAgICBrTWF4SW5kZXhJZCA9IDUsCisgICAgICAgIGtIYXNLZXlQYXRoID0g
NgorICAgIH07CisKICAgICBPYmplY3RTdG9yZU1ldGFEYXRhS2V5KCk7CiAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGRlY29kZShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogbGltaXQsIE9i
amVjdFN0b3JlTWV0YURhdGFLZXkqIHJlc3VsdCk7CiAgICAgc3RhdGljIFZlY3RvcjxjaGFyPiBl
bmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
bWV0YURhdGFUeXBlKTsKQEAgLTE1OSwxMCArMTcxLDE4IEBAIHByaXZhdGU6CiAKIGNsYXNzIElu
ZGV4TWV0YURhdGFLZXkgewogcHVibGljOgorICAgIGVudW0gTWV0YURhdGFUeXBlIHsKKyAgICAg
ICAga05hbWUgPSAwLAorICAgICAgICBrVW5pcXVlID0gMSwKKyAgICAgICAga0tleVBhdGggPSAy
LAorICAgICAgICBrTXVsdGlFbnRyeSA9IDMKKyAgICB9OworCiAgICAgSW5kZXhNZXRhRGF0YUtl
eSgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNv
bnN0IGNoYXIqIGxpbWl0LCBJbmRleE1ldGFEYXRhS2V5KiByZXN1bHQpOwogICAgIHN0YXRpYyBW
ZWN0b3I8Y2hhcj4gZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIHVuc2lnbmVkIGNoYXIgbWV0YURhdGFUeXBlKTsKICAgICBz
dGF0aWMgVmVjdG9yPGNoYXI+IGVuY29kZU1heEtleShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCk7CisgICAgc3RhdGljIFZlY3RvcjxjaGFyPiBlbmNvZGVNYXhLZXko
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCk7CiAgICAgaW50IGNvbXBhcmUoY29uc3QgSW5kZXhNZXRhRGF0YUtleSYgb3RoZXIpOwogICAg
IGludDY0X3QgaW5kZXhJZCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGNoYXIgbWV0YURhdGFUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhRGF0YVR5cGU7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140310</attachid>
            <date>2012-05-04 13:43:01 -0700</date>
            <delta_ts>2012-05-04 14:19:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-85557-20120504134300.patch</filename>
            <type>text/plain</type>
            <size>20760</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1OTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlN2Q2YzBjNDkwZDJh
NjU5YzU2ZDMyNTc2MDMyNzhkMTE1Mjg5OS4uYzVmODRiN2IxZWFjZmVlMGRhYjNjNWMxNmNhOTdh
OWU0ODM3MGRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA1LTA0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZW1v
dmUgYWxsIGluZGV4IG1ldGFkYXRhIHJlY29yZHMgd2hlbiBkZWxldGluZyBhbiBpbmRleAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1NTcKKworICAg
ICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIEFuIGFzc2VydCBpcyBoaXQg
d2hlbiByZS1sb2FkaW5nIGRhdGFiYXNlIGZyb20gYmFja2luZyBzdG9yZSBkdWUgdG8gc3RhbGUg
aW5kZXgKKyAgICAgICAgbWV0YWRhdGEgZW50cnkuIERvIGEgcmFuZ2UgZGVsZXRlIHRvIGNsZWFy
IGFsbCBtZXRhZGF0YSBlbnRyaWVzIHdoZW4gZGVsZXRpbmcgYW4KKyAgICAgICAgaW5kZXguIERl
ZmluZSBtZXRhZGF0YSBlbnRyaWVzIGFzIGVudW0gYW5kIGxpbWl0cyBhcyBjb25zdHMgaW5zdGVh
ZCBvZiBoYXJkY29kZWQgaW50cy4KKworICAgICAgICBObyBuZXcgdGVzdHMgLSBpc3N1ZSBkb2Vz
IG5vdCByZXBybyBhcyBsYXlvdXQgdGVzdC4gV2lsbCBsYW5kIHRlc3QgaW4gQ2hyb21pdW0uCisK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmdldEJvb2wpOiBIZWxwZXIgZnVuY3Rpb25zOyByZXBsYWNlcyBw
YXR0ZXJuIG9mIHB1dEludCgpL3JlYWQgb25seSBsZWFkIGJ5dGUuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OnB1dEJvb2wpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVzKTogU2tpcCBzdGFsZSBkYXRhLiBVc2Ug
ZW51bXMsIGhlbHBlcnMuCisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZSk6IFVzZSBlbnVtcy4KKyAgICAgICAgKFdlYkNvcmU6OklEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKTogVXNlIGVudW1zLgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0TmV3VmVyc2lvbk51bWJlcik6IFVzZSBlbnVtcy4KKyAgICAgICAgKFdl
YkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMpOiBTa2lwIHN0YWxlIGRh
dGEuIFVzZSBlbnVtcywgaGVscGVycy4KKyAgICAgICAgKFdlYkNvcmU6OmdldE5ld0luZGV4SWQp
OiBVc2UgZW51bXMuCisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleCk6IFVzZSBlbnVtcy4KKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmRlbGV0ZUluZGV4KTogRGVsZXRlIG1ldGFkYXRhIGJ5IHJhbmdlLgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwOgorICAgICAgICAoSURC
TGV2ZWxEQkNvZGluZyk6IEFkZCBjb25zdGFudHMgZm9yIG1ldGFkYXRhIG1heGltdW0gdmFsdWVz
LgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6ZW5jb2RlQm9vbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpkZWNvZGVCb29sKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZU1h
eEtleSk6IFVzZSBjb25zdHMuCisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpJ
bmRleE1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkpOiBVc2UgY29uc3RzLgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaDoKKyAgICAgICAgKElEQkxldmVsREJD
b2RpbmcpOiBFeHBvc2UgZW51bXMgZm9yIG1ldGFkYXRhIHR5cGVzLgorCiAyMDEyLTA1LTAzICBJ
bHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBjb21waWxlIHRpbWUgYW1iaWd1aXR5IGhhcHBlbnMgd2hlbiBJIHRyeSB0byBhc3Np
Z24gYSBUeXBlQnVpbGRlciBvYmplY3QgdG8gYW4gb3V0IGFyZ3VtZW50LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0
b3JlLmNwcAppbmRleCBkMzc2OWVhYzEwNzkwODkyYWRlZWY3MTkxODdjNjRkYzM5NDBjMWYwLi4y
YzA0ZDNlYTk1ZDM2YTQzNjIzOGJjZTdkOTEwMjcxYzg0MDM5NjY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0
b3JlLmNwcApAQCAtNDYsNiArNDYsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFt
ZXNwYWNlIElEQkxldmVsREJDb2Rpbmc7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNh
Y3Rpb24+CitzdGF0aWMgYm9vbCBnZXRCb29sKERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZl
Y3RvcjxjaGFyPiYga2V5LCBib29sJiBmb3VuZEJvb2wpCit7CisgICAgVmVjdG9yPGNoYXI+IHJl
c3VsdDsKKyAgICBpZiAoIWRiLT5nZXQoa2V5LCByZXN1bHQpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBmb3VuZEJvb2wgPSBkZWNvZGVCb29sKHJlc3VsdC5iZWdpbigpLCByZXN1bHQu
ZW5kKCkpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRy
YW5zYWN0aW9uPgorc3RhdGljIGJvb2wgcHV0Qm9vbChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25z
dCBWZWN0b3I8Y2hhcj4mIGtleSwgYm9vbCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gZGItPnB1dChr
ZXksIGVuY29kZUJvb2wodmFsdWUpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFu
c2FjdGlvbj4KIHN0YXRpYyBib29sIGdldEludChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBW
ZWN0b3I8Y2hhcj4mIGtleSwgaW50NjRfdCYgZm91bmRJbnQpCiB7CiAgICAgVmVjdG9yPGNoYXI+
IHJlc3VsdDsKQEAgLTMzMCwxNiArMzQ3LDIwIEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZTo6Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+CiAg
ICAgICAgIE9iamVjdFN0b3JlTWV0YURhdGFLZXkgbWV0YURhdGFLZXk7CiAgICAgICAgIHAgPSBP
YmplY3RTdG9yZU1ldGFEYXRhS2V5OjpkZWNvZGUocCwgbGltaXQsICZtZXRhRGF0YUtleSk7CiAg
ICAgICAgIEFTU0VSVChwKTsKLSAgICAgICAgaWYgKG1ldGFEYXRhS2V5Lm1ldGFEYXRhVHlwZSgp
KSB7CisgICAgICAgIGlmIChtZXRhRGF0YUtleS5tZXRhRGF0YVR5cGUoKSAhPSBPYmplY3RTdG9y
ZU1ldGFEYXRhS2V5OjprTmFtZSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJ
bmRleGVkIERCIGVycm9yLiIpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgLy8g
UG9zc2libGUgc3RhbGUgbWV0YWRhdGEsIGJ1dCBkb24ndCBmYWlsIHRoZSBsb2FkLgorICAgICAg
ICAgICAgaXQtPm5leHQoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAg
ICAgICAgaW50NjRfdCBvYmplY3RTdG9yZUlkID0gbWV0YURhdGFLZXkub2JqZWN0U3RvcmVJZCgp
OworCisgICAgICAgIC8vIEZJWE1FOiBEbyB0aGlzIGJ5IGRpcmVjdCBrZXkgbG9va3VwIHJhdGhl
ciB0aGFuIGl0ZXJhdGlvbiwgdG8gc2ltcGxpZnkuCiAgICAgICAgIFN0cmluZyBvYmplY3RTdG9y
ZU5hbWUgPSBkZWNvZGVTdHJpbmcoaXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5k
KCkpOwogCiAgICAgICAgIGl0LT5uZXh0KCk7Ci0gICAgICAgIGlmICghY2hlY2tPYmplY3RTdG9y
ZUFuZE1ldGFEYXRhVHlwZShpdC5nZXQoKSwgc3RvcEtleSwgb2JqZWN0U3RvcmVJZCwgMSkpIHsK
KyAgICAgICAgaWYgKCFjaGVja09iamVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBz
dG9wS2V5LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjprS2V5UGF0aCkp
IHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzQ3LDM1ICszNjgsMzMgQEAgdm9p
ZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFz
ZUlkLCBWZWN0b3I8aW50NjRfdD4KICAgICAgICAgYm9vbCBoYXNLZXlQYXRoID0gdHJ1ZTsKIAog
ICAgICAgICBpdC0+bmV4dCgpOwotICAgICAgICBpZiAoIWNoZWNrT2JqZWN0U3RvcmVBbmRNZXRh
RGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVjdFN0b3JlSWQsIDIpKSB7CisgICAgICAg
IGlmICghY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShpdC5nZXQoKSwgc3RvcEtleSwg
b2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6a0F1dG9JbmNyZW1lbnQpKSB7
CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEFkZCBlbmNv
ZGUvZGVjb2RlIGZ1bmN0aW9ucyBmb3IgYm9vbHMuCi0gICAgICAgIGJvb2wgYXV0b0luY3JlbWVu
dCA9ICppdC0+dmFsdWUoKS5iZWdpbigpOworICAgICAgICBib29sIGF1dG9JbmNyZW1lbnQgPSBk
ZWNvZGVCb29sKGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKIAogICAg
ICAgICBpdC0+bmV4dCgpOyAvLyBJcyBldmljYXRibGUuCi0gICAgICAgIGlmICghY2hlY2tPYmpl
Y3RTdG9yZUFuZE1ldGFEYXRhVHlwZShpdC5nZXQoKSwgc3RvcEtleSwgb2JqZWN0U3RvcmVJZCwg
MykpIHsKKyAgICAgICAgaWYgKCFjaGVja09iamVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0Lmdl
dCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjprRXZp
Y3RhYmxlKSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVy
cm9yLiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaXQtPm5l
eHQoKTsgLy8gTGFzdCB2ZXJzaW9uLgotICAgICAgICBpZiAoIWNoZWNrT2JqZWN0U3RvcmVBbmRN
ZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVjdFN0b3JlSWQsIDQpKSB7CisgICAg
ICAgIGlmICghY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShpdC5nZXQoKSwgc3RvcEtl
eSwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6a0xhc3RWZXJzaW9uKSkg
ewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaXQtPm5leHQoKTsgLy8g
TWF4aXVtIGluZGV4IGlkIGFsbG9jYXRlZC4KLSAgICAgICAgaWYgKCFjaGVja09iamVjdFN0b3Jl
QW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlkLCA1KSkgewor
ICAgICAgICBpdC0+bmV4dCgpOyAvLyBNYXhpbXVtIGluZGV4IGlkIGFsbG9jYXRlZC4KKyAgICAg
ICAgaWYgKCFjaGVja09iamVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5
LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjprTWF4SW5kZXhJZCkpIHsK
ICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGl0LT5uZXh0KCk7IC8vIFtv
cHRpb25hbF0gaGFzIGtleSBwYXRoIChpcyBub3QgbnVsbCkKLSAgICAgICAgaWYgKGNoZWNrT2Jq
ZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVjdFN0b3JlSWQs
IDYpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQWRkIGVuY29kZS9kZWNvZGUgZnVuY3Rpb25z
IGZvciBib29scy4KLSAgICAgICAgICAgIGhhc0tleVBhdGggPSAqaXQtPnZhbHVlKCkuYmVnaW4o
KTsKKyAgICAgICAgaWYgKGNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCks
IHN0b3BLZXksIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmtIYXNLZXlQ
YXRoKSkgeworICAgICAgICAgICAgaGFzS2V5UGF0aCA9IGRlY29kZUJvb2woaXQtPnZhbHVlKCku
YmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwogICAgICAgICAgICAgaWYgKCFoYXNLZXlQYXRo
ICYmICFrZXlQYXRoLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiSW50
ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC00
MTMsMTMgKzQzMiwxMyBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVj
dFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJgogICAgIGlmIChvYmplY3RT
dG9yZUlkIDwgMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgVmVjdG9yPGNo
YXI+IG5hbWVLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwgMCk7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleVBhdGhLZXkgPSBP
YmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwg
MSk7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IGF1dG9JbmNyZW1lbnRLZXkgPSBPYmplY3RTdG9y
ZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgMik7Ci0gICAg
Y29uc3QgVmVjdG9yPGNoYXI+IGV2aWN0YWJsZUtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6
OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAzKTsKLSAgICBjb25zdCBWZWN0b3I8
Y2hhcj4gbGFzdFZlcnNpb25LZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgNCk7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IG1heElu
ZGV4SWRLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmVJZCwgNSk7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IGhhc0tleVBhdGhLZXkgID0g
T2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IDYpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBuYW1lS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0
YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURh
dGFLZXk6OmtOYW1lKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5UGF0aEtleSA9IE9iamVj
dFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmpl
Y3RTdG9yZU1ldGFEYXRhS2V5OjprS2V5UGF0aCk7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGF1
dG9JbmNyZW1lbnRLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6a0F1dG9JbmNyZW1lbnQp
OworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBldmljdGFibGVLZXkgPSBPYmplY3RTdG9yZU1ldGFE
YXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRh
RGF0YUtleTo6a0V2aWN0YWJsZSk7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGxhc3RWZXJzaW9u
S2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0
b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmtMYXN0VmVyc2lvbik7CisgICAgY29uc3Qg
VmVjdG9yPGNoYXI+IG1heEluZGV4SWRLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNv
ZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6a01h
eEluZGV4SWQpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBoYXNLZXlQYXRoS2V5ICA9IE9iamVj
dFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmpl
Y3RTdG9yZU1ldGFEYXRhS2V5OjprSGFzS2V5UGF0aCk7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+
IG5hbWVzS2V5ID0gT2JqZWN0U3RvcmVOYW1lc0tleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG5hbWUp
OwogCiAgICAgYm9vbCBvayA9IHB1dFN0cmluZyhtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwg
bmFtZUtleSwgbmFtZSk7CkBAIC00NTgsNyArNDc3LDcgQEAgYm9vbCBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmlu
ZyYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG9rID0gcHV0SW50KG1fY3Vy
cmVudFRyYW5zYWN0aW9uLmdldCgpLCBoYXNLZXlQYXRoS2V5LCAha2V5UGF0aC5pc051bGwoKSk7
CisgICAgb2sgPSBwdXRCb29sKG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBoYXNLZXlQYXRo
S2V5LCAha2V5UGF0aC5pc051bGwoKSk7CiAgICAgaWYgKCFvaykgewogICAgICAgICBMT0dfRVJS
T1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTQ4MCw3ICs0OTksNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9i
amVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplYwogICAgIEFTU0VSVCht
X2N1cnJlbnRUcmFuc2FjdGlvbik7CiAKICAgICBTdHJpbmcgb2JqZWN0U3RvcmVOYW1lOwotICAg
IGdldFN0cmluZyhtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgT2JqZWN0U3RvcmVNZXRhRGF0
YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDApLCBvYmplY3RTdG9yZU5h
bWUpOworICAgIGdldFN0cmluZyhtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgT2JqZWN0U3Rv
cmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0
b3JlTWV0YURhdGFLZXk6OmtOYW1lKSwgb2JqZWN0U3RvcmVOYW1lKTsKIAogICAgIGlmICghZGVs
ZXRlUmFuZ2UobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIE9iamVjdFN0b3JlTWV0YURhdGFL
ZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAwKSwgT2JqZWN0U3RvcmVNZXRh
RGF0YUtleTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpKSkKICAgICAg
ICAgcmV0dXJuOyAvLyBGSVhNRTogUmVwb3J0IGVycm9yLgpAQCAtNTM2LDcgKzU1NSw3IEBAIHBy
aXZhdGU6CiAKIHN0YXRpYyBpbnQ2NF90IGdldE5ld1ZlcnNpb25OdW1iZXIoTGV2ZWxEQlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQpCiB7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IGxhc3RWZXJzaW9uS2V5ID0gT2JqZWN0
U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDQpOwor
ICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBsYXN0VmVyc2lvbktleSA9IE9iamVjdFN0b3JlTWV0YURh
dGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFE
YXRhS2V5OjprTGFzdFZlcnNpb24pOwogCiAgICAgaW50NjRfdCBsYXN0VmVyc2lvbiA9IC0xOwog
ICAgIGlmICghZ2V0SW50KHRyYW5zYWN0aW9uLCBsYXN0VmVyc2lvbktleSwgbGFzdFZlcnNpb24p
KQpAQCAtNzE4LDIyICs3MzcsMjYgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJ
bmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUkKICAgICAgICAg
SW5kZXhNZXRhRGF0YUtleSBtZXRhRGF0YUtleTsKICAgICAgICAgcCA9IEluZGV4TWV0YURhdGFL
ZXk6OmRlY29kZShwLCBsaW1pdCwgJm1ldGFEYXRhS2V5KTsKICAgICAgICAgQVNTRVJUKHApOwor
ICAgICAgICBpZiAobWV0YURhdGFLZXkubWV0YURhdGFUeXBlKCkgIT0gSW5kZXhNZXRhRGF0YUtl
eTo6a05hbWUpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBl
cnJvci4iKTsKKyAgICAgICAgICAgIC8vIFBvc3NpYmxlIHN0YWxlIG1ldGFkYXRhIGR1ZSB0byBo
dHRwOi8vd2Via2l0Lm9yZy9iLzg1NTU3IGJ1dCBkb24ndCBmYWlsIHRoZSBsb2FkLgorICAgICAg
ICAgICAgaXQtPm5leHQoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKKyAg
ICAgICAgLy8gRklYTUU6IERvIHRoaXMgYnkgZGlyZWN0IGtleSBsb29rdXAgcmF0aGVyIHRoYW4g
aXRlcmF0aW9uLCB0byBzaW1wbGlmeS4KICAgICAgICAgaW50NjRfdCBpbmRleElkID0gbWV0YURh
dGFLZXkuaW5kZXhJZCgpOwotICAgICAgICBBU1NFUlQoIW1ldGFEYXRhS2V5Lm1ldGFEYXRhVHlw
ZSgpKTsKLQogICAgICAgICBTdHJpbmcgaW5kZXhOYW1lID0gZGVjb2RlU3RyaW5nKGl0LT52YWx1
ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKIAogICAgICAgICBpdC0+bmV4dCgpOyAv
LyB1bmlxdWUgZmxhZwotICAgICAgICBpZiAoIWNoZWNrSW5kZXhBbmRNZXRhRGF0YUtleShpdC5n
ZXQoKSwgc3RvcEtleSwgaW5kZXhJZCwgMSkpIHsKKyAgICAgICAgaWYgKCFjaGVja0luZGV4QW5k
TWV0YURhdGFLZXkoaXQuZ2V0KCksIHN0b3BLZXksIGluZGV4SWQsIEluZGV4TWV0YURhdGFLZXk6
OmtVbmlxdWUpKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIg
ZXJyb3IuIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklY
TUU6IEFkZCBlbmNvZGUvZGVjb2RlIGZ1bmN0aW9ucyBmb3IgYm9vbHMuCi0gICAgICAgIGJvb2wg
aW5kZXhVbmlxdWUgPSAqaXQtPnZhbHVlKCkuYmVnaW4oKTsKKyAgICAgICAgYm9vbCBpbmRleFVu
aXF1ZSA9IGRlY29kZUJvb2woaXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkp
OwogCiAgICAgICAgIGl0LT5uZXh0KCk7IC8vIGtleVBhdGgKLSAgICAgICAgaWYgKCFjaGVja0lu
ZGV4QW5kTWV0YURhdGFLZXkoaXQuZ2V0KCksIHN0b3BLZXksIGluZGV4SWQsIDIpKSB7CisgICAg
ICAgIGlmICghY2hlY2tJbmRleEFuZE1ldGFEYXRhS2V5KGl0LmdldCgpLCBzdG9wS2V5LCBpbmRl
eElkLCBJbmRleE1ldGFEYXRhS2V5OjprS2V5UGF0aCkpIHsKICAgICAgICAgICAgIExPR19FUlJP
UigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtNzQxLDkgKzc2NCw4IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJCiAKICAg
ICAgICAgaXQtPm5leHQoKTsgLy8gW29wdGlvbmFsXSBtdWx0aUVudHJ5IGZsYWcKICAgICAgICAg
Ym9vbCBpbmRleE11bHRpRW50cnkgPSBmYWxzZTsKLSAgICAgICAgaWYgKGNoZWNrSW5kZXhBbmRN
ZXRhRGF0YUtleShpdC5nZXQoKSwgc3RvcEtleSwgaW5kZXhJZCwgMykpIHsKLSAgICAgICAgICAg
IC8vIEZJWE1FOiBBZGQgZW5jb2RlL2RlY29kZSBmdW5jdGlvbnMgZm9yIGJvb2xzLgotICAgICAg
ICAgICAgaW5kZXhNdWx0aUVudHJ5ID0gKml0LT52YWx1ZSgpLmJlZ2luKCk7CisgICAgICAgIGlm
IChjaGVja0luZGV4QW5kTWV0YURhdGFLZXkoaXQuZ2V0KCksIHN0b3BLZXksIGluZGV4SWQsIElu
ZGV4TWV0YURhdGFLZXk6OmtNdWx0aUVudHJ5KSkgeworICAgICAgICAgICAgaW5kZXhNdWx0aUVu
dHJ5ID0gZGVjb2RlQm9vbChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7
CiAgICAgICAgICAgICBpdC0+bmV4dCgpOwogICAgICAgICB9CiAKQEAgLTc1OCw3ICs3ODAsNyBA
QCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSQogc3RhdGljIGludDY0X3QgZ2V0TmV3SW5kZXhJZChM
ZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCkKIHsKICAgICBpbnQ2NF90IG1heEluZGV4SWQgPSAtMTsKLSAgICBj
b25zdCBWZWN0b3I8Y2hhcj4gbWF4SW5kZXhJZEtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6
OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCA1KTsKKyAgICBjb25zdCBWZWN0b3I8
Y2hhcj4gbWF4SW5kZXhJZEtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjprTWF4SW5kZXhJ
ZCk7CiAgICAgaWYgKCFnZXRJbnQodHJhbnNhY3Rpb24sIG1heEluZGV4SWRLZXksIG1heEluZGV4
SWQpKQogICAgICAgICBtYXhJbmRleElkID0ga01pbmltdW1JbmRleElkOwogCkBAIC03NzgsMTAg
KzgwMCwxMCBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZQogICAgIGlmIChpbmRleElkIDwgMCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgVmVjdG9yPGNoYXI+IG5hbWVLZXkg
PSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5k
ZXhJZCwgMCk7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IHVuaXF1ZUtleSA9IEluZGV4TWV0YURh
dGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAxKTsKLSAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5UGF0aEtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29k
ZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAyKTsKLSAgICBjb25zdCBWZWN0
b3I8Y2hhcj4gbXVsdGlFbnRyeUtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAzKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4g
bmFtZUtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9y
ZUlkLCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5OjprTmFtZSk7CisgICAgY29uc3QgVmVjdG9y
PGNoYXI+IHVuaXF1ZUtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkLCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5OjprVW5pcXVlKTsKKyAgICBj
b25zdCBWZWN0b3I8Y2hhcj4ga2V5UGF0aEtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShk
YXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5OjprS2V5
UGF0aCk7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IG11bHRpRW50cnlLZXkgPSBJbmRleE1ldGFE
YXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgSW5kZXhN
ZXRhRGF0YUtleTo6a011bHRpRW50cnkpOwogCiAgICAgYm9vbCBvayA9IHB1dFN0cmluZyhtX2N1
cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgbmFtZUtleSwgbmFtZSk7CiAgICAgaWYgKCFvaykgewpA
QCAtNzg5LDcgKzgxMSw3IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5k
ZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBvayA9IHB1dEludChtX2N1cnJlbnRUcmFuc2FjdGlvbi5n
ZXQoKSwgdW5pcXVlS2V5LCBpc1VuaXF1ZSk7CisgICAgb2sgPSBwdXRCb29sKG1fY3VycmVudFRy
YW5zYWN0aW9uLmdldCgpLCB1bmlxdWVLZXksIGlzVW5pcXVlKTsKICAgICBpZiAoIW9rKSB7CiAg
ICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtODAxLDcgKzgyMyw3IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBvayA9IHB1dEludChtX2N1cnJl
bnRUcmFuc2FjdGlvbi5nZXQoKSwgbXVsdGlFbnRyeUtleSwgaXNNdWx0aUVudHJ5KTsKKyAgICBv
ayA9IHB1dEJvb2wobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIG11bHRpRW50cnlLZXksIGlz
TXVsdGlFbnRyeSk7CiAgICAgaWYgKCFvaykgewogICAgICAgICBMT0dfRVJST1IoIkludGVybmFs
IEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgxNCwxOSAr
ODM2LDEwIEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlSW5kZXgoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlCiB7CiAgICAgQVNTRVJUKG1fY3VycmVu
dFRyYW5zYWN0aW9uKTsKIAotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBuYW1lS2V5ID0gSW5kZXhN
ZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIDAp
OwotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiB1bmlxdWVLZXkgPSBJbmRleE1ldGFEYXRhS2V5Ojpl
bmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgMSk7Ci0gICAgY29uc3Qg
VmVjdG9yPGNoYXI+IGtleVBhdGhLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgMik7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+
IGluZGV4TWV0YURhdGFTdGFydCA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAwKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5k
ZXhNZXRhRGF0YUVuZCA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZU1heEtleShkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUlkLCBpbmRleElkKTsKIAotICAgIGlmICghbV9jdXJyZW50VHJhbnNhY3Rp
b24tPnJlbW92ZShuYW1lS2V5KSkgewotICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4
ZWQgREIgZXJyb3IuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFtX2N1cnJl
bnRUcmFuc2FjdGlvbi0+cmVtb3ZlKHVuaXF1ZUtleSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJJ
bnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGlmICghbV9jdXJyZW50VHJhbnNhY3Rpb24tPnJlbW92ZShrZXlQYXRoS2V5KSkgeworICAgIGlm
ICghZGVsZXRlUmFuZ2UobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGluZGV4TWV0YURhdGFT
dGFydCwgaW5kZXhNZXRhRGF0YUVuZCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJ
bmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcAppbmRl
eCBmMDI2M2Y4OWYzZThkZjY2YmVjMTgzZGEwZmFhZTJjY2I1ZDVjNzM4Li5iM2U5MTQwNDRhMjdh
NTlmNzQxZDFhODE5ZGFhMGE3ZDFlN2QwN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcApAQCAtMTI4LDYgKzEyOCwx
MyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElEQkxldmVsREJDb2Rpbmcgewog
CisjaWZuZGVmIElOVDY0X01BWAorI2RlZmluZSBJTlQ2NF9NQVggMHg3ZmZmZmZmZmZmZmZmZmZm
TEwKKyNlbmRpZgorI2lmbmRlZiBJTlQzMl9NQVgKKyNkZWZpbmUgSU5UMzJfTUFYIDB4N2ZmZmZm
ZmZMCisjZW5kaWYKKwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga0lEQktleU51bGxUeXBl
Qnl0ZSA9IDA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrSURCS2V5U3RyaW5nVHlwZUJ5
dGUgPSAxOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga0lEQktleURhdGVUeXBlQnl0ZSA9
IDI7CkBAIC0xNTAsMTMgKzE1Nyw4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGtJbmRl
eEZyZWVMaXN0VHlwZUJ5dGUgPSAxNTE7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrT2Jq
ZWN0U3RvcmVOYW1lc1R5cGVCeXRlID0gMjAwOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg
a0luZGV4TmFtZXNLZXlUeXBlQnl0ZSA9IDIwMTsKIAotI2lmbmRlZiBJTlQ2NF9NQVgKLSNkZWZp
bmUgSU5UNjRfTUFYIDB4N2ZmZmZmZmZmZmZmZmZmZkxMCi0jZW5kaWYKLSNpZm5kZWYgSU5UMzJf
TUFYCi0jZGVmaW5lIElOVDMyX01BWCAweDdmZmZmZmZmTAotI2VuZGlmCi0KK3N0YXRpYyBjb25z
dCBpbnQ2NF90IGtPYmplY3RNZXRhRGF0YVR5cGVNYXhpbXVtID0gSU5UNjRfTUFYOworc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIga0luZGV4TWV0YURhdGFUeXBlTWF4aW11bSA9IDI1NTsKIAog
VmVjdG9yPGNoYXI+IGVuY29kZUJ5dGUodW5zaWduZWQgY2hhciBjKQogewpAQCAtMTc1LDYgKzE3
NywxOSBAQCBWZWN0b3I8Y2hhcj4gbWluSURCS2V5KCkKICAgICByZXR1cm4gZW5jb2RlQnl0ZShr
SURCS2V5TWluS2V5VHlwZUJ5dGUpOwogfQogCitWZWN0b3I8Y2hhcj4gZW5jb2RlQm9vbChib29s
IGIpCit7CisgICAgVmVjdG9yPGNoYXI+IHJldCgxKTsKKyAgICByZXQuYXBwZW5kKGIgPyAxIDog
MCk7CisgICAgcmV0dXJuIHJldDsKK30KKworYm9vbCBkZWNvZGVCb29sKGNvbnN0IGNoYXIqIGJl
Z2luLCBjb25zdCBjaGFyKiBlbmQpCit7CisgICAgQVNTRVJUKGJlZ2luIDwgZW5kKTsKKyAgICBy
ZXR1cm4gKmJlZ2luOworfQorCiBWZWN0b3I8Y2hhcj4gZW5jb2RlSW50KGludDY0X3QgbikKIHsK
ICAgICBBU1NFUlQobiA+PSAwKTsKQEAgLTEwMTAsMTIgKzEwMjUsMTIgQEAgVmVjdG9yPGNoYXI+
IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3QKIAogVmVjdG9yPGNoYXI+IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29k
ZU1heEtleShpbnQ2NF90IGRhdGFiYXNlSWQpCiB7Ci0gICAgcmV0dXJuIGVuY29kZShkYXRhYmFz
ZUlkLCBJTlQ2NF9NQVgsIElOVDY0X01BWCk7CisgICAgcmV0dXJuIGVuY29kZShkYXRhYmFzZUlk
LCBJTlQ2NF9NQVgsIGtPYmplY3RNZXRhRGF0YVR5cGVNYXhpbXVtKTsKIH0KIAogVmVjdG9yPGNo
YXI+IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZU1heEtleShpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKIHsKLSAgICByZXR1cm4gZW5jb2RlKGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQsIElOVDY0X01BWCk7CisgICAgcmV0dXJuIGVuY29kZShkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkLCBrT2JqZWN0TWV0YURhdGFUeXBlTWF4aW11bSk7CiB9CiAKIGlu
dDY0X3QgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6b2JqZWN0U3RvcmVJZCgpIGNvbnN0CkBAIC0x
MDg1LDcgKzExMDAsMTIgQEAgVmVjdG9yPGNoYXI+IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwKIAogVmVjdG9yPGNoYXI+
IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZU1heEtleShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCkKIHsKLSAgICByZXR1cm4gZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIElOVDY0X01BWCwgMjU1KTsKKyAgICByZXR1cm4gZW5jb2RlKGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQsIElOVDY0X01BWCwga0luZGV4TWV0YURhdGFUeXBlTWF4aW11bSk7Cit9
CisKK1ZlY3RvcjxjaGFyPiBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkKK3sKKyAg
ICByZXR1cm4gZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtJbmRl
eE1ldGFEYXRhVHlwZU1heGltdW0pOwogfQogCiBpbnQgSW5kZXhNZXRhRGF0YUtleTo6Y29tcGFy
ZShjb25zdCBJbmRleE1ldGFEYXRhS2V5JiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaAppbmRleCAxNGM0MmVhNzMzNjFi
NDAyMDZkYWM0ZDBkZmQxNzY0MDc5MGVjY2ZhLi5jODAxZGY3ZWI1ZWJlOGZlNTM1OGJlOTcwODk5
YTA3YzI3ZmRkNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCTGV2ZWxEQkNvZGluZy5oCkBAIC00NSw2ICs0NSw4IEBAIGNvbnN0IHVuc2lnbmVkIGNo
YXIga01pbmltdW1JbmRleElkID0gMzA7CiBWZWN0b3I8Y2hhcj4gZW5jb2RlQnl0ZSh1bnNpZ25l
ZCBjaGFyKTsKIFZlY3RvcjxjaGFyPiBtYXhJREJLZXkoKTsKIFZlY3RvcjxjaGFyPiBtaW5JREJL
ZXkoKTsKK1ZlY3RvcjxjaGFyPiBlbmNvZGVCb29sKGJvb2wpOworYm9vbCBkZWNvZGVCb29sKGNv
bnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpOwogVmVjdG9yPGNoYXI+IGVuY29kZUlu
dChpbnQ2NF90KTsKIGludDY0X3QgZGVjb2RlSW50KGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBj
aGFyKiBlbmQpOwogVmVjdG9yPGNoYXI+IGVuY29kZVZhckludChpbnQ2NF90KTsKQEAgLTE0Myw2
ICsxNDUsMTYgQEAgcHVibGljOgogCiBjbGFzcyBPYmplY3RTdG9yZU1ldGFEYXRhS2V5IHsKIHB1
YmxpYzoKKyAgICBlbnVtIE1ldGFEYXRhVHlwZSB7CisgICAgICAgIGtOYW1lID0gMCwKKyAgICAg
ICAga0tleVBhdGggPSAxLAorICAgICAgICBrQXV0b0luY3JlbWVudCA9IDIsCisgICAgICAgIGtF
dmljdGFibGUgPSAzLAorICAgICAgICBrTGFzdFZlcnNpb24gPSA0LAorICAgICAgICBrTWF4SW5k
ZXhJZCA9IDUsCisgICAgICAgIGtIYXNLZXlQYXRoID0gNgorICAgIH07CisKICAgICBPYmplY3RT
dG9yZU1ldGFEYXRhS2V5KCk7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlY29kZShjb25zdCBj
aGFyKiBzdGFydCwgY29uc3QgY2hhciogbGltaXQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXkqIHJl
c3VsdCk7CiAgICAgc3RhdGljIFZlY3RvcjxjaGFyPiBlbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgbWV0YURhdGFUeXBlKTsKQEAgLTE1OSwx
MCArMTcxLDE4IEBAIHByaXZhdGU6CiAKIGNsYXNzIEluZGV4TWV0YURhdGFLZXkgewogcHVibGlj
OgorICAgIGVudW0gTWV0YURhdGFUeXBlIHsKKyAgICAgICAga05hbWUgPSAwLAorICAgICAgICBr
VW5pcXVlID0gMSwKKyAgICAgICAga0tleVBhdGggPSAyLAorICAgICAgICBrTXVsdGlFbnRyeSA9
IDMKKyAgICB9OworCiAgICAgSW5kZXhNZXRhRGF0YUtleSgpOwogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBJbmRleE1l
dGFEYXRhS2V5KiByZXN1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4gZW5jb2RlKGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIHVu
c2lnbmVkIGNoYXIgbWV0YURhdGFUeXBlKTsKICAgICBzdGF0aWMgVmVjdG9yPGNoYXI+IGVuY29k
ZU1heEtleShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CisgICAg
c3RhdGljIFZlY3RvcjxjaGFyPiBlbmNvZGVNYXhLZXkoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCk7CiAgICAgaW50IGNvbXBhcmUoY29u
c3QgSW5kZXhNZXRhRGF0YUtleSYgb3RoZXIpOwogICAgIGludDY0X3QgaW5kZXhJZCgpIGNvbnN0
OwogICAgIHVuc2lnbmVkIGNoYXIgbWV0YURhdGFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZXRh
RGF0YVR5cGU7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>