<?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>76487</bug_id>
          
          <creation_ts>2012-01-17 15:47:01 -0800</creation_ts>
          <short_desc>IndexedDB: Need to distinguish key paths that don&apos;t yield value vs. yield invalid key</short_desc>
          <delta_ts>2012-01-25 10:01:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>
          
          <blocked>76198</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>fishd</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>537403</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-17 15:47:01 -0800</bug_when>
    <thetext>Following on from: https://bugs.webkit.org/show_bug.cgi?id=76075

There are some subtleties in the IDB spec:

* The object store uses in-line keys and the result of evaluating the object store&apos;s key path yields a value and that value is not a valid key.
* If there are any indexes referencing this object store whose key path is a string, evaluating their key path on the value parameter yields a value, and that value is not a valid key.

To implement these we need to ensure the fetchKeyFromKeyPath() functions distinguish the two cases:
* key path does not yield a value
* key path yields a value which is not a valid key

The obvious way to do this is have the function return NULL vs. an IDBKey (which has InvalidType). Unfortunately, these distinct cases are not represented in the WebKit API for the chromium port - Source/chromium/src/WebIDBKey.cpp collapses the two cases. 

The behavior difference is really only notable for adding/putting object store records where there is an index. When the index&apos;s keyPath yields nothing then the index doesn&apos;t get an entry for that object store record. When the index&apos;s keyPath yields a value but that value is not a valid key the spec indicates the add/put call should raise an exception.

Currently, the storage/indexeddb/objectstore-basics.html test fails on this in the Chromium port:


   store = db.createObjectStore(&apos;storeName&apos;, null)
   index = store.createIndex(&apos;indexName&apos;, &apos;x&apos;, {unique: true})
   ...   
   transaction = db.transaction([&apos;storeName&apos;], webkitIDBTransaction.READ_WRITE)
   store = transaction.objectStore(&apos;storeName&apos;)
   request = store.add({x: null}, &apos;validkey&apos;)

The last line should, per spec, throw DATA_ERR (see https://bugs.webkit.org/show_bug.cgi?id=76075). The current implementation checks later and thus fails the request, sending an Error event - this works in DumpRenderTree. In Chromium the request succeeds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540989</commentid>
    <comment_count>1</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-23 17:02:29 -0800</bug_when>
    <thetext>Landing this will require disabling some tests and extending some enumeration-sensitive code in the Chromium port first. See http://code.google.com/p/chromium/issues/detail?id=110956 for the &quot;final state&quot; of the Chromium changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540990</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-23 17:02:52 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Landing this will require disabling some tests and extending some enumeration-sensitive code in the Chromium port first. See http://code.google.com/p/chromium/issues/detail?id=110956 for the &quot;final state&quot; of the Chromium changes.

Er, https://chromiumcodereview.appspot.com/9212038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540991</commentid>
    <comment_count>3</comment_count>
      <attachid>123664</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-23 17:03:39 -0800</bug_when>
    <thetext>Created attachment 123664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540994</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-23 17:06:34 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541151</commentid>
    <comment_count>5</comment_count>
      <attachid>123664</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-23 23:48:51 -0800</bug_when>
    <thetext>Comment on attachment 123664
Patch

Attachment 123664 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11336244

New failing tests:
storage/indexeddb/objectstore-basics.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541468</commentid>
    <comment_count>6</comment_count>
      <attachid>123767</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-24 10:46:11 -0800</bug_when>
    <thetext>Created attachment 123767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541498</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-24 11:13:30 -0800</bug_when>
    <thetext>Once everything has passed try-bots and reviews, the plan is:

1. Land https://chromiumcodereview.appspot.com/9117040 in Chromium
2. Land https://bugs.webkit.org/show_bug.cgi?id=76487 (this)
3. Land https://chromiumcodereview.appspot.com/9212038 in Chromium

The Chromium port will have some broken functionality between steps #2 and #3, but the affected build and tests are addressed in #1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541712</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-24 14:40:55 -0800</bug_when>
    <thetext>tony@, fishd@ - can I get an r?

The corresponding Chromium changes have been lgtm&apos;d, and obviously I&apos;ll land &quot;part 1&quot; before landing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541752</commentid>
    <comment_count>9</comment_count>
      <attachid>123767</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-01-24 15:11:24 -0800</bug_when>
    <thetext>Comment on attachment 123767
Patch

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

LGTM

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:164
&gt; +        for (IndexMap::iterator it = m_indexes.begin(); it != m_indexes.end(); ++it) {

So if an index&apos;s keypath yields no value, the index doesn&apos;t get an entry, but if the index&apos;s keypath yields an invalid value, DATA_ERR is thrown?  Is the check at line 262-264 of this file now redundant or is there a difference between indexKey-&gt;valid() and indexKey-&gt;type() == IDBKey::InvalidType ?

&gt; LayoutTests/storage/indexeddb/keypath-edges.html:100
&gt; +        debug(&quot;Key path doesn&apos;t resolve to a value - internally, key should be null, put request should succeed&quot;);

I would have thought the key would be autoincremented to 1.  Is the comment wrong or is my understanding wrong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541757</commentid>
    <comment_count>10</comment_count>
      <attachid>123767</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-01-24 15:16:24 -0800</bug_when>
    <thetext>Comment on attachment 123767
Patch

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

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:158
&gt; +            } else {
&gt; +                if (keyPathKey &amp;&amp; !keyPathKey-&gt;valid()) {

Nit: Merge lines into an &quot;else if&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541765</commentid>
    <comment_count>11</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-24 15:21:53 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 123767 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123767&amp;action=review
&gt; 
&gt; LGTM
&gt; 
&gt; &gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:164
&gt; &gt; +        for (IndexMap::iterator it = m_indexes.begin(); it != m_indexes.end(); ++it) {
&gt; 
&gt; So if an index&apos;s keypath yields no value, the index doesn&apos;t get an entry, but if the index&apos;s keypath yields an invalid value, DATA_ERR is thrown? 

That&apos;s correct. In the spec: 

* For the add/put call(): &quot;If any of the following conditions are true, this method throws a DOMException of type DataError: ... If there are any indexes referencing this object store whose key path is a string, evaluating their key path on the value parameter yields a value, and that value is not a valid key.&quot;
* During the async store operation: &quot;If index&apos;s key path is a string, then evaluate it on value. If this does not yield a value don&apos;t take any further actions for this index.&quot;

&gt; Is the check at line 262-264 of this file now redundant or is there a difference between indexKey-&gt;valid() and indexKey-&gt;type() == IDBKey::InvalidType ?

Those expressions are the same, and the checks in putInternal (and selectKeyForPut) should now indeed be redundant. I&apos;ll see if I can safely take them out now (was going to do cleanup on them later once I&apos;d come up for air).

&gt; &gt; LayoutTests/storage/indexeddb/keypath-edges.html:100
&gt; &gt; +        debug(&quot;Key path doesn&apos;t resolve to a value - internally, key should be null, put request should succeed&quot;);
&gt; 
&gt; I would have thought the key would be autoincremented to 1.  Is the comment wrong or is my understanding wrong?

The comment is extremely unclear. I meant the result of evaluating the key path would yield a &quot;null&quot; key; you&apos;re right, the actual key being applied would end up being 1. I&apos;ll fix the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541795</commentid>
    <comment_count>12</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-24 15:49:13 -0800</bug_when>
    <thetext>FYI, I&apos;ve filed https://bugs.webkit.org/show_bug.cgi?id=76952 for further cleanup that can be done following some spec discussion on the list, and added a FIXME comment with the URL. New patch coming shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541799</commentid>
    <comment_count>13</comment_count>
      <attachid>123833</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-24 15:55:53 -0800</bug_when>
    <thetext>Created attachment 123833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541914</commentid>
    <comment_count>14</comment_count>
      <attachid>123833</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-24 17:56:52 -0800</bug_when>
    <thetext>Comment on attachment 123833
Patch

Rejecting attachment 123833 from commit-queue.

New failing tests:
media/audio-garbage-collect.html
Full output: http://queues.webkit.org/results/11264148</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541919</commentid>
    <comment_count>15</comment_count>
      <attachid>123833</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-01-24 18:00:19 -0800</bug_when>
    <thetext>Comment on attachment 123833
Patch

I&apos;m re-marking cq+.  That audio test had to be a flake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541922</commentid>
    <comment_count>16</comment_count>
      <attachid>123833</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-01-24 18:01:51 -0800</bug_when>
    <thetext>Comment on attachment 123833
Patch

On second look, marking cq- because we didn&apos;t hear from Darin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542009</commentid>
    <comment_count>17</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-24 22:19:12 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 123833 [details])
&gt; On second look, marking cq- because we didn&apos;t hear from Darin.

Oops, yeah, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542338</commentid>
    <comment_count>18</comment_count>
      <attachid>123833</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-25 09:16:40 -0800</bug_when>
    <thetext>Comment on attachment 123833
Patch

API changes LGTM ... sorry for the latency.  CQ+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542390</commentid>
    <comment_count>19</comment_count>
      <attachid>123833</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 10:01:30 -0800</bug_when>
    <thetext>Comment on attachment 123833
Patch

Clearing flags on attachment: 123833

Committed r105891: &lt;http://trac.webkit.org/changeset/105891&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542391</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 10:01:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123664</attachid>
            <date>2012-01-23 17:03:39 -0800</date>
            <delta_ts>2012-01-24 10:46:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76487-20120123170338.patch</filename>
            <type>text/plain</type>
            <size>21294</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFiZjY5NjBlNzFiYzg4
ZjhmNDNmYTA4NzUyNDU4NTM3M2U5YWVlMS4uMWEwNzk0ODI4M2ZiZmMxODYwYWMwYmYzY2Q3ZjI1
NzlhYjBlZjc4NCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAxLTIzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBOZWVk
IHRvIGRpc3Rpbmd1aXNoIGtleSBwYXRocyB0aGF0IGRvbid0IHlpZWxkIHZhbHVlIHZzLiB5aWVs
ZCBpbnZhbGlkIGtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzY0ODcKKworICAgICAgICBJbXBsZW1lbnQgdGhlIHByZWNvbmRpdGlvbiBjaGVja3Mg
Zm9yIElEQk9iamVjdFN0b3JlLmFkZC9wdXQgb3BlcmF0aW9uczogcmFpc2UgYW4gZXJyb3IKKyAg
ICAgICAgaWYgdGhlcmUgaXMgYSBrZXkgZ2VuZXJhdG9yIChhdXRvSW5jcmVtZW50KSBhbmQgdGhl
IHBhdGggeWllbGRzIGEgdmFsdWUgYW5kIHRoZSB2YWx1ZQorICAgICAgICBpcyBub3QgYSB2YWxp
ZCBrZXk7IHJhaXNlIGFuIGVycm9yIGlmIGFueSBvZiB0aGUgaW5kZXgga2V5IHBhdGhzIHlpZWxk
IGEgdmFsdWUgd2hpY2ggCisgICAgICAgIGlzIG5vdCBhIHZhbGlkIGtleS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFnZS9pbmRl
eGVkZGIva2V5cGF0aC1lZGdlcy5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRk
Yi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbAorCisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OnB1dCk6CisKIDIwMTItMDEtMjAgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZy
YWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ3Jhc2ggaW4gUmVuZGVyVGFibGU6OmJvcmRlckJl
Zm9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwNmU3MDk0MTYzYzZmY2M1MTVkZjM2
YzdmYWE0ODI2ZDhmYTRlYjY5Li4wNDE5NWVlZGU2YmU5M2NjNTM0YmUyOTk2NGY5NzA0ZDA2ZmFh
MDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAx
LTIzICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhl
ZERCOiBOZWVkIHRvIGRpc3Rpbmd1aXNoIGtleSBwYXRocyB0aGF0IGRvbid0IHlpZWxkIHZhbHVl
IHZzLiB5aWVsZCBpbnZhbGlkIGtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzY0ODcKKworICAgICAgICBBZGRlZCBhIE51bGxUeXBlIHRvIHJlcHJl
c2VudCBhIG51bGwgSURCS2V5IHBvaW50ZXIuIFRoaXMgaXMgbmVlZGVkIHRvIGRpc3Rpbmd1aXNo
IHRoZQorICAgICAgICBjYXNlcyBpbiB0aGUgc3BlYyB3aGVyZSB0aGUga2V5IHJlc29sdXRpb24g
YWxnb3JpdGhtIHJldHVybnMgbm8gdmFsdWUgKG51bGwpIHZlcnN1cworICAgICAgICByZXR1cm5z
IGEgdmFsdWUgYnV0IHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5IChpbnZhbGlkKS4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9X
ZWJJREJLZXkuaDoKKyAgICAgICAgKiBzcmMvV2ViSURCS2V5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCS2V5OjpjcmVhdGVOdWxsKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYklE
QktleTo6Y3JlYXRlRnJvbVZhbHVlQW5kS2V5UGF0aCk6IE5vdyByZXR1cm5zIG51bGwgaWYgdmFs
dWUgaXMgbnVsbC4KKyAgICAgICAgKFdlYktpdDo6Y29udmVydEZyb21XZWJJREJLZXlBcnJheSk6
IE51bGwga2V5cyBzaG91bGQgbmV2ZXIgZXhpc3Qgd2l0aGluIGFycmF5cy4KKyAgICAgICAgKFdl
YktpdDo6V2ViSURCS2V5Ojphc3NpZ25JbnZhbGlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
S2V5Ojphc3NpZ25OdWxsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5Ojp0eXBlKToKKwog
MjAxMi0wMS0yMCAgU2FkcnVsIEhhYmliIENob3dkaHVyeSAgPHNhZHJ1bEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSBSZXZlcnQgYSBjb3VwbGUgb2YgY2hhbmdlcyBpbiBmaWxl
YXBpLyB0aGF0IGJyZWFrIHRlc3RzIGluIGNocm9tZW9zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggMWQ2Y2Q0MWJk
YmViZDU5ZDRmYjM4MjBjYTU4NzBlODdhZDU0YmYwMC4uNWFjYjQzY2U3NDVhNzZiYzk2N2Y1NWI0
NjAyOWRmZWViOGQ2NTdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC0xMzEsMzUgKzEzMSw0NSBAQCB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gcHJwVmFsdWUsCiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJw
Q2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRy
YW5zYWN0aW9uID0gdHJhbnNhY3Rpb25QdHI7CiAKLSAgICBpZiAoa2V5ICYmIChrZXktPnR5cGUo
KSA9PSBJREJLZXk6OkludmFsaWRUeXBlKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpEQVRBX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IGJv
b2wgYXV0b0luY3JlbWVudCA9IG9iamVjdFN0b3JlLT5hdXRvSW5jcmVtZW50KCk7Ci0gICAgY29u
c3QgYm9vbCBoYXNLZXlQYXRoID0gIW9iamVjdFN0b3JlLT5tX2tleVBhdGguaXNOdWxsKCk7Ci0K
ICAgICBpZiAocHV0TW9kZSAhPSBDdXJzb3JVcGRhdGUpIHsKKyAgICAgICAgaWYgKGtleSAmJiAh
a2V5LT52YWxpZCgpKSB7CisgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpE
QVRBX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb25zdCBi
b29sIGF1dG9JbmNyZW1lbnQgPSBvYmplY3RTdG9yZS0+YXV0b0luY3JlbWVudCgpOworICAgICAg
ICBjb25zdCBib29sIGhhc0tleVBhdGggPSAhb2JqZWN0U3RvcmUtPm1fa2V5UGF0aC5pc051bGwo
KTsKICAgICAgICAgaWYgKCFrZXkgJiYgIWF1dG9JbmNyZW1lbnQgJiYgIWhhc0tleVBhdGgpIHsK
ICAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChoYXNLZXlQYXRoKSB7Ci0gICAg
ICAgICAgICBpZiAoa2V5ICYmIGtleS0+dmFsaWQoKSkgeworICAgICAgICAgICAgaWYgKGtleSkg
ewogICAgICAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUmVm
UHRyPElEQktleT4ga2V5UGF0aEtleSA9IGZldGNoS2V5RnJvbUtleVBhdGgodmFsdWUuZ2V0KCks
IG9iamVjdFN0b3JlLT5tX2tleVBhdGgpOwogICAgICAgICAgICAgaWYgKCFhdXRvSW5jcmVtZW50
KSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPElEQktleT4ga2V5UGF0aEtleSA9IGZldGNoS2V5
RnJvbUtleVBhdGgodmFsdWUuZ2V0KCksIG9iamVjdFN0b3JlLT5tX2tleVBhdGgpOwogICAgICAg
ICAgICAgICAgIGlmICgha2V5UGF0aEtleSB8fCAha2V5UGF0aEtleS0+dmFsaWQoKSkgewogICAg
ICAgICAgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGtleVBhdGhLZXkgJiYgIWtleVBhdGhLZXkt
PnZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6REFUQV9FUlI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEFkZCBwcmVj
b25kaXRpb24gY2hlY2tzIGZvciBpbmRleCBrZXkgcGF0aHMgdGhhdCB5aWVsZCBpbnZhbGlkIGtl
eXMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NjQ4NwotICAgICB9CisgICAgICAgIGZvciAoSW5kZXhNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbmRl
eGVzLmJlZ2luKCk7IGl0ICE9IG1faW5kZXhlcy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAg
Y29uc3QgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+JiBpbmRleCA9IGl0LT5zZWNvbmQ7Cisg
ICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBpbmRleEtleSA9IGZldGNoS2V5RnJvbUtleVBhdGgo
dmFsdWUuZ2V0KCksIGluZGV4LT5rZXlQYXRoKCkpOworICAgICAgICAgICAgaWYgKGluZGV4S2V5
ICYmICFpbmRleEtleS0+dmFsaWQoKSkgeworICAgICAgICAgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OkRBVEFfRVJSOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KIAogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxl
VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dElu
dGVybmFsLCBvYmplY3RTdG9yZSwgdmFsdWUsIGtleSwgcHV0TW9kZSwgY2FsbGJhY2tzLCB0cmFu
c2FjdGlvbikpKQogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElP
Tl9JTkFDVElWRV9FUlI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJREJLZXkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleS5o
CmluZGV4IGU0Nzk3MTc1NWEwYjQ1MTI5ODRmZDU1MDA4OTIyOTViYzYyMmY1MWYuLmE3ODE0MjM0
NTk0MGJkYTE2OGEwNjcyZDM3ZmU3NDBhY2FjZTQzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklEQktleS5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICBXRUJL
SVRfRVhQT1JUIHN0YXRpYyBXZWJJREJLZXkgY3JlYXRlRGF0ZShkb3VibGUpOwogICAgIFdFQktJ
VF9FWFBPUlQgc3RhdGljIFdlYklEQktleSBjcmVhdGVOdW1iZXIoZG91YmxlKTsKICAgICBXRUJL
SVRfRVhQT1JUIHN0YXRpYyBXZWJJREJLZXkgY3JlYXRlSW52YWxpZCgpOworICAgIFdFQktJVF9F
WFBPUlQgc3RhdGljIFdlYklEQktleSBjcmVhdGVOdWxsKCk7CiAgICAgV0VCS0lUX0VYUE9SVCBz
dGF0aWMgV2ViSURCS2V5IGNyZWF0ZUZyb21WYWx1ZUFuZEtleVBhdGgoY29uc3QgV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlJiwgY29uc3QgV2ViSURCS2V5UGF0aCYpOwogICAgIFdFQktJVF9FWFBP
UlQgc3RhdGljIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpbmplY3RJREJLZXlJbnRvU2VyaWFs
aXplZFZhbHVlKGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYsIGNvbnN0IFdlYklEQktleVBhdGgmKTsKIApAQCAtNjUsNiArNjYsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbkRhdGUoZG91YmxlKTsKICAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgYXNzaWduTnVtYmVyKGRvdWJsZSk7CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFz
c2lnbkludmFsaWQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduTnVsbCgpOwogICAg
IFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwogCiAgICAgZW51bSBUeXBlIHsKQEAgLTcyLDcg
Kzc0LDggQEAgcHVibGljOgogICAgICAgICBBcnJheVR5cGUsCiAgICAgICAgIFN0cmluZ1R5cGUs
CiAgICAgICAgIERhdGVUeXBlLAotICAgICAgICBOdW1iZXJUeXBlCisgICAgICAgIE51bWJlclR5
cGUsCisgICAgICAgIE51bGxUeXBlLAogICAgIH07CiAKICAgICBXRUJLSVRfRVhQT1JUIFR5cGUg
dHlwZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCS2V5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleS5jcHAKaW5k
ZXggMzViZTlmM2IyMGE4MWQ3YTA5ODJiMWY0ODIwYzYzMjIxNjU4ZGQxYi4uMjViZTZjNTJmNzQ0
NTNkN2QzNmFiZGMwODJkNjI0ODNiNDQ4ZGYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJLZXkuY3BwCkBAIC03NiwxMCArNzYsMTggQEAgV2ViSURCS2V5IFdlYklEQktleTo6
Y3JlYXRlSW52YWxpZCgpCiAgICAgcmV0dXJuIGtleTsKIH0KIAorV2ViSURCS2V5IFdlYklEQktl
eTo6Y3JlYXRlTnVsbCgpCit7CisgICAgV2ViSURCS2V5IGtleTsKKyAgICBrZXkuYXNzaWduTnVs
bCgpOworICAgIHJldHVybiBrZXk7Cit9CisKIFdlYklEQktleSBXZWJJREJLZXk6OmNyZWF0ZUZy
b21WYWx1ZUFuZEtleVBhdGgoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGlkYktleVBhdGgpCiB7CisgICAg
Ly8gRklYTUU6IElmIGtleSBwYXRoIGlzIGVtcHR5IHN0cmluZywgdGhpcyBzaG91bGQgcmV0dXJu
IGludmFsaWQga2V5IGluc3RlYWQKICAgICBpZiAoc2VyaWFsaXplZFNjcmlwdFZhbHVlLmlzTnVs
bCgpKQotICAgICAgICByZXR1cm4gV2ViSURCS2V5OjpjcmVhdGVJbnZhbGlkKCk7CisgICAgICAg
IHJldHVybiBXZWJJREJLZXk6OmNyZWF0ZU51bGwoKTsKICAgICByZXR1cm4gY3JlYXRlSURCS2V5
RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBpZGJL
ZXlQYXRoKTsKIH0KIApAQCAtMTEyLDYgKzEyMCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPElEQktl
eT4gY29udmVydEZyb21XZWJJREJLZXlBcnJheShjb25zdCBXZWJWZWN0b3I8V2ViSURCS2V5PiYK
ICAgICAgICAgICAgIGtleXMuYXBwZW5kKElEQktleTo6Y3JlYXRlTnVtYmVyKGFycmF5W2ldLm51
bWJlcigpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJJREJLZXk6Oklu
dmFsaWRUeXBlOgorICAgICAgICBjYXNlIFdlYklEQktleTo6TnVsbFR5cGU6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC0xNzAsNiArMTc5LDExIEBAIHZvaWQgV2ViSURCS2V5Ojphc3NpZ25OdW1iZXIoZG91YmxlIG51
bWJlcikKIAogdm9pZCBXZWJJREJLZXk6OmFzc2lnbkludmFsaWQoKQogeworICAgIG1fcHJpdmF0
ZSA9IElEQktleTo6Y3JlYXRlSW52YWxpZCgpOworfQorCit2b2lkIFdlYklEQktleTo6YXNzaWdu
TnVsbCgpCit7CiAgICAgbV9wcml2YXRlID0gMDsKIH0KIApAQCAtMTgxLDcgKzE5NSw3IEBAIHZv
aWQgV2ViSURCS2V5OjpyZXNldCgpCiBXZWJJREJLZXk6OlR5cGUgV2ViSURCS2V5Ojp0eXBlKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fcHJpdmF0ZS5nZXQoKSkKLSAgICAgICAgcmV0dXJuIEludmFs
aWRUeXBlOworICAgICAgICByZXR1cm4gTnVsbFR5cGU7CiAgICAgcmV0dXJuIFR5cGUobV9wcml2
YXRlLT50eXBlKCkpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjVjYjk0NDVmZTZkMjRmOGJkZjQzYWY2YzlkY2Yz
NTk0Y2RlMDFiOS4uZDA3OWViODNkNGJjNDM4NDc1NDY4MDJiMGZiZGNkYjU0OGFkNzdhNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTIzICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBOZWVkIHRvIGRpc3Rpbmd1aXNoIGtleSBw
YXRocyB0aGF0IGRvbid0IHlpZWxkIHZhbHVlIHZzLiB5aWVsZCBpbnZhbGlkIGtleQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY0ODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL2tleXBhdGgtZWRnZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWw6CisKIDIwMTItMDEtMjAgIEp1
bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ3Jhc2gg
aW4gUmVuZGVyVGFibGU6OmJvcmRlckJlZm9yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
Y2YzOWVlMjgxM2NiYzM0MmFkMWE4N2MwMDNmMWRhYTNkODUwYTcwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw3MCBAQAorVGVzdCBJbmRleGVkREIga2V5UGF0aCBlZGdlIGNhc2VzCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhl
ZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREI7CitQQVNTIGluZGV4ZWREQiA9PSBudWxsIGlz
IGZhbHNlCitJREJEYXRhYmFzZUV4Y2VwdGlvbiA9IHdpbmRvdy5JREJEYXRhYmFzZUV4Y2VwdGlv
biB8fCB3aW5kb3cud2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb247CitQQVNTIElEQkRhdGFiYXNl
RXhjZXB0aW9uID09IG51bGwgaXMgZmFsc2UKK0lEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRy
YW5zYWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbjsKK1BBU1MgSURCVHJhbnNh
Y3Rpb24gPT0gbnVsbCBpcyBmYWxzZQoraW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdrZXlwYXRo
LWVkZ2VzJykKK2luZGV4ZWREQi5vcGVuKCdrZXlwYXRoLWVkZ2VzJykKKworb3BlblN1Y2Nlc3Mo
KToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KQorZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aCcsIHtrZXlQYXRoOiAnZm9v
J30pCitkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1wYXRoLWFuZC1nZW5lcmF0b3In
LCB7a2V5UGF0aDogJ2ZvbycsIGF1dG9JbmNyZW1lbnQ6IHRydWV9KQorCit0ZXN0S2V5UGF0aHMo
KToKK3RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZS13aXRoLXBhdGgnXSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK3N0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J3N0b3JlLXdpdGgtcGF0aCcpCisKK0tleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVl
IC0gaW50ZXJuYWxseSwga2V5IHNob3VsZCBiZSBudWxsLCBzaG91bGQgdGhyb3cgREFUQV9FUlIK
K0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5wdXQobnVsbCkKK1BBU1MgRXhjZXB0aW9u
IHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIK
KworS2V5IHBhdGggZG9lc24ndCByZXNvbHZlIHRvIGEgdmFsdWUgLSBpbnRlcm5hbGx5LCBrZXkg
c2hvdWxkIGJlIG51bGwsIHNob3VsZCB0aHJvdyBEQVRBX0VSUgorRXhwZWN0aW5nIGV4Y2VwdGlv
biBmcm9tIHN0b3JlLnB1dCh7fSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNv
ZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKKworS2V5IHBhdGggcmVzb2x2ZXMg
dG8gYSB2YWx1ZSB0aGF0IGlzIGludmFsaWQga2V5IC0gaW50ZXJuYWxseSwga2V5IHNob3VsZCBi
ZSB0eXBlOiBpbnZhbGlkLCBzaG91bGQgdGhyb3cgREFUQV9FUlIKK0V4cGVjdGluZyBleGNlcHRp
b24gZnJvbSBzdG9yZS5wdXQoe2ZvbzogbnVsbH0pCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3du
LgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCisKK0tleSBwYXRo
IHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyB2YWxpZCBrZXkgLSBpbnRlcm5hbGx5LCBrZXkg
c2hvdWxkIGJlIHR5cGU6IHN0cmluZywgc2hvdWxkIHN1Y2NlZWQKK3N0b3JlLnB1dCh7Zm9vOiAn
em9vJ30pCitQQVNTIHN0b3JlLnB1dCBzdWNjZWVkZWQKKwordGVzdEtleVBhdGhzQW5kR2VuZXJh
dG9yKCk6Cit0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUtd2l0aC1wYXRoLWFu
ZC1nZW5lcmF0b3InXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK3N0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aC1hbmQtZ2VuZXJhdG9yJykKKworS2V5
IHBhdGggZG9lc24ndCByZXNvbHZlIHRvIGEgdmFsdWUgLSBpbnRlcm5hbGx5LCBrZXkgc2hvdWxk
IGJlIG51bGw7IHB1dCByZXF1ZXN0IHNob3VsZCByYWlzZSBlcnJvciBldmVudAorc3RvcmUucHV0
KG51bGwpCitQQVNTIEVycm9yIGV2ZW50IHJhaXNlZDogVGhlIGdlbmVyYXRlZCBrZXkgY291bGQg
bm90IGJlIGluc2VydGVkIGludG8gdGhlIG9iamVjdCB1c2luZyB0aGUga2V5UGF0aC4KK1BBU1Mg
ZXZlbnQudGFyZ2V0LmVycm9yQ29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgor
UEFTUyBldmVudC5jYW5jZWxhYmxlIGlzIHRydWUKK2V2ZW50LnByZXZlbnREZWZhdWx0KCkKKwor
S2V5IHBhdGggZG9lc24ndCByZXNvbHZlIHRvIGEgdmFsdWUgLSBpbnRlcm5hbGx5LCBrZXkgc2hv
dWxkIGJlIG51bGwsIHB1dCByZXF1ZXN0IHNob3VsZCBzdWNjZWVkCitzdG9yZS5wdXQoe30pCitQ
QVNTIHN0b3JlLnB1dCBzdWNjZWVkZWQKKworS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0
aGF0IGlzIGludmFsaWQga2V5IC0gaW50ZXJuYWxseSwga2V5IHNob3VsZCBiZSB0eXBlOiBpbnZh
bGlkLCBzaG91bGQgdGhyb3cgREFUQV9FUlIKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9y
ZS5wdXQoe2ZvbzogbnVsbH0pCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2Rl
IGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCisKK0tleSBwYXRoIHJlc29sdmVzIHRv
IGEgdmFsdWUgdGhhdCBpcyB2YWxpZCBrZXkgLSBpbnRlcm5hbGx5LCBrZXkgc2hvdWxkIGJlIHR5
cGU6IHN0cmluZywgc2hvdWxkIHN1Y2NlZWQKK3N0b3JlLnB1dCh7Zm9vOiAnem9vJ30pCitQQVNT
IHN0b3JlLnB1dCBzdWNjZWVkZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9rZXlwYXRoLWVkZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlw
YXRoLWVkZ2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJkN2JjOWYxNjQ0ZjVlMzFjNTJiODEwZDY2YWJj
NWI1N2NiZmJlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2tleXBhdGgtZWRnZXMuaHRtbApAQCAtMCwwICsxLDEyOCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQiBrZXlQYXRoIGVkZ2UgY2FzZXMiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhl
ZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5k
ZXhlZERCID09IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9
IHdpbmRvdy5JREJEYXRhYmFzZUV4Y2VwdGlvbiB8fCB3aW5kb3cud2Via2l0SURCRGF0YWJhc2VF
eGNlcHRpb247Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiSURCRGF0YWJhc2VFeGNlcHRpb24gPT0g
bnVsbCIpOworICAgIGV2YWxBbmRMb2coIklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5z
YWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbjsiKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJJREJUcmFuc2FjdGlvbiA9PSBudWxsIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdrZXlwYXRoLWVkZ2VzJykiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKCdrZXlwYXRoLWVkZ2VzJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7CisgICAgfTsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoKSB7CisgICAgICAgIHRyYW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAgIHRy
YW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAgZXZh
bEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aCcsIHtrZXlQYXRo
OiAnZm9vJ30pIik7CisgICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvcicsIHtrZXlQYXRoOiAnZm9vJywgYXV0b0luY3Jl
bWVudDogdHJ1ZX0pIik7CisgICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0S2V5
UGF0aHM7CisgICAgfTsKK30KKworZnVuY3Rpb24gdGVzdEtleVBhdGhzKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoInRlc3RLZXlQYXRocygpOiIpOworCisgICAgdHJhbnNhY3Rpb24g
PSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUtd2l0aC1w
YXRoJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgnKSIp
OworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUg
dG8gYSB2YWx1ZSAtIGludGVybmFsbHksIGtleSBzaG91bGQgYmUgbnVsbCwgc2hvdWxkIHRocm93
IERBVEFfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG51bGwp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlIC0gaW50ZXJuYWxs
eSwga2V5IHNob3VsZCBiZSBudWxsLCBzaG91bGQgdGhyb3cgREFUQV9FUlIiKTsKKyAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoe30pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktleSBwYXRoIHJlc29s
dmVzIHRvIGEgdmFsdWUgdGhhdCBpcyBpbnZhbGlkIGtleSAtIGludGVybmFsbHksIGtleSBzaG91
bGQgYmUgdHlwZTogaW52YWxpZCwgc2hvdWxkIHRocm93IERBVEFfRVJSIik7CisgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KHtmb286IG51bGx9KSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0
aCByZXNvbHZlcyB0byBhIHZhbHVlIHRoYXQgaXMgdmFsaWQga2V5IC0gaW50ZXJuYWxseSwga2V5
IHNob3VsZCBiZSB0eXBlOiBzdHJpbmcsIHNob3VsZCBzdWNjZWVkIik7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7Zm9vOiAnem9vJ30pIik7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3RQYXNzZWQoInN0b3JlLnB1dCBzdWNjZWVkZWQiKTsK
KyAgICB9OworCisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0
b3I7Cit9CisKK2Z1bmN0aW9uIHRlc3RLZXlQYXRoc0FuZEdlbmVyYXRvcigpCit7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0b3IoKToiKTsKKworICAg
IHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihb
J3N0b3JlLXdpdGgtcGF0aC1hbmQtZ2VuZXJhdG9yJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJ
VEUpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvcicpIik7CisKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlIC0gaW50
ZXJuYWxseSwga2V5IHNob3VsZCBiZSBudWxsOyBwdXQgcmVxdWVzdCBzaG91bGQgcmFpc2UgZXJy
b3IgZXZlbnQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0KG51bGwpIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgdGVzdFBhc3Nl
ZCgiRXJyb3IgZXZlbnQgcmFpc2VkOiAiICsgZS50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlKTsK
KyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJldmVudC5jYW5jZWxh
YmxlIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKKwor
ICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29s
dmUgdG8gYSB2YWx1ZSAtIGludGVybmFsbHksIGtleSBzaG91bGQgYmUgbnVsbCwgcHV0IHJlcXVl
c3Qgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3Jl
LnB1dCh7fSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgdGVzdFBhc3NlZCgic3RvcmUucHV0IHN1Y2NlZWRlZCIpOworCisgICAgICAgICAgICBk
ZWJ1ZygiIik7CisgICAgICAgICAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1
ZSB0aGF0IGlzIGludmFsaWQga2V5IC0gaW50ZXJuYWxseSwga2V5IHNob3VsZCBiZSB0eXBlOiBp
bnZhbGlkLCBzaG91bGQgdGhyb3cgREFUQV9FUlIiKTsKKyAgICAgICAgICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oInN0b3JlLnB1dCh7Zm9vOiBudWxsfSkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKKworICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgZGVi
dWcoIktleSBwYXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyB2YWxpZCBrZXkgLSBpbnRl
cm5hbGx5LCBrZXkgc2hvdWxkIGJlIHR5cGU6IHN0cmluZywgc2hvdWxkIHN1Y2NlZWQiKTsKKyAg
ICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2ZvbzogJ3pvbyd9KSIp
OworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7CisgICAgICAgICAgICB9
OworICAgICAgICB9OworICAgIH07CisKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGRvbmU7Cit9
CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4
cGVjdGVkLnR4dAppbmRleCBlYzA0NjkyNTYyNjc0Mjk0MzMyMmI1NmIyMTVhZmUyMWY0N2RlNDE5
Li4xMzM4MDlkMWJiYjVlOTQwODMzMzljM2JjMmJhMWY3ZDY1MmI4ZWQyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2lj
cy1leHBlY3RlZC50eHQKQEAgLTk4LDExICs5OCw5IEBAIFBBU1MgRXhjZXB0aW9uIHdhcyB0aHJv
d24uCiBQQVNTIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKIGRi
LnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJ
VEUpCiBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQotc3RvcmUu
YWRkKHt4OiBudWxsfSwgJ3ZhbGlka2V5JykKLVBBU1MgZXZlbnQuY2FuY2VsYWJsZSBpcyB0cnVl
Ci1hZGRXaXRoTnVsbEluZGV4RmFpbHVyZSgpOgotUEFTUyBldmVudC50YXJnZXQuZXJyb3JDb2Rl
IGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCi1ldmVudC5wcmV2ZW50RGVm
YXVsdCgpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuYWRkKHt4OiBudWxsfSwgJ3Zh
bGlka2V5JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgd2Via2l0
SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKIGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1l
J10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCiBzdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQogc3RvcmUuZ2V0KCdrZXknKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbAppbmRl
eCAxMjBhYTYwZGRjNTcxMTQ2Mzk4OTkzMjJjNDY2NzRlMGVlMjRiNjllLi42ZDhiNWZkMDZhNjAy
MTE0YzdlZGU2NmYxNjQ5MzIzOGY3YzFkZDZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbApAQCAtMjE1LDE4ICsyMTUs
NyBAQCBmdW5jdGlvbiBhZGRBZ2FpbkZhaWx1cmUoKQogICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQg
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKICAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJz
dG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwogCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogbnVsbH0sICd2YWxpZGtleScpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IGFkZFdpdGhOdWxsSW5kZXhGYWlsdXJlOwotfQotCi1mdW5jdGlvbiBh
ZGRXaXRoTnVsbEluZGV4RmFpbHVyZSgpCi17Ci0gICAgc2hvdWxkQmVUcnVlKCJldmVudC5jYW5j
ZWxhYmxlIik7Ci0gICAgZGVidWcoImFkZFdpdGhOdWxsSW5kZXhGYWlsdXJlKCk6Iik7Ci0gICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAid2Via2l0SURCRGF0YWJhc2VFeGNl
cHRpb24uREFUQV9FUlIiKTsKLQotICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0
KCkiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoe3g6IG51bGx9LCAn
dmFsaWRrZXknKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwogCiAg
ICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSdd
LCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwogICAgIHRyYW5zYWN0aW9uLm9u
YWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKQEAgLTMxOCw4ICszMDcsOCBAQCBmdW5j
dGlvbiB0ZXN0UHJlQ29uZGl0aW9ucygpCiAgICAgICAgIGRlYnVnKCJUaGUga2V5IHBhcmFtZXRl
ciB3YXMgcHJvdmlkZWQgYnV0IGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCBrZXkuIik7CiAgICAg
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aE91dE9mTGluZUtleXMucHV0KHt9
LCBudWxsKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwogCi0gICAg
ICAgIC8vIEZJWE1FOiBBZGQgcHJlY29uZGl0aW9uIGNoZWNrcyBmb3IgcHV0KCkgd2l0aCBpbmRl
eCBrZXkgcGF0aHMgdGhhdCB5aWVsZCBpbnZhbGlkIGtleXMuCi0gICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjQ4NworICAgICAgICBkZWJ1ZygiSWYg
dGhlcmUgYXJlIGFueSBpbmRleGVzIHJlZmVyZW5jaW5nIHRoaXMgb2JqZWN0IHN0b3JlIHdob3Nl
IGtleSBwYXRoIGlzIGEgc3RyaW5nLCBldmFsdWF0aW5nIHRoZWlyIGtleSBwYXRoIG9uIHRoZSB2
YWx1ZSBwYXJhbWV0ZXIgeWllbGRzIGEgdmFsdWUsIGFuZCB0aGF0IHZhbHVlIGlzIG5vdCBhIHZh
bGlkIGtleS4iKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoSW5k
ZXgucHV0KHtpbmRleEtleTogbnVsbH0sICdrZXknKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5EQVRBX0VSUiIpOwogCiAgICAgICAgIGRlYnVnKCIiKTsKICAgICAgICAgZGVidWcoIklE
Qk9iamVjdFN0b3JlLmFkZCgpIik7CkBAIC0zMzgsOCArMzI3LDggQEAgZnVuY3Rpb24gdGVzdFBy
ZUNvbmRpdGlvbnMoKQogICAgICAgICBkZWJ1ZygiVGhlIGtleSBwYXJhbWV0ZXIgd2FzIHByb3Zp
ZGVkIGJ1dCBkb2VzIG5vdCBjb250YWluIGEgdmFsaWQga2V5LiIpOwogICAgICAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhPdXRPZkxpbmVLZXlzLmFkZCh7fSwgbnVsbCkiLCAi
d2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKIAotICAgICAgICAvLyBGSVhN
RTogQWRkIHByZWNvbmRpdGlvbiBjaGVja3MgZm9yIGFkZCgpIHdpdGggaW5kZXgga2V5IHBhdGhz
IHRoYXQgeWllbGQgaW52YWxpZCBrZXlzLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY0ODcKKyAgICAgICAgZGVidWcoIklmIHRoZXJlIGFyZSBh
bnkgaW5kZXhlcyByZWZlcmVuY2luZyB0aGlzIG9iamVjdCBzdG9yZSB3aG9zZSBrZXkgcGF0aCBp
cyBhIHN0cmluZywgZXZhbHVhdGluZyB0aGVpciBrZXkgcGF0aCBvbiB0aGUgdmFsdWUgcGFyYW1l
dGVyIHlpZWxkcyBhIHZhbHVlLCBhbmQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkuIik7
CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluZGV4LmFkZCh7aW5k
ZXhLZXk6IG51bGx9LCAna2V5JykiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIiKTsKIAogICAgICAgICBkb25lKCk7CiAgICAgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123767</attachid>
            <date>2012-01-24 10:46:11 -0800</date>
            <delta_ts>2012-01-24 15:55:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76487-20120124104610.patch</filename>
            <type>text/plain</type>
            <size>22546</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDExNjYyOTU5ZTA2Y2Q0
ODhhM2FlYTVmMGRkYWQzMGU4NGFmMTU4Mi4uZDIwNjE0MDgyZDFhNjg4NWYzYzAwMWFhMDZkZWY1
ZGMzYTQ0MjJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAxLTIzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBOZWVk
IHRvIGRpc3Rpbmd1aXNoIGtleSBwYXRocyB0aGF0IGRvbid0IHlpZWxkIHZhbHVlIHZzLiB5aWVs
ZCBpbnZhbGlkIGtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzY0ODcKKworICAgICAgICBJbXBsZW1lbnQgdGhlIHByZWNvbmRpdGlvbiBjaGVja3Mg
Zm9yIElEQk9iamVjdFN0b3JlLmFkZC9wdXQgb3BlcmF0aW9uczogcmFpc2UgYW4gZXJyb3IKKyAg
ICAgICAgaWYgdGhlcmUgaXMgYSBrZXkgZ2VuZXJhdG9yIChhdXRvSW5jcmVtZW50KSBhbmQgdGhl
IHBhdGggeWllbGRzIGEgdmFsdWUgYW5kIHRoZSB2YWx1ZQorICAgICAgICBpcyBub3QgYSB2YWxp
ZCBrZXk7IHJhaXNlIGFuIGVycm9yIGlmIGFueSBvZiB0aGUgaW5kZXgga2V5IHBhdGhzIHlpZWxk
IGEgdmFsdWUgd2hpY2gKKyAgICAgICAgaXMgbm90IGEgdmFsaWQga2V5LgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBzdG9yYWdlL2luZGV4
ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdHN0b3JlLWJhc2ljcy5odG1sCisKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6cHV0KToKKwogMjAxMi0wMS0yMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgT1ZFUlJJREUgZm9yIFBvcHVwTWVudUNsaWVudCdz
IGltcGxlbWVudGF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyOTg1MmNkNTdj
ZTg1Yjk4MWFkZTc3YjYxZmZmZTQwZjFlZTMwMGFiLi5hNzRmMWZjZmI4MWY1MmE5ZTg2YzY5NzM5
ZDc4ODQyNzkxNDgwMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEyLTAxLTIzICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgSW5kZXhlZERCOiBOZWVkIHRvIGRpc3Rpbmd1aXNoIGtleSBwYXRocyB0aGF0IGRvbid0
IHlpZWxkIHZhbHVlIHZzLiB5aWVsZCBpbnZhbGlkIGtleQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY0ODcKKworICAgICAgICBBZGRlZCBhIE51bGxU
eXBlIHRvIHJlcHJlc2VudCBhIG51bGwgSURCS2V5IHBvaW50ZXIuIFRoaXMgaXMgbmVlZGVkIHRv
IGRpc3Rpbmd1aXNoIHRoZQorICAgICAgICBjYXNlcyBpbiB0aGUgc3BlYyB3aGVyZSB0aGUga2V5
IHJlc29sdXRpb24gYWxnb3JpdGhtIHJldHVybnMgbm8gdmFsdWUgKG51bGwpIHZlcnN1cworICAg
ICAgICByZXR1cm5zIGEgdmFsdWUgYnV0IHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5IChp
bnZhbGlkKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHB1YmxpYy9XZWJJREJLZXkuaDoKKyAgICAgICAgKiBzcmMvV2ViSURCS2V5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCS2V5OjpjcmVhdGVOdWxsKTogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYklEQktleTo6Y3JlYXRlRnJvbVZhbHVlQW5kS2V5UGF0aCk6IE5vdyByZXR1cm5z
IG51bGwgaWYgdmFsdWUgaXMgbnVsbC4KKyAgICAgICAgKFdlYktpdDo6Y29udmVydEZyb21XZWJJ
REJLZXlBcnJheSk6IE51bGwga2V5cyBzaG91bGQgbmV2ZXIgZXhpc3Qgd2l0aGluIGFycmF5cy4K
KyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5Ojphc3NpZ25JbnZhbGlkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCS2V5Ojphc3NpZ25OdWxsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5
Ojp0eXBlKToKKwogMjAxMi0wMS0yMyAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTA1NjQwLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5j
cHAKaW5kZXggMWQ2Y2Q0MWJkYmViZDU5ZDRmYjM4MjBjYTU4NzBlODdhZDU0YmYwMC4uNWFjYjQz
Y2U3NDVhNzZiYzk2N2Y1NWI0NjAyOWRmZWViOGQ2NTdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC0xMzEsMzUg
KzEzMSw0NSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dChQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsCiAgICAgUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb25QdHI7CiAKLSAgICBpZiAo
a2V5ICYmIChrZXktPnR5cGUoKSA9PSBJREJLZXk6OkludmFsaWRUeXBlKSkgewotICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGNvbnN0IGJvb2wgYXV0b0luY3JlbWVudCA9IG9iamVjdFN0b3JlLT5hdXRvSW5j
cmVtZW50KCk7Ci0gICAgY29uc3QgYm9vbCBoYXNLZXlQYXRoID0gIW9iamVjdFN0b3JlLT5tX2tl
eVBhdGguaXNOdWxsKCk7Ci0KICAgICBpZiAocHV0TW9kZSAhPSBDdXJzb3JVcGRhdGUpIHsKKyAg
ICAgICAgaWYgKGtleSAmJiAha2V5LT52YWxpZCgpKSB7CisgICAgICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBjb25zdCBib29sIGF1dG9JbmNyZW1lbnQgPSBvYmplY3RTdG9yZS0+YXV0b0lu
Y3JlbWVudCgpOworICAgICAgICBjb25zdCBib29sIGhhc0tleVBhdGggPSAhb2JqZWN0U3RvcmUt
Pm1fa2V5UGF0aC5pc051bGwoKTsKICAgICAgICAgaWYgKCFrZXkgJiYgIWF1dG9JbmNyZW1lbnQg
JiYgIWhhc0tleVBhdGgpIHsKICAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OkRBVEFfRVJSOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmICho
YXNLZXlQYXRoKSB7Ci0gICAgICAgICAgICBpZiAoa2V5ICYmIGtleS0+dmFsaWQoKSkgeworICAg
ICAgICAgICAgaWYgKGtleSkgewogICAgICAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OkRBVEFfRVJSOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgUmVmUHRyPElEQktleT4ga2V5UGF0aEtleSA9IGZldGNoS2V5RnJvbUtl
eVBhdGgodmFsdWUuZ2V0KCksIG9iamVjdFN0b3JlLT5tX2tleVBhdGgpOwogICAgICAgICAgICAg
aWYgKCFhdXRvSW5jcmVtZW50KSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPElEQktleT4ga2V5
UGF0aEtleSA9IGZldGNoS2V5RnJvbUtleVBhdGgodmFsdWUuZ2V0KCksIG9iamVjdFN0b3JlLT5t
X2tleVBhdGgpOwogICAgICAgICAgICAgICAgIGlmICgha2V5UGF0aEtleSB8fCAha2V5UGF0aEtl
eS0+dmFsaWQoKSkgewogICAgICAgICAgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpEQVRBX0VSUjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGtleVBhdGhL
ZXkgJiYgIWtleVBhdGhLZXktPnZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAg
Ly8gRklYTUU6IEFkZCBwcmVjb25kaXRpb24gY2hlY2tzIGZvciBpbmRleCBrZXkgcGF0aHMgdGhh
dCB5aWVsZCBpbnZhbGlkIGtleXMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NjQ4NwotICAgICB9CisgICAgICAgIGZvciAoSW5kZXhNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG1faW5kZXhlcy5lbmQoKTsgKytp
dCkgeworICAgICAgICAgICAgY29uc3QgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+JiBpbmRl
eCA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBpbmRleEtleSA9IGZl
dGNoS2V5RnJvbUtleVBhdGgodmFsdWUuZ2V0KCksIGluZGV4LT5rZXlQYXRoKCkpOworICAgICAg
ICAgICAgaWYgKGluZGV4S2V5ICYmICFpbmRleEtleS0+dmFsaWQoKSkgeworICAgICAgICAgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAogICAgIGlmICghdHJh
bnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OnB1dEludGVybmFsLCBvYmplY3RTdG9yZSwgdmFsdWUsIGtleSwgcHV0TW9k
ZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQktleS5oCmluZGV4IGU0Nzk3MTc1NWEwYjQ1MTI5ODRmZDU1MDA4OTIyOTVi
YzYyMmY1MWYuLmE3ODE0MjM0NTk0MGJkYTE2OGEwNjcyZDM3ZmU3NDBhY2FjZTQzMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleS5oCkBAIC00OSw2ICs0OSw3IEBA
IHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJREJLZXkgY3JlYXRlRGF0ZShk
b3VibGUpOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQktleSBjcmVhdGVOdW1iZXIo
ZG91YmxlKTsKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJREJLZXkgY3JlYXRlSW52YWxp
ZCgpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQktleSBjcmVhdGVOdWxsKCk7CiAg
ICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViSURCS2V5IGNyZWF0ZUZyb21WYWx1ZUFuZEtleVBh
dGgoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgY29uc3QgV2ViSURCS2V5UGF0aCYp
OwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpbmpl
Y3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0IFdlYklEQktleVBhdGgmKTsKIApAQCAtNjUsNiAr
NjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbkRhdGUoZG91Ymxl
KTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduTnVtYmVyKGRvdWJsZSk7CiAgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIGFzc2lnbkludmFsaWQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
YXNzaWduTnVsbCgpOwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwogCiAgICAgZW51
bSBUeXBlIHsKQEAgLTcyLDcgKzc0LDggQEAgcHVibGljOgogICAgICAgICBBcnJheVR5cGUsCiAg
ICAgICAgIFN0cmluZ1R5cGUsCiAgICAgICAgIERhdGVUeXBlLAotICAgICAgICBOdW1iZXJUeXBl
CisgICAgICAgIE51bWJlclR5cGUsCisgICAgICAgIE51bGxUeXBlLAogICAgIH07CiAKICAgICBX
RUJLSVRfRVhQT1JUIFR5cGUgdHlwZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQktleS5jcHAKaW5kZXggMzViZTlmM2IyMGE4MWQ3YTA5ODJiMWY0ODIwYzYzMjIxNjU4
ZGQxYi4uMjViZTZjNTJmNzQ0NTNkN2QzNmFiZGMwODJkNjI0ODNiNDQ4ZGYwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXkuY3BwCkBAIC03NiwxMCArNzYsMTggQEAgV2Vi
SURCS2V5IFdlYklEQktleTo6Y3JlYXRlSW52YWxpZCgpCiAgICAgcmV0dXJuIGtleTsKIH0KIAor
V2ViSURCS2V5IFdlYklEQktleTo6Y3JlYXRlTnVsbCgpCit7CisgICAgV2ViSURCS2V5IGtleTsK
KyAgICBrZXkuYXNzaWduTnVsbCgpOworICAgIHJldHVybiBrZXk7Cit9CisKIFdlYklEQktleSBX
ZWJJREJLZXk6OmNyZWF0ZUZyb21WYWx1ZUFuZEtleVBhdGgoY29uc3QgV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGlk
YktleVBhdGgpCiB7CisgICAgLy8gRklYTUU6IElmIGtleSBwYXRoIGlzIGVtcHR5IHN0cmluZywg
dGhpcyBzaG91bGQgcmV0dXJuIGludmFsaWQga2V5IGluc3RlYWQKICAgICBpZiAoc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gV2ViSURCS2V5OjpjcmVhdGVJ
bnZhbGlkKCk7CisgICAgICAgIHJldHVybiBXZWJJREJLZXk6OmNyZWF0ZU51bGwoKTsKICAgICBy
ZXR1cm4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBpZGJLZXlQYXRoKTsKIH0KIApAQCAtMTEyLDYgKzEyMCw3IEBAIHN0YXRp
YyBQYXNzUmVmUHRyPElEQktleT4gY29udmVydEZyb21XZWJJREJLZXlBcnJheShjb25zdCBXZWJW
ZWN0b3I8V2ViSURCS2V5PiYKICAgICAgICAgICAgIGtleXMuYXBwZW5kKElEQktleTo6Y3JlYXRl
TnVtYmVyKGFycmF5W2ldLm51bWJlcigpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXZWJJREJLZXk6OkludmFsaWRUeXBlOgorICAgICAgICBjYXNlIFdlYklEQktleTo6TnVs
bFR5cGU6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC0xNzAsNiArMTc5LDExIEBAIHZvaWQgV2ViSURCS2V5Ojphc3Np
Z25OdW1iZXIoZG91YmxlIG51bWJlcikKIAogdm9pZCBXZWJJREJLZXk6OmFzc2lnbkludmFsaWQo
KQogeworICAgIG1fcHJpdmF0ZSA9IElEQktleTo6Y3JlYXRlSW52YWxpZCgpOworfQorCit2b2lk
IFdlYklEQktleTo6YXNzaWduTnVsbCgpCit7CiAgICAgbV9wcml2YXRlID0gMDsKIH0KIApAQCAt
MTgxLDcgKzE5NSw3IEBAIHZvaWQgV2ViSURCS2V5OjpyZXNldCgpCiBXZWJJREJLZXk6OlR5cGUg
V2ViSURCS2V5Ojp0eXBlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcHJpdmF0ZS5nZXQoKSkKLSAg
ICAgICAgcmV0dXJuIEludmFsaWRUeXBlOworICAgICAgICByZXR1cm4gTnVsbFR5cGU7CiAgICAg
cmV0dXJuIFR5cGUobV9wcml2YXRlLT50eXBlKCkpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWU4ZmI2ODgxNjg2
MzhkYjNhZjIzMmZkZWU0YmFmZDExNjg5MGQ5Ny4uNTg3ZWYxMTYzYWNkMjdmNjVlNjE5OGUzYmUw
NzdlYjkwMGIzNGM4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTIzICBKb3NodWEg
QmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBOZWVkIHRv
IGRpc3Rpbmd1aXNoIGtleSBwYXRocyB0aGF0IGRvbid0IHlpZWxkIHZhbHVlIHZzLiB5aWVsZCBp
bnZhbGlkIGtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzY0ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZWRnZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWw6
CisKIDIwMTItMDEtMjMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVcGRhdGUgdGhlIGJhc2VsaW5lcyBmb3IgYSBudW1iZXIgb2YgdGVzdHMgdGhhdCB1c2UgZ3Jh
ZGllbnRzLiAgVGhlIG5ldwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIva2V5cGF0aC1lZGdlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9rZXlwYXRoLWVkZ2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2YzOWVlMjgxM2Ni
YzM0MmFkMWE4N2MwMDNmMWRhYTNkODUwYTcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw3MCBAQAorVGVzdCBJbmRleGVkREIga2V5UGF0aCBlZGdlIGNhc2VzCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRv
dy53ZWJraXRJbmRleGVkREI7CitQQVNTIGluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCitJREJE
YXRhYmFzZUV4Y2VwdGlvbiA9IHdpbmRvdy5JREJEYXRhYmFzZUV4Y2VwdGlvbiB8fCB3aW5kb3cu
d2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb247CitQQVNTIElEQkRhdGFiYXNlRXhjZXB0aW9uID09
IG51bGwgaXMgZmFsc2UKK0lEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5zYWN0aW9uIHx8
IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbjsKK1BBU1MgSURCVHJhbnNhY3Rpb24gPT0gbnVs
bCBpcyBmYWxzZQoraW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdrZXlwYXRoLWVkZ2VzJykKK2lu
ZGV4ZWREQi5vcGVuKCdrZXlwYXRoLWVkZ2VzJykKKworb3BlblN1Y2Nlc3MoKToKK2RiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKQorZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aCcsIHtrZXlQYXRoOiAnZm9vJ30pCitkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1wYXRoLWFuZC1nZW5lcmF0b3InLCB7a2V5UGF0aDog
J2ZvbycsIGF1dG9JbmNyZW1lbnQ6IHRydWV9KQorCit0ZXN0S2V5UGF0aHMoKToKK3RyYW5zYWN0
aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZS13aXRoLXBhdGgnXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkKK3N0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgt
cGF0aCcpCisKK0tleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlIC0gaW50ZXJuYWxs
eSwga2V5IHNob3VsZCBiZSBudWxsLCBzaG91bGQgdGhyb3cgREFUQV9FUlIKK0V4cGVjdGluZyBl
eGNlcHRpb24gZnJvbSBzdG9yZS5wdXQobnVsbCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24u
CitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKKworS2V5IHBhdGgg
ZG9lc24ndCByZXNvbHZlIHRvIGEgdmFsdWUgLSBpbnRlcm5hbGx5LCBrZXkgc2hvdWxkIGJlIG51
bGwsIHNob3VsZCB0aHJvdyBEQVRBX0VSUgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3Jl
LnB1dCh7fSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0
YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKKworS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0
aGF0IGlzIGludmFsaWQga2V5IC0gaW50ZXJuYWxseSwga2V5IHNob3VsZCBiZSB0eXBlOiBpbnZh
bGlkLCBzaG91bGQgdGhyb3cgREFUQV9FUlIKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9y
ZS5wdXQoe2ZvbzogbnVsbH0pCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2Rl
IGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCisKK0tleSBwYXRoIHJlc29sdmVzIHRv
IGEgdmFsdWUgdGhhdCBpcyB2YWxpZCBrZXkgLSBpbnRlcm5hbGx5LCBrZXkgc2hvdWxkIGJlIHR5
cGU6IHN0cmluZywgc2hvdWxkIHN1Y2NlZWQKK3N0b3JlLnB1dCh7Zm9vOiAnem9vJ30pCitQQVNT
IHN0b3JlLnB1dCBzdWNjZWVkZWQKKwordGVzdEtleVBhdGhzQW5kR2VuZXJhdG9yKCk6Cit0cmFu
c2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUtd2l0aC1wYXRoLWFuZC1nZW5lcmF0b3In
XSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK3N0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0
U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aC1hbmQtZ2VuZXJhdG9yJykKKworS2V5IHBhdGggZG9lc24n
dCByZXNvbHZlIHRvIGEgdmFsdWUgLSBpbnRlcm5hbGx5LCBrZXkgc2hvdWxkIGJlIG51bGw7IHB1
dCByZXF1ZXN0IHNob3VsZCByYWlzZSBlcnJvciBldmVudAorc3RvcmUucHV0KG51bGwpCitQQVNT
IEVycm9yIGV2ZW50IHJhaXNlZDogVGhlIGdlbmVyYXRlZCBrZXkgY291bGQgbm90IGJlIGluc2Vy
dGVkIGludG8gdGhlIG9iamVjdCB1c2luZyB0aGUga2V5UGF0aC4KK1BBU1MgZXZlbnQudGFyZ2V0
LmVycm9yQ29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorUEFTUyBldmVudC5j
YW5jZWxhYmxlIGlzIHRydWUKK2V2ZW50LnByZXZlbnREZWZhdWx0KCkKKworS2V5IHBhdGggZG9l
c24ndCByZXNvbHZlIHRvIGEgdmFsdWUgLSBpbnRlcm5hbGx5LCBrZXkgc2hvdWxkIGJlIG51bGws
IHB1dCByZXF1ZXN0IHNob3VsZCBzdWNjZWVkCitzdG9yZS5wdXQoe30pCitQQVNTIHN0b3JlLnB1
dCBzdWNjZWVkZWQKKworS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0IGlzIGludmFs
aWQga2V5IC0gaW50ZXJuYWxseSwga2V5IHNob3VsZCBiZSB0eXBlOiBpbnZhbGlkLCBzaG91bGQg
dGhyb3cgREFUQV9FUlIKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5wdXQoe2Zvbzog
bnVsbH0pCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFi
YXNlRXhjZXB0aW9uLkRBVEFfRVJSCisKK0tleSBwYXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhh
dCBpcyB2YWxpZCBrZXkgLSBpbnRlcm5hbGx5LCBrZXkgc2hvdWxkIGJlIHR5cGU6IHN0cmluZywg
c2hvdWxkIHN1Y2NlZWQKK3N0b3JlLnB1dCh7Zm9vOiAnem9vJ30pCitQQVNTIHN0b3JlLnB1dCBz
dWNjZWVkZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVk
Z2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzJkN2JjOWYxNjQ0ZjVlMzFjNTJiODEwZDY2YWJjNWI1N2NiZmJlZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgt
ZWRnZXMuaHRtbApAQCAtMCwwICsxLDEyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXlQ
YXRoIGVkZ2UgY2FzZXMiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRv
dy53ZWJraXRJbmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51
bGwiKTsKKyAgICBldmFsQW5kTG9nKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9IHdpbmRvdy5JREJE
YXRhYmFzZUV4Y2VwdGlvbiB8fCB3aW5kb3cud2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb247Iik7
CisgICAgc2hvdWxkQmVGYWxzZSgiSURCRGF0YWJhc2VFeGNlcHRpb24gPT0gbnVsbCIpOworICAg
IGV2YWxBbmRMb2coIklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5zYWN0aW9uIHx8IHdp
bmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJJREJUcmFu
c2FjdGlvbiA9PSBudWxsIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
LmRlbGV0ZURhdGFiYXNlKCdrZXlwYXRoLWVkZ2VzJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdr
ZXlwYXRoLWVkZ2VzJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Cisg
ICAgfTsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAg
ICAgIHRyYW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAgIHRyYW5zYWN0aW9uLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAgZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aCcsIHtrZXlQYXRoOiAnZm9vJ30pIik7
CisgICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBh
dGgtYW5kLWdlbmVyYXRvcicsIHtrZXlQYXRoOiAnZm9vJywgYXV0b0luY3JlbWVudDogdHJ1ZX0p
Iik7CisgICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0S2V5UGF0aHM7CisgICAg
fTsKK30KKworZnVuY3Rpb24gdGVzdEtleVBhdGhzKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoInRlc3RLZXlQYXRocygpOiIpOworCisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9n
KCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUtd2l0aC1wYXRoJ10sIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgnKSIpOworCisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZSAt
IGludGVybmFsbHksIGtleSBzaG91bGQgYmUgbnVsbCwgc2hvdWxkIHRocm93IERBVEFfRVJSIik7
CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG51bGwpIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktl
eSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlIC0gaW50ZXJuYWxseSwga2V5IHNob3Vs
ZCBiZSBudWxsLCBzaG91bGQgdGhyb3cgREFUQV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5wdXQoe30pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7
CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktleSBwYXRoIHJlc29sdmVzIHRvIGEgdmFs
dWUgdGhhdCBpcyBpbnZhbGlkIGtleSAtIGludGVybmFsbHksIGtleSBzaG91bGQgYmUgdHlwZTog
aW52YWxpZCwgc2hvdWxkIHRocm93IERBVEFfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigic3RvcmUucHV0KHtmb286IG51bGx9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRB
X0VSUiIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0
byBhIHZhbHVlIHRoYXQgaXMgdmFsaWQga2V5IC0gaW50ZXJuYWxseSwga2V5IHNob3VsZCBiZSB0
eXBlOiBzdHJpbmcsIHNob3VsZCBzdWNjZWVkIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InN0b3JlLnB1dCh7Zm9vOiAnem9vJ30pIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7
CisgICAgICAgIHRlc3RQYXNzZWQoInN0b3JlLnB1dCBzdWNjZWVkZWQiKTsKKyAgICB9OworCisg
ICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRy
YW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0b3I7Cit9CisKK2Z1
bmN0aW9uIHRlc3RLZXlQYXRoc0FuZEdlbmVyYXRvcigpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJ0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0b3IoKToiKTsKKworICAgIHRyYW5zYWN0aW9u
ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlLXdpdGgt
cGF0aC1hbmQtZ2VuZXJhdG9yJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9y
ZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvcicpIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlIC0gaW50ZXJuYWxseSwga2V5
IHNob3VsZCBiZSBudWxsOyBwdXQgcmVxdWVzdCBzaG91bGQgcmFpc2UgZXJyb3IgZXZlbnQiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0KG51bGwpIik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiRXJyb3IgZXZl
bnQgcmFpc2VkOiAiICsgZS50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlKTsKKyAgICAgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJldmVudC5jYW5jZWxhYmxlIik7CisgICAg
ICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKKworICAgICAgICBkZWJ1
ZygiIik7CisgICAgICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1
ZSAtIGludGVybmFsbHksIGtleSBzaG91bGQgYmUgbnVsbCwgcHV0IHJlcXVlc3Qgc2hvdWxkIHN1
Y2NlZWQiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7fSkiKTsK
KyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGVzdFBh
c3NlZCgic3RvcmUucHV0IHN1Y2NlZWRlZCIpOworCisgICAgICAgICAgICBkZWJ1ZygiIik7Cisg
ICAgICAgICAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0IGlzIGlu
dmFsaWQga2V5IC0gaW50ZXJuYWxseSwga2V5IHNob3VsZCBiZSB0eXBlOiBpbnZhbGlkLCBzaG91
bGQgdGhyb3cgREFUQV9FUlIiKTsKKyAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InN0b3JlLnB1dCh7Zm9vOiBudWxsfSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
KTsKKworICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgZGVidWcoIktleSBwYXRo
IHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyB2YWxpZCBrZXkgLSBpbnRlcm5hbGx5LCBrZXkg
c2hvdWxkIGJlIHR5cGU6IHN0cmluZywgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICAgICAgICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2ZvbzogJ3pvbyd9KSIpOworICAgICAgICAg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7CisgICAgICAgICAgICB9OworICAgICAgICB9
OworICAgIH07CisKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGRvbmU7Cit9CisKK3Rlc3QoKTsK
KworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dApp
bmRleCBlYzA0NjkyNTYyNjc0Mjk0MzMyMmI1NmIyMTVhZmUyMWY0N2RlNDE5Li42YTk0MGRlM2M3
NDQxYTRhYTljNWIwYmVkMGFhMjZmYmI5YjFmMWYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50
eHQKQEAgLTk4LDExICs5OCw5IEBAIFBBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCiBQQVNTIGNv
ZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKIGRiLnRyYW5zYWN0aW9u
KFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCiBzdG9yZSA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQotc3RvcmUuYWRkKHt4OiBudWxs
fSwgJ3ZhbGlka2V5JykKLVBBU1MgZXZlbnQuY2FuY2VsYWJsZSBpcyB0cnVlCi1hZGRXaXRoTnVs
bEluZGV4RmFpbHVyZSgpOgotUEFTUyBldmVudC50YXJnZXQuZXJyb3JDb2RlIGlzIHdlYmtpdElE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCi1ldmVudC5wcmV2ZW50RGVmYXVsdCgpCitFeHBl
Y3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuYWRkKHt4OiBudWxsfSwgJ3ZhbGlka2V5JykKK1BB
U1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VF
eGNlcHRpb24uREFUQV9FUlIKIGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCiBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKQogc3RvcmUuZ2V0KCdrZXknKQpAQCAtMTY0LDYgKzE2MiwxMCBAQCBUaGUg
a2V5IHBhcmFtZXRlciB3YXMgcHJvdmlkZWQgYnV0IGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCBr
ZXkuCiBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5wdXQo
e30sIG51bGwpCiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgogUEFTUyBjb2RlIGlzIHdlYmtp
dElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitJZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMg
cmVmZXJlbmNpbmcgdGhpcyBvYmplY3Qgc3RvcmUgd2hvc2Uga2V5IHBhdGggaXMgYSBzdHJpbmcs
IGV2YWx1YXRpbmcgdGhlaXIga2V5IHBhdGggb24gdGhlIHZhbHVlIHBhcmFtZXRlciB5aWVsZHMg
YSB2YWx1ZSwgYW5kIHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LgorRXhwZWN0aW5nIGV4
Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aEluZGV4LnB1dCh7aW5kZXhLZXk6IG51bGx9LCAna2V5JykK
K1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgd2Via2l0SURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIKIAogSURCT2JqZWN0U3RvcmUuYWRkKCkKIFRoZSBvYmplY3Qg
c3RvcmUgdXNlcyBpbi1saW5lIGtleXMgYW5kIHRoZSBrZXkgcGFyYW1ldGVyIHdhcyBwcm92aWRl
ZC4KQEAgLTE4Niw2ICsxODgsMTAgQEAgVGhlIGtleSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkIGJ1
dCBkb2VzIG5vdCBjb250YWluIGEgdmFsaWQga2V5LgogRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9t
IHN0b3JlV2l0aE91dE9mTGluZUtleXMuYWRkKHt9LCBudWxsKQogUEFTUyBFeGNlcHRpb24gd2Fz
IHRocm93bi4KIFBBU1MgY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VS
UgorSWYgdGhlcmUgYXJlIGFueSBpbmRleGVzIHJlZmVyZW5jaW5nIHRoaXMgb2JqZWN0IHN0b3Jl
IHdob3NlIGtleSBwYXRoIGlzIGEgc3RyaW5nLCBldmFsdWF0aW5nIHRoZWlyIGtleSBwYXRoIG9u
IHRoZSB2YWx1ZSBwYXJhbWV0ZXIgeWllbGRzIGEgdmFsdWUsIGFuZCB0aGF0IHZhbHVlIGlzIG5v
dCBhIHZhbGlkIGtleS4KK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZVdpdGhJbmRleC5h
ZGQoe2luZGV4S2V5OiBudWxsfSwgJ2tleScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgor
UEFTUyBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCiBQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwKaW5kZXgg
MTIwYWE2MGRkYzU3MTE0NjM5ODk5MzIyYzQ2Njc0ZTBlZTI0YjY5ZS4uNmQ4YjVmZDA2YTYwMjEx
NGM3ZWRlNjZmMTY0OTMyMzhmN2MxZGQ2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwKQEAgLTIxNSwxOCArMjE1LDcg
QEAgZnVuY3Rpb24gYWRkQWdhaW5GYWlsdXJlKCkKICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiAgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKIAotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6IG51bGx9LCAndmFsaWRrZXknKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSBhZGRXaXRoTnVsbEluZGV4RmFpbHVyZTsKLX0KLQotZnVuY3Rpb24gYWRk
V2l0aE51bGxJbmRleEZhaWx1cmUoKQotewotICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQuY2FuY2Vs
YWJsZSIpOwotICAgIGRlYnVnKCJhZGRXaXRoTnVsbEluZGV4RmFpbHVyZSgpOiIpOwotICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0
aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgp
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKHt4OiBudWxsfSwgJ3Zh
bGlka2V5JykiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKIAogICAg
IHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwg
d2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKICAgICB0cmFuc2FjdGlvbi5vbmFi
b3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CkBAIC0zMTgsOCArMzA3LDggQEAgZnVuY3Rp
b24gdGVzdFByZUNvbmRpdGlvbnMoKQogICAgICAgICBkZWJ1ZygiVGhlIGtleSBwYXJhbWV0ZXIg
d2FzIHByb3ZpZGVkIGJ1dCBkb2VzIG5vdCBjb250YWluIGEgdmFsaWQga2V5LiIpOwogICAgICAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhPdXRPZkxpbmVLZXlzLnB1dCh7fSwg
bnVsbCkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKIAotICAgICAg
ICAvLyBGSVhNRTogQWRkIHByZWNvbmRpdGlvbiBjaGVja3MgZm9yIHB1dCgpIHdpdGggaW5kZXgg
a2V5IHBhdGhzIHRoYXQgeWllbGQgaW52YWxpZCBrZXlzLgotICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY0ODcKKyAgICAgICAgZGVidWcoIklmIHRo
ZXJlIGFyZSBhbnkgaW5kZXhlcyByZWZlcmVuY2luZyB0aGlzIG9iamVjdCBzdG9yZSB3aG9zZSBr
ZXkgcGF0aCBpcyBhIHN0cmluZywgZXZhbHVhdGluZyB0aGVpciBrZXkgcGF0aCBvbiB0aGUgdmFs
dWUgcGFyYW1ldGVyIHlpZWxkcyBhIHZhbHVlLCBhbmQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxp
ZCBrZXkuIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlV2l0aEluZGV4
LnB1dCh7aW5kZXhLZXk6IG51bGx9LCAna2V5JykiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKIAogICAgICAgICBkZWJ1ZygiIik7CiAgICAgICAgIGRlYnVnKCJJREJP
YmplY3RTdG9yZS5hZGQoKSIpOwpAQCAtMzM4LDggKzMyNyw4IEBAIGZ1bmN0aW9uIHRlc3RQcmVD
b25kaXRpb25zKCkKICAgICAgICAgZGVidWcoIlRoZSBrZXkgcGFyYW1ldGVyIHdhcyBwcm92aWRl
ZCBidXQgZG9lcyBub3QgY29udGFpbiBhIHZhbGlkIGtleS4iKTsKICAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5hZGQoe30sIG51bGwpIiwgIndl
YmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CiAKLSAgICAgICAgLy8gRklYTUU6
IEFkZCBwcmVjb25kaXRpb24gY2hlY2tzIGZvciBhZGQoKSB3aXRoIGluZGV4IGtleSBwYXRocyB0
aGF0IHlpZWxkIGludmFsaWQga2V5cy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc2NDg3CisgICAgICAgIGRlYnVnKCJJZiB0aGVyZSBhcmUgYW55
IGluZGV4ZXMgcmVmZXJlbmNpbmcgdGhpcyBvYmplY3Qgc3RvcmUgd2hvc2Uga2V5IHBhdGggaXMg
YSBzdHJpbmcsIGV2YWx1YXRpbmcgdGhlaXIga2V5IHBhdGggb24gdGhlIHZhbHVlIHBhcmFtZXRl
ciB5aWVsZHMgYSB2YWx1ZSwgYW5kIHRoYXQgdmFsdWUgaXMgbm90IGEgdmFsaWQga2V5LiIpOwor
ICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZVdpdGhJbmRleC5hZGQoe2luZGV4
S2V5OiBudWxsfSwgJ2tleScpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
Iik7CiAKICAgICAgICAgZG9uZSgpOwogICAgIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123833</attachid>
            <date>2012-01-24 15:55:53 -0800</date>
            <delta_ts>2012-01-25 10:01:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76487-20120124155552.patch</filename>
            <type>text/plain</type>
            <size>25480</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzYyZDI0OWRkNjFhMTNj
NzAyZTcwODZmZWIxMTAzNWI1Y2ZkMjUwNC4uN2ViYzBkMjA4ZGFhZjcwYTY4ZWU5M2Q3MjJmYjg5
YjA5OTUwZTJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAxLTIzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBOZWVk
IHRvIGRpc3Rpbmd1aXNoIGtleSBwYXRocyB0aGF0IGRvbid0IHlpZWxkIHZhbHVlIHZzLiB5aWVs
ZCBpbnZhbGlkIGtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzY0ODcKKworICAgICAgICBJbXBsZW1lbnQgdGhlIHByZWNvbmRpdGlvbiBjaGVja3Mg
Zm9yIElEQk9iamVjdFN0b3JlLmFkZC9wdXQgb3BlcmF0aW9uczogcmFpc2UgYW4gZXJyb3IKKyAg
ICAgICAgaWYgdGhlcmUgaXMgYSBrZXkgZ2VuZXJhdG9yIChhdXRvSW5jcmVtZW50KSBhbmQgdGhl
IHBhdGggeWllbGRzIGEgdmFsdWUgYW5kIHRoZSB2YWx1ZQorICAgICAgICBpcyBub3QgYSB2YWxp
ZCBrZXk7IHJhaXNlIGFuIGVycm9yIGlmIGFueSBvZiB0aGUgaW5kZXgga2V5IHBhdGhzIHlpZWxk
IGEgdmFsdWUgd2hpY2gKKyAgICAgICAgaXMgbm90IGEgdmFsaWQga2V5LgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBzdG9yYWdlL2luZGV4
ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdHN0b3JlLWJhc2ljcy5odG1sCisKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6cHV0KToKKwogMjAxMi0wMS0yNCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogaW5zcGVjdG9yL2RlYnVnZ2Vy
L2RvbS1icmVha3BvaW50cy5odG1sIHN0YXJ0ZWQgdG8gZmFpbCBhZnRlciByMTA1NjQyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGFhMmU0M2FmZDU0MDVmYTY0NzFhMGJkYTdkYmQ3NDM5
NjFiNzM2YjAuLjc0ZTJlYThjYWI3YmU1ZGY3YjFiY2U4NDNmYzUwNTA3MTNjOWE1ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDEtMjMgIEpvc2h1
YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IE5lZWQg
dG8gZGlzdGluZ3Vpc2gga2V5IHBhdGhzIHRoYXQgZG9uJ3QgeWllbGQgdmFsdWUgdnMuIHlpZWxk
IGludmFsaWQga2V5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NjQ4NworCisgICAgICAgIEFkZGVkIGEgTnVsbFR5cGUgdG8gcmVwcmVzZW50IGEgbnVs
bCBJREJLZXkgcG9pbnRlci4gVGhpcyBpcyBuZWVkZWQgdG8gZGlzdGluZ3Vpc2ggdGhlCisgICAg
ICAgIGNhc2VzIGluIHRoZSBzcGVjIHdoZXJlIHRoZSBrZXkgcmVzb2x1dGlvbiBhbGdvcml0aG0g
cmV0dXJucyBubyB2YWx1ZSAobnVsbCkgdmVyc3VzCisgICAgICAgIHJldHVybnMgYSB2YWx1ZSBi
dXQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkgKGludmFsaWQpLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYklEQktleS5o
OgorICAgICAgICAqIHNyYy9XZWJJREJLZXkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJL
ZXk6OmNyZWF0ZU51bGwpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5OjpjcmVh
dGVGcm9tVmFsdWVBbmRLZXlQYXRoKTogTm93IHJldHVybnMgbnVsbCBpZiB2YWx1ZSBpcyBudWxs
LgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0RnJvbVdlYklEQktleUFycmF5KTogTnVsbCBrZXlz
IHNob3VsZCBuZXZlciBleGlzdCB3aXRoaW4gYXJyYXlzLgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJLZXk6OmFzc2lnbkludmFsaWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXk6OmFzc2ln
bk51bGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXk6OnR5cGUpOgorCiAyMDEyLTAxLTI0
ICBWaW5jZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9t
aXVtXSBBZGQgV2ViS2l0IEFQSSBmb3IgUG9pbnRlciBMb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCAxZDZjZDQx
YmRiZWJkNTlkNGZiMzgyMGNhNTg3MGU4N2FkNTRiZjAwLi41MWE5MGQwZGE3ZTVlZWVkM2U0YjJl
OTI2MmZiOWQ0MmE0ZTBhNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTEzMSwzNSArMTMxLDQzIEBAIHZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBwcnBWYWx1ZSwKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBw
cnBDYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
dHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvblB0cjsKIAotICAgIGlmIChrZXkgJiYgKGtleS0+dHlw
ZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OkRBVEFfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29uc3Qg
Ym9vbCBhdXRvSW5jcmVtZW50ID0gb2JqZWN0U3RvcmUtPmF1dG9JbmNyZW1lbnQoKTsKLSAgICBj
b25zdCBib29sIGhhc0tleVBhdGggPSAhb2JqZWN0U3RvcmUtPm1fa2V5UGF0aC5pc051bGwoKTsK
LQogICAgIGlmIChwdXRNb2RlICE9IEN1cnNvclVwZGF0ZSkgeworICAgICAgICBpZiAoa2V5ICYm
ICFrZXktPnZhbGlkKCkpIHsKKyAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OkRBVEFfRVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnN0
IGJvb2wgYXV0b0luY3JlbWVudCA9IG9iamVjdFN0b3JlLT5hdXRvSW5jcmVtZW50KCk7CisgICAg
ICAgIGNvbnN0IGJvb2wgaGFzS2V5UGF0aCA9ICFvYmplY3RTdG9yZS0+bV9rZXlQYXRoLmlzTnVs
bCgpOwogICAgICAgICBpZiAoIWtleSAmJiAhYXV0b0luY3JlbWVudCAmJiAhaGFzS2V5UGF0aCkg
ewogICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGhhc0tleVBhdGgpIHsKLSAg
ICAgICAgICAgIGlmIChrZXkgJiYga2V5LT52YWxpZCgpKSB7CisgICAgICAgICAgICBpZiAoa2V5
KSB7CiAgICAgICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBS
ZWZQdHI8SURCS2V5PiBrZXlQYXRoS2V5ID0gZmV0Y2hLZXlGcm9tS2V5UGF0aCh2YWx1ZS5nZXQo
KSwgb2JqZWN0U3RvcmUtPm1fa2V5UGF0aCk7CiAgICAgICAgICAgICBpZiAoIWF1dG9JbmNyZW1l
bnQpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXlQYXRoS2V5ID0gZmV0Y2hL
ZXlGcm9tS2V5UGF0aCh2YWx1ZS5nZXQoKSwgb2JqZWN0U3RvcmUtPm1fa2V5UGF0aCk7CiAgICAg
ICAgICAgICAgICAgaWYgKCFrZXlQYXRoS2V5IHx8ICFrZXlQYXRoS2V5LT52YWxpZCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNlIGlmIChrZXlQYXRoS2V5ICYmICFrZXlQYXRoS2V5LT52YWxpZCgpKSB7CisgICAg
ICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIC8vIEZJ
WE1FOiBBZGQgcHJlY29uZGl0aW9uIGNoZWNrcyBmb3IgaW5kZXgga2V5IHBhdGhzIHRoYXQgeWll
bGQgaW52YWxpZCBrZXlzLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzY0ODcKLSAgICAgfQorICAgICAgICBmb3IgKEluZGV4TWFwOjppdGVyYXRv
ciBpdCA9IG1faW5kZXhlcy5iZWdpbigpOyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7ICsraXQpIHsK
KyAgICAgICAgICAgIGNvbnN0IFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiYgaW5kZXggPSBp
dC0+c2Vjb25kOworICAgICAgICAgICAgUmVmUHRyPElEQktleT4gaW5kZXhLZXkgPSBmZXRjaEtl
eUZyb21LZXlQYXRoKHZhbHVlLmdldCgpLCBpbmRleC0+a2V5UGF0aCgpKTsKKyAgICAgICAgICAg
IGlmIChpbmRleEtleSAmJiAhaW5kZXhLZXktPnZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKICAgICBpZiAoIXRyYW5zYWN0
aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpwdXRJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIHZhbHVlLCBrZXksIHB1dE1vZGUsIGNh
bGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwpAQCAtMTczLDExICsxODEsNiBAQCBQYXNzUmVm
UHRyPElEQktleT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2VsZWN0S2V5Rm9yUHV0KElE
Qk9iamVjdFN0b3JlQmFjawogICAgIGNvbnN0IGJvb2wgYXV0b0luY3JlbWVudCA9IG9iamVjdFN0
b3JlLT5hdXRvSW5jcmVtZW50KCk7CiAgICAgY29uc3QgYm9vbCBoYXNLZXlQYXRoID0gIW9iamVj
dFN0b3JlLT5tX2tleVBhdGguaXNOdWxsKCk7CiAKLSAgICBpZiAoaGFzS2V5UGF0aCAmJiBrZXkg
JiYgcHV0TW9kZSAhPSBDdXJzb3JVcGRhdGUpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9y
KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlIs
ICJBIGtleSB3YXMgc3VwcGxpZWQgZm9yIGFuIG9iamVjdFN0b3JlIHRoYXQgaGFzIGEga2V5UGF0
aC4iKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQogICAgIGlmIChhdXRvSW5jcmVtZW50
ICYmIGtleSkgewogICAgICAgICBvYmplY3RTdG9yZS0+cmVzZXRBdXRvSW5jcmVtZW50S2V5Q2Fj
aGUoKTsKICAgICAgICAgcmV0dXJuIGtleTsKQEAgLTIwNywxMSArMjEwLDcgQEAgUGFzc1JlZlB0
cjxJREJLZXk+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNlbGVjdEtleUZvclB1dChJREJP
YmplY3RTdG9yZUJhY2sKICAgICBpZiAoaGFzS2V5UGF0aCkgewogICAgICAgICBSZWZQdHI8SURC
S2V5PiBrZXlQYXRoS2V5ID0gZmV0Y2hLZXlGcm9tS2V5UGF0aCh2YWx1ZS5nZXQoKSwgb2JqZWN0
U3RvcmUtPm1fa2V5UGF0aCk7CiAKLSAgICAgICAgaWYgKCFrZXlQYXRoS2V5KSB7Ci0gICAgICAg
ICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpEQVRBX0VSUiwgIlRoZSBrZXkgY291bGQgbm90IGJlIGZldGNoZWQgZnJv
bSB0aGUga2V5UGF0aC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCisg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIHNob3VsZCBiZSBtb3ZlZCB0byBwdXQoKSBhbmQg
cmFpc2UgYW4gZXhjZXB0aW9uLiBXSzc2OTUyCiAgICAgICAgIGlmIChwdXRNb2RlID09IEN1cnNv
clVwZGF0ZSAmJiAha2V5UGF0aEtleS0+aXNFcXVhbChrZXkpKSB7CiAgICAgICAgICAgICBjYWxs
YmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpEQVRBX0VSUiwgIlRoZSBrZXkgZmV0Y2hlZCBmcm9tIHRoZSBrZXlQYXRoIGRvZXMgbm90
IG1hdGNoIHRoZSBrZXkgb2YgdGhlIGN1cnNvci4iKSk7CiAgICAgICAgICAgICByZXR1cm4gMDsK
QEAgLTIzNCwxMSArMjMzLDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJ
bnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKICAgICBSZWZQdHI8
SURCS2V5PiBrZXkgPSBzZWxlY3RLZXlGb3JQdXQob2JqZWN0U3RvcmUuZ2V0KCksIHBycEtleS5n
ZXQoKSwgcHV0TW9kZSwgY2FsbGJhY2tzLmdldCgpLCB2YWx1ZSk7CiAgICAgaWYgKCFrZXkpCiAg
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChrZXktPnR5cGUoKSA9PSBJREJLZXk6OkludmFsaWRU
eXBlKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSLCAiTm90IGEgdmFsaWQga2V5LiIpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBBU1NFUlQoa2V5LT52YWxpZCgpKTsKIAogICAg
IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IGluZGV4S2V5czsKICAgICBmb3IgKEluZGV4TWFwOjpp
dGVyYXRvciBpdCA9IG9iamVjdFN0b3JlLT5tX2luZGV4ZXMuYmVnaW4oKTsgaXQgIT0gb2JqZWN0
U3RvcmUtPm1faW5kZXhlcy5lbmQoKTsgKytpdCkgewpAQCAtMjQ5LDEwICsyNDQsNyBAQCB2b2lk
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPAogICAgICAgICAgICAgaW5kZXhLZXlzLmFwcGVuZChpbmRleEtl
eS5yZWxlYXNlKCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAg
aWYgKGluZGV4S2V5LT50eXBlKCkgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkgewotICAgICAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6REFUQV9FUlIsICJPbmUgb2YgdGhlIGRlcml2ZWQgKGZyb20gYSBrZXlQYXRo
KSBrZXlzIGZvciBhbiBpbmRleCBpcyBub3QgdmFsaWQuIikpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9CisgICAgICAgIEFTU0VSVChpbmRleEtleS0+dmFsaWQoKSk7CiAKICAgICAg
ICAgaWYgKCghaW5kZXgtPm11bHRpRW50cnkoKSB8fCBpbmRleEtleS0+dHlwZSgpICE9IElEQktl
eTo6QXJyYXlUeXBlKSAmJiAhaW5kZXgtPmFkZGluZ0tleUFsbG93ZWQoaW5kZXhLZXkuZ2V0KCks
IGtleS5nZXQoKSkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSLCAiT25l
IG9mIHRoZSBkZXJpdmVkIChmcm9tIGEga2V5UGF0aCkga2V5cyBmb3IgYW4gaW5kZXggZG9lcyBu
b3Qgc2F0aXNmeSBpdHMgdW5pcXVlbmVzcyByZXF1aXJlbWVudHMuIikpOwpAQCAtMzM5LDcgKzMz
MSw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFz
c1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlCiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkg
PSBwcnBLZXk7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJh
Y2tzOwotICAgIGlmIChrZXktPnR5cGUoKSA9PSBJREJLZXk6OkludmFsaWRUeXBlKSB7CisgICAg
aWYgKCFrZXkgfHwgIWtleS0+dmFsaWQoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleS5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5LmgKaW5kZXggZTQ3OTcxNzU1YTBiNDUxMjk4NGZkNTUw
MDg5MjI5NWJjNjIyZjUxZi4uYTc4MTQyMzQ1OTQwYmRhMTY4YTA2NzJkMzdmZTc0MGFjYWNlNDMx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5LmgKQEAgLTQ5LDYg
KzQ5LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQktleSBjcmVh
dGVEYXRlKGRvdWJsZSk7CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViSURCS2V5IGNyZWF0
ZU51bWJlcihkb3VibGUpOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQktleSBjcmVh
dGVJbnZhbGlkKCk7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViSURCS2V5IGNyZWF0ZU51
bGwoKTsKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJREJLZXkgY3JlYXRlRnJvbVZhbHVl
QW5kS2V5UGF0aChjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBXZWJJREJL
ZXlQYXRoJik7CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlIGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoY29uc3QgV2ViSURCS2V5JiwgY29u
c3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgY29uc3QgV2ViSURCS2V5UGF0aCYpOwogCkBA
IC02NSw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduRGF0
ZShkb3VibGUpOwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ25OdW1iZXIoZG91YmxlKTsK
ICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduSW52YWxpZCgpOworICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBhc3NpZ25OdWxsKCk7CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CiAK
ICAgICBlbnVtIFR5cGUgewpAQCAtNzIsNyArNzQsOCBAQCBwdWJsaWM6CiAgICAgICAgIEFycmF5
VHlwZSwKICAgICAgICAgU3RyaW5nVHlwZSwKICAgICAgICAgRGF0ZVR5cGUsCi0gICAgICAgIE51
bWJlclR5cGUKKyAgICAgICAgTnVtYmVyVHlwZSwKKyAgICAgICAgTnVsbFR5cGUsCiAgICAgfTsK
IAogICAgIFdFQktJVF9FWFBPUlQgVHlwZSB0eXBlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCS2V5LmNwcAppbmRleCAzNWJlOWYzYjIwYTgxZDdhMDk4MmIxZjQ4MjBj
NjMyMjE2NThkZDFiLi4yNWJlNmM1MmY3NDQ1M2Q3ZDM2YWJkYzA4MmQ2MjQ4M2I0NDhkZjBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleS5jcHAKQEAgLTc2LDEwICs3Niwx
OCBAQCBXZWJJREJLZXkgV2ViSURCS2V5OjpjcmVhdGVJbnZhbGlkKCkKICAgICByZXR1cm4ga2V5
OwogfQogCitXZWJJREJLZXkgV2ViSURCS2V5OjpjcmVhdGVOdWxsKCkKK3sKKyAgICBXZWJJREJL
ZXkga2V5OworICAgIGtleS5hc3NpZ25OdWxsKCk7CisgICAgcmV0dXJuIGtleTsKK30KKwogV2Vi
SURCS2V5IFdlYklEQktleTo6Y3JlYXRlRnJvbVZhbHVlQW5kS2V5UGF0aChjb25zdCBXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgY29uc3QgV2ViSURCS2V5
UGF0aCYgaWRiS2V5UGF0aCkKIHsKKyAgICAvLyBGSVhNRTogSWYga2V5IHBhdGggaXMgZW1wdHkg
c3RyaW5nLCB0aGlzIHNob3VsZCByZXR1cm4gaW52YWxpZCBrZXkgaW5zdGVhZAogICAgIGlmIChz
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBXZWJJREJLZXk6
OmNyZWF0ZUludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuIFdlYklEQktleTo6Y3JlYXRlTnVsbCgp
OwogICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChz
ZXJpYWxpemVkU2NyaXB0VmFsdWUsIGlkYktleVBhdGgpOwogfQogCkBAIC0xMTIsNiArMTIwLDcg
QEAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBjb252ZXJ0RnJvbVdlYklEQktleUFycmF5KGNv
bnN0IFdlYlZlY3RvcjxXZWJJREJLZXk+JgogICAgICAgICAgICAga2V5cy5hcHBlbmQoSURCS2V5
OjpjcmVhdGVOdW1iZXIoYXJyYXlbaV0ubnVtYmVyKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFdlYklEQktleTo6SW52YWxpZFR5cGU6CisgICAgICAgIGNhc2UgV2ViSURC
S2V5OjpOdWxsVHlwZToKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE3MCw2ICsxNzksMTEgQEAgdm9pZCBXZWJJREJL
ZXk6OmFzc2lnbk51bWJlcihkb3VibGUgbnVtYmVyKQogCiB2b2lkIFdlYklEQktleTo6YXNzaWdu
SW52YWxpZCgpCiB7CisgICAgbV9wcml2YXRlID0gSURCS2V5OjpjcmVhdGVJbnZhbGlkKCk7Cit9
CisKK3ZvaWQgV2ViSURCS2V5Ojphc3NpZ25OdWxsKCkKK3sKICAgICBtX3ByaXZhdGUgPSAwOwog
fQogCkBAIC0xODEsNyArMTk1LDcgQEAgdm9pZCBXZWJJREJLZXk6OnJlc2V0KCkKIFdlYklEQktl
eTo6VHlwZSBXZWJJREJLZXk6OnR5cGUoKSBjb25zdAogewogICAgIGlmICghbV9wcml2YXRlLmdl
dCgpKQotICAgICAgICByZXR1cm4gSW52YWxpZFR5cGU7CisgICAgICAgIHJldHVybiBOdWxsVHlw
ZTsKICAgICByZXR1cm4gVHlwZShtX3ByaXZhdGUtPnR5cGUoKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMzY4
M2IxZDA5NGY0M2NkMjkyMDVmMDBmMGMxZTc2NjY2N2MxYTVhLi5lZjllYzU4Yzg1M2Q5NGYwYTZj
NTBiZmE1MTM1YzFlMTMzZDE1ZTMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMjMg
IEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6
IE5lZWQgdG8gZGlzdGluZ3Vpc2gga2V5IHBhdGhzIHRoYXQgZG9uJ3QgeWllbGQgdmFsdWUgdnMu
IHlpZWxkIGludmFsaWQga2V5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NjQ4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZWRnZXMuaHRtbDog
QWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNp
Y3MuaHRtbDoKKwogMjAxMi0wMS0yNCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW0Nocm9taXVtXSBVcGRhdGUgdGVzdCBleHBlY3RhdGlvbgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNWZjYTMyYWM3OWI3NTIwMjYxMjk4ZGRkNmVmMjlhZGRmNWQ5NWQ4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0
aC1lZGdlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3MCBAQAorVGVzdCBJbmRleGVkREIga2V5
UGF0aCBlZGdlIGNhc2VzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVk
REIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREI7CitQQVNTIGlu
ZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCitJREJEYXRhYmFzZUV4Y2VwdGlvbiA9IHdpbmRvdy5J
REJEYXRhYmFzZUV4Y2VwdGlvbiB8fCB3aW5kb3cud2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb247
CitQQVNTIElEQkRhdGFiYXNlRXhjZXB0aW9uID09IG51bGwgaXMgZmFsc2UKK0lEQlRyYW5zYWN0
aW9uID0gd2luZG93LklEQlRyYW5zYWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlv
bjsKK1BBU1MgSURCVHJhbnNhY3Rpb24gPT0gbnVsbCBpcyBmYWxzZQoraW5kZXhlZERCLmRlbGV0
ZURhdGFiYXNlKCdrZXlwYXRoLWVkZ2VzJykKK2luZGV4ZWREQi5vcGVuKCdrZXlwYXRoLWVkZ2Vz
JykKKworb3BlblN1Y2Nlc3MoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJzEnKQorZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0
aCcsIHtrZXlQYXRoOiAnZm9vJ30pCitkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1w
YXRoLWFuZC1nZW5lcmF0b3InLCB7a2V5UGF0aDogJ2ZvbycsIGF1dG9JbmNyZW1lbnQ6IHRydWV9
KQorCit0ZXN0S2V5UGF0aHMoKToKK3RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9y
ZS13aXRoLXBhdGgnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK3N0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aCcpCisKK0tleSBwYXRoIGRvZXNuJ3Qg
cmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCwgc2hvdWxkIHRocm93IERBVEFf
RVJSCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUucHV0KG51bGwpCitQQVNTIEV4Y2Vw
dGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSCisKK0tleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQg
bnVsbCwgc2hvdWxkIHRocm93IERBVEFfRVJSCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3Rv
cmUucHV0KHt9KQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorCitLZXkgcGF0aCByZXNvbHZlcyB0byBhIHZhbHVl
IHRoYXQgaXMgaW52YWxpZCBrZXk7IHNob3VsZCB5aWVsZCAnaW52YWxpZCcga2V5LCBzaG91bGQg
dGhyb3cgREFUQV9FUlIKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5wdXQoe2Zvbzog
bnVsbH0pCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFi
YXNlRXhjZXB0aW9uLkRBVEFfRVJSCisKK0tleSBwYXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhh
dCBpcyB2YWxpZCBrZXk7IHNob3VsZCB5aWVsZCAnc3RyaW5nJyBrZXksIHNob3VsZCBzdWNjZWVk
CitzdG9yZS5wdXQoe2ZvbzogJ3pvbyd9KQorUEFTUyBzdG9yZS5wdXQgc3VjY2VlZGVkCisKK3Rl
c3RLZXlQYXRoc0FuZEdlbmVyYXRvcigpOgordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihb
J3N0b3JlLXdpdGgtcGF0aC1hbmQtZ2VuZXJhdG9yJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJ
VEUpCitzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgtYW5k
LWdlbmVyYXRvcicpCisKK0tleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91
bGQgeWllbGQgbnVsbCwgcHV0IHJlcXVlc3Qgc2hvdWxkIHJhaXNlIGVycm9yIGV2ZW50CitzdG9y
ZS5wdXQobnVsbCkKK1BBU1MgRXJyb3IgZXZlbnQgcmFpc2VkOiBUaGUgZ2VuZXJhdGVkIGtleSBj
b3VsZCBub3QgYmUgaW5zZXJ0ZWQgaW50byB0aGUgb2JqZWN0IHVzaW5nIHRoZSBrZXlQYXRoLgor
UEFTUyBldmVudC50YXJnZXQuZXJyb3JDb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSCitQQVNTIGV2ZW50LmNhbmNlbGFibGUgaXMgdHJ1ZQorZXZlbnQucHJldmVudERlZmF1bHQo
KQorCitLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51
bGwsIGtleSBzaG91bGQgYmUgZ2VuZXJhdGVkLCBwdXQgcmVxdWVzdCBzaG91bGQgc3VjY2VlZAor
c3RvcmUucHV0KHt9KQorUEFTUyBzdG9yZS5wdXQgc3VjY2VlZGVkCisKK0tleSBwYXRoIHJlc29s
dmVzIHRvIGEgdmFsdWUgdGhhdCBpcyBpbnZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdpbnZhbGlk
JyBrZXksIHNob3VsZCB0aHJvdyBEQVRBX0VSUgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0
b3JlLnB1dCh7Zm9vOiBudWxsfSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNv
ZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKKworS2V5IHBhdGggcmVzb2x2ZXMg
dG8gYSB2YWx1ZSB0aGF0IGlzIHZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdzdHJpbmcnIGtleSwg
c2hvdWxkIHN1Y2NlZWQKK3N0b3JlLnB1dCh7Zm9vOiAnem9vJ30pCitQQVNTIHN0b3JlLnB1dCBz
dWNjZWVkZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVk
Z2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzY4MDhjYWMyYmNmM2UwN2RmYzkxYTIzNWQxYWE0NDUwOWM5ZTVmYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgt
ZWRnZXMuaHRtbApAQCAtMCwwICsxLDEyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXlQ
YXRoIGVkZ2UgY2FzZXMiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRv
dy53ZWJraXRJbmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51
bGwiKTsKKyAgICBldmFsQW5kTG9nKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9IHdpbmRvdy5JREJE
YXRhYmFzZUV4Y2VwdGlvbiB8fCB3aW5kb3cud2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb247Iik7
CisgICAgc2hvdWxkQmVGYWxzZSgiSURCRGF0YWJhc2VFeGNlcHRpb24gPT0gbnVsbCIpOworICAg
IGV2YWxBbmRMb2coIklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5zYWN0aW9uIHx8IHdp
bmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJJREJUcmFu
c2FjdGlvbiA9PSBudWxsIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
LmRlbGV0ZURhdGFiYXNlKCdrZXlwYXRoLWVkZ2VzJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdr
ZXlwYXRoLWVkZ2VzJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Cisg
ICAgfTsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAg
ICAgIHRyYW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAgIHRyYW5zYWN0aW9uLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAgZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aCcsIHtrZXlQYXRoOiAnZm9vJ30pIik7
CisgICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBh
dGgtYW5kLWdlbmVyYXRvcicsIHtrZXlQYXRoOiAnZm9vJywgYXV0b0luY3JlbWVudDogdHJ1ZX0p
Iik7CisgICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0S2V5UGF0aHM7CisgICAg
fTsKK30KKworZnVuY3Rpb24gdGVzdEtleVBhdGhzKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoInRlc3RLZXlQYXRocygpOiIpOworCisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9n
KCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUtd2l0aC1wYXRoJ10sIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgnKSIpOworCisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsg
c2hvdWxkIHlpZWxkIG51bGwsIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIpOworICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChudWxsKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5E
QVRBX0VSUiIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0
IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwsIHNob3VsZCB0aHJvdyBEQVRB
X0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCh7fSkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0IGlzIGludmFsaWQga2V5OyBzaG91
bGQgeWllbGQgJ2ludmFsaWQnIGtleSwgc2hvdWxkIHRocm93IERBVEFfRVJSIik7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KHtmb286IG51bGx9KSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkg
cGF0aCByZXNvbHZlcyB0byBhIHZhbHVlIHRoYXQgaXMgdmFsaWQga2V5OyBzaG91bGQgeWllbGQg
J3N0cmluZycga2V5LCBzaG91bGQgc3VjY2VlZCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5wdXQoe2ZvbzogJ3pvbyd9KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkg
eworICAgICAgICB0ZXN0UGFzc2VkKCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7CisgICAgfTsKKwor
ICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdGVzdEtleVBhdGhzQW5kR2VuZXJhdG9yOworfQorCitm
dW5jdGlvbiB0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0b3IoKQoreworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1ZygidGVzdEtleVBhdGhzQW5kR2VuZXJhdG9yKCk6Iik7CisKKyAgICB0cmFuc2FjdGlv
biA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZS13aXRo
LXBhdGgtYW5kLWdlbmVyYXRvciddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAg
IHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmUtd2l0aC1wYXRoLWFuZC1nZW5lcmF0b3InKSIpOworCisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51
bGwsIHB1dCByZXF1ZXN0IHNob3VsZCByYWlzZSBlcnJvciBldmVudCIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5wdXQobnVsbCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBm
dW5jdGlvbiAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJFcnJvciBldmVudCByYWlzZWQ6ICIg
KyBlLnRhcmdldC53ZWJraXRFcnJvck1lc3NhZ2UpOworICAgICAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAg
ICAgICBzaG91bGRCZVRydWUoImV2ZW50LmNhbmNlbGFibGUiKTsKKyAgICAgICAgZXZhbEFuZExv
ZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOworCisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAg
ICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWll
bGQgbnVsbCwga2V5IHNob3VsZCBiZSBnZW5lcmF0ZWQsIHB1dCByZXF1ZXN0IHNob3VsZCBzdWNj
ZWVkIik7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe30pIik7Cisg
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RQYXNz
ZWQoInN0b3JlLnB1dCBzdWNjZWVkZWQiKTsKKworICAgICAgICAgICAgZGVidWcoIiIpOworICAg
ICAgICAgICAgZGVidWcoIktleSBwYXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyBpbnZh
bGlkIGtleTsgc2hvdWxkIHlpZWxkICdpbnZhbGlkJyBrZXksIHNob3VsZCB0aHJvdyBEQVRBX0VS
UiIpOworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KHtmb286
IG51bGx9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgICAgICAg
ICBkZWJ1ZygiIik7CisgICAgICAgICAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2
YWx1ZSB0aGF0IGlzIHZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdzdHJpbmcnIGtleSwgc2hvdWxk
IHN1Y2NlZWQiKTsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQo
e2ZvbzogJ3pvbyd9KSIpOworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7
CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAgIH07CisKKyAgICB0cmFuc2FjdGlvbi5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21w
bGV0ZSA9IGRvbmU7Cit9CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1i
YXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0
c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCBlYzA0NjkyNTYyNjc0Mjk0MzMyMmI1NmIy
MTVhZmUyMWY0N2RlNDE5Li42YTk0MGRlM2M3NDQxYTRhYTljNWIwYmVkMGFhMjZmYmI5YjFmMWYw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1i
YXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTk4LDExICs5OCw5IEBAIFBBU1MgRXhj
ZXB0aW9uIHdhcyB0aHJvd24uCiBQQVNTIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIKIGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpCiBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKQotc3RvcmUuYWRkKHt4OiBudWxsfSwgJ3ZhbGlka2V5JykKLVBBU1MgZXZlbnQuY2Fu
Y2VsYWJsZSBpcyB0cnVlCi1hZGRXaXRoTnVsbEluZGV4RmFpbHVyZSgpOgotUEFTUyBldmVudC50
YXJnZXQuZXJyb3JDb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCi1l
dmVudC5wcmV2ZW50RGVmYXVsdCgpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuYWRk
KHt4OiBudWxsfSwgJ3ZhbGlka2V5JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNT
IGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKIGRiLnRyYW5zYWN0
aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCiBzdG9y
ZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQogc3RvcmUuZ2V0KCdrZXkn
KQpAQCAtMTY0LDYgKzE2MiwxMCBAQCBUaGUga2V5IHBhcmFtZXRlciB3YXMgcHJvdmlkZWQgYnV0
IGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCBrZXkuCiBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20g
c3RvcmVXaXRoT3V0T2ZMaW5lS2V5cy5wdXQoe30sIG51bGwpCiBQQVNTIEV4Y2VwdGlvbiB3YXMg
dGhyb3duLgogUEFTUyBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
CitJZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMgcmVmZXJlbmNpbmcgdGhpcyBvYmplY3Qgc3RvcmUg
d2hvc2Uga2V5IHBhdGggaXMgYSBzdHJpbmcsIGV2YWx1YXRpbmcgdGhlaXIga2V5IHBhdGggb24g
dGhlIHZhbHVlIHBhcmFtZXRlciB5aWVsZHMgYSB2YWx1ZSwgYW5kIHRoYXQgdmFsdWUgaXMgbm90
IGEgdmFsaWQga2V5LgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aEluZGV4LnB1
dCh7aW5kZXhLZXk6IG51bGx9LCAna2V5JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQ
QVNTIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKIAogSURCT2Jq
ZWN0U3RvcmUuYWRkKCkKIFRoZSBvYmplY3Qgc3RvcmUgdXNlcyBpbi1saW5lIGtleXMgYW5kIHRo
ZSBrZXkgcGFyYW1ldGVyIHdhcyBwcm92aWRlZC4KQEAgLTE4Niw2ICsxODgsMTAgQEAgVGhlIGtl
eSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkIGJ1dCBkb2VzIG5vdCBjb250YWluIGEgdmFsaWQga2V5
LgogRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlV2l0aE91dE9mTGluZUtleXMuYWRkKHt9
LCBudWxsKQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KIFBBU1MgY29kZSBpcyB3ZWJraXRJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorSWYgdGhlcmUgYXJlIGFueSBpbmRleGVzIHJl
ZmVyZW5jaW5nIHRoaXMgb2JqZWN0IHN0b3JlIHdob3NlIGtleSBwYXRoIGlzIGEgc3RyaW5nLCBl
dmFsdWF0aW5nIHRoZWlyIGtleSBwYXRoIG9uIHRoZSB2YWx1ZSBwYXJhbWV0ZXIgeWllbGRzIGEg
dmFsdWUsIGFuZCB0aGF0IHZhbHVlIGlzIG5vdCBhIHZhbGlkIGtleS4KK0V4cGVjdGluZyBleGNl
cHRpb24gZnJvbSBzdG9yZVdpdGhJbmRleC5hZGQoe2luZGV4S2V5OiBudWxsfSwgJ2tleScpCitQ
QVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRF
U1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2Jq
ZWN0c3RvcmUtYmFzaWNzLmh0bWwKaW5kZXggMTIwYWE2MGRkYzU3MTE0NjM5ODk5MzIyYzQ2Njc0
ZTBlZTI0YjY5ZS4uNmQ4YjVmZDA2YTYwMjExNGM3ZWRlNjZmMTY0OTMyMzhmN2MxZGQ2YSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFz
aWNzLmh0bWwKQEAgLTIxNSwxOCArMjE1LDcgQEAgZnVuY3Rpb24gYWRkQWdhaW5GYWlsdXJlKCkK
ICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiAgICAg
dmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgn
c3RvcmVOYW1lJykiKTsKIAotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6
IG51bGx9LCAndmFsaWRrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3Rl
ZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRXaXRoTnVsbEluZGV4
RmFpbHVyZTsKLX0KLQotZnVuY3Rpb24gYWRkV2l0aE51bGxJbmRleEZhaWx1cmUoKQotewotICAg
IHNob3VsZEJlVHJ1ZSgiZXZlbnQuY2FuY2VsYWJsZSIpOwotICAgIGRlYnVnKCJhZGRXaXRoTnVs
bEluZGV4RmFpbHVyZSgpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2Rl
IiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBldmFsQW5k
TG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigic3RvcmUuYWRkKHt4OiBudWxsfSwgJ3ZhbGlka2V5JykiLCAid2Via2l0SURCRGF0YWJhc2VF
eGNlcHRpb24uREFUQV9FUlIiKTsKIAogICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIu
dHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklU
RSkiKTsKICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CkBAIC0zMTgsOCArMzA3LDggQEAgZnVuY3Rpb24gdGVzdFByZUNvbmRpdGlvbnMoKQogICAgICAg
ICBkZWJ1ZygiVGhlIGtleSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkIGJ1dCBkb2VzIG5vdCBjb250
YWluIGEgdmFsaWQga2V5LiIpOwogICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9y
ZVdpdGhPdXRPZkxpbmVLZXlzLnB1dCh7fSwgbnVsbCkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNl
cHRpb24uREFUQV9FUlIiKTsKIAotICAgICAgICAvLyBGSVhNRTogQWRkIHByZWNvbmRpdGlvbiBj
aGVja3MgZm9yIHB1dCgpIHdpdGggaW5kZXgga2V5IHBhdGhzIHRoYXQgeWllbGQgaW52YWxpZCBr
ZXlzLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzY0ODcKKyAgICAgICAgZGVidWcoIklmIHRoZXJlIGFyZSBhbnkgaW5kZXhlcyByZWZlcmVuY2lu
ZyB0aGlzIG9iamVjdCBzdG9yZSB3aG9zZSBrZXkgcGF0aCBpcyBhIHN0cmluZywgZXZhbHVhdGlu
ZyB0aGVpciBrZXkgcGF0aCBvbiB0aGUgdmFsdWUgcGFyYW1ldGVyIHlpZWxkcyBhIHZhbHVlLCBh
bmQgdGhhdCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBrZXkuIik7CisgICAgICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oInN0b3JlV2l0aEluZGV4LnB1dCh7aW5kZXhLZXk6IG51bGx9LCAna2V5Jyki
LCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKIAogICAgICAgICBkZWJ1
ZygiIik7CiAgICAgICAgIGRlYnVnKCJJREJPYmplY3RTdG9yZS5hZGQoKSIpOwpAQCAtMzM4LDgg
KzMyNyw4IEBAIGZ1bmN0aW9uIHRlc3RQcmVDb25kaXRpb25zKCkKICAgICAgICAgZGVidWcoIlRo
ZSBrZXkgcGFyYW1ldGVyIHdhcyBwcm92aWRlZCBidXQgZG9lcyBub3QgY29udGFpbiBhIHZhbGlk
IGtleS4iKTsKICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmVXaXRoT3V0T2ZM
aW5lS2V5cy5hZGQoe30sIG51bGwpIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSIik7CiAKLSAgICAgICAgLy8gRklYTUU6IEFkZCBwcmVjb25kaXRpb24gY2hlY2tzIGZvciBh
ZGQoKSB3aXRoIGluZGV4IGtleSBwYXRocyB0aGF0IHlpZWxkIGludmFsaWQga2V5cy4KLSAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NDg3CisgICAg
ICAgIGRlYnVnKCJJZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMgcmVmZXJlbmNpbmcgdGhpcyBvYmpl
Y3Qgc3RvcmUgd2hvc2Uga2V5IHBhdGggaXMgYSBzdHJpbmcsIGV2YWx1YXRpbmcgdGhlaXIga2V5
IHBhdGggb24gdGhlIHZhbHVlIHBhcmFtZXRlciB5aWVsZHMgYSB2YWx1ZSwgYW5kIHRoYXQgdmFs
dWUgaXMgbm90IGEgdmFsaWQga2V5LiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZVdpdGhJbmRleC5hZGQoe2luZGV4S2V5OiBudWxsfSwgJ2tleScpIiwgIndlYmtpdElE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CiAKICAgICAgICAgZG9uZSgpOwogICAgIH07
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>