<?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>73686</bug_id>
          
          <creation_ts>2011-12-02 13:11:54 -0800</creation_ts>
          <short_desc>IndexedDB: Implement IDBObjectStore.count() and IDBIndex.count()</short_desc>
          <delta_ts>2011-12-16 13:27:29 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>dgrogan</cc>
    
    <cc>fishd</cc>
    
    <cc>hans</cc>
    
    <cc>japhet</cc>
    
    <cc>levin</cc>
    
    <cc>levin+threading</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>514051</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-02 13:11:54 -0800</bug_when>
    <thetext>IndexedDB: Implement IDBObjectStore.count() and IDBIndex.count()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514053</commentid>
    <comment_count>1</comment_count>
      <attachid>117675</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-02 13:15:19 -0800</bug_when>
    <thetext>Created attachment 117675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514054</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-02 13:16:26 -0800</bug_when>
    <thetext>Ignore the Chromium public API changes here - they&apos;ll land via https://bugs.webkit.org/show_bug.cgi?id=73685 first and then be removed from this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514056</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-02 13:18:43 -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>514060</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-02 13:23:03 -0800</bug_when>
    <thetext>This is Part 2 of a two-sided change. In between, I&apos;ll land http://codereview.chromium.org/8779003 in Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514061</commentid>
    <comment_count>5</comment_count>
      <attachid>117675</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-12-02 13:26:51 -0800</bug_when>
    <thetext>Comment on attachment 117675
Patch

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

Just a drive by comment.

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:554
&gt; +    RefPtr&lt;IDBTransactionBackendInterface&gt; transactionPtr = transaction;

fwiw, you should be able to pass these directly into createCallbackTask.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515022</commentid>
    <comment_count>6</comment_count>
      <attachid>117675</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-12-05 03:57:31 -0800</bug_when>
    <thetext>Comment on attachment 117675
Patch

Looks good to me!

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

&gt; Source/WebCore/storage/IDBIndexBackendImpl.cpp:119
&gt; +    RefPtr&lt;IDBBackingStore::Cursor&gt; backingStoreCursor = index-&gt;m_backingStore-&gt;openIndexCursor(index-&gt;m_databaseId, index-&gt;m_objectStoreBackend-&gt;id(), index-&gt;id(), range.get(), IDBCursor::NEXT);

maybe use openIndexKeyCursor instead to avoid shipping the corresponding object store values across IPC for each index entry.

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:555
&gt; +    if (!transaction-&gt;scheduleTask(

no need to linebreak</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515125</commentid>
    <comment_count>7</comment_count>
      <attachid>117675</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-05 09:11:51 -0800</bug_when>
    <thetext>Comment on attachment 117675
Patch

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

&gt;&gt; Source/WebCore/storage/IDBIndexBackendImpl.cpp:119
&gt;&gt; +    RefPtr&lt;IDBBackingStore::Cursor&gt; backingStoreCursor = index-&gt;m_backingStore-&gt;openIndexCursor(index-&gt;m_databaseId, index-&gt;m_objectStoreBackend-&gt;id(), index-&gt;id(), range.get(), IDBCursor::NEXT);
&gt; 
&gt; maybe use openIndexKeyCursor instead to avoid shipping the corresponding object store values across IPC for each index entry.

Great catch, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515141</commentid>
    <comment_count>8</comment_count>
      <attachid>117889</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-05 09:40:55 -0800</bug_when>
    <thetext>Created attachment 117889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516803</commentid>
    <comment_count>9</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-07 11:49:39 -0800</bug_when>
    <thetext>abarth@ - can you look at the V8 &quot;binding&quot; change? (Note that IDB is still not supported with JSC)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516813</commentid>
    <comment_count>10</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-12-07 11:56:22 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 117675 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117675&amp;action=review
&gt; 
&gt; Just a drive by comment.
&gt; 
&gt; &gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:554
&gt; &gt; +    RefPtr&lt;IDBTransactionBackendInterface&gt; transactionPtr = transaction;
&gt; 
&gt; fwiw, you should be able to pass these directly into createCallbackTask.

This issue still exists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516816</commentid>
    <comment_count>11</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-07 12:00:20 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 117675 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117675&amp;action=review
&gt; &gt; 
&gt; &gt; Just a drive by comment.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:554
&gt; &gt; &gt; +    RefPtr&lt;IDBTransactionBackendInterface&gt; transactionPtr = transaction;
&gt; &gt; 
&gt; &gt; fwiw, you should be able to pass these directly into createCallbackTask.
&gt; 
&gt; This issue still exists.

Ooops, thanks. I must have cleaned up some instances of that pattern and missed the specific one you pointed out. :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516843</commentid>
    <comment_count>12</comment_count>
      <attachid>118253</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-07 12:39:35 -0800</bug_when>
    <thetext>Created attachment 118253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516865</commentid>
    <comment_count>13</comment_count>
      <attachid>118253</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-12-07 13:12:43 -0800</bug_when>
    <thetext>Comment on attachment 118253
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        a single IDBKey. That will require some IDL/binding monkeying and it

Do we have a bug open about this?  I forgot the details.

&gt; Source/WebCore/storage/IDBIndex.h:61
&gt; +    PassRefPtr&lt;IDBRequest&gt; count(ScriptExecutionContext* context, ExceptionCode&amp; ec) { return count(context, 0, ec); }

This first method will never be called because there&apos;s no binding to it, correct?

&gt; LayoutTests/storage/indexeddb/index-count.html:63
&gt; +    store = evalAndLog(&quot;index = store.index(&apos;indexName&apos;)&quot;);

Should this be &quot;index = &quot;?  It looks like the test still works because window.index was stored above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516902</commentid>
    <comment_count>14</comment_count>
      <attachid>118253</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-07 13:56:34 -0800</bug_when>
    <thetext>Comment on attachment 118253
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        a single IDBKey. That will require some IDL/binding monkeying and it
&gt; 
&gt; Do we have a bug open about this?  I forgot the details.

crbug.com/92046 crbug.com/92047 crbug.com/101384 discuss other methods; I&apos;ll file a bug for this method

&gt;&gt; Source/WebCore/storage/IDBIndex.h:61
&gt;&gt; +    PassRefPtr&lt;IDBRequest&gt; count(ScriptExecutionContext* context, ExceptionCode&amp; ec) { return count(context, 0, ec); }
&gt; 
&gt; This first method will never be called because there&apos;s no binding to it, correct?

The KeyRange argument is defined as Optional in the IDL; the generated binding code calls this first method if no arguments are passed on the JavaScript side.

&gt;&gt; LayoutTests/storage/indexeddb/index-count.html:63
&gt;&gt; +    store = evalAndLog(&quot;index = store.index(&apos;indexName&apos;)&quot;);
&gt; 
&gt; Should this be &quot;index = &quot;?  It looks like the test still works because window.index was stored above.

Good catch. But actually, in the pattern used in most of our tests:

    FOO = evalAndLog(&quot;BAR = EXPR&quot;); 

...both window.FOO and window.BAR end up being set to the result of EXPR. We don&apos;t need both, but the inner one is logged and the outer one makes subsequent local uses more readable. So this worked because nothing later was dependent on window.store. Ah, JavaScript global variables...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516905</commentid>
    <comment_count>15</comment_count>
      <attachid>118273</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-07 13:57:56 -0800</bug_when>
    <thetext>Created attachment 118273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518366</commentid>
    <comment_count>16</comment_count>
      <attachid>118600</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-09 11:43:29 -0800</bug_when>
    <thetext>Created attachment 118600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518367</commentid>
    <comment_count>17</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-09 11:44:33 -0800</bug_when>
    <thetext>This should be the final patch (same as previous, just minus the WebKit/chromium/public changes). Needs to wait for the Chromium side to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522914</commentid>
    <comment_count>18</comment_count>
      <attachid>118600</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-16 12:13:58 -0800</bug_when>
    <thetext>Comment on attachment 118600
Patch

Chromium side has landed, should be good to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522915</commentid>
    <comment_count>19</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-16 12:15:04 -0800</bug_when>
    <thetext>tony@, can you r? cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522921</commentid>
    <comment_count>20</comment_count>
      <attachid>118600</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-12-16 12:20:54 -0800</bug_when>
    <thetext>Comment on attachment 118600
Patch

IDB functionality LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522946</commentid>
    <comment_count>21</comment_count>
      <attachid>118600</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-12-16 12:42:13 -0800</bug_when>
    <thetext>Comment on attachment 118600
Patch

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

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:566
&gt; +    do {
&gt; +        ++count;
&gt; +    } while (backingStoreCursor-&gt;continueFunction(0));

This seems really inefficient.  Is this the only way to get the count?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522971</commentid>
    <comment_count>22</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-12-16 13:15:22 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 118600 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118600&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:566
&gt; &gt; +    do {
&gt; &gt; +        ++count;
&gt; &gt; +    } while (backingStoreCursor-&gt;continueFunction(0));
&gt; 
&gt; This seems really inefficient.  Is this the only way to get the count?

LevelDB doesn&apos;t have a count primitive, at the moment. We&apos;ll need to follow up on that as we do some IDB refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522983</commentid>
    <comment_count>23</comment_count>
      <attachid>118600</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-16 13:27:22 -0800</bug_when>
    <thetext>Comment on attachment 118600
Patch

Clearing flags on attachment: 118600

Committed r103100: &lt;http://trac.webkit.org/changeset/103100&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522985</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-16 13:27:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117675</attachid>
            <date>2011-12-02 13:15:19 -0800</date>
            <delta_ts>2011-12-05 09:40:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73686-20111202131519.patch</filename>
            <type>text/plain</type>
            <size>55715</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmI3ZDU2OWRjNjJmNTg2
MGMyMTZiZmYwZWQ4YjdhZDQxMGVmMWE0Yi4uNTIxNGRhNGFkMDI3OGE3YjJkYzk0YjkzZDc2ZDM2
YzYyM2NhMDlhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTEyLTAyICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBs
ZW1lbnQgSURCT2JqZWN0U3RvcmUuY291bnQoKSBhbmQgSURCSW5kZXguY291bnQoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM2ODYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3RlIHRoYXQgb25seSB0
aGUgKG9wdGlvbmFsKSBJREJLZXlSYW5nZSBhcmd1bWVudCBpcyBzdXBwb3J0ZWQsIG5vdAorICAg
ICAgICBhIHNpbmdsZSBJREJLZXkuIFRoYXQgd2lsbCByZXF1aXJlIHNvbWUgSURML2JpbmRpbmcg
bW9ua2V5aW5nIGFuZCBpdAorICAgICAgICBhcHBsaWVzIHRvIHNldmVyYWwgb3RoZXIgbWV0aG9k
cyBhcyB3ZWxsLgorCisgICAgICAgIFRlc3RzOiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3Vu
dC5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3Vu
dC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudW1iZXJWYWx1ZSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAg
ICogc3RvcmFnZS9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3Bl
bkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Y291bnQpOgorICAgICAgICAq
IHN0b3JhZ2UvSURCSW5kZXguaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpjb3VudCk6
CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJJ
bmRleEJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZElt
cGw6OmNvdW50SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1w
bDo6Y291bnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogc3Rv
cmFnZS9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZTo6Y291bnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6CisgICAgICAgICogc3RvcmFnZS9JREJP
YmplY3RTdG9yZS5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50
SW50ZXJuYWwpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5o
OgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmg6CisK
IDIwMTEtMTItMDIgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogU3BsaXQgdmlldyB3b3JrcyB3ZWlyZGx5IGluIG5ldHdvcmsg
cGFuZWwgd2hlbiByZXNpemluZywgc2hvd2luZy9oaWRpbmcgbWFpbiBlbGVtZW50LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAwOGI4N2Q4ZDFmOTI3YjBiOWQzMmJmMzc3NjdkNjkwYjY4
NzNjZTkyLi5hYzkxZmI0M2YwMzE4ZjM5MzcyZjFmNTc1Y2I4MTJhMWNjNmJkYmJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDExLTEyLTAyICBKb3NodWEg
QmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBsZW1l
bnQgSURCT2JqZWN0U3RvcmUuY291bnQoKSBhbmQgSURCSW5kZXguY291bnQoKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM2ODYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBURU1QT1JBUlk6IFRoZSBXZWJL
aXQgQVBJIGNoYW5nZXMgKHB1YmxpYy9XZWJJREIqLmgpIHdpbGwgbGFuZCBmaXJzdAorICAgICAg
ICBhbmQgYXJlIHRyYWNrZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTczNjg1IC0gaW5jbHVkaW5nCisgICAgICAgIGhlcmUgdW50aWwgdGhhdCBsYW5kcyBvciB0
aGlzIHdvbid0IGJ1aWxkLgorCisgICAgICAgICogcHVibGljL1dlYklEQkluZGV4Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkluZGV4Ojpjb3VudCk6CisgICAgICAgICogcHVibGljL1dlYklE
Qk9iamVjdFN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjpjb3Vu
dCk6CisgICAgICAgICogc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SURCSW5kZXhCYWNrZW5kUHJveHk6OmNvdW50KToKKyAgICAgICAgKiBzcmMvSURCSW5k
ZXhCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBzcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y291
bnQpOgorICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oOgorICAgICAg
ICAqIHNyYy9XZWJJREJJbmRleEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRl
eEltcGw6OmNvdW50KToKKyAgICAgICAgKiBzcmMvV2ViSURCSW5kZXhJbXBsLmg6CisgICAgICAg
ICogc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklE
Qk9iamVjdFN0b3JlSW1wbDo6Y291bnQpOgorICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9y
ZUltcGwuaDoKKwogMjAxMS0xMi0wMiAgU2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1ha2UgQ0NJbnB1dEhhbmRsZXIgc2Nyb2xsaW5n
IHN0YXRlZnVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAppbmRleCA3MDMxYTU1MjIyNzBlNTk1MDAxNWM3MzEyOWFhMjkzYmIy
MjgxODU2Li42OGMzMzE2YmNmNDkwYjE1ZGE5NDY4NmEyNzI2YzQ4Y2VlYzMyNDUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKQEAgLTIxMjQsNiArMjEyNCwxNCBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpib29sZWFuVmFsdWUoYm9vbCB2YWx1ZQogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHdpcmVEYXRhKSk7CiB9CiAK
K1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
Om51bWJlclZhbHVlKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBXcml0ZXIgd3JpdGVyOworICAgIHdy
aXRlci53cml0ZU51bWJlcih2YWx1ZSk7CisgICAgU3RyaW5nIHdpcmVEYXRhID0gU3RyaW5nSW1w
bDo6YWRvcHQod3JpdGVyLmRhdGEoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxp
emVkU2NyaXB0VmFsdWUod2lyZURhdGEpKTsKK30KKwogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6cmVsZWFzZSgpCiB7CiAgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcmVzdWx0ID0gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShtX2RhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggMjVkYTg4OWIwODdkMTVmZjQ0MThmZGFkZTM1
MGQ0YmVlZjY0NjNhMi4uZDNhNjY4Yjk4M2M0MGFiNGIzOGFhNjc3ZmQzNzczM2IzMzA0YzFlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIG51bGxWYWx1ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gdW5kZWZpbmVkVmFsdWUoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGJvb2xlYW5WYWx1ZShib29sIHZhbHVlKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG51bWJlclZhbHVlKGRvdWJsZSB2YWx1
ZSk7CiAKICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcmVsZWFzZSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwCmluZGV4IDcwOTYxMzAyM2M3NzAzY2UzOWU1
ZGI2NGIzYWE2NDI3OGUwNzEwYWYuLmJmMmQzOGFmMmIxN2YyODU2MDA2MGFhMjEzN2QyOWFkZDFl
MmFhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwCkBAIC03Myw2ICs3MywxNyBA
QCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhcwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCitQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0Ojpj
cmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkp
OworICAgIG1fYmFja2VuZC0+Y291bnQoa2V5UmFuZ2UsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24t
PmJhY2tlbmQoKSwgZWMpOworICAgIGlmIChlYykgeworICAgICAgICByZXF1ZXN0LT5tYXJrRWFy
bHlEZWF0aCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlcXVlc3Q7
Cit9CisKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5
UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgaWYgKGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6Ok5FWFQgJiYgZGlyZWN0aW9uICE9IElEQkN1
cnNvcjo6TkVYVF9OT19EVVBMSUNBVEUgJiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6UFJFViAm
JiBkaXJlY3Rpb24gIT0gSURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5oIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJJbmRleC5oCmluZGV4IDBhNmI0YjNmYWIzYmNmZjFmYmIxMjkzMTgxYWFlYmYwYzY0
MDM1OTEuLjFmM2NiNTk5NWYwYzRmMTRjMGQzY2JiMDc1OGEyMmYxNzRmY2FlZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkluZGV4LmgKQEAgLTU4LDYgKzU4LDggQEAgcHVibGljOgogICAgIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCAwLCBl
Yyk7IH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4
Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLCBJ
REJDdXJzb3I6Ok5FWFQsIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1
cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVu
c2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0
aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNvdW50KGNvbnRleHQsIDAsIGVjKTsgfQorICAgIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwgMCwgZWMpOyB9
IAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwga2V5UmFuZ2Us
IElEQkN1cnNvcjo6TkVYVCwgZWMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkluZGV4LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaWRsCmlu
ZGV4IDk5ZTM4MmZjYWIzN2NmMzEzNjc0MGNkMWI1NzJlYjQ1ZTg3OTdlODAuLjQzNzNjYTkyMmE0
N2NkOWQ5NTRjMzZlNzI0NWU5MjFmNDhjOGZjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCSW5kZXguaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5k
ZXguaWRsCkBAIC0zNiw2ICszNiw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKIAogICAgICAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGluIFtP
cHRpb25hbF0gSURCS2V5UmFuZ2UgcmFuZ2UsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQg
ZGlyZWN0aW9uKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7Cisg
ICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGNvdW50
KGluIFtPcHRpb25hbF0gSURCS2V5UmFuZ2UgcmFuZ2UpCisgICAgICAgICAgICByYWlzZXMgKElE
QkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihpbiBbT3B0aW9uYWxdIElEQktleVJhbmdl
IHJhbmdlLCBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbikKICAgICAgICAg
ICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBnZXQoaW4gSURCS2V5IGtleSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCmluZGV4IGEzMjk4
YjUyNzRkNjMyMGMzZDVmZjFlMDVhYTBmMzU5ZDBiZWU5MzguLjc1YTI2MDEwNjY0NWFkMmE5ZDVh
ZDIwY2FhYWU4NTAxNWViMzQwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJ
bmRleEJhY2tlbmRJbXBsLmNwcApAQCAtMTEyLDYgKzExMiwzMyBAQCB2b2lkIElEQkluZGV4QmFj
a2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2Us
IHVuc2lnbgogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9F
UlI7CiB9CiAKK3ZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnRJbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFu
c2FjdGlvbikKK3sKKyAgICB1aW50MzJfdCBjb3VudCA9IDA7CisKKyAgICBSZWZQdHI8SURCQmFj
a2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvciA9IGluZGV4LT5tX2JhY2tpbmdT
dG9yZS0+b3BlbkluZGV4Q3Vyc29yKGluZGV4LT5tX2RhdGFiYXNlSWQsIGluZGV4LT5tX29iamVj
dFN0b3JlQmFja2VuZC0+aWQoKSwgaW5kZXgtPmlkKCksIHJhbmdlLmdldCgpLCBJREJDdXJzb3I6
Ok5FWFQpOworICAgIGlmICghYmFja2luZ1N0b3JlQ3Vyc29yKSB7CisgICAgICAgIGNhbGxiYWNr
cy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVtYmVyVmFsdWUoY291bnQpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRvIHsKKyAgICAgICAgKytjb3VudDsKKyAg
ICB9IHdoaWxlIChiYWNraW5nU3RvcmVDdXJzb3ItPmNvbnRpbnVlRnVuY3Rpb24oMCkpOworICAg
IGJhY2tpbmdTdG9yZUN1cnNvci0+Y2xvc2UoKTsKKyAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bWJlclZhbHVlKGNvdW50KSk7Cit9CisKK3ZvaWQgSURC
SW5kZXhCYWNrZW5kSW1wbDo6Y291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFu
Z2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IHRoaXM7CisgICAgUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSA9IHBycEtleVJhbmdlOworICAgIFJlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uUHRyOworICAgIGlm
ICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmNvdW50SW50
ZXJuYWwsIGluZGV4LCBrZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQorICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7Cit9CisKIHZvaWQg
SURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBwcnBLZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRy
YW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW1wbD4gaW5kZXggPSB0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQklu
ZGV4QmFja2VuZEltcGwuaAppbmRleCA0MGQzMzMzNGI5NTE1NTMxYzIxMzM2MmI1OTJmOTBmMTlh
YmY3NTYyLi44N2U1OTJhNjU0NGIyNjE5MDBhZTRhYmM2NDQwZGI2N2E0MTJlZGNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuaApAQCAtNjgsNiArNjgs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG11bHRpZW50cnkoKSB7IHJldHVybiBtX211
bHRpZW50cnk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCBjb3VudChQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5LZXlDdXJzb3IoUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgdmlydHVhbCB2b2lkIGdldChQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRLZXkoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlv
bkNvZGUmKTsKQEAgLTc3LDYgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBJREJJbmRleEJhY2tlbmRJ
bXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9y
ZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGllbnRy
eSk7CiAKICAgICBzdGF0aWMgdm9pZCBvcGVuQ3Vyc29ySW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2U6OkN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKKyAgICBzdGF0aWMgdm9pZCBjb3VudElu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEltcGw+LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHN0YXRp
YyB2b2lkIGdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QkluZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4sIGJvb2wgZ2V0T2JqZWN0LCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCiAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgSW52
YWxpZElkID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhC
YWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2Vu
ZEludGVyZmFjZS5oCmluZGV4IGE5NGRmODI1YjVhNDI5OGU5MzBmMDgwNTI0NTRlZjRlZTZkMzUy
ZjcuLjQ0ODdjYjcwNjNiYTczNmRjMTEzOGY4YTNjN2YxNzJkZjYyYjBlNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTIs
NiArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG11bHRpZW50cnkoKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5z
aWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5LZXlDdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEtleShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0
aW9uQ29kZSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAK
aW5kZXggY2ZlYTE1M2M5ZDVjZTcwMzQ1Mjk4YzA0OTkwYjlhZjcxYWFiOGM2YS4uNDhkYWI4ZDg1
OTkyMWViYzUxMzUyNGJlZjViNDQwMjQ0OWY2MjNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTIwMiw2ICsyMDIsMTcgQEAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXgKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0
ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7Cisg
ICAgbV9iYWNrZW5kLT5jb3VudChyYW5nZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2Vu
ZCgpLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURlYXRo
KCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNl
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCmluZGV4
IDliNWFhNmIyZDNmNTM3MzFiYzYxNjU5Yjk2NTZjMzYzNDliY2YyNmIuLjgwYmJlMDhhOWFjYWFm
YWY0ZmM0YzhlZDZhZDQwMTI0NWE3NGIyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlLmgKQEAgLTc4LDYgKzc4LDggQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlSW5k
ZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUm
KTsgCisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY291bnQoY29udGV4dCwg
MCwgZWMpOyB9CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKIAog
cHJpdmF0ZToKICAgICBJREJPYmplY3RTdG9yZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZT4sIElEQlRyYW5zYWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCT2JqZWN0U3RvcmUuaWRsCmluZGV4IDAzOTMyZTc3MTk1MmViYTFhN2VmNjZkMWY3OThjNzBm
YWU0ZjlhYTIuLjgwZGNlNjUwYWQ5NzU5YmRjYjQ1YWIxYmNkMWU1OWQzNWEyMDFlNGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsCkBAIC00NSw2ICs0NSw4IEBA
IG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRp
b24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVz
dCBvcGVuQ3Vyc29yKGluIFtPcHRpb25hbF0gSURCS2V5UmFuZ2UgcmFuZ2UsIGluIFtPcHRpb25h
bF0gdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRh
YmFzZUV4Y2VwdGlvbik7CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSBJREJSZXF1ZXN0IGNvdW50KGluIFtPcHRpb25hbF0gSURCS2V5UmFuZ2UgcmFuZ2UpCisgICAg
ICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgSURCSW5kZXgg
Y3JlYXRlSW5kZXgoaW4gRE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmluZyBrZXlQYXRoLCBpbiBb
T3B0aW9uYWxdIE9wdGlvbnNPYmplY3Qgb3B0aW9ucykKICAgICAgICAgICAgIHJhaXNlcyAoSURC
RGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBJREJJbmRleCBpbmRleChpbiBET01TdHJpbmcg
bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwCmluZGV4IGJkMGMzZjAwM2RhYjYxZmM3Y2Y4N2FiNDQ3NjdjNThjMWFiNzM2
NGEuLmJhMzg3YzUwZWJkNTNmODMwN2VmYWFjZjRhNTdhNjExZjQ2YjdiMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApA
QCAtNTQ2LDYgKzU0NiwzNiBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5D
dXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzcwogICAgIGNhbGxiYWNr
cy0+b25TdWNjZXNzKGN1cnNvci5yZWxlYXNlKCkpOwogfQogCit2b2lkIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OmNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycFJhbmdlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOworICAgIFJlZlB0
cjxJREJLZXlSYW5nZT4gcmFuZ2UgPSBwcnBSYW5nZTsKKyAgICBSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25QdHIgPSB0cmFuc2FjdGlvbjsKKyAgICBpZiAoIXRy
YW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCisgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2so
JklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50SW50ZXJuYWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUsIHJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0
aW9uUHRyKSkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9X
RURfRVJSOworICAgIH0KK30KKwordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3Vu
dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5n
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQoreworICAgIHVpbnQzMl90IGNv
dW50ID0gMDsKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9y
ZUN1cnNvciA9IG9iamVjdFN0b3JlLT5tX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vy
c29yKG9iamVjdFN0b3JlLT5tX2RhdGFiYXNlSWQsIG9iamVjdFN0b3JlLT5pZCgpLCByYW5nZS5n
ZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKKyAgICBpZiAoIWJhY2tpbmdTdG9yZUN1cnNvcikgewor
ICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bWJl
clZhbHVlKGNvdW50KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkbyB7CisgICAg
ICAgICsrY291bnQ7CisgICAgfSB3aGlsZSAoYmFja2luZ1N0b3JlQ3Vyc29yLT5jb250aW51ZUZ1
bmN0aW9uKDApKTsKKworICAgIGJhY2tpbmdTdG9yZUN1cnNvci0+Y2xvc2UoKTsKKyAgICBjYWxs
YmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bWJlclZhbHVlKGNvdW50
KSk7Cit9CisKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bG9hZEluZGV4ZXMoKQog
ewogICAgIFZlY3RvcjxpbnQ2NF90PiBpZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCmluZGV4IDM4MGM3ZTE0MWQ2NjEwYTAwMjhi
ODgzNjBkNDY3YTc3NGQ2ZWUyMzIuLjIxYmYzZjQ5YmYzOWQzMmZkODUzMzkwYWNlYmUzYWUwYWY4
OTgxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5oCkBAIC03Niw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnQoUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgc3RhdGljIGJvb2wgcG9wdWxhdGVJ
bmRleChJREJCYWNraW5nU3RvcmUmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPik7CiAKQEAgLTk1LDYgKzk2
LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVJbmRleEludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+
LCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUluZGV4SW50ZXJu
YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgc3RhdGljIHZvaWQgb3BlbkN1cnNv
ckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQg
c2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CisgICAgc3RhdGljIHZvaWQgY291bnRJbnRl
cm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKIAogICAg
IC8vIFRoZXNlIGFyZSB1c2VkIGFzIHNldFZlcnNpb24gdHJhbnNhY3Rpb24gYWJvcnQgdGFza3Mu
CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlSW5kZXhGcm9tTWFwKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElE
QkluZGV4QmFja2VuZEltcGw+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDc5ZDRiZDYyZDA4NDhmNzg5
YTNhYTQ4ODM1YjNkMDIyNWMyMmQ2ZDcuLjFjNjc2Zjc4ODgxMzM5NGRkN2QzZDgzYTFlZTUwNzA1
OGU2ZTY0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBk
aXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnQo
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkluZGV4LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
REJJbmRleC5oCmluZGV4IDgzM2EwNmM2MGNiY2I3YTNmNThjMzQ0OGM1YjQ3ZWQyMTg2ZGRlMzQu
LjZhYzE2M2RkOGUwYTQ2MGFlMDI5MTQ5NTAxOTVjNzk1MzMxNDRlNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkluZGV4LmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCSW5kZXguaApAQCAtNjksNiArNjksNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgb3Blbk9iamVjdEN1cnNvcihjb25zdCBXZWJJREJLZXlS
YW5nZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3Qg
V2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb3BlbktleUN1cnNvcihjb25zdCBXZWJJ
REJLZXlSYW5nZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiwg
Y29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY291bnQoY29uc3QgV2ViSURC
S2V5UmFuZ2UmLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdl
YkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBnZXRPYmplY3QoY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJhY2tzKiwg
Y29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0S2V5KGNvbnN0IFdlYklE
QktleSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhj
ZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCmluZGV4IDZi
ODk2MzkwMWU3YzRiOTAxNjdiNWY3OGQ5YzcxMzYyNGViYWQyMzAuLmUwNGE3MzQ1MGZjMDVmMTVk
NGRmOGQwM2FiNWNkMmQ3MTZkMjIyYmQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaApAQCAtODgsNiArODgsNyBAQCBwdWJsaWM6CiAg
ICAgfQogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUs
IGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoY29uc3Qg
V2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNr
cyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGNvdW50KGNvbnN0IFdl
YklEQktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24m
LCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAog
cHJvdGVjdGVkOgogICAgIFdlYklEQk9iamVjdFN0b3JlKCkge30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcAppbmRleCAwODJlZGUx
ZTU5OTY4ZWU3M2QwZTQ0MjMzNGExMjg2M2Y2MTRhZjllLi5iMjM3ZTE4ZmQwMjdhMzg3OGJlODg2
ZmY1NzU0OGQzODE3ZWU4Yzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwCkBAIC04OCw2ICs4OCwxNCBAQCB2b2lkIElEQklu
ZGV4QmFja2VuZFByb3h5OjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlLCB1bnNpZ25lZAogICAgIG1fd2ViSURCSW5kZXgtPm9wZW5PYmplY3RDdXJzb3Ioa2V5UmFu
Z2UsIGRpcmVjdGlvbiwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5z
YWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsKIH0KIAordm9pZCBJREJJ
bmRleEJhY2tlbmRQcm94eTo6Y291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2Us
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIFRo
ZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEg
cHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCisgICAgLy8gYWxsIGltcGxlbWVudGF0
aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KKyAgICBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5z
YWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOworICAgIG1fd2ViSURCSW5kZXgtPmNv
dW50KGtleVJhbmdlLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCAqdHJhbnNh
Y3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpOworfQorCiB2b2lkIElEQklu
ZGV4QmFja2VuZFByb3h5OjpvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtl
eVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlz
IGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUg
cmVuZGVyZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRl
eEJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNr
ZW5kUHJveHkuaAppbmRleCA3MjdlMzdmMThhMTNkZTNkNjEwOGRkMmI5YjJhYWQwZGQ2M2IwZDZm
Li5hYTQ3YmU3MzQ4MTVlN2IyYWU1NWU1OTFjNDE5ZDg2MzAyOWVjMWJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmgKQEAgLTQ5LDYg
KzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lk
IG9wZW5LZXlDdXJzb3IoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIHVuc2lnbmVk
IHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlJik7CisgICAgdmlydHVhbCB2b2lkIGNvdW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5
UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGdl
dEtleShQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
Q2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggNzBjMDRlZjI4
MDc0OWNjMDllZDAwZTZjZWNlYjg3ZDU2OTJiZjk3Zi4uNWNhZTlkZDNmZTc5MTY4YTg5ZWNkYWZl
ODA2MzY4MWJmZThiNWVmOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcApAQCAtMTQxLDYgKzE0MSwxNCBA
QCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+IHJhbmdlLCB1bnNpZwogICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPm9wZW5D
dXJzb3IocmFuZ2UsIGRpcmVjdGlvbiwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tz
KSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsKIH0KIAor
dm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y291bnQoUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBw
b2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCisgICAgLy8gYWxs
IGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KKyAg
ICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19j
YXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOworICAgIG1fd2Vi
SURCT2JqZWN0U3RvcmUtPmNvdW50KHJhbmdlLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxs
YmFja3MpLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0
U3RvcmVCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVj
dFN0b3JlQmFja2VuZFByb3h5LmgKaW5kZXggMmQ2MmYwYTk1ZTlmNDMwY2ZhNjVmNWIwNTA5NWJj
NmNlNDI4OGI5Yy4uNjYyMjU2NmY3MjA4YzkwNTczOTU5Mzk4OTIyNDNhMDY1MjcyMDc4ZCAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5k
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJh
Y2tlbmRQcm94eS5oCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdmlydHVhbCB2b2lkIG9w
ZW5DdXJzb3IoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0
IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7
CisgICAgdmlydHVhbCB2b2lkIGNvdW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0
ZToKICAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eShQYXNzT3duUHRyPFdlYklEQk9iamVj
dFN0b3JlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJ
bmRleEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBs
LmNwcAppbmRleCA0OTNjYjRhZDc4ZjExNTZiOTZhMzNkOWJhYTZkNDMzMjUxMzY2NWUxLi45YmE4
YzY5M2UwMzcyOTk3NDMwMWQ2MWY1YWI0M2JjYzBlNTIxN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAKQEAgLTgzLDYgKzgzLDExIEBAIHZv
aWQgV2ViSURCSW5kZXhJbXBsOjpvcGVuS2V5Q3Vyc29yKGNvbnN0IFdlYklEQktleVJhbmdlJiBr
ZXlSYW5nZSwgdW5zaWduZWQgc2hvCiAgICAgbV9iYWNrZW5kLT5vcGVuS2V5Q3Vyc29yKGtleVJh
bmdlLCBkaXJlY3Rpb24sIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJh
Y2tzKSksIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBl
Yyk7CiB9CiAKK3ZvaWQgV2ViSURCSW5kZXhJbXBsOjpjb3VudChjb25zdCBXZWJJREJLZXlSYW5n
ZSYga2V5UmFuZ2UsICBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBtX2Jh
Y2tlbmQtPmNvdW50KGtleVJhbmdlLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRy
KGNhbGxiYWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UoKSwgZWMpOworfQorCiB2b2lkIFdlYklEQkluZGV4SW1wbDo6Z2V0T2JqZWN0KGNvbnN0IFdl
YklEQktleSYga2V5UmFuZ2UsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJ
REJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IG1fYmFja2VuZC0+Z2V0KGtleVJhbmdlLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0
UHRyKGNhbGxiYWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UoKSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCSW5kZXhJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleElt
cGwuaAppbmRleCA3MDhlZjgzODcwZDIyZjk1YmFjMDg0NWM4NzcyMTE4ZDM4ZTZjNWMxLi5mNTBj
MGFlOTBlMGFkN2UzMTlhNzUyNjM1OWYzMDMyNWJmOWIzOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgb3Blbk9iamVjdEN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5n
ZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2Vi
SURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7IAogICAgIHZpcnR1YWwgdm9pZCBv
cGVuS2V5Q3Vyc29yKGNvbnN0IFdlYklEQktleVJhbmdlJiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0
aW9uLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnQoY29uc3QgV2ViSURCS2V5UmFuZ2Um
LCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0KGNvbnN0IFdlYklEQktleSYsIFdl
YklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRLZXkoY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2Fs
bGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3Jl
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUlt
cGwuY3BwCmluZGV4IDU1ZTM3YjI1YWFiZWUyZDUyMmZlODQ5YzZjNGQ0MTY4M2Q2N2RmNjAuLjA3
YWNlOTZjODc4ODcxZDg3M2JhNTkzZWExNjg5Y2U4M2M5OTZiMzMgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMTEz
LDYgKzExMywxMSBAQCB2b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6b3BlbkN1cnNvcihjb25z
dCBXZWJJREJLZXlSYW5nZSYga2V5UmFuZ2UsIHVuc2lnbmVkCiAgICAgbV9vYmplY3RTdG9yZS0+
b3BlbkN1cnNvcihrZXlSYW5nZSwgZGlyZWN0aW9uLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRl
KGFkb3B0UHRyKGNhbGxiYWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UoKSwgZWMpOwogfQogCit2b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6Y291
bnQoY29uc3QgV2ViSURCS2V5UmFuZ2UmIGtleVJhbmdlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxi
YWNrcywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBtX29iamVjdFN0b3JlLT5jb3VudChrZXlSYW5nZSwgSURCQ2FsbGJh
Y2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgdHJhbnNhY3Rpb24uZ2V0SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggODg0
YTA3ZjBmNzU4M2U3NDc3MThiNjJmZDlmY2E5Njc1ODI1NjJiYS4uNTQwNTU1MGE1NWZkMmFlZWY1
MzdjYWNiNWQ0ZGI4Y2NjZjVhOGYyOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJU
cmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgb3BlbkN1cnNvcihj
b25zdCBXZWJJREJLZXlSYW5nZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2Fs
bGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7Cisg
ICAgdm9pZCBjb3VudChjb25zdCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkNhbGxiYWNrcyosIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogCiAgcHJpdmF0ZToK
ICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+
IG1fb2JqZWN0U3RvcmU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjEwZDQ4ZWY1M2RiODRiYWMzOGUxN2FhYmIyYTU2ZGM4
YTRhMDI0YS4uNWY3MGE0OGNlZGRkZGNmOTcxNTc5MzlkN2Y2OTFiYmI1MzU5MmE0NiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDExLTEyLTAyICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBsZW1lbnQgSURCT2JqZWN0U3RvcmUuY291
bnQoKSBhbmQgSURCSW5kZXguY291bnQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzM2ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWw6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1s
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291
bnQuaHRtbDogQWRkZWQuCisKIDIwMTEtMTEtMjggIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmxpbmUgbm9uLXJlcGxhY2VkIGVsZW1lbnRzIGFy
ZSByZXBvcnRlZCB0byBoYXZlIHplcm8gd2lkdGggYW5kIGhlaWdodApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50eHQKaW5k
ZXggMGE2MWMzMjRmYWEwOWQzY2Y2OTgwMDdkZWRkYTIyNWJkNDViNTJhNS4uMzlhZjA2NGQ0OThm
ZGI5MGRkYTU0MjQzOTM5YzNmNTkxZmMwZTZjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC0yNSw5ICsy
NSwxNSBAQCBQQVNTICdtdWx0aWVudHJ5JyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCiBQQVNTIGlu
ZGV4T2JqZWN0LnVuaXF1ZSBpcyBmYWxzZQogUEFTUyBpbmRleE9iamVjdC5tdWx0aWVudHJ5IGlz
IGZhbHNlCiBQQVNTICdvcGVuS2V5Q3Vyc29yJyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCitQQVNT
IHR5cGVvZiBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yIGlzICJmdW5jdGlvbiIKIFBBU1MgJ29w
ZW5DdXJzb3InIGluIGluZGV4T2JqZWN0IGlzIHRydWUKK1BBU1MgdHlwZW9mIGluZGV4T2JqZWN0
Lm9wZW5DdXJzb3IgaXMgImZ1bmN0aW9uIgogUEFTUyAnZ2V0S2V5JyBpbiBpbmRleE9iamVjdCBp
cyB0cnVlCitQQVNTIHR5cGVvZiBpbmRleE9iamVjdC5nZXRLZXkgaXMgImZ1bmN0aW9uIgogUEFT
UyAnZ2V0JyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCitQQVNTIHR5cGVvZiBpbmRleE9iamVjdC5n
ZXQgaXMgImZ1bmN0aW9uIgorUEFTUyAnY291bnQnIGluIGluZGV4T2JqZWN0IGlzIHRydWUKK1BB
U1MgdHlwZW9mIGluZGV4T2JqZWN0LmNvdW50IGlzICJmdW5jdGlvbiIKIHN0b3JlLmFkZCh7eDog
J3ZhbHVlJywgeTogJ3p6eicsIHo6IDIuNzJ9LCAna2V5JykKIGV2ZW50LnRhcmdldC5zb3VyY2Uu
YWRkKHt4OiAndmFsdWUyJywgeTogJ3p6ejInLCB6OiAyLjcxLCBmb29iYXI6IDEyfSwgJ2tleTIn
KQogc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4V2hpbGVBZGRJc0luRmxpZ2h0JywgJ3gnKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRtbAppbmRleCAz
MDllNzVlZDM5OGRkZmNiNDUwNTY2NGQ2ZWJhYTc4NDNmMTBhNDdmLi5kYzlmNWVhNDdhMWUyMjk1
Yjc3MzhkNDg3YzE3MTJhZWQyZDhjNmU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRtbApAQCAtNTcsOSArNTcsMTUgQEAgZnVuY3Rpb24gYWRk
RGF0YSgpCiAgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhPYmplY3QudW5pcXVlIik7CiAgICAgc2hv
dWxkQmVGYWxzZSgiaW5kZXhPYmplY3QubXVsdGllbnRyeSIpOwogICAgIHNob3VsZEJlVHJ1ZSgi
J29wZW5LZXlDdXJzb3InIGluIGluZGV4T2JqZWN0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ0eXBlb2YgaW5kZXhPYmplY3Qub3BlbktleUN1cnNvciIsICJmdW5jdGlvbiIpOwogICAg
IHNob3VsZEJlVHJ1ZSgiJ29wZW5DdXJzb3InIGluIGluZGV4T2JqZWN0Iik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgaW5kZXhPYmplY3Qub3BlbkN1cnNvciIsICJmdW5jdGlv
biIpOwogICAgIHNob3VsZEJlVHJ1ZSgiJ2dldEtleScgaW4gaW5kZXhPYmplY3QiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRleE9iamVjdC5nZXRLZXkiLCAiZnVuY3Rp
b24iKTsKICAgICBzaG91bGRCZVRydWUoIidnZXQnIGluIGluZGV4T2JqZWN0Iik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgaW5kZXhPYmplY3QuZ2V0IiwgImZ1bmN0aW9uIik7
CisgICAgc2hvdWxkQmVUcnVlKCInY291bnQnIGluIGluZGV4T2JqZWN0Iik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgaW5kZXhPYmplY3QuY291bnQiLCAiZnVuY3Rpb24iKTsK
IAogICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6
enonLCB6OiAyLjcyfSwgJ2tleScpIik7CiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGREYXRh
MjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMWI4MTdmODMwNDVlNzM5MzFkMjE4ZjgxN2EyZjk4
YmViZmNhZDU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvaW5kZXgtY291bnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOTMgQEAKK1Rlc3QgSW5kZXhl
ZERCJ3MgSURCSW5kZXguY291bnQoKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K3dpbmRvdy5pbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRl
eGVkREIKK3dpbmRvdy5JREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3
aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb24KK3dpbmRvdy5JREJLZXlSYW5nZSA9IHdpbmRvdy5J
REJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2UKK2luZGV4ZWREQi5vcGVuKCdp
bmRleC1jb3VudCcpCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK2RiLnNldFZlcnNpb24oJ25l
dyB2ZXJzaW9uJykKKworcHJlcGFyaW5nIGRhdGFiYXNlCit0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQKK1BBU1MgdHJhbnMgIT09IG51bGwgaXMgdHJ1ZQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0
b3Jlcy4KK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpCitz
dG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJycpCitQQVNTIHN0b3JlLmluZGV4TmFtZXMu
Y29udGFpbnMoJ2luZGV4TmFtZScpIGlzIHRydWUKK2FkZGluZyAwIC4uLiA5OQorCit2ZXJpZnlp
bmcgY291bnQgd2l0aG91dCByYW5nZQordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1l
JywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorUEFTUyB0cmFucyAhPSBudWxsIGlzIHRydWUK
K3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCitQQVNTIHN0b3JlICE9IG51
bGwgaXMgdHJ1ZQoraW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXhOYW1lJykKK1BBU1MgaW5kZXgg
IT0gbnVsbCBpcyB0cnVlCityZXF1ZXN0ID0gaW5kZXguY291bnQoKQorUEFTUyB0eXBlb2YgcmVx
dWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyAx
MDAKKwordmVyaWZ5aW5nIGNvdW50IHdpdGggcmFuZ2UKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24o
J3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkKK1BBU1MgdHJhbnMgIT0gbnVs
bCBpcyB0cnVlCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorUEFTUyBz
dG9yZSAhPSBudWxsIGlzIHRydWUKK2luZGV4ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScpLmluZGV4KCdpbmRleE5hbWUnKQorUEFTUyBpbmRleCAhPSBudWxsIGlzIHRydWUKKwordGVz
dCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVyIjo5OSwidXBwZXJPcGVuIjpm
YWxzZSwiZXhwZWN0ZWQiOjEwMH0KK3JlcXVlc3QgPSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5i
b3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9w
ZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQorUEFT
UyByZXF1ZXN0LnJlc3VsdCBpcyAxMDAKKwordGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6
dHJ1ZSwidXBwZXIiOjk5LCJ1cHBlck9wZW4iOmZhbHNlLCJleHBlY3RlZCI6OTl9CityZXF1ZXN0
ID0gaW5kZXguY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwg
dGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVz
dWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgOTkKKwordGVz
dCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVyIjo5OSwidXBwZXJPcGVuIjp0
cnVlLCJleHBlY3RlZCI6OTl9CityZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5UmFuZ2UuYm91
bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVu
KSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1Mg
cmVxdWVzdC5yZXN1bHQgaXMgOTkKKwordGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6dHJ1
ZSwidXBwZXIiOjk5LCJ1cHBlck9wZW4iOnRydWUsImV4cGVjdGVkIjo5OH0KK3JlcXVlc3QgPSBp
bmRleC5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0
Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQg
PT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyA5OAorCit0ZXN0ID0g
eyJsb3dlciI6MCwibG93ZXJPcGVuIjpmYWxzZSwidXBwZXIiOjEwMCwidXBwZXJPcGVuIjpmYWxz
ZSwiZXhwZWN0ZWQiOjEwMH0KK3JlcXVlc3QgPSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5ib3Vu
ZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4p
KQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyBy
ZXF1ZXN0LnJlc3VsdCBpcyAxMDAKKwordGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6ZmFs
c2UsInVwcGVyIjoxMDAsInVwcGVyT3BlbiI6ZmFsc2UsImV4cGVjdGVkIjoxMDB9CityZXF1ZXN0
ID0gaW5kZXguY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwg
dGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVz
dWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMTAwCisKK3Rl
c3QgPSB7Imxvd2VyIjoxMCwibG93ZXJPcGVuIjpmYWxzZSwidXBwZXIiOjEwMCwidXBwZXJPcGVu
IjpmYWxzZSwiZXhwZWN0ZWQiOjkwfQorcmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktleVJhbmdl
LmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVy
T3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQ
QVNTIHJlcXVlc3QucmVzdWx0IGlzIDkwCisKK3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dlck9wZW4i
OmZhbHNlLCJ1cHBlciI6MCwidXBwZXJPcGVuIjpmYWxzZSwiZXhwZWN0ZWQiOjF9CityZXF1ZXN0
ID0gaW5kZXguY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwg
dGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVz
dWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMQorCit0ZXN0
ID0geyJsb3dlciI6MCwibG93ZXJPcGVuIjp0cnVlLCJ1cHBlciI6MCwidXBwZXJPcGVuIjp0cnVl
LCJleHBlY3RlZCI6MH0KK3JlcXVlc3QgPSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0
ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKQor
UEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1
ZXN0LnJlc3VsdCBpcyAwCisKK3Rlc3QgPSB7Imxvd2VyIjoyMCwibG93ZXJPcGVuIjp0cnVlLCJ1
cHBlciI6MTAsInVwcGVyT3BlbiI6dHJ1ZSwiZXhwZWN0ZWQiOjB9CityZXF1ZXN0ID0gaW5kZXgu
Y291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dl
ck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdu
dW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhYzhhYzVhNDdkY2Yz
ZTkzYWIyZTRkZDdlOTYyNzUwY2FiMWE4NDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sCkBAIC0wLDAgKzEsMTI1IEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQidzIElEQkluZGV4LmNvdW50KCkuIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgZXZhbEFuZExvZygid2luZG93LmluZGV4ZWREQiA9IHdpbmRvdy5p
bmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiIpOworICAgIGV2YWxBbmRMb2coIndp
bmRvdy5JREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Vi
a2l0SURCVHJhbnNhY3Rpb24iKTsKKyAgICBldmFsQW5kTG9nKCJ3aW5kb3cuSURCS2V5UmFuZ2Ug
PSB3aW5kb3cuSURCS2V5UmFuZ2UgfHwgd2luZG93LndlYmtpdElEQktleVJhbmdlIik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdpbmRleC1jb3VudCcpIik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHJl
cGFyZURhdGFiYXNlOworICAgIH07Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJwcmVwYXJpbmcgZGF0YWJhc2UiKTsKKyAgICB3
aW5kb3cudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisKKyAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworCisgICAgd2luZG93LmluZGV4ID0g
ZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKSIpOworICAgIHNo
b3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKKwor
ICAgIGRlYnVnKCJhZGRpbmcgMCAuLi4gOTkiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDsgKytpKSB7CisgICAgICAgIHJlcXVlc3QgPSBzdG9yZS5hZGQoaSwgaSk7CisgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0KKyAgICB0cmFu
cy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnQ7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50KCkK
K3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRob3V0IHJh
bmdlIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdz
dG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgc2hvdWxkQmVUcnVl
KCJ0cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudFdpdGhSYW5nZTsKKwor
ICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBzdG9yZSA9
IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpIik7CisgICAgc2hv
dWxkQmVUcnVlKCJpbmRleCAhPSBudWxsIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGluZGV4LmNvdW50KCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcici
KTsKKyAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsICIxMDAiKTsKKyAgICAgICAg
IC8vIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKKyAgICB9OworfQorCitmdW5jdGlvbiB2
ZXJpZnlDb3VudFdpdGhSYW5nZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJp
ZnlpbmcgY291bnQgd2l0aCByYW5nZSIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIp
OworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gZG9uZTsK
KworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coImluZGV4ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmlu
ZGV4KCdpbmRleE5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOwor
CisgICAgdmFyIHRlc3RzID0gWworICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNl
LCB1cHBlcjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAgICAgICAg
eyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogZmFsc2Us
IGV4cGVjdGVkOiA5OSB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1
cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IDk5IH0sCisgICAgICAgIHsgbG93
ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IHRydWUsIGV4cGVj
dGVkOiA5OCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjog
MTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0sCisgICAgICAgIHsgbG93ZXI6
IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVj
dGVkOiAxMDAgfSwKKyAgICAgICAgeyBsb3dlcjogMTAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVy
OiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5MCB9LAorICAgICAgICB7IGxvd2Vy
OiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0
ZWQ6IDEgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogMCwg
dXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogMCB9LAorICAgICAgICB7IGxvd2VyOiAyMCwgbG93
ZXJPcGVuOiB0cnVlLCB1cHBlcjogMTAsIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IDAgfQor
ICAgIF07CisKKyAgICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsKKyAgICAgICAgZGVidWcoIiIpOwor
ICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0gIiArIEpTT04uc3RyaW5naWZ5KHRlc3RzLnNoaWZ0
KCkpKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5jb3Vu
dChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3Bl
biwgdGVzdC51cHBlck9wZW4pKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICBzaG91bGRCZVRydWUoInR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAn
bnVtYmVyJyIpOworICAgICAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsIFN0cmlu
Zyh0ZXN0LmV4cGVjdGVkKSk7CisKKyAgICAgICAgICAgICBpZiAodGVzdHMubGVuZ3RoKSB7Cisg
ICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAg
IC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCisgICAgICAgIH07Cisg
ICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30KKwordGVzdCgpOworCis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4IGU1MDMxMDI4NDYyZGU1
MjU2OWNhZjdjYzBmMWFkMjFjZjllN2YxZTQuLjExYTkwYjBlNmRkZjEyNmRjMjQzZWNiNzY4ZDRj
YTM4Mzg1OTNlNmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtMTQsNiArMTQsMzAg
QEAgRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KIGNyZWF0ZU9iamVjdFN0b3JlKCk6CiBzdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKQogc3RvcmVOYW1lcyA9
IGRiLm9iamVjdFN0b3JlTmFtZXMKK1BBU1MgJ25hbWUnIGluIHN0b3JlIGlzIHRydWUKK1BBU1Mg
J2tleVBhdGgnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgJ2luZGV4TmFtZXMnIGluIHN0b3JlIGlz
IHRydWUKK1BBU1MgJ3RyYW5zYWN0aW9uJyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTICdwdXQnIGlu
IHN0b3JlIGlzIHRydWUKK1BBU1MgdHlwZW9mIHN0b3JlLnB1dCBpcyAiZnVuY3Rpb24iCitQQVNT
ICdhZGQnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgdHlwZW9mIHN0b3JlLmFkZCBpcyAiZnVuY3Rp
b24iCitQQVNTICdkZWxldGUnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgdHlwZW9mIHN0b3JlLmRl
bGV0ZSBpcyAiZnVuY3Rpb24iCitQQVNTICdnZXQnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgdHlw
ZW9mIHN0b3JlLmdldCBpcyAiZnVuY3Rpb24iCitQQVNTICdjbGVhcicgaW4gc3RvcmUgaXMgdHJ1
ZQorUEFTUyB0eXBlb2Ygc3RvcmUuY2xlYXIgaXMgImZ1bmN0aW9uIgorUEFTUyAnb3BlbkN1cnNv
cicgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyB0eXBlb2Ygc3RvcmUub3BlbkN1cnNvciBpcyAiZnVu
Y3Rpb24iCitQQVNTICdjcmVhdGVJbmRleCcgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyB0eXBlb2Yg
c3RvcmUuY3JlYXRlSW5kZXggaXMgImZ1bmN0aW9uIgorUEFTUyAnaW5kZXgnIGluIHN0b3JlIGlz
IHRydWUKK1BBU1MgdHlwZW9mIHN0b3JlLmluZGV4IGlzICJmdW5jdGlvbiIKK1BBU1MgJ2RlbGV0
ZUluZGV4JyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIHR5cGVvZiBzdG9yZS5kZWxldGVJbmRleCBp
cyAiZnVuY3Rpb24iCitQQVNTICdjb3VudCcgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyB0eXBlb2Yg
c3RvcmUuY291bnQgaXMgImZ1bmN0aW9uIgogUEFTUyBzdG9yZS5uYW1lIGlzICJzdG9yZU5hbWUi
CiBQQVNTIHN0b3JlLmtleVBhdGggaXMgbnVsbAogUEFTUyBzdG9yZU5hbWVzLmNvbnRhaW5zKCdz
dG9yZU5hbWUnKSBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCmluZGV4IDc2MzgwZmZlYzdiMTZkNDMxMmZkMTkx
MmU4MzEwY2ZhMDQ0OTM1ZDcuLjIzMmFhODMzYzIxMTk4ZDRiNGFlNzJmYmUwZTk2ZjI2YzI5OTk0
YTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3Jl
LWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0
b3JlLWJhc2ljcy5odG1sCkBAIC00Miw2ICs0MiwzMSBAQCBmdW5jdGlvbiBzZXRWZXJzaW9uU3Vj
Y2VzcygpCiAgICAgd2luZG93LnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKICAgICB2YXIgc3RvcmVOYW1lcyA9IGV2
YWxBbmRMb2coInN0b3JlTmFtZXMgPSBkYi5vYmplY3RTdG9yZU5hbWVzIik7CiAKKyAgICBzaG91
bGRCZVRydWUoIiduYW1lJyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2tleVBhdGgn
IGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVUcnVlKCInaW5kZXhOYW1lcycgaW4gc3RvcmUiKTsK
KyAgICBzaG91bGRCZVRydWUoIid0cmFuc2FjdGlvbicgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRC
ZVRydWUoIidwdXQnIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBl
b2Ygc3RvcmUucHV0IiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInYWRkJyBpbiBz
dG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmFkZCIsICJm
dW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2RlbGV0ZScgaW4gc3RvcmUiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5kZWxldGUiLCAiZnVuY3Rpb24iKTsK
KyAgICBzaG91bGRCZVRydWUoIidnZXQnIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ0eXBlb2Ygc3RvcmUuZ2V0IiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVl
KCInY2xlYXInIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Yg
c3RvcmUuY2xlYXIiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidvcGVuQ3Vyc29y
JyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLm9w
ZW5DdXJzb3IiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidjcmVhdGVJbmRleCcg
aW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5jcmVh
dGVJbmRleCIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2luZGV4JyBpbiBzdG9y
ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmluZGV4IiwgImZ1
bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInZGVsZXRlSW5kZXgnIGluIHN0b3JlIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuZGVsZXRlSW5kZXgiLCAiZnVu
Y3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidjb3VudCcgaW4gc3RvcmUiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5jb3VudCIsICJmdW5jdGlvbiIpOworCiAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZS5uYW1lIiwgInN0b3JlTmFtZSIpOwogICAg
IHNob3VsZEJlTnVsbCgic3RvcmUua2V5UGF0aCIpOwogICAgIHNob3VsZEJlKCJzdG9yZU5hbWVz
LmNvbnRhaW5zKCdzdG9yZU5hbWUnKSIsICJ0cnVlIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzQ4MWUzYTgxZWRhNWViYWNmY2Q4MWFiOGMzNTUwYTQzMjQ4NWZhYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3Jl
LWNvdW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDg3IEBACitUZXN0IEluZGV4ZWREQidzIElE
Qk9iamVjdFN0b3JlLmNvdW50KCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCit3
aW5kb3cuaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhl
ZERCCit3aW5kb3cuSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2lu
ZG93LndlYmtpdElEQlRyYW5zYWN0aW9uCit3aW5kb3cuSURCS2V5UmFuZ2UgPSB3aW5kb3cuSURC
S2V5UmFuZ2UgfHwgd2luZG93LndlYmtpdElEQktleVJhbmdlCitpbmRleGVkREIub3Blbignb2Jq
ZWN0c3RvcmUtY291bnQnKQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitkYi5zZXRWZXJzaW9u
KCduZXcgdmVyc2lvbicpCisKK3ByZXBhcmluZyBkYXRhYmFzZQordHJhbnMgPSBldmVudC50YXJn
ZXQucmVzdWx0CitQQVNTIHRyYW5zICE9PSBudWxsIGlzIHRydWUKK0RlbGV0ZWQgYWxsIG9iamVj
dCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxs
KQorYWRkaW5nIDAgLi4uIDk5CisKK3ZlcmlmeWluZyBjb3VudCB3aXRob3V0IHJhbmdlCit0cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkp
CitQQVNTIHRyYW5zICE9IG51bGwgaXMgdHJ1ZQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmVOYW1lJykKK1BBU1Mgc3RvcmUgIT0gbnVsbCBpcyB0cnVlCityZXF1ZXN0ID0gc3RvcmUu
Y291bnQoKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQor
UEFTUyByZXF1ZXN0LnJlc3VsdCBpcyAxMDAKKwordmVyaWZ5aW5nIGNvdW50IHdpdGggcmFuZ2UK
K3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURf
T05MWSkKK1BBU1MgdHJhbnMgIT0gbnVsbCBpcyB0cnVlCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnKQorUEFTUyBzdG9yZSAhPSBudWxsIGlzIHRydWUKKwordGVzdCA9IHsi
bG93ZXIiOjAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVyIjo5OSwidXBwZXJPcGVuIjpmYWxzZSwi
ZXhwZWN0ZWQiOjEwMH0KK3JlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0
ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKQor
UEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1
ZXN0LnJlc3VsdCBpcyAxMDAKKwordGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6dHJ1ZSwi
dXBwZXIiOjk5LCJ1cHBlck9wZW4iOmZhbHNlLCJleHBlY3RlZCI6OTl9CityZXF1ZXN0ID0gc3Rv
cmUuY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5s
b3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09
ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgOTkKKwordGVzdCA9IHsi
bG93ZXIiOjAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVyIjo5OSwidXBwZXJPcGVuIjp0cnVlLCJl
eHBlY3RlZCI6OTl9CityZXF1ZXN0ID0gc3RvcmUuY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVz
dC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BB
U1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVz
dC5yZXN1bHQgaXMgOTkKKwordGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6dHJ1ZSwidXBw
ZXIiOjk5LCJ1cHBlck9wZW4iOnRydWUsImV4cGVjdGVkIjo5OH0KK3JlcXVlc3QgPSBzdG9yZS5j
b3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2Vy
T3BlbiwgdGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251
bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyA5OAorCit0ZXN0ID0geyJsb3dl
ciI6MCwibG93ZXJPcGVuIjpmYWxzZSwidXBwZXIiOjEwMCwidXBwZXJPcGVuIjpmYWxzZSwiZXhw
ZWN0ZWQiOjEwMH0KK3JlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0
Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKQorUEFT
UyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0
LnJlc3VsdCBpcyAxMDAKKwordGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6ZmFsc2UsInVw
cGVyIjoxMDAsInVwcGVyT3BlbiI6ZmFsc2UsImV4cGVjdGVkIjoxMDB9CityZXF1ZXN0ID0gc3Rv
cmUuY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5s
b3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09
ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMTAwCisKK3Rlc3QgPSB7
Imxvd2VyIjoxMCwibG93ZXJPcGVuIjpmYWxzZSwidXBwZXIiOjEwMCwidXBwZXJPcGVuIjpmYWxz
ZSwiZXhwZWN0ZWQiOjkwfQorcmVxdWVzdCA9IHN0b3JlLmNvdW50KElEQktleVJhbmdlLmJvdW5k
KHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3Blbikp
CitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJl
cXVlc3QucmVzdWx0IGlzIDkwCisKK3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dlck9wZW4iOmZhbHNl
LCJ1cHBlciI6MCwidXBwZXJPcGVuIjpmYWxzZSwiZXhwZWN0ZWQiOjF9CityZXF1ZXN0ID0gc3Rv
cmUuY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5s
b3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09
ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMQorCit0ZXN0ID0geyJs
b3dlciI6MCwibG93ZXJPcGVuIjp0cnVlLCJ1cHBlciI6MCwidXBwZXJPcGVuIjp0cnVlLCJleHBl
Y3RlZCI6MH0KK3JlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxv
d2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKQorUEFTUyB0
eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJl
c3VsdCBpcyAwCisKK3Rlc3QgPSB7Imxvd2VyIjoyMCwibG93ZXJPcGVuIjp0cnVlLCJ1cHBlciI6
MTAsInVwcGVyT3BlbiI6dHJ1ZSwiZXhwZWN0ZWQiOjB9CityZXF1ZXN0ID0gc3RvcmUuY291bnQo
SURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4s
IHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXIn
IGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViZWYwN2Zi
ZjBiYWU3NDRmNWY1ZDNlYTNkNDM2ODZmZDE2YzJhNjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sCkBAIC0wLDAg
KzEsMTE4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlLmNvdW50KCkuIik7CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZXZhbEFuZExvZygid2luZG93Lmlu
ZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiIpOwor
ICAgIGV2YWxBbmRMb2coIndpbmRvdy5JREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2Fj
dGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb24iKTsKKyAgICBldmFsQW5kTG9nKCJ3
aW5kb3cuSURCS2V5UmFuZ2UgPSB3aW5kb3cuSURCS2V5UmFuZ2UgfHwgd2luZG93LndlYmtpdElE
QktleVJhbmdlIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdv
YmplY3RzdG9yZS1jb3VudCcpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAg
ICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gcHJlcGFyZURhdGFiYXNlOworICAgIH07Cit9CisKK2Z1bmN0
aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJwcmVw
YXJpbmcgZGF0YWJhc2UiKTsKKyAgICB3aW5kb3cudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxs
Iik7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFs
QW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIp
OworCisgICAgZGVidWcoImFkZGluZyAwIC4uLiA5OSIpOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMTAwOyArK2kpIHsKKyAgICAgICAgcmVxdWVzdCA9IHN0b3JlLmFkZChpLCBpKTsKKyAgICAg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgfQorICAg
IHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudDsKK30KKworZnVuY3Rpb24gdmVyaWZ5Q291
bnQoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGhv
dXQgcmFuZ2UiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rp
b24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRC
ZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50V2l0aFJhbmdl
OworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0gbnVsbCIpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5jb3VudCgpIik7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVl
c3QucmVzdWx0ID09ICdudW1iZXInIik7CisgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1
bHQiLCAiMTAwIik7CisgICAgICAgICAvLyBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCisg
ICAgfTsKK30KKworZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoUmFuZ2UoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGggcmFuZ2UiKTsKKyAgICB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRy
YW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwi
KTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJh
bnMub25jb21wbGV0ZSA9IGRvbmU7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9y
ZSAhPSBudWxsIik7CisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsgbG93ZXI6IDAsIGxv
d2VyT3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEw
MCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBw
ZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDk5IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2Vy
T3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogOTkgfSwK
KyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTksIHVwcGVyT3Bl
bjogdHJ1ZSwgZXhwZWN0ZWQ6IDk4IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3Blbjog
ZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAg
ICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVu
OiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAgICAgICB7IGxvd2VyOiAxMCwgbG93ZXJPcGVu
OiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDkwIH0sCisg
ICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAwLCB1cHBlck9wZW46
IGZhbHNlLCBleHBlY3RlZDogMSB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IHRy
dWUsIHVwcGVyOiAwLCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiAwIH0sCisgICAgICAgIHsg
bG93ZXI6IDIwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiAxMCwgdXBwZXJPcGVuOiB0cnVlLCBl
eHBlY3RlZDogMCB9CisgICAgXTsKKworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgeworICAgICAg
ICBkZWJ1ZygiIik7CisgICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdp
ZnkodGVzdHMuc2hpZnQoKSkpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IHN0b3JlLmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIs
IHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpIik7CisgICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVl
c3QucmVzdWx0ID09ICdudW1iZXInIik7CisgICAgICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3Qu
cmVzdWx0IiwgU3RyaW5nKHRlc3QuZXhwZWN0ZWQpKTsKKworICAgICAgICAgICAgIGlmICh0ZXN0
cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgbmV4dFRlc3QoKTsKKyAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUK
KyAgICAgICAgfTsKKyAgICB9CisKKyAgICBuZXh0VGVzdCgpOworfQorCit0ZXN0KCk7CisKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117889</attachid>
            <date>2011-12-05 09:40:55 -0800</date>
            <delta_ts>2011-12-07 12:39:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73686-20111205094054.patch</filename>
            <type>text/plain</type>
            <size>54748</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjg5MDhiN2FhMjcxMDky
NWIxYjYxZTk3ODMwYmI4NzljNmY4ZjBmNS4uYTlkYmRmYWMyY2ZjYjY3ZjhiOWVlZmY1MWExYWFh
OGI4YmRiOTJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTEyLTAyICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBs
ZW1lbnQgSURCT2JqZWN0U3RvcmUuY291bnQoKSBhbmQgSURCSW5kZXguY291bnQoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM2ODYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3RlIHRoYXQgb25seSB0
aGUgKG9wdGlvbmFsKSBJREJLZXlSYW5nZSBhcmd1bWVudCBpcyBzdXBwb3J0ZWQsIG5vdAorICAg
ICAgICBhIHNpbmdsZSBJREJLZXkuIFRoYXQgd2lsbCByZXF1aXJlIHNvbWUgSURML2JpbmRpbmcg
bW9ua2V5aW5nIGFuZCBpdAorICAgICAgICBhcHBsaWVzIHRvIHNldmVyYWwgb3RoZXIgbWV0aG9k
cyBhcyB3ZWxsLgorCisgICAgICAgIFRlc3RzOiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3Vu
dC5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3Vu
dC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudW1iZXJWYWx1ZSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAg
ICogc3RvcmFnZS9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3Bl
bkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Y291bnQpOgorICAgICAgICAq
IHN0b3JhZ2UvSURCSW5kZXguaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpjb3VudCk6
CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJJ
bmRleEJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZElt
cGw6OmNvdW50SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1w
bDo6Y291bnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogc3Rv
cmFnZS9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZTo6Y291bnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6CisgICAgICAgICogc3RvcmFnZS9JREJP
YmplY3RTdG9yZS5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50
SW50ZXJuYWwpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5o
OgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmg6CisK
IDIwMTEtMTItMDIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDE3MzEuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGY2ZTQwYjQxNzVhNTllN2Y2NDE2MzZkNGZhM2FmNTRlNjc5MGYwYzgu
LmY2YmVkZDdhMzBiZmFjYzM5OGRlOWViNzNiYjIwMDljYTI1NTk4OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTItMDIgIEpvc2h1YSBCZWxsICA8
anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEltcGxlbWVudCBJREJP
YmplY3RTdG9yZS5jb3VudCgpIGFuZCBJREJJbmRleC5jb3VudCgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzY4NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRFTVBPUkFSWTogVGhlIFdlYktpdCBBUEkg
Y2hhbmdlcyAocHVibGljL1dlYklEQiouaCkgd2lsbCBsYW5kIGZpcnN0CisgICAgICAgIGFuZCBh
cmUgdHJhY2tlZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM2
ODUgLSBpbmNsdWRpbmcKKyAgICAgICAgaGVyZSB1bnRpbCB0aGF0IGxhbmRzIG9yIHRoaXMgd29u
J3QgYnVpbGQuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCSW5kZXguaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCSW5kZXg6OmNvdW50KToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCT2JqZWN0
U3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmU6OmNvdW50KToKKyAg
ICAgICAgKiBzcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
REJJbmRleEJhY2tlbmRQcm94eTo6Y291bnQpOgorICAgICAgICAqIHNyYy9JREJJbmRleEJhY2tl
bmRQcm94eS5oOgorICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5Ojpjb3VudCk6Cisg
ICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogc3Jj
L1dlYklEQkluZGV4SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4SW1wbDo6
Y291bnQpOgorICAgICAgICAqIHNyYy9XZWJJREJJbmRleEltcGwuaDoKKyAgICAgICAgKiBzcmMv
V2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0
U3RvcmVJbXBsOjpjb3VudCk6CisKIDIwMTEtMTItMDIgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDEzMzcuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAppbmRleCA3MDMxYTU1MjIyNzBlNTk1MDAxNWM3MzEyOWFhMjkzYmIyMjgxODU2Li42OGMz
MzE2YmNmNDkwYjE1ZGE5NDY4NmEyNzI2YzQ4Y2VlYzMyNDUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTIxMjQs
NiArMjEyNCwxNCBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpib29sZWFuVmFsdWUoYm9vbCB2YWx1ZQogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHdpcmVEYXRhKSk7CiB9CiAKK1Bhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bWJlclZhbHVl
KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBXcml0ZXIgd3JpdGVyOworICAgIHdyaXRlci53cml0ZU51
bWJlcih2YWx1ZSk7CisgICAgU3RyaW5nIHdpcmVEYXRhID0gU3RyaW5nSW1wbDo6YWRvcHQod3Jp
dGVyLmRhdGEoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFs
dWUod2lyZURhdGEpKTsKK30KKwogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6cmVsZWFzZSgpCiB7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gcmVzdWx0ID0gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSht
X2RhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgKaW5kZXggMjVkYTg4OWIwODdkMTVmZjQ0MThmZGFkZTM1MGQ0YmVlZjY0NjNh
Mi4uZDNhNjY4Yjk4M2M0MGFiNGIzOGFhNjc3ZmQzNzczM2IzMzA0YzFlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTY2
LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIG51
bGxWYWx1ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
dW5kZWZpbmVkVmFsdWUoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGJvb2xlYW5WYWx1ZShib29sIHZhbHVlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG51bWJlclZhbHVlKGRvdWJsZSB2YWx1ZSk7CiAKICAgICBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcmVsZWFzZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCSW5kZXguY3BwCmluZGV4IDcwOTYxMzAyM2M3NzAzY2UzOWU1ZGI2NGIzYWE2NDI3
OGUwNzEwYWYuLmJmMmQzOGFmMmIxN2YyODU2MDA2MGFhMjEzN2QyOWFkZDFlMmFhZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwCkBAIC03Myw2ICs3MywxNyBAQCBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhcwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCitQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4
dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIG1fYmFj
a2VuZC0+Y291bnQoa2V5UmFuZ2UsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwg
ZWMpOworICAgIGlmIChlYykgeworICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlcXVlc3Q7Cit9CisKIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2ln
bmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKGRpcmVj
dGlvbiAhPSBJREJDdXJzb3I6Ok5FWFQgJiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6TkVYVF9O
T19EVVBMSUNBVEUgJiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6UFJFViAmJiBkaXJlY3Rpb24g
IT0gSURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJJbmRleC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRl
eC5oCmluZGV4IDVkODhhZmNkZmI2ZWE1MTFiZDczY2Q2NmRjYjllMDRlNjIwYTY3YTcuLjk2YjM4
MGJjOTgwZGQ5Y2MyYTI4YThmZjE5OGY1MmM2NDFmMmY0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkluZGV4LmgKQEAgLTU4LDYgKzU4LDggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRp
b25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCAwLCBlYyk7IH0KICAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGUm
IGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLCBJREJDdXJzb3I6Ok5F
WFQsIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0
IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMp
IHsgcmV0dXJuIGNvdW50KGNvbnRleHQsIDAsIGVjKTsgfQorICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5L
ZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYg
ZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwgMCwgZWMpOyB9IAogICAgIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6
TkVYVCwgZWMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaWRsCmluZGV4IGIwZjMyYWE3
YTBlOWVkN2YzNjFjNzc0OTNiOWVhMTM1YTk5MDUzMzguLjRjOGY2NTVlM2FjMmY4YmUxZjcxNTU0
MzQxZDAzNzYyM2M3YmRmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
SW5kZXguaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaWRsCkBAIC00
Miw2ICs0Miw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0
YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gSURCUmVxdWVzdCBnZXRLZXkoaW4gSURCS2V5IGtleSkKICAgICAgICAgICAgIHJhaXNlcyAo
SURCRGF0YWJhc2VFeGNlcHRpb24pOworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dF0gSURCUmVxdWVzdCBjb3VudChpbiBbT3B0aW9uYWxdIElEQktleVJhbmdlIHJhbmdl
KQorICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKaW5k
ZXggZjBkY2YzZDdlZDM5ZWQ5YzI1ZDJhM2IwN2VmZjdiY2Q0ZjViZDM4Zi4uZmY5N2M5YTUyMGIw
NjVjMmQyYTE2MWExYzZjYTQ1OWQ0YWY5YzZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCkBAIC0xMjIsNiArMTIyLDMxIEBAIHZvaWQgSURC
SW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBw
cnBLZXlSYW5nZSwgdW5zCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9B
TExPV0VEX0VSUjsKIH0KIAordm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpjb3VudEludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+
IGluZGV4LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IHRyYW5zYWN0aW9uKQoreworICAgIHVpbnQzMl90IGNvdW50ID0gMDsKKworICAgIFJlZlB0
cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gYmFja2luZ1N0b3JlQ3Vyc29yID0gaW5kZXgtPm1f
YmFja2luZ1N0b3JlLT5vcGVuSW5kZXhLZXlDdXJzb3IoaW5kZXgtPm1fZGF0YWJhc2VJZCwgaW5k
ZXgtPm1fb2JqZWN0U3RvcmVCYWNrZW5kLT5pZCgpLCBpbmRleC0+aWQoKSwgcmFuZ2UuZ2V0KCks
IElEQkN1cnNvcjo6TkVYVCk7CisgICAgaWYgKCFiYWNraW5nU3RvcmVDdXJzb3IpIHsKKyAgICAg
ICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudW1iZXJWYWx1
ZShjb3VudCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZG8geworICAgICAgICAr
K2NvdW50OworICAgIH0gd2hpbGUgKGJhY2tpbmdTdG9yZUN1cnNvci0+Y29udGludWVGdW5jdGlv
bigwKSk7CisgICAgYmFja2luZ1N0b3JlQ3Vyc29yLT5jbG9zZSgpOworICAgIGNhbGxiYWNrcy0+
b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVtYmVyVmFsdWUoY291bnQpKTsKK30K
Kwordm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpjb3VudChQYXNzUmVmUHRyPElEQktleVJhbmdl
PiByYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gdGhpczsKKyAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbiA9IHRyYW5zYWN0
aW9uUHRyOworICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFj
a1Rhc2soJmNvdW50SW50ZXJuYWwsIGluZGV4LCByYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlv
bikpKQorICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7
Cit9CisKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NS
ZWZQdHI8SURCS2V5PiBrZXksIGJvb2wgZ2V0T2JqZWN0LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogewogICAgIC8vIEZJWE1FOiBTcGxpdCBnZXRJbnRlcm5hbCBpbnRvIHR3
byBmdW5jdGlvbnMsIGdldHRpbmcgcmlkIG9mZiB8Z2V0T2JqZWN0fC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmgKaW5kZXggNDJlNWY3NzAyMzFmM2Y0OTk0
ODM5M2RhNDUwMjM0ZTYyNjZmMGZhMy4uMTIyNzRhZThiZTdmMDMwYTU4MWMzZDRjNWZhMjYxZTU0
N2I3MzI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tl
bmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBs
LmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBtdWx0aUVudHJ5
KCkgeyByZXR1cm4gbV9tdWx0aUVudHJ5OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNv
cihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnQoUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29y
KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0cjxJREJLZXk+LCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0S2V5KFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CkBAIC03Nyw2ICs3OCw3IEBAIHByaXZhdGU6CiAgICAg
SURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnkpOwogCiAgICAgc3RhdGljIHZvaWQgb3BlbkN1cnNvckludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CisgICAgc3Rh
dGljIHZvaWQgY291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+KTsKICAgICBzdGF0aWMgdm9pZCBnZXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBi
b29sIGdldE9iamVjdCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAogICAgIHN0YXRpYyBj
b25zdCBpbnQ2NF90IEludmFsaWRJZCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCA3Y2UwZWYzYmE4Y2UyZDdlMGQ5NjI1
OTRiMDRhY2ViNTcwMWJmNTc0Li5hMGYxYmE4MWI5OTYzNmZmOTNlNDlkMzcyYjU2NTAwZDgzMDc3
MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZElu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBtdWx0
aUVudHJ5KCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjb3VudChQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29yKFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9u
Q29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8SURCS2V5PiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRLZXkoUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmUuY3BwCmluZGV4IGM5MDg2ZTVjYjZkZDYzZDUxOTIwYWUyMmZkMDI3ZDg0NDJh
ZDA4ZTkuLjc0YTgwMDFmN2NjZDIxNjdhZGI4YjBmOGQ5OTUwMTJmMDdjZjk0ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0yMDIsNiArMjAyLDE3IEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwog
fQogCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJ
REJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNh
Y3Rpb24uZ2V0KCkpOworICAgIG1fYmFja2VuZC0+Y291bnQocmFuZ2UsIHJlcXVlc3QsIG1fdHJh
bnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOworICAgIGlmIChlYykgeworICAgICAgICByZXF1ZXN0
LT5tYXJrRWFybHlEZWF0aCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJu
IHJlcXVlc3QucmVsZWFzZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmUuaAppbmRleCA5YjVhYTZiMmQzZjUzNzMxYmM2MTY1OWI5NjU2YzM2MzQ5YmNmMjZi
Li44MGJiZTA4YTlhY2FhZmFmNGZjNGM4ZWQ2YWQ0MDEyNDVhNzRiMjFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCkBAIC03OCw2ICs3OCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwog
CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9u
LCBFeGNlcHRpb25Db2RlJik7IAorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJu
IGNvdW50KGNvbnRleHQsIDAsIGVjKTsgfQorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNl
cHRpb25Db2RlJik7CiAKIHByaXZhdGU6CiAgICAgSURCT2JqZWN0U3RvcmUoUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+LCBJREJUcmFuc2FjdGlvbiopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlkbAppbmRleCAwMzkzMmU3NzE5NTJlYmEx
YTdlZjY2ZDFmNzk4YzcwZmFlNGY5YWEyLi5lYWUwYmVjZTM4YjNhZGI2ZmE1MTBkZDFiMjVmY2Ji
Nzc0YjgyN2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlkbApA
QCAtNTEsNSArNTEsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgICAgICByYWlzZXMgKElE
QkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBkZWxldGVJbmRleChpbiBET01TdHJp
bmcgbmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOworICAg
ICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBjb3VudChp
biBbT3B0aW9uYWxdIElEQktleVJhbmdlIHJhbmdlKQorICAgICAgICAgICAgcmFpc2VzIChJREJE
YXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDgwZjBmYzczMDA2ZTNh
NWY3ODVhNTU5ODY5ODhmZDZmYjM4MjljMWMuLmZmODE1MDQ5MTk0NzBiMjUwYjlmYTc0ZTUwZWQ5
NDQxMmNhZWUzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtNTQ2LDYgKzU0NiwzMSBAQCB2b2lkIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzcwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGN1cnNvci5yZWxlYXNlKCkpOwog
fQogCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50KFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUg
PSB0aGlzOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5z
YWN0aW9uUHRyID0gdHJhbnNhY3Rpb247CisgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVU
YXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnRJ
bnRlcm5hbCwgb2JqZWN0U3RvcmUsIHJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uUHRyKSkp
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKK30K
Kwordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudEludGVybmFsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9i
amVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IHRyYW5zYWN0aW9uKQoreworICAgIHVpbnQzMl90IGNvdW50ID0gMDsKKyAgICBSZWZQ
dHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvciA9IG9iamVjdFN0
b3JlLT5tX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKG9iamVjdFN0b3JlLT5t
X2RhdGFiYXNlSWQsIG9iamVjdFN0b3JlLT5pZCgpLCByYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpO
RVhUKTsKKyAgICBpZiAoIWJhY2tpbmdTdG9yZUN1cnNvcikgeworICAgICAgICBjYWxsYmFja3Mt
Pm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bWJlclZhbHVlKGNvdW50KSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkbyB7CisgICAgICAgICsrY291bnQ7CisgICAg
fSB3aGlsZSAoYmFja2luZ1N0b3JlQ3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKDApKTsKKworICAg
IGJhY2tpbmdTdG9yZUN1cnNvci0+Y2xvc2UoKTsKKyAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bWJlclZhbHVlKGNvdW50KSk7Cit9CisKIHZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bG9hZEluZGV4ZXMoKQogewogICAgIFZlY3RvcjxpbnQ2
NF90PiBpZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5oCmluZGV4IDkyOWI2YTRmMDE0MGUxZGM3MWIyMzdmMzQ1Y2EzNDkzMmQ3ZmEx
MTguLjJhYjU2MjczMGE3YmRlMGQ1YWJlYjBhNzQyMzFlOTQzODA5NmMzOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCkBAIC03
Niw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25D
b2RlJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJh
bmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgY291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0
aW9uQ29kZSYpOwogCiAgICAgc3RhdGljIGJvb2wgcG9wdWxhdGVJbmRleChJREJCYWNraW5nU3Rv
cmUmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbXBsPik7CiAKQEAgLTk1LDYgKzk2LDcgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgdm9pZCBjcmVhdGVJbmRleEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQklu
ZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZT4pOwogICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUluZGV4SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPik7CiAgICAgc3RhdGljIHZvaWQgb3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPik7CisgICAgc3RhdGljIHZvaWQgY291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKIAogICAgIC8vIFRoZXNlIGFyZSB1c2Vk
IGFzIHNldFZlcnNpb24gdHJhbnNhY3Rpb24gYWJvcnQgdGFza3MuCiAgICAgc3RhdGljIHZvaWQg
cmVtb3ZlSW5kZXhGcm9tTWFwKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZS5oCmluZGV4IGIxNTc5YjU0NDFhZTlmNjRkODAzYTAwNjkzMGE2OTQ1YjI4
YzNkN2UuLjFkNzEyNWU2NDlkNTUzN2QyMzNhZjNkZDcxYWEwMjk2NmJmYWM2MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2UuaApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0
aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnQoUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkluZGV4
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJJbmRleC5oCmluZGV4IDIy
M2U1Y2NlOGQ2ZDk5NTA5YWE5OGQ0MWFiZDU4ZDFlMzFlYjhmODIuLmI3ZjUyNmQ3NjNiNWZmMmNi
M2ZiZGJlNTA1ZTA4NTk1NDBkOWY5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSURCSW5kZXguaApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgb3Blbk9iamVjdEN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYsIHVuc2lnbmVkIHNo
b3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24m
LCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgb3BlbktleUN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYsIHVuc2ln
bmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgY291bnQoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCBXZWJJREJD
YWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBnZXRPYmpl
Y3QoY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0S2V5KGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNhbGxi
YWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCmluZGV4IDA5NjkxNjNjYWE0MTJmNWU0NTQ1
MjBhMjFkNTY4YjMxZTg3ZDc4YzkuLjQ0NDhhOWJiNDc4MTAyNDJlYzdhN2M0ZWFmN2UzODVkMDdm
M2M1MDEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9i
amVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2Jq
ZWN0U3RvcmUuaApAQCAtODgsNiArODgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5z
YWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCB1
bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRy
YW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGNvdW50KGNvbnN0IFdlYklEQktleVJhbmdlJiwgV2Vi
SURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2Rl
JikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogcHJvdGVjdGVkOgogICAgIFdl
YklEQk9iamVjdFN0b3JlKCkge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkluZGV4QmFja2VuZFByb3h5LmNwcAppbmRleCA4ZTk2NjAwMWQ5NzNlYjBhYjEyMjUxODc2
Mjc3MDkxMDVhOTcwYWIzLi5iYzJjODM2ZjhiMzg0NjM0MjNiZmQ1OTNhZTkwYTFmMGRmNDg3MDU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5k
UHJveHkuY3BwCkBAIC04OCw2ICs4OCwxNCBAQCB2b2lkIElEQkluZGV4QmFja2VuZFByb3h5Ojpv
cGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNpZ25lZAogICAg
IG1fd2ViSURCSW5kZXgtPm9wZW5PYmplY3RDdXJzb3Ioa2V5UmFuZ2UsIGRpcmVjdGlvbiwgbmV3
IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdl
YklEQlRyYW5zYWN0aW9uKCksIGVjKTsKIH0KIAordm9pZCBJREJJbmRleEJhY2tlbmRQcm94eTo6
Y291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNh
Y3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2lu
dGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBp
biB0aGUgcmVuZGVyZXIsCisgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJm
YWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KKyAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSog
dHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5
Kj4odHJhbnNhY3Rpb24pOworICAgIG1fd2ViSURCSW5kZXgtPmNvdW50KGtleVJhbmdlLCBuZXcg
V2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2Vi
SURCVHJhbnNhY3Rpb24oKSwgZWMpOworfQorCiB2b2lkIElEQkluZGV4QmFja2VuZFByb3h5Ojpv
cGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNpZ25lZCBz
aG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUg
YSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaAppbmRleCBm
MzkxOWFhMGNiMDdkNWFhOGIyZDEzNjAyZjhmYWU4NWJjODFiODUzLi40Y2U4Yzg3NmJiMWQxMGE3
MmY3M2NhMmE0MDNlN2QyZWViNTk5YzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlS
YW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJD
YWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5LZXlDdXJzb3IoUGFz
c1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVh
bCB2b2lkIGNvdW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxs
YmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGdldEtleShQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RT
dG9yZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggMDI3YWU1NzYxNWMyNDIzOTFiZDlkODM1MTdh
Yzk3MjgwOTc3OWM1OS4uZTUyOTJlODk5MDg3YTA5YzZmODAwNDFmMmNkOTQ1NWQzYmExNjJhNiAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0
b3JlQmFja2VuZFByb3h5LmNwcApAQCAtMTQxLDYgKzE0MSwxNCBAQCB2b2lkIElEQk9iamVjdFN0
b3JlQmFja2VuZFByb3h5OjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdl
LCB1bnNpZwogICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPm9wZW5DdXJzb3IocmFuZ2UsIGRpcmVj
dGlvbiwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0aW9uUHJv
eHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsKIH0KIAordm9pZCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRQcm94eTo6Y291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIFRoZSB0cmFu
c2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkg
b2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCisgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBv
ZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KKyAgICBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9u
QmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOworICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPmNv
dW50KHJhbmdlLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCAqdHJhbnNhY3Rp
b25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5
LmgKaW5kZXggNGFjMzkxOTM2OTY5Y2YwZjY3YjNjNzJlY2M3MDdiMTQ0ZmVjNjQ2Ny4uNmQzMzU2
MzVjNWY1YzllYzUwNDA4YTIzOTVkYWRjNGMxNDc5YzMzZCAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oCkBAIC01
Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYg
bmFtZSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lk
IGNvdW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKICAgICBJREJPYmplY3RT
dG9yZUJhY2tlbmRQcm94eShQYXNzT3duUHRyPFdlYklEQk9iamVjdFN0b3JlPik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcAppbmRleCAwNzczOTdh
MzNmOWUyZGY3OTY3MTJhNjNkOTJmODJkOWJjZDU1MDhjLi43MTBlMzAwZjlkODU5YjVmZTVjNjZm
OWVmNGZlM2JjNTBmYTU4ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJJbmRleEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkluZGV4SW1wbC5jcHAKQEAgLTgzLDYgKzgzLDExIEBAIHZvaWQgV2ViSURCSW5kZXhJbXBs
OjpvcGVuS2V5Q3Vyc29yKGNvbnN0IFdlYklEQktleVJhbmdlJiBrZXlSYW5nZSwgdW5zaWduZWQg
c2hvCiAgICAgbV9iYWNrZW5kLT5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlLCBkaXJlY3Rpb24sIElE
QkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIHRyYW5zYWN0aW9u
LmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiB9CiAKK3ZvaWQgV2Vi
SURCSW5kZXhJbXBsOjpjb3VudChjb25zdCBXZWJJREJLZXlSYW5nZSYga2V5UmFuZ2UsICBXZWJJ
REJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBtX2JhY2tlbmQtPmNvdW50KGtleVJh
bmdlLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCB0cmFu
c2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOworfQorCiB2
b2lkIFdlYklEQkluZGV4SW1wbDo6Z2V0T2JqZWN0KGNvbnN0IFdlYklEQktleSYga2V5UmFuZ2Us
IFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG1fYmFja2VuZC0+Z2V0KGtl
eVJhbmdlLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCB0
cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuaAppbmRleCBjMDNkYzZm
YjAzYWY0MzY1MmNlOWM1MDRmOTQ0MDIzY2YxNTc0YzZjLi41Njc2ZDVkNDY1N2MwODE4MmQwOWI4
ZWM3ZjNjMDgyMzU4MDczYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJJbmRleEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJJbmRleEltcGwuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgb3Blbk9iamVjdEN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYsIHVuc2lnbmVkIHNob3J0
IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBX
ZWJFeGNlcHRpb25Db2RlJik7IAogICAgIHZpcnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29yKGNvbnN0
IFdlYklEQktleVJhbmdlJiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBXZWJJREJDYWxsYmFj
a3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgY291bnQoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCBXZWJJREJDYWxsYmFja3Mq
LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0T2JqZWN0KGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNhbGxiYWNrcyosIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBnZXRLZXkoY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2Vi
SURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCmluZGV4IDAyNTE4
NTk3ZTI5MzNkY2U4Y2MyMjU1OTMzMjBkMjliZTBhYWNmM2QuLmVmN2NlZTEyYjVlOThkNjgzMjVl
OWY4OWQ4YjBkYWJiYjcxYTk3ODIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMTEzLDYgKzExMywxMSBAQCB2b2lk
IFdlYklEQk9iamVjdFN0b3JlSW1wbDo6b3BlbkN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYg
a2V5UmFuZ2UsIHVuc2lnbmVkCiAgICAgbV9vYmplY3RTdG9yZS0+b3BlbkN1cnNvcihrZXlSYW5n
ZSwgZGlyZWN0aW9uLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNr
cykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMp
OwogfQogCit2b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6Y291bnQoY29uc3QgV2ViSURCS2V5
UmFuZ2UmIGtleVJhbmdlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBt
X29iamVjdFN0b3JlLT5jb3VudChrZXlSYW5nZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShh
ZG9wdFB0cihjYWxsYmFja3MpKSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKCksIGVjKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggOWIyZDhjMmI5NTA2MmI2NGVkODZm
MjIxMzJkYzNkMjRmYTFjMjEyMy4uZjNlOWVjYzBmYWU5NDVmYTBjMzEwZjJhNzc5MzA4Zjg3MDZh
YjNiOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlSW5k
ZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4
Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5n
ZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2Vi
SURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBjb3VudChjb25z
dCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0
aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogCiAgcHJpdmF0ZToKICAgICBXVEY6OlJlZlB0cjxX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG1fb2JqZWN0U3RvcmU7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMjE3ZDRjODdmMTBkZjQ4YjcyNTZlZDlkMDA0ZGE3ZTU1ZDY3OTdhMC4uYTdiZGY5MDI0
ODY2OGRkNGZiMmFiNjBlMThiZmRhNmM2ZjRiNjU2OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDExLTEyLTAyICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
SW5kZXhlZERCOiBJbXBsZW1lbnQgSURCT2JqZWN0U3RvcmUuY291bnQoKSBhbmQgSURCSW5kZXgu
Y291bnQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzM2ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvaW5kZXgtY291bnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQuaHRtbDogQWRkZWQuCisK
IDIwMTEtMTItMDIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDE3MzEuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLWV4cGVjdGVkLnR4dApp
bmRleCBkNjcwOTg3ZmMwOTYwMTU3M2M5MGVlYzE3OTg1MmZkZjIwMDI4NDRlLi41NWEwYTU4ZTdk
ZGRhNGE2YzZmZmM1NjVlNmJmMjNlMTIwM2M0ZTdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTI1LDkg
KzI1LDE1IEBAIFBBU1MgJ211bHRpRW50cnknIGluIGluZGV4T2JqZWN0IGlzIHRydWUKIFBBU1Mg
aW5kZXhPYmplY3QudW5pcXVlIGlzIGZhbHNlCiBQQVNTIGluZGV4T2JqZWN0Lm11bHRpRW50cnkg
aXMgZmFsc2UKIFBBU1MgJ29wZW5LZXlDdXJzb3InIGluIGluZGV4T2JqZWN0IGlzIHRydWUKK1BB
U1MgdHlwZW9mIGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IgaXMgImZ1bmN0aW9uIgogUEFTUyAn
b3BlbkN1cnNvcicgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgaW5kZXhPYmpl
Y3Qub3BlbkN1cnNvciBpcyAiZnVuY3Rpb24iCiBQQVNTICdnZXRLZXknIGluIGluZGV4T2JqZWN0
IGlzIHRydWUKK1BBU1MgdHlwZW9mIGluZGV4T2JqZWN0LmdldEtleSBpcyAiZnVuY3Rpb24iCiBQ
QVNTICdnZXQnIGluIGluZGV4T2JqZWN0IGlzIHRydWUKK1BBU1MgdHlwZW9mIGluZGV4T2JqZWN0
LmdldCBpcyAiZnVuY3Rpb24iCitQQVNTICdjb3VudCcgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQor
UEFTUyB0eXBlb2YgaW5kZXhPYmplY3QuY291bnQgaXMgImZ1bmN0aW9uIgogc3RvcmUuYWRkKHt4
OiAndmFsdWUnLCB5OiAnenp6JywgejogMi43Mn0sICdrZXknKQogZXZlbnQudGFyZ2V0LnNvdXJj
ZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAnenp6MicsIHo6IDIuNzEsIGZvb2JhcjogMTJ9LCAna2V5
MicpCiBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhXaGlsZUFkZElzSW5GbGlnaHQnLCAneCcpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCmluZGV4
IGE5MjNhYjhlZTFjYmIxYWQ1ODA4Mjk1MzU4MDFjOGRmMGMxNzc4ZDguLjliYWY3ZDc0NTQ4NWE3
YjRlZDkyYjM0NzllMjQ3NTRiNzk1OGY5MzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCkBAIC01Nyw5ICs1NywxNSBAQCBmdW5jdGlvbiBh
ZGREYXRhKCkKICAgICBzaG91bGRCZUZhbHNlKCJpbmRleE9iamVjdC51bmlxdWUiKTsKICAgICBz
aG91bGRCZUZhbHNlKCJpbmRleE9iamVjdC5tdWx0aUVudHJ5Iik7CiAgICAgc2hvdWxkQmVUcnVl
KCInb3BlbktleUN1cnNvcicgaW4gaW5kZXhPYmplY3QiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInR5cGVvZiBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yIiwgImZ1bmN0aW9uIik7CiAg
ICAgc2hvdWxkQmVUcnVlKCInb3BlbkN1cnNvcicgaW4gaW5kZXhPYmplY3QiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRleE9iamVjdC5vcGVuQ3Vyc29yIiwgImZ1bmN0
aW9uIik7CiAgICAgc2hvdWxkQmVUcnVlKCInZ2V0S2V5JyBpbiBpbmRleE9iamVjdCIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIGluZGV4T2JqZWN0LmdldEtleSIsICJmdW5j
dGlvbiIpOwogICAgIHNob3VsZEJlVHJ1ZSgiJ2dldCcgaW4gaW5kZXhPYmplY3QiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRleE9iamVjdC5nZXQiLCAiZnVuY3Rpb24i
KTsKKyAgICBzaG91bGRCZVRydWUoIidjb3VudCcgaW4gaW5kZXhPYmplY3QiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRleE9iamVjdC5jb3VudCIsICJmdW5jdGlvbiIp
OwogCiAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTog
J3p6eicsIHo6IDIuNzJ9LCAna2V5JykiKTsKICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZERh
dGEyOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291
bnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291
bnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExYjgxN2Y4MzA0NWU3MzkzMWQyMThmODE3YTJm
OThiZWJmY2FkNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9pbmRleC1jb3VudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5MyBAQAorVGVzdCBJbmRl
eGVkREIncyBJREJJbmRleC5jb3VudCgpLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
Kword2luZG93LmluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdElu
ZGV4ZWREQgord2luZG93LklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5zYWN0aW9uIHx8
IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbgord2luZG93LklEQktleVJhbmdlID0gd2luZG93
LklEQktleVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlSYW5nZQoraW5kZXhlZERCLm9wZW4o
J2luZGV4LWNvdW50JykKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorZGIuc2V0VmVyc2lvbign
bmV3IHZlcnNpb24nKQorCitwcmVwYXJpbmcgZGF0YWJhc2UKK3RyYW5zID0gZXZlbnQudGFyZ2V0
LnJlc3VsdAorUEFTUyB0cmFucyAhPT0gbnVsbCBpcyB0cnVlCitEZWxldGVkIGFsbCBvYmplY3Qg
c3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkK
K3N0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnJykKK1BBU1Mgc3RvcmUuaW5kZXhOYW1l
cy5jb250YWlucygnaW5kZXhOYW1lJykgaXMgdHJ1ZQorYWRkaW5nIDAgLi4uIDk5CisKK3Zlcmlm
eWluZyBjb3VudCB3aXRob3V0IHJhbmdlCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5h
bWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpCitQQVNTIHRyYW5zICE9IG51bGwgaXMgdHJ1
ZQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKK1BBU1Mgc3RvcmUgIT0g
bnVsbCBpcyB0cnVlCitpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleE5hbWUnKQorUEFTUyBpbmRl
eCAhPSBudWxsIGlzIHRydWUKK3JlcXVlc3QgPSBpbmRleC5jb3VudCgpCitQQVNTIHR5cGVvZiBy
ZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlz
IDEwMAorCit2ZXJpZnlpbmcgY291bnQgd2l0aCByYW5nZQordHJhbnMgPSBkYi50cmFuc2FjdGlv
bignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorUEFTUyB0cmFucyAhPSBu
dWxsIGlzIHRydWUKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCitQQVNT
IHN0b3JlICE9IG51bGwgaXMgdHJ1ZQoraW5kZXggPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykuaW5kZXgoJ2luZGV4TmFtZScpCitQQVNTIGluZGV4ICE9IG51bGwgaXMgdHJ1ZQorCit0
ZXN0ID0geyJsb3dlciI6MCwibG93ZXJPcGVuIjpmYWxzZSwidXBwZXIiOjk5LCJ1cHBlck9wZW4i
OmZhbHNlLCJleHBlY3RlZCI6MTAwfQorcmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktleVJhbmdl
LmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVy
T3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQ
QVNTIHJlcXVlc3QucmVzdWx0IGlzIDEwMAorCit0ZXN0ID0geyJsb3dlciI6MCwibG93ZXJPcGVu
Ijp0cnVlLCJ1cHBlciI6OTksInVwcGVyT3BlbiI6ZmFsc2UsImV4cGVjdGVkIjo5OX0KK3JlcXVl
c3QgPSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVy
LCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5y
ZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyA5OQorCit0
ZXN0ID0geyJsb3dlciI6MCwibG93ZXJPcGVuIjpmYWxzZSwidXBwZXIiOjk5LCJ1cHBlck9wZW4i
OnRydWUsImV4cGVjdGVkIjo5OX0KK3JlcXVlc3QgPSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5i
b3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9w
ZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQorUEFT
UyByZXF1ZXN0LnJlc3VsdCBpcyA5OQorCit0ZXN0ID0geyJsb3dlciI6MCwibG93ZXJPcGVuIjp0
cnVlLCJ1cHBlciI6OTksInVwcGVyT3BlbiI6dHJ1ZSwiZXhwZWN0ZWQiOjk4fQorcmVxdWVzdCA9
IGluZGV4LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRl
c3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3Vs
dCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDk4CisKK3Rlc3Qg
PSB7Imxvd2VyIjowLCJsb3dlck9wZW4iOmZhbHNlLCJ1cHBlciI6MTAwLCJ1cHBlck9wZW4iOmZh
bHNlLCJleHBlY3RlZCI6MTAwfQorcmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktleVJhbmdlLmJv
dW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3Bl
bikpCitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNT
IHJlcXVlc3QucmVzdWx0IGlzIDEwMAorCit0ZXN0ID0geyJsb3dlciI6MCwibG93ZXJPcGVuIjpm
YWxzZSwidXBwZXIiOjEwMCwidXBwZXJPcGVuIjpmYWxzZSwiZXhwZWN0ZWQiOjEwMH0KK3JlcXVl
c3QgPSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVy
LCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5y
ZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyAxMDAKKwor
dGVzdCA9IHsibG93ZXIiOjEwLCJsb3dlck9wZW4iOmZhbHNlLCJ1cHBlciI6MTAwLCJ1cHBlck9w
ZW4iOmZhbHNlLCJleHBlY3RlZCI6OTB9CityZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5UmFu
Z2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBw
ZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUK
K1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgOTAKKwordGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3Bl
biI6ZmFsc2UsInVwcGVyIjowLCJ1cHBlck9wZW4iOmZhbHNlLCJleHBlY3RlZCI6MX0KK3JlcXVl
c3QgPSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVy
LCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5y
ZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyAxCisKK3Rl
c3QgPSB7Imxvd2VyIjowLCJsb3dlck9wZW4iOnRydWUsInVwcGVyIjowLCJ1cHBlck9wZW4iOnRy
dWUsImV4cGVjdGVkIjowfQorcmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktleVJhbmdlLmJvdW5k
KHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3Blbikp
CitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJl
cXVlc3QucmVzdWx0IGlzIDAKKwordGVzdCA9IHsibG93ZXIiOjIwLCJsb3dlck9wZW4iOnRydWUs
InVwcGVyIjoxMCwidXBwZXJPcGVuIjp0cnVlLCJleHBlY3RlZCI6MH0KK3JlcXVlc3QgPSBpbmRl
eC5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxv
d2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0g
J251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyAwCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFjOGFjNWE0N2Rj
ZjNlOTNhYjJlNGRkN2U5NjI3NTBjYWIxYTg0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50Lmh0bWwKQEAgLTAsMCArMSwxMjUgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCJ3MgSURCSW5kZXguY291bnQoKS4iKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBldmFsQW5kTG9nKCJ3aW5kb3cuaW5kZXhlZERCID0gd2luZG93
LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIik7CisgICAgZXZhbEFuZExvZygi
d2luZG93LklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5zYWN0aW9uIHx8IHdpbmRvdy53
ZWJraXRJREJUcmFuc2FjdGlvbiIpOworICAgIGV2YWxBbmRMb2coIndpbmRvdy5JREJLZXlSYW5n
ZSA9IHdpbmRvdy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2UiKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4LWNvdW50JykiKTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
ZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBw
cmVwYXJlRGF0YWJhc2U7CisgICAgfTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkK
K3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInByZXBhcmluZyBkYXRhYmFzZSIpOworICAg
IHdpbmRvdy50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisKKyAgICB3aW5kb3cuaW5kZXgg
PSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJycpIik7CisgICAg
c2hvdWxkQmVUcnVlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIpOwor
CisgICAgZGVidWcoImFkZGluZyAwIC4uLiA5OSIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTAwOyArK2kpIHsKKyAgICAgICAgcmVxdWVzdCA9IHN0b3JlLmFkZChpLCBpKTsKKyAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgfQorICAgIHRy
YW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudDsKK30KKworZnVuY3Rpb24gdmVyaWZ5Q291bnQo
KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGhvdXQg
cmFuZ2UiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24o
J3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRCZVRy
dWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50V2l0aFJhbmdlOwor
CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0gbnVsbCIpOworICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXhOYW1lJykiKTsKKyAgICBz
aG91bGRCZVRydWUoImluZGV4ICE9IG51bGwiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gaW5kZXguY291bnQoKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgICBzaG91bGRCZVRydWUoInR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVy
JyIpOworICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgIjEwMCIpOworICAgICAg
ICAgLy8gbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorICAgIH07Cit9CisKK2Z1bmN0aW9u
IHZlcmlmeUNvdW50V2l0aFJhbmdlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZl
cmlmeWluZyBjb3VudCB3aXRoIHJhbmdlIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkp
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBkb25l
OworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0gbnVsbCIpOworICAgIHN0
b3JlID0gZXZhbEFuZExvZygiaW5kZXggPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJyku
aW5kZXgoJ2luZGV4TmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleCAhPSBudWxsIik7
CisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFs
c2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAgICAg
ICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiBmYWxz
ZSwgZXhwZWN0ZWQ6IDk5IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2Us
IHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogOTkgfSwKKyAgICAgICAgeyBs
b3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1ZSwgZXhw
ZWN0ZWQ6IDk4IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVy
OiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAgICAgICAgeyBsb3dl
cjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhw
ZWN0ZWQ6IDEwMCB9LAorICAgICAgICB7IGxvd2VyOiAxMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBw
ZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDkwIH0sCisgICAgICAgIHsgbG93
ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBl
Y3RlZDogMSB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiAw
LCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiAwIH0sCisgICAgICAgIHsgbG93ZXI6IDIwLCBs
b3dlck9wZW46IHRydWUsIHVwcGVyOiAxMCwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogMCB9
CisgICAgXTsKKworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgeworICAgICAgICBkZWJ1ZygiIik7
CisgICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMuc2hp
ZnQoKSkpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4LmNv
dW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJP
cGVuLCB0ZXN0LnVwcGVyT3BlbikpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09
ICdudW1iZXInIik7CisgICAgICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgU3Ry
aW5nKHRlc3QuZXhwZWN0ZWQpKTsKKworICAgICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgpIHsK
KyAgICAgICAgICAgICAgICAgbmV4dFRlc3QoKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgLy8gb3RoZXJ3aXNlIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKKyAgICAgICAgfTsK
KyAgICB9CisKKyAgICBuZXh0VGVzdCgpOworfQorCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXggZTUwMzEwMjg0NjJk
ZTUyNTY5Y2FmN2NjMGYxYWQyMWNmOWU3ZjFlNC4uMTFhOTBiMGU2ZGRmMTI2ZGMyNDNlY2I3Njhk
NGNhMzgzODU5M2U2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC0xNCw2ICsxNCwz
MCBAQCBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgogY3JlYXRlT2JqZWN0U3RvcmUoKToKIHN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpCiBzdG9yZU5hbWVz
ID0gZGIub2JqZWN0U3RvcmVOYW1lcworUEFTUyAnbmFtZScgaW4gc3RvcmUgaXMgdHJ1ZQorUEFT
UyAna2V5UGF0aCcgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyAnaW5kZXhOYW1lcycgaW4gc3RvcmUg
aXMgdHJ1ZQorUEFTUyAndHJhbnNhY3Rpb24nIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgJ3B1dCcg
aW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyB0eXBlb2Ygc3RvcmUucHV0IGlzICJmdW5jdGlvbiIKK1BB
U1MgJ2FkZCcgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyB0eXBlb2Ygc3RvcmUuYWRkIGlzICJmdW5j
dGlvbiIKK1BBU1MgJ2RlbGV0ZScgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyB0eXBlb2Ygc3RvcmUu
ZGVsZXRlIGlzICJmdW5jdGlvbiIKK1BBU1MgJ2dldCcgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyB0
eXBlb2Ygc3RvcmUuZ2V0IGlzICJmdW5jdGlvbiIKK1BBU1MgJ2NsZWFyJyBpbiBzdG9yZSBpcyB0
cnVlCitQQVNTIHR5cGVvZiBzdG9yZS5jbGVhciBpcyAiZnVuY3Rpb24iCitQQVNTICdvcGVuQ3Vy
c29yJyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIHR5cGVvZiBzdG9yZS5vcGVuQ3Vyc29yIGlzICJm
dW5jdGlvbiIKK1BBU1MgJ2NyZWF0ZUluZGV4JyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIHR5cGVv
ZiBzdG9yZS5jcmVhdGVJbmRleCBpcyAiZnVuY3Rpb24iCitQQVNTICdpbmRleCcgaW4gc3RvcmUg
aXMgdHJ1ZQorUEFTUyB0eXBlb2Ygc3RvcmUuaW5kZXggaXMgImZ1bmN0aW9uIgorUEFTUyAnZGVs
ZXRlSW5kZXgnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgdHlwZW9mIHN0b3JlLmRlbGV0ZUluZGV4
IGlzICJmdW5jdGlvbiIKK1BBU1MgJ2NvdW50JyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIHR5cGVv
ZiBzdG9yZS5jb3VudCBpcyAiZnVuY3Rpb24iCiBQQVNTIHN0b3JlLm5hbWUgaXMgInN0b3JlTmFt
ZSIKIFBBU1Mgc3RvcmUua2V5UGF0aCBpcyBudWxsCiBQQVNTIHN0b3JlTmFtZXMuY29udGFpbnMo
J3N0b3JlTmFtZScpIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwKaW5kZXggNzYzODBmZmVjN2IxNmQ0MzEyZmQx
OTEyZTgzMTBjZmEwNDQ5MzVkNy4uMjMyYWE4MzNjMjExOThkNGI0YWU3MmZiZTBlOTZmMjZjMjk5
OTRhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3Rv
cmUtYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0
c3RvcmUtYmFzaWNzLmh0bWwKQEAgLTQyLDYgKzQyLDMxIEBAIGZ1bmN0aW9uIHNldFZlcnNpb25T
dWNjZXNzKCkKICAgICB3aW5kb3cuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwogICAgIHZhciBzdG9yZU5hbWVzID0g
ZXZhbEFuZExvZygic3RvcmVOYW1lcyA9IGRiLm9iamVjdFN0b3JlTmFtZXMiKTsKIAorICAgIHNo
b3VsZEJlVHJ1ZSgiJ25hbWUnIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVUcnVlKCIna2V5UGF0
aCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZVRydWUoIidpbmRleE5hbWVzJyBpbiBzdG9yZSIp
OworICAgIHNob3VsZEJlVHJ1ZSgiJ3RyYW5zYWN0aW9uJyBpbiBzdG9yZSIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiJ3B1dCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5
cGVvZiBzdG9yZS5wdXQiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidhZGQnIGlu
IHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuYWRkIiwg
ImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInZGVsZXRlJyBpbiBzdG9yZSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmRlbGV0ZSIsICJmdW5jdGlvbiIp
OworICAgIHNob3VsZEJlVHJ1ZSgiJ2dldCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInR5cGVvZiBzdG9yZS5nZXQiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRy
dWUoIidjbGVhcicgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVv
ZiBzdG9yZS5jbGVhciIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ29wZW5DdXJz
b3InIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUu
b3BlbkN1cnNvciIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2NyZWF0ZUluZGV4
JyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmNy
ZWF0ZUluZGV4IiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInaW5kZXgnIGluIHN0
b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuaW5kZXgiLCAi
ZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidkZWxldGVJbmRleCcgaW4gc3RvcmUiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5kZWxldGVJbmRleCIsICJm
dW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2NvdW50JyBpbiBzdG9yZSIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmNvdW50IiwgImZ1bmN0aW9uIik7CisK
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0b3JlLm5hbWUiLCAic3RvcmVOYW1lIik7CiAg
ICAgc2hvdWxkQmVOdWxsKCJzdG9yZS5rZXlQYXRoIik7CiAgICAgc2hvdWxkQmUoInN0b3JlTmFt
ZXMuY29udGFpbnMoJ3N0b3JlTmFtZScpIiwgInRydWUiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNDgxZTNhODFlZGE1ZWJhY2ZjZDgxYWI4YzM1NTBhNDMyNDg1ZmFiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3Rv
cmUtY291bnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODcgQEAKK1Rlc3QgSW5kZXhlZERCJ3Mg
SURCT2JqZWN0U3RvcmUuY291bnQoKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K3dpbmRvdy5pbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRl
eGVkREIKK3dpbmRvdy5JREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3
aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb24KK3dpbmRvdy5JREJLZXlSYW5nZSA9IHdpbmRvdy5J
REJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2UKK2luZGV4ZWREQi5vcGVuKCdv
YmplY3RzdG9yZS1jb3VudCcpCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK2RiLnNldFZlcnNp
b24oJ25ldyB2ZXJzaW9uJykKKworcHJlcGFyaW5nIGRhdGFiYXNlCit0cmFucyA9IGV2ZW50LnRh
cmdldC5yZXN1bHQKK1BBU1MgdHJhbnMgIT09IG51bGwgaXMgdHJ1ZQorRGVsZXRlZCBhbGwgb2Jq
ZWN0IHN0b3Jlcy4KK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51
bGwpCithZGRpbmcgMCAuLi4gOTkKKwordmVyaWZ5aW5nIGNvdW50IHdpdGhvdXQgcmFuZ2UKK3Ry
YW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05M
WSkKK1BBU1MgdHJhbnMgIT0gbnVsbCBpcyB0cnVlCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKQorUEFTUyBzdG9yZSAhPSBudWxsIGlzIHRydWUKK3JlcXVlc3QgPSBzdG9y
ZS5jb3VudCgpCitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVl
CitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDEwMAorCit2ZXJpZnlpbmcgY291bnQgd2l0aCByYW5n
ZQordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVB
RF9PTkxZKQorUEFTUyB0cmFucyAhPSBudWxsIGlzIHRydWUKK3N0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScpCitQQVNTIHN0b3JlICE9IG51bGwgaXMgdHJ1ZQorCit0ZXN0ID0g
eyJsb3dlciI6MCwibG93ZXJPcGVuIjpmYWxzZSwidXBwZXIiOjk5LCJ1cHBlck9wZW4iOmZhbHNl
LCJleHBlY3RlZCI6MTAwfQorcmVxdWVzdCA9IHN0b3JlLmNvdW50KElEQktleVJhbmdlLmJvdW5k
KHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3Blbikp
CitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJl
cXVlc3QucmVzdWx0IGlzIDEwMAorCit0ZXN0ID0geyJsb3dlciI6MCwibG93ZXJPcGVuIjp0cnVl
LCJ1cHBlciI6OTksInVwcGVyT3BlbiI6ZmFsc2UsImV4cGVjdGVkIjo5OX0KK3JlcXVlc3QgPSBz
dG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0
Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQg
PT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyA5OQorCit0ZXN0ID0g
eyJsb3dlciI6MCwibG93ZXJPcGVuIjpmYWxzZSwidXBwZXIiOjk5LCJ1cHBlck9wZW4iOnRydWUs
ImV4cGVjdGVkIjo5OX0KK3JlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0
ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKQor
UEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1
ZXN0LnJlc3VsdCBpcyA5OQorCit0ZXN0ID0geyJsb3dlciI6MCwibG93ZXJPcGVuIjp0cnVlLCJ1
cHBlciI6OTksInVwcGVyT3BlbiI6dHJ1ZSwiZXhwZWN0ZWQiOjk4fQorcmVxdWVzdCA9IHN0b3Jl
LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93
ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAn
bnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDk4CisKK3Rlc3QgPSB7Imxv
d2VyIjowLCJsb3dlck9wZW4iOmZhbHNlLCJ1cHBlciI6MTAwLCJ1cHBlck9wZW4iOmZhbHNlLCJl
eHBlY3RlZCI6MTAwfQorcmVxdWVzdCA9IHN0b3JlLmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRl
c3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQ
QVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVl
c3QucmVzdWx0IGlzIDEwMAorCit0ZXN0ID0geyJsb3dlciI6MCwibG93ZXJPcGVuIjpmYWxzZSwi
dXBwZXIiOjEwMCwidXBwZXJPcGVuIjpmYWxzZSwiZXhwZWN0ZWQiOjEwMH0KK3JlcXVlc3QgPSBz
dG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0
Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQg
PT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyAxMDAKKwordGVzdCA9
IHsibG93ZXIiOjEwLCJsb3dlck9wZW4iOmZhbHNlLCJ1cHBlciI6MTAwLCJ1cHBlck9wZW4iOmZh
bHNlLCJleHBlY3RlZCI6OTB9CityZXF1ZXN0ID0gc3RvcmUuY291bnQoSURCS2V5UmFuZ2UuYm91
bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVu
KSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1Mg
cmVxdWVzdC5yZXN1bHQgaXMgOTAKKwordGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6ZmFs
c2UsInVwcGVyIjowLCJ1cHBlck9wZW4iOmZhbHNlLCJleHBlY3RlZCI6MX0KK3JlcXVlc3QgPSBz
dG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0
Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQg
PT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyAxCisKK3Rlc3QgPSB7
Imxvd2VyIjowLCJsb3dlck9wZW4iOnRydWUsInVwcGVyIjowLCJ1cHBlck9wZW4iOnRydWUsImV4
cGVjdGVkIjowfQorcmVxdWVzdCA9IHN0b3JlLmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3Qu
bG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNT
IHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3Qu
cmVzdWx0IGlzIDAKKwordGVzdCA9IHsibG93ZXIiOjIwLCJsb3dlck9wZW4iOnRydWUsInVwcGVy
IjoxMCwidXBwZXJPcGVuIjp0cnVlLCJleHBlY3RlZCI6MH0KK3JlcXVlc3QgPSBzdG9yZS5jb3Vu
dChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3Bl
biwgdGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJl
cicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWJlZjA3
ZmJmMGJhZTc0NGY1ZjVkM2VhM2Q0MzY4NmZkMTZjMmE2MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50Lmh0bWwKQEAgLTAs
MCArMSwxMTggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCJ3MgSURCT2JqZWN0U3RvcmUuY291bnQoKS4iKTsKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBldmFsQW5kTG9nKCJ3aW5kb3cu
aW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIik7
CisgICAgZXZhbEFuZExvZygid2luZG93LklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5z
YWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbiIpOworICAgIGV2YWxBbmRMb2co
IndpbmRvdy5JREJLZXlSYW5nZSA9IHdpbmRvdy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0
SURCS2V5UmFuZ2UiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
J29iamVjdHN0b3JlLWNvdW50JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwor
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJlRGF0YWJhc2U7CisgICAgfTsKK30KKworZnVu
Y3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInBy
ZXBhcmluZyBkYXRhYmFzZSIpOworICAgIHdpbmRvdy50cmFucyA9IGV2YWxBbmRMb2coInRyYW5z
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51
bGwiKTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwp
Iik7CisKKyAgICBkZWJ1ZygiYWRkaW5nIDAgLi4uIDk5Iik7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDA7ICsraSkgeworICAgICAgICByZXF1ZXN0ID0gc3RvcmUuYWRkKGksIGkpOworICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9Cisg
ICAgdHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50OworfQorCitmdW5jdGlvbiB2ZXJpZnlD
b3VudCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0
aG91dCByYW5nZSIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnRXaXRoUmFu
Z2U7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLmNvdW50KCkiKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVx
dWVzdC5yZXN1bHQgPT0gJ251bWJlciciKTsKKyAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJl
c3VsdCIsICIxMDAiKTsKKyAgICAgICAgIC8vIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUK
KyAgICB9OworfQorCitmdW5jdGlvbiB2ZXJpZnlDb3VudFdpdGhSYW5nZSgpCit7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCByYW5nZSIpOworICAgIHRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURC
VHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVs
bCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0
cmFucy5vbmNvbXBsZXRlID0gZG9uZTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0
b3JlICE9IG51bGwiKTsKKworICAgIHZhciB0ZXN0cyA9IFsKKyAgICAgICAgeyBsb3dlcjogMCwg
bG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDog
MTAwIH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1
cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogOTkgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93
ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OSB9
LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJP
cGVuOiB0cnVlLCBleHBlY3RlZDogOTggfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVu
OiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAor
ICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9w
ZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0sCisgICAgICAgIHsgbG93ZXI6IDEwLCBsb3dlck9w
ZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogOTAgfSwK
KyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDAsIHVwcGVyT3Bl
bjogZmFsc2UsIGV4cGVjdGVkOiAxIH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3Blbjog
dHJ1ZSwgdXBwZXI6IDAsIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IDAgfSwKKyAgICAgICAg
eyBsb3dlcjogMjAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDEwLCB1cHBlck9wZW46IHRydWUs
IGV4cGVjdGVkOiAwIH0KKyAgICBdOworCisgICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7CisgICAg
ICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZXZhbEFuZExvZygidGVzdCA9ICIgKyBKU09OLnN0cmlu
Z2lmeSh0ZXN0cy5zaGlmdCgpKSk7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gc3RvcmUuY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBl
ciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkiKTsKKyAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVx
dWVzdC5yZXN1bHQgPT0gJ251bWJlciciKTsKKyAgICAgICAgICAgICBzaG91bGRCZSgicmVxdWVz
dC5yZXN1bHQiLCBTdHJpbmcodGVzdC5leHBlY3RlZCkpOworCisgICAgICAgICAgICAgaWYgKHRl
c3RzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOworICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0
ZQorICAgICAgICB9OworICAgIH0KKworICAgIG5leHRUZXN0KCk7Cit9CisKK3Rlc3QoKTsKKwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118253</attachid>
            <date>2011-12-07 12:39:35 -0800</date>
            <delta_ts>2011-12-07 13:57:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73686-20111207123934.patch</filename>
            <type>text/plain</type>
            <size>54528</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDc1YzlhZDk5NDcwNGE4
NzljYzA2MDVkM2MwNWYwMjQ0OWZmNWE0Ny4uOTI4MGQwZTA2ODM3Y2FjNThlZGM4MDQ2ZWJhNjRk
MjI1YmM3OGYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTEyLTA3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBs
ZW1lbnQgSURCT2JqZWN0U3RvcmUuY291bnQoKSBhbmQgSURCSW5kZXguY291bnQoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM2ODYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3RlIHRoYXQgb25seSB0
aGUgKG9wdGlvbmFsKSBJREJLZXlSYW5nZSBhcmd1bWVudCBpcyBzdXBwb3J0ZWQsIG5vdAorICAg
ICAgICBhIHNpbmdsZSBJREJLZXkuIFRoYXQgd2lsbCByZXF1aXJlIHNvbWUgSURML2JpbmRpbmcg
bW9ua2V5aW5nIGFuZCBpdAorICAgICAgICBhcHBsaWVzIHRvIHNldmVyYWwgb3RoZXIgbWV0aG9k
cyBhcyB3ZWxsLgorCisgICAgICAgIFRlc3RzOiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3Vu
dC5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3Vu
dC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudW1iZXJWYWx1ZSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAg
ICogc3RvcmFnZS9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3Bl
bkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Y291bnQpOgorICAgICAgICAq
IHN0b3JhZ2UvSURCSW5kZXguaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpjb3VudCk6
CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJJ
bmRleEJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZElt
cGw6OmNvdW50SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1w
bDo6Y291bnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogc3Rv
cmFnZS9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZTo6Y291bnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6CisgICAgICAgICogc3RvcmFnZS9JREJP
YmplY3RTdG9yZS5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50
SW50ZXJuYWwpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5o
OgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmg6CisK
IDIwMTEtMTEtMzAgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgog
CiAgICAgICAgIFtRdF0gVjggYnVpbGQgZml4ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDEyNGRiMDFiZGFkYTUxNWI4NGNiNjFhOWFiZTZjMjNmZTJmOTE2ZGYuLjJmMTNjNzU3YTUw
ZjFhZDE5YjM2MzM3ZGZmYzUwODZjYTBhY2E4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTItMDcgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEltcGxlbWVudCBJREJPYmplY3RTdG9yZS5j
b3VudCgpIGFuZCBJREJJbmRleC5jb3VudCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MzY4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRFTVBPUkFSWTogVGhlIFdlYktpdCBBUEkgY2hhbmdlcyAocHVi
bGljL1dlYklEQiouaCkgd2lsbCBsYW5kIGZpcnN0CisgICAgICAgIGFuZCBhcmUgdHJhY2tlZCBp
biBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM2ODUgLSBpbmNsdWRp
bmcKKyAgICAgICAgaGVyZSB1bnRpbCB0aGF0IGxhbmRzIG9yIHRoaXMgd29uJ3QgYnVpbGQuCisK
KyAgICAgICAgKiBwdWJsaWMvV2ViSURCSW5kZXguaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
SW5kZXg6OmNvdW50KToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmU6OmNvdW50KToKKyAgICAgICAgKiBzcmMv
SURCSW5kZXhCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJJbmRleEJhY2tl
bmRQcm94eTo6Y291bnQpOgorICAgICAgICAqIHNyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oOgor
ICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5Ojpjb3VudCk6CisgICAgICAgICogc3Jj
L0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogc3JjL1dlYklEQkluZGV4
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4SW1wbDo6Y291bnQpOgorICAg
ICAgICAqIHNyYy9XZWJJREJJbmRleEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpj
b3VudCk6CisKIDIwMTEtMTItMDYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgRml4IHR5cG8gaW4gV2ViS2l0Lmd5cCBpbnRyb2R1Y2VkIGluIHByZXZpb3Vz
IGNoYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCmluZGV4IDcwMzFhNTUyMjI3MGU1OTUwMDE1YzczMTI5YWEyOTNiYjIy
ODE4NTYuLjY4YzMzMTZiY2Y0OTBiMTVkYTk0Njg2YTI3MjZjNDhjZWVjMzI0NTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cApAQCAtMjEyNCw2ICsyMTI0LDE0IEBAIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmJvb2xlYW5WYWx1ZShib29sIHZhbHVlCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUod2lyZURhdGEpKTsKIH0KIAor
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
bnVtYmVyVmFsdWUoZG91YmxlIHZhbHVlKQoreworICAgIFdyaXRlciB3cml0ZXI7CisgICAgd3Jp
dGVyLndyaXRlTnVtYmVyKHZhbHVlKTsKKyAgICBTdHJpbmcgd2lyZURhdGEgPSBTdHJpbmdJbXBs
OjphZG9wdCh3cml0ZXIuZGF0YSgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSh3aXJlRGF0YSkpOworfQorCiBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpyZWxlYXNlKCkKIHsKICAgICBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiByZXN1bHQgPSBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKG1fZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCAyNWRhODg5YjA4N2QxNWZmNDQxOGZkYWRlMzUw
ZDRiZWVmNjQ2M2EyLi5kM2E2NjhiOTgzYzQwYWI0YjM4YWE2NzdmZDM3NzMzYjMzMDRjMWUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSogbnVsbFZhbHVlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB1bmRlZmluZWRWYWx1ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gYm9vbGVhblZhbHVlKGJvb2wgdmFsdWUpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbnVtYmVyVmFsdWUoZG91YmxlIHZhbHVl
KTsKIAogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiByZWxlYXNlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5jcHAKaW5kZXggNzA5NjEzMDIzYzc3MDNjZTM5ZTVk
YjY0YjNhYTY0Mjc4ZTA3MTBhZi4uYmYyZDM4YWYyYjE3ZjI4NTYwMDYwYWEyMTM3ZDI5YWRkMWUy
YWFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5jcHAKQEAgLTczLDYgKzczLDE3IEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKK1Bhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNy
ZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7
CisgICAgbV9iYWNrZW5kLT5jb3VudChrZXlSYW5nZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+
YmFja2VuZCgpLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIHJlcXVlc3QtPm1hcmtFYXJs
eURlYXRoKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVxdWVzdDsK
K30KKwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBpZiAoZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6TkVYVCAmJiBkaXJlY3Rpb24gIT0gSURCQ3Vy
c29yOjpORVhUX05PX0RVUExJQ0FURSAmJiBkaXJlY3Rpb24gIT0gSURCQ3Vyc29yOjpQUkVWICYm
IGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6OlBSRVZfTk9fRFVQTElDQVRFKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkluZGV4LmgKaW5kZXggNWQ4OGFmY2RmYjZlYTUxMWJkNzNjZDY2ZGNiOWUwNGU2MjBh
NjdhNy4uOTZiMzgwYmM5ODBkZDljYzJhMjhhOGZmMTk4ZjUyYzY0MWYyZjQ3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCSW5kZXguaApAQCAtNTgsNiArNTgsOCBAQCBwdWJsaWM6CiAgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIDAsIGVj
KTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElE
QkN1cnNvcjo6TkVYVCwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vy
c29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5z
aWduZWQgc2hvcnQgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRp
b25Db2RlJiBlYykgeyByZXR1cm4gY291bnQoY29udGV4dCwgMCwgZWMpOyB9CisgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNl
cHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCAwLCBlYyk7IH0g
CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNl
cHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBrZXlSYW5nZSwg
SURCQ3Vyc29yOjpORVhULCBlYyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCSW5kZXguaWRsIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5pZGwKaW5k
ZXggYjBmMzJhYTdhMGU5ZWQ3ZjM2MWM3NzQ5M2I5ZWExMzVhOTkwNTMzOC4uNGM4ZjY1NWUzYWMy
ZjhiZTFmNzE1NTQzNDFkMDM3NjIzYzdiZGZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJJbmRleC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRl
eC5pZGwKQEAgLTQyLDYgKzQyLDggQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICAgICAgcmFp
c2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGdldEtleShpbiBJREJLZXkga2V5KQogICAgICAgICAg
ICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CisgICAgICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGNvdW50KGluIFtPcHRpb25hbF0gSURCS2V5
UmFuZ2UgcmFuZ2UpCisgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsK
ICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4
QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJ
bXBsLmNwcAppbmRleCBmMGRjZjNkN2VkMzllZDljMjVkMmEzYjA3ZWZmN2JjZDRmNWJkMzhmLi42
ZjYxZjc3NGRhOTdkYmJkM2JhZTBlM2VjNDAwMjkzZjViN2Y2MGM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTEyMiw2ICsxMjIsMjkg
QEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IHBycEtleVJhbmdlLCB1bnMKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6Tk9UX0FMTE9XRURfRVJSOwogfQogCit2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmNv
dW50SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24pCit7CisgICAgdWludDMyX3QgY291bnQgPSAwOwor
CisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3Ig
PSBpbmRleC0+bV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcihpbmRleC0+bV9kYXRh
YmFzZUlkLCBpbmRleC0+bV9vYmplY3RTdG9yZUJhY2tlbmQtPmlkKCksIGluZGV4LT5pZCgpLCBy
YW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKKyAgICBpZiAoIWJhY2tpbmdTdG9yZUN1cnNv
cikgeworICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6
Om51bWJlclZhbHVlKGNvdW50KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkbyB7
CisgICAgICAgICsrY291bnQ7CisgICAgfSB3aGlsZSAoYmFja2luZ1N0b3JlQ3Vyc29yLT5jb250
aW51ZUZ1bmN0aW9uKDApKTsKKyAgICBiYWNraW5nU3RvcmVDdXJzb3ItPmNsb3NlKCk7CisgICAg
Y2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudW1iZXJWYWx1ZShj
b3VudCkpOworfQorCit2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmNvdW50KFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZjb3VudEludGVybmFsLCB0aGlzLCByYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlv
bikpKQorICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7
Cit9CisKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NS
ZWZQdHI8SURCS2V5PiBrZXksIGJvb2wgZ2V0T2JqZWN0LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogewogICAgIC8vIEZJWE1FOiBTcGxpdCBnZXRJbnRlcm5hbCBpbnRvIHR3
byBmdW5jdGlvbnMsIGdldHRpbmcgcmlkIG9mZiB8Z2V0T2JqZWN0fC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmgKaW5kZXggNDJlNWY3NzAyMzFmM2Y0OTk0
ODM5M2RhNDUwMjM0ZTYyNjZmMGZhMy4uMTIyNzRhZThiZTdmMDMwYTU4MWMzZDRjNWZhMjYxZTU0
N2I3MzI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tl
bmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBs
LmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBtdWx0aUVudHJ5
KCkgeyByZXR1cm4gbV9tdWx0aUVudHJ5OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNv
cihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnQoUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29y
KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0cjxJREJLZXk+LCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0S2V5KFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CkBAIC03Nyw2ICs3OCw3IEBAIHByaXZhdGU6CiAgICAg
SURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnkpOwogCiAgICAgc3RhdGljIHZvaWQgb3BlbkN1cnNvckludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CisgICAgc3Rh
dGljIHZvaWQgY291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+KTsKICAgICBzdGF0aWMgdm9pZCBnZXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBi
b29sIGdldE9iamVjdCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAogICAgIHN0YXRpYyBj
b25zdCBpbnQ2NF90IEludmFsaWRJZCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCA3Y2UwZWYzYmE4Y2UyZDdlMGQ5NjI1
OTRiMDRhY2ViNTcwMWJmNTc0Li5hMGYxYmE4MWI5OTYzNmZmOTNlNDlkMzcyYjU2NTAwZDgzMDc3
MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZElu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBtdWx0
aUVudHJ5KCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjb3VudChQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29yKFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9u
Q29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8SURCS2V5PiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRLZXkoUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmUuY3BwCmluZGV4IGM5MDg2ZTVjYjZkZDYzZDUxOTIwYWUyMmZkMDI3ZDg0NDJh
ZDA4ZTkuLjc0YTgwMDFmN2NjZDIxNjdhZGI4YjBmOGQ5OTUwMTJmMDdjZjk0ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0yMDIsNiArMjAyLDE3IEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwog
fQogCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJ
REJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNh
Y3Rpb24uZ2V0KCkpOworICAgIG1fYmFja2VuZC0+Y291bnQocmFuZ2UsIHJlcXVlc3QsIG1fdHJh
bnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOworICAgIGlmIChlYykgeworICAgICAgICByZXF1ZXN0
LT5tYXJrRWFybHlEZWF0aCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJu
IHJlcXVlc3QucmVsZWFzZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmUuaAppbmRleCA5YjVhYTZiMmQzZjUzNzMxYmM2MTY1OWI5NjU2YzM2MzQ5YmNmMjZi
Li44MGJiZTA4YTlhY2FhZmFmNGZjNGM4ZWQ2YWQ0MDEyNDVhNzRiMjFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCkBAIC03OCw2ICs3OCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwog
CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9u
LCBFeGNlcHRpb25Db2RlJik7IAorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJu
IGNvdW50KGNvbnRleHQsIDAsIGVjKTsgfQorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNl
cHRpb25Db2RlJik7CiAKIHByaXZhdGU6CiAgICAgSURCT2JqZWN0U3RvcmUoUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+LCBJREJUcmFuc2FjdGlvbiopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlkbAppbmRleCAwMzkzMmU3NzE5NTJlYmEx
YTdlZjY2ZDFmNzk4YzcwZmFlNGY5YWEyLi5lYWUwYmVjZTM4YjNhZGI2ZmE1MTBkZDFiMjVmY2Ji
Nzc0YjgyN2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlkbApA
QCAtNTEsNSArNTEsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgICAgICByYWlzZXMgKElE
QkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBkZWxldGVJbmRleChpbiBET01TdHJp
bmcgbmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOworICAg
ICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBjb3VudChp
biBbT3B0aW9uYWxdIElEQktleVJhbmdlIHJhbmdlKQorICAgICAgICAgICAgcmFpc2VzIChJREJE
YXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDgwZjBmYzczMDA2ZTNh
NWY3ODVhNTU5ODY5ODhmZDZmYjM4MjljMWMuLjIxOWY5MWI0ZDE3Y2YyODJmMjA1YTE2NjRkMTE0
YzAzNTI0ZGM0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtNTQ2LDYgKzU0NiwyOSBAQCB2b2lkIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzcwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGN1cnNvci5yZWxlYXNlKCkpOwog
fQogCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50KFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tU
YXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudEludGVybmFsLCB0aGlzLCByYW5n
ZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQorICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7Cit9CisKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6Y291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbikKK3sKKyAgICB1
aW50MzJfdCBjb3VudCA9IDA7CisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBi
YWNraW5nU3RvcmVDdXJzb3IgPSBvYmplY3RTdG9yZS0+bV9iYWNraW5nU3RvcmUtPm9wZW5PYmpl
Y3RTdG9yZUN1cnNvcihvYmplY3RTdG9yZS0+bV9kYXRhYmFzZUlkLCBvYmplY3RTdG9yZS0+aWQo
KSwgcmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CisgICAgaWYgKCFiYWNraW5nU3RvcmVD
dXJzb3IpIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpudW1iZXJWYWx1ZShjb3VudCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
ZG8geworICAgICAgICArK2NvdW50OworICAgIH0gd2hpbGUgKGJhY2tpbmdTdG9yZUN1cnNvci0+
Y29udGludWVGdW5jdGlvbigwKSk7CisKKyAgICBiYWNraW5nU3RvcmVDdXJzb3ItPmNsb3NlKCk7
CisgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudW1iZXJW
YWx1ZShjb3VudCkpOworfQorCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmxvYWRJ
bmRleGVzKCkKIHsKICAgICBWZWN0b3I8aW50NjRfdD4gaWRzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaAppbmRleCA5MjliNmE0ZjAx
NDBlMWRjNzFiMjM3ZjM0NWNhMzQ5MzJkN2ZhMTE4Li4yYWI1NjI3MzBhN2JkZTBkNWFiZWIwYTc0
MjMxZTk0MzgwOTZjMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuaApAQCAtNzYsNiArNzYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdmlydHVhbCB2b2lkIG9w
ZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRp
cmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGNvdW50KFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHN0YXRpYyBib29s
IHBvcHVsYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4pOwogCkBA
IC05NSw2ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgY3JlYXRlSW5kZXhJbnRl
cm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVJ
bmRleEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHN0YXRpYyB2b2lk
IG9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2Us
IHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOworICAgIHN0YXRpYyB2b2lk
IGNvdW50SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
Pik7CiAKICAgICAvLyBUaGVzZSBhcmUgdXNlZCBhcyBzZXRWZXJzaW9uIHRyYW5zYWN0aW9uIGFi
b3J0IHRhc2tzLgogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUluZGV4RnJvbU1hcChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFz
c1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBiMTU3OWI1
NDQxYWU5ZjY0ZDgwM2EwMDY5MzBhNjk0NWIyOGMzZDdlLi4xZDcxMjVlNjQ5ZDU1MzdkMjMzYWYz
ZGQ3MWFhMDI5NjZiZmFjNjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWdu
ZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJREJJbmRleC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCSW5kZXguaAppbmRleCAyMjNlNWNjZThkNmQ5OTUwOWFhOThkNDFhYmQ1OGQx
ZTMxZWI4ZjgyLi5iN2Y1MjZkNzYzYjVmZjJjYjNmYmRiZTUwNWUwODU5NTQwZDlmOTJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJJbmRleC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkluZGV4LmgKQEAgLTY5LDYgKzY5
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5PYmplY3RDdXJzb3IoY29uc3Qg
V2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNr
cyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9wZW5LZXlDdXJzb3Io
Y29uc3QgV2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNh
bGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGNvdW50KGNv
bnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0KGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNh
bGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGdldEtleShj
b25zdCBXZWJJREJLZXkmLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlv
biYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUu
aAppbmRleCAwOTY5MTYzY2FhNDEyZjVlNDU0NTIwYTIxZDU2OGIzMWU4N2Q3OGM5Li40NDQ4YTli
YjQ3ODEwMjQyZWM3YTdjNGVhZjdlMzg1ZDA3ZjNjNTAxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKQEAgLTg4LDYgKzg4LDcgQEAg
cHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vy
c29yKGNvbnN0IFdlYklEQktleVJhbmdlJiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBXZWJJ
REJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUm
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjb3Vu
dChjb25zdCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRy
YW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiAKIHByb3RlY3RlZDoKICAgICBXZWJJREJPYmplY3RTdG9yZSgpIHt9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAKaW5k
ZXggOGU5NjYwMDFkOTczZWIwYWIxMjI1MTg3NjI3NzA5MTA1YTk3MGFiMy4uYmMyYzgzNmY4YjM4
NDYzNDIzYmZkNTkzYWU5MGExZjBkZjQ4NzA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcApAQCAtODgsNiArODgsMTQgQEAg
dm9pZCBJREJJbmRleEJhY2tlbmRQcm94eTo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgdW5zaWduZWQKICAgICBtX3dlYklEQkluZGV4LT5vcGVuT2JqZWN0Q3Vy
c29yKGtleVJhbmdlLCBkaXJlY3Rpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNr
cyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7CiB9CiAK
K3ZvaWQgSURCSW5kZXhCYWNrZW5kUHJveHk6OmNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9p
bnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLAorICAgIC8vIGFsbCBp
bXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJlIHByb3h5IG9iamVjdHMuCisgICAg
SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0aW9uUHJveHkgPSBzdGF0aWNfY2Fz
dDxJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5zYWN0aW9uKTsKKyAgICBtX3dlYklE
QkluZGV4LT5jb3VudChrZXlSYW5nZSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tz
KSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsKK30KKwog
dm9pZCBJREJJbmRleEJhY2tlbmRQcm94eTo6b3BlbktleUN1cnNvcihQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRy
YW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBUaGUgdHJhbnNhY3Rpb24g
cG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBh
cywgaW4gdGhlIHJlbmRlcmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkluZGV4QmFja2VuZFByb3h5LmgKaW5kZXggZjM5MTlhYTBjYjA3ZDVhYThiMmQxMzYwMmY4ZmFl
ODViYzgxYjg1My4uNGNlOGM4NzZiYjFkMTBhNzJmNzNjYTJhNDAzZTdkMmVlYjU5OWMwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5o
CkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29y
KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rp
b24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZp
cnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+
LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJh
Y2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBjb3VudChQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGdldChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4s
IFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRLZXkoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCmluZGV4
IGI1Y2IwOGQ5YjA5NzMwOWM5NjBlNjg5YjQzNDViMzdhYTdjYTE0YmUuLjcxZmI1NzFkMTI1ZTQz
NDJjMGM5YzQ0MzEyODFjNmY0ZmQ1ZjA2ZjQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKQEAgLTE0MSw2
ICsxNDEsMTQgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6b3BlbkN1cnNvcihQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWcKICAgICBtX3dlYklEQk9iamVjdFN0
b3JlLT5vcGVuQ3Vyc29yKHJhbmdlLCBkaXJlY3Rpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBs
KGNhbGxiYWNrcyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBl
Yyk7CiB9CiAKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNvdW50KFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVk
IHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLAor
ICAgIC8vIGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJlIHByb3h5IG9i
amVjdHMuCisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0aW9uUHJveHkg
PSBzdGF0aWNfY2FzdDxJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5zYWN0aW9uKTsK
KyAgICBtX3dlYklEQk9iamVjdFN0b3JlLT5jb3VudChyYW5nZSwgbmV3IFdlYklEQkNhbGxiYWNr
c0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9u
KCksIGVjKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oCmluZGV4IDRhYzM5MTkzNjk2OWNmMGY2N2Iz
YzcyZWNjNzA3YjE0NGZlYzY0NjcuLjZkMzM1NjM1YzVmNWM5ZWM1MDQwOGEyMzk1ZGFkYzRjMTQ3
OWMzM2QgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0
b3JlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kUHJveHkuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCB1bnNp
Z25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwg
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBjb3VudChQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QktleVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7
CiAKIHByaXZhdGU6CiAgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkoUGFzc093blB0cjxX
ZWJJREJPYmplY3RTdG9yZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCSW5kZXhJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkluZGV4SW1wbC5jcHAKaW5kZXggMDc3Mzk3YTMzZjllMmRmNzk2NzEyYTYzZDkyZjgyZDliY2Q1
NTA4Yy4uNzEwZTMwMGY5ZDg1OWI1ZmU1YzY2ZjllZjRmZTNiYzUwZmE1OGUxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3BwCkBAIC04Myw2ICs4
MywxMSBAQCB2b2lkIFdlYklEQkluZGV4SW1wbDo6b3BlbktleUN1cnNvcihjb25zdCBXZWJJREJL
ZXlSYW5nZSYga2V5UmFuZ2UsIHVuc2lnbmVkIHNobwogICAgIG1fYmFja2VuZC0+b3BlbktleUN1
cnNvcihrZXlSYW5nZSwgZGlyZWN0aW9uLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0
UHRyKGNhbGxiYWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UoKSwgZWMpOwogfQogCit2b2lkIFdlYklEQkluZGV4SW1wbDo6Y291bnQoY29uc3QgV2Vi
SURCS2V5UmFuZ2UmIGtleVJhbmdlLCAgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0
IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgbV9iYWNrZW5kLT5jb3VudChrZXlSYW5nZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0
ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKCksIGVjKTsKK30KKwogdm9pZCBXZWJJREJJbmRleEltcGw6OmdldE9iamVj
dChjb25zdCBXZWJJREJLZXkmIGtleVJhbmdlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywg
Y29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBtX2JhY2tlbmQtPmdldChrZXlSYW5nZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNy
ZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkluZGV4SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCSW5kZXhJbXBsLmgKaW5kZXggMDA2ZjllNTExYzkwZjYyMzdjYTdhOTg0NDZhZDlhZTJhZGI5
NzI2Ni4uMjI2ZmViOGUzMDFmMzE3NzUxMDhmMzQ3NWU4ZjNjOWJkMjZmZDY1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmgKQEAgLTUxLDYgKzUxLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5PYmplY3RDdXJzb3IoY29uc3QgV2Vi
SURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNrcyos
IGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOyAKICAgICB2aXJ0
dWFsIHZvaWQgb3BlbktleUN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYsIHVuc2lnbmVkIHNo
b3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24m
LCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGNvdW50KGNvbnN0IFdlYklE
QktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBX
ZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGdldE9iamVjdChjb25zdCBXZWJJ
REJLZXkmLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0S2V5KGNvbnN0IFdlYklEQktleSYs
IFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9u
Q29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJP
YmplY3RTdG9yZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2Jq
ZWN0U3RvcmVJbXBsLmNwcAppbmRleCAxZDViZmY2ZTJhMTMwZTFiMWM5ODhmZTEwY2Q2ZTkxMGYx
MDhhMDQ2Li4xZWM4YWY1YmMyYzA1ZDg5ZGYzYjVmYTgxMjNkOWVmNTQxMDM4MjBiIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5j
cHAKQEAgLTExMyw2ICsxMTMsMTEgQEAgdm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6Om9wZW5D
dXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmIGtleVJhbmdlLCB1bnNpZ25lZAogICAgIG1fb2Jq
ZWN0U3RvcmUtPm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIGRpcmVjdGlvbiwgSURCQ2FsbGJhY2tzUHJv
eHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKIH0KIAordm9pZCBXZWJJREJPYmplY3RTdG9y
ZUltcGw6OmNvdW50KGNvbnN0IFdlYklEQktleVJhbmdlJiBrZXlSYW5nZSwgV2ViSURCQ2FsbGJh
Y2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2Vi
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgbV9vYmplY3RTdG9yZS0+Y291bnQoa2V5UmFuZ2Us
IElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIHRyYW5zYWN0
aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUlt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5o
CmluZGV4IGIyZDE5ZWQzNWMzNzU0NmEyODI2MjkzOWJjM2JlYjg1MmU4YmQzNjguLjZmNTgwZjAx
YWQwMzE2MmM1NWJiYWMwZmZiZGYyZGQ3MTNhYzkzNTggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCkBAIC02MSw2ICs2MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29u
c3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIG9w
ZW5DdXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24s
IFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgY291bnQoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCBXZWJJREJDYWxs
YmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKIAog
IHByaXZhdGU6CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlPiBtX29iamVjdFN0b3JlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBhY2NiNDY3YjJiNmE0MmQ0MzlmNzYy
NDQxNmFhMGFkZWUzNGI4MzYuLjFhMTJiNTVmNzY4MmI0YmNjZGNjODM3NTY1YTJjOWM2YTc5NDIy
MDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0xMi0wNyAgSm9zaHVhIEJlbGwgIDxqc2Jl
bGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogSW1wbGVtZW50IElEQk9iamVj
dFN0b3JlLmNvdW50KCkgYW5kIElEQkluZGV4LmNvdW50KCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNjg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNp
Y3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2lj
cy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQuaHRt
bDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1i
YXNpY3MuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3Vu
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dHN0b3JlLWNvdW50Lmh0bWw6IEFkZGVkLgorCiAyMDExLTEyLTA3ICBCYWxhenMgS2VsZW1lbiAg
PGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdW1dLMl0gUkVHUkVTU0lPTigxMDIy
MjgpOiBsb3Qgb2YgdGVzdCBmYWlsdXJlcyBhZnRlciBlbmFibGVkIHBhZ2UgY2FjaGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MtZXhwZWN0
ZWQudHh0CmluZGV4IGQ2NzA5ODdmYzA5NjAxNTczYzkwZWVjMTc5ODUyZmRmMjAwMjg0NGUuLjU1
YTBhNThlN2RkZGE0YTZjNmZmYzU2NWU2YmYyM2UxMjAzYzRlN2UgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLWV4cGVjdGVkLnR4dApA
QCAtMjUsOSArMjUsMTUgQEAgUEFTUyAnbXVsdGlFbnRyeScgaW4gaW5kZXhPYmplY3QgaXMgdHJ1
ZQogUEFTUyBpbmRleE9iamVjdC51bmlxdWUgaXMgZmFsc2UKIFBBU1MgaW5kZXhPYmplY3QubXVs
dGlFbnRyeSBpcyBmYWxzZQogUEFTUyAnb3BlbktleUN1cnNvcicgaW4gaW5kZXhPYmplY3QgaXMg
dHJ1ZQorUEFTUyB0eXBlb2YgaW5kZXhPYmplY3Qub3BlbktleUN1cnNvciBpcyAiZnVuY3Rpb24i
CiBQQVNTICdvcGVuQ3Vyc29yJyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCitQQVNTIHR5cGVvZiBp
bmRleE9iamVjdC5vcGVuQ3Vyc29yIGlzICJmdW5jdGlvbiIKIFBBU1MgJ2dldEtleScgaW4gaW5k
ZXhPYmplY3QgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgaW5kZXhPYmplY3QuZ2V0S2V5IGlzICJmdW5j
dGlvbiIKIFBBU1MgJ2dldCcgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgaW5k
ZXhPYmplY3QuZ2V0IGlzICJmdW5jdGlvbiIKK1BBU1MgJ2NvdW50JyBpbiBpbmRleE9iamVjdCBp
cyB0cnVlCitQQVNTIHR5cGVvZiBpbmRleE9iamVjdC5jb3VudCBpcyAiZnVuY3Rpb24iCiBzdG9y
ZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonLCB6OiAyLjcyfSwgJ2tleScpCiBldmVudC50YXJn
ZXQuc291cmNlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJywgejogMi43MSwgZm9vYmFyOiAx
Mn0sICdrZXkyJykKIHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleFdoaWxlQWRkSXNJbkZsaWdodCcs
ICd4JykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJh
c2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0
bWwKaW5kZXggYTkyM2FiOGVlMWNiYjFhZDU4MDgyOTUzNTgwMWM4ZGYwYzE3NzhkOC4uOWJhZjdk
NzQ1NDg1YTdiNGVkOTJiMzQ3OWUyNDc1NGI3OTU4ZjkzMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWwKQEAgLTU3LDkgKzU3LDE1IEBAIGZ1
bmN0aW9uIGFkZERhdGEoKQogICAgIHNob3VsZEJlRmFsc2UoImluZGV4T2JqZWN0LnVuaXF1ZSIp
OwogICAgIHNob3VsZEJlRmFsc2UoImluZGV4T2JqZWN0Lm11bHRpRW50cnkiKTsKICAgICBzaG91
bGRCZVRydWUoIidvcGVuS2V5Q3Vyc29yJyBpbiBpbmRleE9iamVjdCIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygidHlwZW9mIGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IiLCAiZnVuY3Rp
b24iKTsKICAgICBzaG91bGRCZVRydWUoIidvcGVuQ3Vyc29yJyBpbiBpbmRleE9iamVjdCIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIGluZGV4T2JqZWN0Lm9wZW5DdXJzb3Ii
LCAiZnVuY3Rpb24iKTsKICAgICBzaG91bGRCZVRydWUoIidnZXRLZXknIGluIGluZGV4T2JqZWN0
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgaW5kZXhPYmplY3QuZ2V0S2V5
IiwgImZ1bmN0aW9uIik7CiAgICAgc2hvdWxkQmVUcnVlKCInZ2V0JyBpbiBpbmRleE9iamVjdCIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIGluZGV4T2JqZWN0LmdldCIsICJm
dW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2NvdW50JyBpbiBpbmRleE9iamVjdCIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIGluZGV4T2JqZWN0LmNvdW50IiwgImZ1
bmN0aW9uIik7CiAKICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFs
dWUnLCB5OiAnenp6JywgejogMi43Mn0sICdrZXknKSIpOwogICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gYWRkRGF0YTI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9p
bmRleC1jb3VudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9p
bmRleC1jb3VudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFiODE3ZjgzMDQ1ZTczOTMxZDIx
OGY4MTdhMmY5OGJlYmZjYWQ1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2luZGV4LWNvdW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkzIEBACitU
ZXN0IEluZGV4ZWREQidzIElEQkluZGV4LmNvdW50KCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCit3aW5kb3cuaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cu
d2Via2l0SW5kZXhlZERCCit3aW5kb3cuSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNh
Y3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uCit3aW5kb3cuSURCS2V5UmFuZ2Ug
PSB3aW5kb3cuSURCS2V5UmFuZ2UgfHwgd2luZG93LndlYmtpdElEQktleVJhbmdlCitpbmRleGVk
REIub3BlbignaW5kZXgtY291bnQnKQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitkYi5zZXRW
ZXJzaW9uKCduZXcgdmVyc2lvbicpCisKK3ByZXBhcmluZyBkYXRhYmFzZQordHJhbnMgPSBldmVu
dC50YXJnZXQucmVzdWx0CitQQVNTIHRyYW5zICE9PSBudWxsIGlzIHRydWUKK0RlbGV0ZWQgYWxs
IG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
LCBudWxsKQorc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKQorUEFTUyBzdG9yZS5p
bmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSBpcyB0cnVlCithZGRpbmcgMCAuLi4gOTkK
KwordmVyaWZ5aW5nIGNvdW50IHdpdGhvdXQgcmFuZ2UKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24o
J3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkKK1BBU1MgdHJhbnMgIT0gbnVs
bCBpcyB0cnVlCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorUEFTUyBz
dG9yZSAhPSBudWxsIGlzIHRydWUKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpCitQ
QVNTIGluZGV4ICE9IG51bGwgaXMgdHJ1ZQorcmVxdWVzdCA9IGluZGV4LmNvdW50KCkKK1BBU1Mg
dHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5y
ZXN1bHQgaXMgMTAwCisKK3ZlcmlmeWluZyBjb3VudCB3aXRoIHJhbmdlCit0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpCitQQVNTIHRy
YW5zICE9IG51bGwgaXMgdHJ1ZQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykKK1BBU1Mgc3RvcmUgIT0gbnVsbCBpcyB0cnVlCitpbmRleCA9IHRyYW5zLm9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKS5pbmRleCgnaW5kZXhOYW1lJykKK1BBU1MgaW5kZXggIT0gbnVsbCBpcyB0
cnVlCisKK3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dlck9wZW4iOmZhbHNlLCJ1cHBlciI6OTksInVw
cGVyT3BlbiI6ZmFsc2UsImV4cGVjdGVkIjoxMDB9CityZXF1ZXN0ID0gaW5kZXguY291bnQoSURC
S2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRl
c3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlz
IHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMTAwCisKK3Rlc3QgPSB7Imxvd2VyIjowLCJs
b3dlck9wZW4iOnRydWUsInVwcGVyIjo5OSwidXBwZXJPcGVuIjpmYWxzZSwiZXhwZWN0ZWQiOjk5
fQorcmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRl
c3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiBy
ZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlz
IDk5CisKK3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dlck9wZW4iOmZhbHNlLCJ1cHBlciI6OTksInVw
cGVyT3BlbiI6dHJ1ZSwiZXhwZWN0ZWQiOjk5fQorcmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktl
eVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0
LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0
cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDk5CisKK3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dl
ck9wZW4iOnRydWUsInVwcGVyIjo5OSwidXBwZXJPcGVuIjp0cnVlLCJleHBlY3RlZCI6OTh9City
ZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51
cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVl
c3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgOTgK
KwordGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVyIjoxMDAsInVwcGVy
T3BlbiI6ZmFsc2UsImV4cGVjdGVkIjoxMDB9CityZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5
UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3Qu
dXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRy
dWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMTAwCisKK3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dl
ck9wZW4iOmZhbHNlLCJ1cHBlciI6MTAwLCJ1cHBlck9wZW4iOmZhbHNlLCJleHBlY3RlZCI6MTAw
fQorcmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRl
c3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiBy
ZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlz
IDEwMAorCit0ZXN0ID0geyJsb3dlciI6MTAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVyIjoxMDAs
InVwcGVyT3BlbiI6ZmFsc2UsImV4cGVjdGVkIjo5MH0KK3JlcXVlc3QgPSBpbmRleC5jb3VudChJ
REJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3Blbiwg
dGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicg
aXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyA5MAorCit0ZXN0ID0geyJsb3dlciI6MCwi
bG93ZXJPcGVuIjpmYWxzZSwidXBwZXIiOjAsInVwcGVyT3BlbiI6ZmFsc2UsImV4cGVjdGVkIjox
fQorcmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRl
c3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiBy
ZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlz
IDEKKwordGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6dHJ1ZSwidXBwZXIiOjAsInVwcGVy
T3BlbiI6dHJ1ZSwiZXhwZWN0ZWQiOjB9CityZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5UmFu
Z2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBw
ZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUK
K1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMAorCit0ZXN0ID0geyJsb3dlciI6MjAsImxvd2VyT3Bl
biI6dHJ1ZSwidXBwZXIiOjEwLCJ1cHBlck9wZW4iOnRydWUsImV4cGVjdGVkIjowfQorcmVxdWVz
dCA9IGluZGV4LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIs
IHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0LnJl
c3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDAKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWM4
YWM1YTQ3ZGNmM2U5M2FiMmU0ZGQ3ZTk2Mjc1MGNhYjFhODQ5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQuaHRtbApAQCAtMCwwICsx
LDEyNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIncyBJREJJbmRleC5jb3VudCgpLiIpOworaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGV2YWxBbmRMb2coIndpbmRvdy5pbmRleGVkREIg
PSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIiKTsKKyAgICBldmFs
QW5kTG9nKCJ3aW5kb3cuSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwg
d2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uIik7CisgICAgZXZhbEFuZExvZygid2luZG93LklE
QktleVJhbmdlID0gd2luZG93LklEQktleVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlSYW5n
ZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtY291
bnQnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHByZXBhcmVEYXRhYmFzZTsKKyAgICB9OworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0
YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygicHJlcGFyaW5nIGRhdGFiYXNl
Iik7CisgICAgd2luZG93LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworCisgICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKworICAgIHdpbmRv
dy5pbmRleCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnJyki
KTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFt
ZScpIik7CisKKyAgICBkZWJ1ZygiYWRkaW5nIDAgLi4uIDk5Iik7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICByZXF1ZXN0ID0gc3RvcmUuYWRkKGksIGkpOwor
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9
CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50OworfQorCitmdW5jdGlvbiB2ZXJp
ZnlDb3VudCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQg
d2l0aG91dCByYW5nZSIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHNo
b3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnRXaXRo
UmFuZ2U7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Cisg
ICAgc3RvcmUgPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleE5hbWUnKSIp
OworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5jb3VudCgpIik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09
ICdudW1iZXInIik7CisgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAiMTAwIik7
CisgICAgICAgICAvLyBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCisgICAgfTsKK30KKwor
ZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoUmFuZ2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGggcmFuZ2UiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJF
QURfT05MWSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0
ZSA9IGRvbmU7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7
CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJpbmRleCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKS5pbmRleCgnaW5kZXhOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoImluZGV4ICE9
IG51bGwiKTsKKworICAgIHZhciB0ZXN0cyA9IFsKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJP
cGVuOiBmYWxzZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0s
CisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1cHBlck9w
ZW46IGZhbHNlLCBleHBlY3RlZDogOTkgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVu
OiBmYWxzZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OSB9LAorICAg
ICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0
cnVlLCBleHBlY3RlZDogOTggfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxz
ZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAgICAg
ICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZh
bHNlLCBleHBlY3RlZDogMTAwIH0sCisgICAgICAgIHsgbG93ZXI6IDEwLCBsb3dlck9wZW46IGZh
bHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogOTAgfSwKKyAgICAg
ICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDAsIHVwcGVyT3BlbjogZmFs
c2UsIGV4cGVjdGVkOiAxIH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwg
dXBwZXI6IDAsIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IDAgfSwKKyAgICAgICAgeyBsb3dl
cjogMjAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDEwLCB1cHBlck9wZW46IHRydWUsIGV4cGVj
dGVkOiAwIH0KKyAgICBdOworCisgICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7CisgICAgICAgIGRl
YnVnKCIiKTsKKyAgICAgICAgZXZhbEFuZExvZygidGVzdCA9ICIgKyBKU09OLnN0cmluZ2lmeSh0
ZXN0cy5zaGlmdCgpKSk7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
aW5kZXguY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVz
dC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5y
ZXN1bHQgPT0gJ251bWJlciciKTsKKyAgICAgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1
bHQiLCBTdHJpbmcodGVzdC5leHBlY3RlZCkpOworCisgICAgICAgICAgICAgaWYgKHRlc3RzLmxl
bmd0aCkgeworICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOworICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorICAg
ICAgICB9OworICAgIH0KKworICAgIG5leHRUZXN0KCk7Cit9CisKK3Rlc3QoKTsKKworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCBlNTAz
MTAyODQ2MmRlNTI1NjljYWY3Y2MwZjFhZDIxY2Y5ZTdmMWU0Li4xMWE5MGIwZTZkZGYxMjZkYzI0
M2VjYjc2OGQ0Y2EzODM4NTkzZTZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTE0
LDYgKzE0LDMwIEBAIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCiBjcmVhdGVPYmplY3RTdG9y
ZSgpOgogc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkKIHN0
b3JlTmFtZXMgPSBkYi5vYmplY3RTdG9yZU5hbWVzCitQQVNTICduYW1lJyBpbiBzdG9yZSBpcyB0
cnVlCitQQVNTICdrZXlQYXRoJyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTICdpbmRleE5hbWVzJyBp
biBzdG9yZSBpcyB0cnVlCitQQVNTICd0cmFuc2FjdGlvbicgaW4gc3RvcmUgaXMgdHJ1ZQorUEFT
UyAncHV0JyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIHR5cGVvZiBzdG9yZS5wdXQgaXMgImZ1bmN0
aW9uIgorUEFTUyAnYWRkJyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIHR5cGVvZiBzdG9yZS5hZGQg
aXMgImZ1bmN0aW9uIgorUEFTUyAnZGVsZXRlJyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIHR5cGVv
ZiBzdG9yZS5kZWxldGUgaXMgImZ1bmN0aW9uIgorUEFTUyAnZ2V0JyBpbiBzdG9yZSBpcyB0cnVl
CitQQVNTIHR5cGVvZiBzdG9yZS5nZXQgaXMgImZ1bmN0aW9uIgorUEFTUyAnY2xlYXInIGluIHN0
b3JlIGlzIHRydWUKK1BBU1MgdHlwZW9mIHN0b3JlLmNsZWFyIGlzICJmdW5jdGlvbiIKK1BBU1Mg
J29wZW5DdXJzb3InIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgdHlwZW9mIHN0b3JlLm9wZW5DdXJz
b3IgaXMgImZ1bmN0aW9uIgorUEFTUyAnY3JlYXRlSW5kZXgnIGluIHN0b3JlIGlzIHRydWUKK1BB
U1MgdHlwZW9mIHN0b3JlLmNyZWF0ZUluZGV4IGlzICJmdW5jdGlvbiIKK1BBU1MgJ2luZGV4JyBp
biBzdG9yZSBpcyB0cnVlCitQQVNTIHR5cGVvZiBzdG9yZS5pbmRleCBpcyAiZnVuY3Rpb24iCitQ
QVNTICdkZWxldGVJbmRleCcgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyB0eXBlb2Ygc3RvcmUuZGVs
ZXRlSW5kZXggaXMgImZ1bmN0aW9uIgorUEFTUyAnY291bnQnIGluIHN0b3JlIGlzIHRydWUKK1BB
U1MgdHlwZW9mIHN0b3JlLmNvdW50IGlzICJmdW5jdGlvbiIKIFBBU1Mgc3RvcmUubmFtZSBpcyAi
c3RvcmVOYW1lIgogUEFTUyBzdG9yZS5rZXlQYXRoIGlzIG51bGwKIFBBU1Mgc3RvcmVOYW1lcy5j
b250YWlucygnc3RvcmVOYW1lJykgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbAppbmRleCA3NjM4MGZmZWM3YjE2
ZDQzMTJmZDE5MTJlODMxMGNmYTA0NDkzNWQ3Li4yMzJhYTgzM2MyMTE5OGQ0YjRhZTcyZmJlMGU5
NmYyNmMyOTk5NGE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
YmplY3RzdG9yZS1iYXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbApAQCAtNDIsNiArNDIsMzEgQEAgZnVuY3Rpb24gc2V0
VmVyc2lvblN1Y2Nlc3MoKQogICAgIHdpbmRvdy5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CiAgICAgdmFyIHN0b3Jl
TmFtZXMgPSBldmFsQW5kTG9nKCJzdG9yZU5hbWVzID0gZGIub2JqZWN0U3RvcmVOYW1lcyIpOwog
CisgICAgc2hvdWxkQmVUcnVlKCInbmFtZScgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZVRydWUo
IidrZXlQYXRoJyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2luZGV4TmFtZXMnIGlu
IHN0b3JlIik7CisgICAgc2hvdWxkQmVUcnVlKCIndHJhbnNhY3Rpb24nIGluIHN0b3JlIik7Cisg
ICAgc2hvdWxkQmVUcnVlKCIncHV0JyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygidHlwZW9mIHN0b3JlLnB1dCIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgi
J2FkZCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9y
ZS5hZGQiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidkZWxldGUnIGluIHN0b3Jl
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuZGVsZXRlIiwgImZ1
bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInZ2V0JyBpbiBzdG9yZSIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmdldCIsICJmdW5jdGlvbiIpOworICAgIHNo
b3VsZEJlVHJ1ZSgiJ2NsZWFyJyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygidHlwZW9mIHN0b3JlLmNsZWFyIiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCIn
b3BlbkN1cnNvcicgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVv
ZiBzdG9yZS5vcGVuQ3Vyc29yIiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInY3Jl
YXRlSW5kZXgnIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Yg
c3RvcmUuY3JlYXRlSW5kZXgiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidpbmRl
eCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5p
bmRleCIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2RlbGV0ZUluZGV4JyBpbiBz
dG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmRlbGV0ZUlu
ZGV4IiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInY291bnQnIGluIHN0b3JlIik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuY291bnQiLCAiZnVuY3Rp
b24iKTsKKwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJzdG9yZU5h
bWUiKTsKICAgICBzaG91bGRCZU51bGwoInN0b3JlLmtleVBhdGgiKTsKICAgICBzaG91bGRCZSgi
c3RvcmVOYW1lcy5jb250YWlucygnc3RvcmVOYW1lJykiLCAidHJ1ZSIpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ODFlM2E4MWVkYTVlYmFjZmNkODFhYjhjMzU1MGE0MzI0
ODVmYWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
YmplY3RzdG9yZS1jb3VudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4NyBAQAorVGVzdCBJbmRl
eGVkREIncyBJREJPYmplY3RTdG9yZS5jb3VudCgpLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKword2luZG93LmluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93Lndl
YmtpdEluZGV4ZWREQgord2luZG93LklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5zYWN0
aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbgord2luZG93LklEQktleVJhbmdlID0g
d2luZG93LklEQktleVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlSYW5nZQoraW5kZXhlZERC
Lm9wZW4oJ29iamVjdHN0b3JlLWNvdW50JykKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorZGIu
c2V0VmVyc2lvbignbmV3IHZlcnNpb24nKQorCitwcmVwYXJpbmcgZGF0YWJhc2UKK3RyYW5zID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyB0cmFucyAhPT0gbnVsbCBpcyB0cnVlCitEZWxldGVk
IGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVO
YW1lJywgbnVsbCkKK2FkZGluZyAwIC4uLiA5OQorCit2ZXJpZnlpbmcgY291bnQgd2l0aG91dCBy
YW5nZQordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24u
UkVBRF9PTkxZKQorUEFTUyB0cmFucyAhPSBudWxsIGlzIHRydWUKK3N0b3JlID0gdHJhbnMub2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpCitQQVNTIHN0b3JlICE9IG51bGwgaXMgdHJ1ZQorcmVxdWVz
dCA9IHN0b3JlLmNvdW50KCkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXIn
IGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMTAwCisKK3ZlcmlmeWluZyBjb3VudCB3
aXRoIHJhbmdlCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX09OTFkpCitQQVNTIHRyYW5zICE9IG51bGwgaXMgdHJ1ZQorc3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKK1BBU1Mgc3RvcmUgIT0gbnVsbCBpcyB0cnVlCisK
K3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dlck9wZW4iOmZhbHNlLCJ1cHBlciI6OTksInVwcGVyT3Bl
biI6ZmFsc2UsImV4cGVjdGVkIjoxMDB9CityZXF1ZXN0ID0gc3RvcmUuY291bnQoSURCS2V5UmFu
Z2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBw
ZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUK
K1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMTAwCisKK3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dlck9w
ZW4iOnRydWUsInVwcGVyIjo5OSwidXBwZXJPcGVuIjpmYWxzZSwiZXhwZWN0ZWQiOjk5fQorcmVx
dWVzdCA9IHN0b3JlLmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBw
ZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0
LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDk5CisK
K3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dlck9wZW4iOmZhbHNlLCJ1cHBlciI6OTksInVwcGVyT3Bl
biI6dHJ1ZSwiZXhwZWN0ZWQiOjk5fQorcmVxdWVzdCA9IHN0b3JlLmNvdW50KElEQktleVJhbmdl
LmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVy
T3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQ
QVNTIHJlcXVlc3QucmVzdWx0IGlzIDk5CisKK3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dlck9wZW4i
OnRydWUsInVwcGVyIjo5OSwidXBwZXJPcGVuIjp0cnVlLCJleHBlY3RlZCI6OTh9CityZXF1ZXN0
ID0gc3RvcmUuY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwg
dGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVz
dWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgOTgKKwordGVz
dCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVyIjoxMDAsInVwcGVyT3BlbiI6
ZmFsc2UsImV4cGVjdGVkIjoxMDB9CityZXF1ZXN0ID0gc3RvcmUuY291bnQoSURCS2V5UmFuZ2Uu
Ym91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJP
cGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BB
U1MgcmVxdWVzdC5yZXN1bHQgaXMgMTAwCisKK3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dlck9wZW4i
OmZhbHNlLCJ1cHBlciI6MTAwLCJ1cHBlck9wZW4iOmZhbHNlLCJleHBlY3RlZCI6MTAwfQorcmVx
dWVzdCA9IHN0b3JlLmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBw
ZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0
LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDEwMAor
Cit0ZXN0ID0geyJsb3dlciI6MTAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVyIjoxMDAsInVwcGVy
T3BlbiI6ZmFsc2UsImV4cGVjdGVkIjo5MH0KK3JlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlS
YW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51
cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1
ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyA5MAorCit0ZXN0ID0geyJsb3dlciI6MCwibG93ZXJP
cGVuIjpmYWxzZSwidXBwZXIiOjAsInVwcGVyT3BlbiI6ZmFsc2UsImV4cGVjdGVkIjoxfQorcmVx
dWVzdCA9IHN0b3JlLmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBw
ZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0
LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDEKKwor
dGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6dHJ1ZSwidXBwZXIiOjAsInVwcGVyT3BlbiI6
dHJ1ZSwiZXhwZWN0ZWQiOjB9CityZXF1ZXN0ID0gc3RvcmUuY291bnQoSURCS2V5UmFuZ2UuYm91
bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVu
KSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1Mg
cmVxdWVzdC5yZXN1bHQgaXMgMAorCit0ZXN0ID0geyJsb3dlciI6MjAsImxvd2VyT3BlbiI6dHJ1
ZSwidXBwZXIiOjEwLCJ1cHBlck9wZW4iOnRydWUsImV4cGVjdGVkIjowfQorcmVxdWVzdCA9IHN0
b3JlLmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3Qu
bG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9
PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDAKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41YmVmMDdmYmYwYmFlNzQ0ZjVmNWQzZWEzZDQzNjg2ZmQxNmMyYTYzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQuaHRt
bApAQCAtMCwwICsxLDExOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitk
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJPYmplY3RTdG9yZS5jb3VudCgpLiIpOwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGV2YWxBbmRMb2co
IndpbmRvdy5pbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRl
eGVkREIiKTsKKyAgICBldmFsQW5kTG9nKCJ3aW5kb3cuSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cu
SURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uIik7CisgICAgZXZh
bEFuZExvZygid2luZG93LklEQktleVJhbmdlID0gd2luZG93LklEQktleVJhbmdlIHx8IHdpbmRv
dy53ZWJraXRJREJLZXlSYW5nZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3Blbignb2JqZWN0c3RvcmUtY291bnQnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lv
bicpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHByZXBhcmVEYXRhYmFzZTsKKyAgICB9Owor
fQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygicHJlcGFyaW5nIGRhdGFiYXNlIik7CisgICAgd2luZG93LnRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFu
cyAhPT0gbnVsbCIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHN0
b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1l
JywgbnVsbCkiKTsKKworICAgIGRlYnVnKCJhZGRpbmcgMCAuLi4gOTkiKTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIHJlcXVlc3QgPSBzdG9yZS5hZGQoaSwg
aSk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIH0KKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnQ7Cit9CisKK2Z1bmN0aW9u
IHZlcmlmeUNvdW50KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZlcmlmeWluZyBj
b3VudCB3aXRob3V0IHJhbmdlIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3Vu
dFdpdGhSYW5nZTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUuY291bnQoKSIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICBzaG91bGRCZVRydWUoInR5
cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOworICAgICAgICAgc2hvdWxkQmUoInJl
cXVlc3QucmVzdWx0IiwgIjEwMCIpOworICAgICAgICAgLy8gbGV0IHRoZSB0cmFuc2FjdGlvbiBj
b21wbGV0ZQorICAgIH07Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50V2l0aFJhbmdlKCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRoIHJhbmdlIik7
CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5h
bWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFu
cyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgIHRyYW5zLm9uY29tcGxldGUgPSBkb25lOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHNob3VsZEJl
VHJ1ZSgic3RvcmUgIT0gbnVsbCIpOworCisgICAgdmFyIHRlc3RzID0gWworICAgICAgICB7IGxv
d2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4
cGVjdGVkOiAxMDAgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBl
cjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5OSB9LAorICAgICAgICB7IGxvd2Vy
OiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0
ZWQ6IDk5IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5
LCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBs
b3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDog
MTAwIH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAs
IHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAgICAgICAgeyBsb3dlcjogMTAs
IGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVk
OiA5MCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMCwg
dXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93
ZXJPcGVuOiB0cnVlLCB1cHBlcjogMCwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogMCB9LAor
ICAgICAgICB7IGxvd2VyOiAyMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogMTAsIHVwcGVyT3Bl
bjogdHJ1ZSwgZXhwZWN0ZWQ6IDAgfQorICAgIF07CisKKyAgICBmdW5jdGlvbiBuZXh0VGVzdCgp
IHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0gIiArIEpT
T04uc3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0
ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKSIpOworICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBzaG91bGRCZVRydWUoInR5
cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOworICAgICAgICAgICAgIHNob3VsZEJl
KCJyZXF1ZXN0LnJlc3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7CisKKyAgICAgICAgICAg
ICBpZiAodGVzdHMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7CisgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0aW9u
IGNvbXBsZXRlCisgICAgICAgIH07CisgICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30KKwordGVz
dCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118273</attachid>
            <date>2011-12-07 13:57:56 -0800</date>
            <delta_ts>2011-12-09 11:43:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73686-20111207135755.patch</filename>
            <type>text/plain</type>
            <size>54528</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDc1YzlhZDk5NDcwNGE4
NzljYzA2MDVkM2MwNWYwMjQ0OWZmNWE0Ny4uOTI4MGQwZTA2ODM3Y2FjNThlZGM4MDQ2ZWJhNjRk
MjI1YmM3OGYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTEyLTA3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBs
ZW1lbnQgSURCT2JqZWN0U3RvcmUuY291bnQoKSBhbmQgSURCSW5kZXguY291bnQoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM2ODYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3RlIHRoYXQgb25seSB0
aGUgKG9wdGlvbmFsKSBJREJLZXlSYW5nZSBhcmd1bWVudCBpcyBzdXBwb3J0ZWQsIG5vdAorICAg
ICAgICBhIHNpbmdsZSBJREJLZXkuIFRoYXQgd2lsbCByZXF1aXJlIHNvbWUgSURML2JpbmRpbmcg
bW9ua2V5aW5nIGFuZCBpdAorICAgICAgICBhcHBsaWVzIHRvIHNldmVyYWwgb3RoZXIgbWV0aG9k
cyBhcyB3ZWxsLgorCisgICAgICAgIFRlc3RzOiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3Vu
dC5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3Vu
dC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudW1iZXJWYWx1ZSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAg
ICogc3RvcmFnZS9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3Bl
bkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Y291bnQpOgorICAgICAgICAq
IHN0b3JhZ2UvSURCSW5kZXguaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpjb3VudCk6
CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJJ
bmRleEJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZElt
cGw6OmNvdW50SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1w
bDo6Y291bnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogc3Rv
cmFnZS9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZTo6Y291bnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6CisgICAgICAgICogc3RvcmFnZS9JREJP
YmplY3RTdG9yZS5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50
SW50ZXJuYWwpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5o
OgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmg6CisK
IDIwMTEtMTEtMzAgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgog
CiAgICAgICAgIFtRdF0gVjggYnVpbGQgZml4ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDEyNGRiMDFiZGFkYTUxNWI4NGNiNjFhOWFiZTZjMjNmZTJmOTE2ZGYuLjJmMTNjNzU3YTUw
ZjFhZDE5YjM2MzM3ZGZmYzUwODZjYTBhY2E4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTItMDcgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEltcGxlbWVudCBJREJPYmplY3RTdG9yZS5j
b3VudCgpIGFuZCBJREJJbmRleC5jb3VudCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MzY4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRFTVBPUkFSWTogVGhlIFdlYktpdCBBUEkgY2hhbmdlcyAocHVi
bGljL1dlYklEQiouaCkgd2lsbCBsYW5kIGZpcnN0CisgICAgICAgIGFuZCBhcmUgdHJhY2tlZCBp
biBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM2ODUgLSBpbmNsdWRp
bmcKKyAgICAgICAgaGVyZSB1bnRpbCB0aGF0IGxhbmRzIG9yIHRoaXMgd29uJ3QgYnVpbGQuCisK
KyAgICAgICAgKiBwdWJsaWMvV2ViSURCSW5kZXguaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
SW5kZXg6OmNvdW50KToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmU6OmNvdW50KToKKyAgICAgICAgKiBzcmMv
SURCSW5kZXhCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJJbmRleEJhY2tl
bmRQcm94eTo6Y291bnQpOgorICAgICAgICAqIHNyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oOgor
ICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5Ojpjb3VudCk6CisgICAgICAgICogc3Jj
L0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogc3JjL1dlYklEQkluZGV4
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4SW1wbDo6Y291bnQpOgorICAg
ICAgICAqIHNyYy9XZWJJREJJbmRleEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpj
b3VudCk6CisKIDIwMTEtMTItMDYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgRml4IHR5cG8gaW4gV2ViS2l0Lmd5cCBpbnRyb2R1Y2VkIGluIHByZXZpb3Vz
IGNoYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCmluZGV4IDcwMzFhNTUyMjI3MGU1OTUwMDE1YzczMTI5YWEyOTNiYjIy
ODE4NTYuLjY4YzMzMTZiY2Y0OTBiMTVkYTk0Njg2YTI3MjZjNDhjZWVjMzI0NTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cApAQCAtMjEyNCw2ICsyMTI0LDE0IEBAIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmJvb2xlYW5WYWx1ZShib29sIHZhbHVlCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUod2lyZURhdGEpKTsKIH0KIAor
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
bnVtYmVyVmFsdWUoZG91YmxlIHZhbHVlKQoreworICAgIFdyaXRlciB3cml0ZXI7CisgICAgd3Jp
dGVyLndyaXRlTnVtYmVyKHZhbHVlKTsKKyAgICBTdHJpbmcgd2lyZURhdGEgPSBTdHJpbmdJbXBs
OjphZG9wdCh3cml0ZXIuZGF0YSgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSh3aXJlRGF0YSkpOworfQorCiBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpyZWxlYXNlKCkKIHsKICAgICBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiByZXN1bHQgPSBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKG1fZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCAyNWRhODg5YjA4N2QxNWZmNDQxOGZkYWRlMzUw
ZDRiZWVmNjQ2M2EyLi5kM2E2NjhiOTgzYzQwYWI0YjM4YWE2NzdmZDM3NzMzYjMzMDRjMWUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSogbnVsbFZhbHVlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB1bmRlZmluZWRWYWx1ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gYm9vbGVhblZhbHVlKGJvb2wgdmFsdWUpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbnVtYmVyVmFsdWUoZG91YmxlIHZhbHVl
KTsKIAogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiByZWxlYXNlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5jcHAKaW5kZXggNzA5NjEzMDIzYzc3MDNjZTM5ZTVk
YjY0YjNhYTY0Mjc4ZTA3MTBhZi4uYmYyZDM4YWYyYjE3ZjI4NTYwMDYwYWEyMTM3ZDI5YWRkMWUy
YWFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5jcHAKQEAgLTczLDYgKzczLDE3IEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKK1Bhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNy
ZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7
CisgICAgbV9iYWNrZW5kLT5jb3VudChrZXlSYW5nZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+
YmFja2VuZCgpLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIHJlcXVlc3QtPm1hcmtFYXJs
eURlYXRoKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVxdWVzdDsK
K30KKwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBpZiAoZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6TkVYVCAmJiBkaXJlY3Rpb24gIT0gSURCQ3Vy
c29yOjpORVhUX05PX0RVUExJQ0FURSAmJiBkaXJlY3Rpb24gIT0gSURCQ3Vyc29yOjpQUkVWICYm
IGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6OlBSRVZfTk9fRFVQTElDQVRFKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkluZGV4LmgKaW5kZXggNWQ4OGFmY2RmYjZlYTUxMWJkNzNjZDY2ZGNiOWUwNGU2MjBh
NjdhNy4uOTZiMzgwYmM5ODBkZDljYzJhMjhhOGZmMTk4ZjUyYzY0MWYyZjQ3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCSW5kZXguaApAQCAtNTgsNiArNTgsOCBAQCBwdWJsaWM6CiAgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIDAsIGVj
KTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElE
QkN1cnNvcjo6TkVYVCwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vy
c29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5z
aWduZWQgc2hvcnQgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRp
b25Db2RlJiBlYykgeyByZXR1cm4gY291bnQoY29udGV4dCwgMCwgZWMpOyB9CisgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNl
cHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCAwLCBlYyk7IH0g
CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNl
cHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBrZXlSYW5nZSwg
SURCQ3Vyc29yOjpORVhULCBlYyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCSW5kZXguaWRsIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5pZGwKaW5k
ZXggYjBmMzJhYTdhMGU5ZWQ3ZjM2MWM3NzQ5M2I5ZWExMzVhOTkwNTMzOC4uNGM4ZjY1NWUzYWMy
ZjhiZTFmNzE1NTQzNDFkMDM3NjIzYzdiZGZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJJbmRleC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRl
eC5pZGwKQEAgLTQyLDYgKzQyLDggQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICAgICAgcmFp
c2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGdldEtleShpbiBJREJLZXkga2V5KQogICAgICAgICAg
ICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CisgICAgICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGNvdW50KGluIFtPcHRpb25hbF0gSURCS2V5
UmFuZ2UgcmFuZ2UpCisgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsK
ICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4
QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJ
bXBsLmNwcAppbmRleCBmMGRjZjNkN2VkMzllZDljMjVkMmEzYjA3ZWZmN2JjZDRmNWJkMzhmLi42
ZjYxZjc3NGRhOTdkYmJkM2JhZTBlM2VjNDAwMjkzZjViN2Y2MGM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTEyMiw2ICsxMjIsMjkg
QEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IHBycEtleVJhbmdlLCB1bnMKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6Tk9UX0FMTE9XRURfRVJSOwogfQogCit2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmNv
dW50SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24pCit7CisgICAgdWludDMyX3QgY291bnQgPSAwOwor
CisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3Ig
PSBpbmRleC0+bV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcihpbmRleC0+bV9kYXRh
YmFzZUlkLCBpbmRleC0+bV9vYmplY3RTdG9yZUJhY2tlbmQtPmlkKCksIGluZGV4LT5pZCgpLCBy
YW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKKyAgICBpZiAoIWJhY2tpbmdTdG9yZUN1cnNv
cikgeworICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6
Om51bWJlclZhbHVlKGNvdW50KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkbyB7
CisgICAgICAgICsrY291bnQ7CisgICAgfSB3aGlsZSAoYmFja2luZ1N0b3JlQ3Vyc29yLT5jb250
aW51ZUZ1bmN0aW9uKDApKTsKKyAgICBiYWNraW5nU3RvcmVDdXJzb3ItPmNsb3NlKCk7CisgICAg
Y2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudW1iZXJWYWx1ZShj
b3VudCkpOworfQorCit2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmNvdW50KFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZjb3VudEludGVybmFsLCB0aGlzLCByYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlv
bikpKQorICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7
Cit9CisKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NS
ZWZQdHI8SURCS2V5PiBrZXksIGJvb2wgZ2V0T2JqZWN0LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogewogICAgIC8vIEZJWE1FOiBTcGxpdCBnZXRJbnRlcm5hbCBpbnRvIHR3
byBmdW5jdGlvbnMsIGdldHRpbmcgcmlkIG9mZiB8Z2V0T2JqZWN0fC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmgKaW5kZXggNDJlNWY3NzAyMzFmM2Y0OTk0
ODM5M2RhNDUwMjM0ZTYyNjZmMGZhMy4uMTIyNzRhZThiZTdmMDMwYTU4MWMzZDRjNWZhMjYxZTU0
N2I3MzI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tl
bmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBs
LmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBtdWx0aUVudHJ5
KCkgeyByZXR1cm4gbV9tdWx0aUVudHJ5OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNv
cihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnQoUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29y
KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0cjxJREJLZXk+LCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0S2V5KFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CkBAIC03Nyw2ICs3OCw3IEBAIHByaXZhdGU6CiAgICAg
SURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnkpOwogCiAgICAgc3RhdGljIHZvaWQgb3BlbkN1cnNvckludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CisgICAgc3Rh
dGljIHZvaWQgY291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+KTsKICAgICBzdGF0aWMgdm9pZCBnZXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBi
b29sIGdldE9iamVjdCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAogICAgIHN0YXRpYyBj
b25zdCBpbnQ2NF90IEludmFsaWRJZCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCA3Y2UwZWYzYmE4Y2UyZDdlMGQ5NjI1
OTRiMDRhY2ViNTcwMWJmNTc0Li5hMGYxYmE4MWI5OTYzNmZmOTNlNDlkMzcyYjU2NTAwZDgzMDc3
MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZElu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBtdWx0
aUVudHJ5KCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjb3VudChQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29yKFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9u
Q29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8SURCS2V5PiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRLZXkoUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmUuY3BwCmluZGV4IGM5MDg2ZTVjYjZkZDYzZDUxOTIwYWUyMmZkMDI3ZDg0NDJh
ZDA4ZTkuLjc0YTgwMDFmN2NjZDIxNjdhZGI4YjBmOGQ5OTUwMTJmMDdjZjk0ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0yMDIsNiArMjAyLDE3IEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwog
fQogCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJ
REJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNh
Y3Rpb24uZ2V0KCkpOworICAgIG1fYmFja2VuZC0+Y291bnQocmFuZ2UsIHJlcXVlc3QsIG1fdHJh
bnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOworICAgIGlmIChlYykgeworICAgICAgICByZXF1ZXN0
LT5tYXJrRWFybHlEZWF0aCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJu
IHJlcXVlc3QucmVsZWFzZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmUuaAppbmRleCA5YjVhYTZiMmQzZjUzNzMxYmM2MTY1OWI5NjU2YzM2MzQ5YmNmMjZi
Li44MGJiZTA4YTlhY2FhZmFmNGZjNGM4ZWQ2YWQ0MDEyNDVhNzRiMjFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCkBAIC03OCw2ICs3OCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwog
CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9u
LCBFeGNlcHRpb25Db2RlJik7IAorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJu
IGNvdW50KGNvbnRleHQsIDAsIGVjKTsgfQorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNl
cHRpb25Db2RlJik7CiAKIHByaXZhdGU6CiAgICAgSURCT2JqZWN0U3RvcmUoUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+LCBJREJUcmFuc2FjdGlvbiopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlkbAppbmRleCAwMzkzMmU3NzE5NTJlYmEx
YTdlZjY2ZDFmNzk4YzcwZmFlNGY5YWEyLi5lYWUwYmVjZTM4YjNhZGI2ZmE1MTBkZDFiMjVmY2Ji
Nzc0YjgyN2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlkbApA
QCAtNTEsNSArNTEsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgICAgICByYWlzZXMgKElE
QkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBkZWxldGVJbmRleChpbiBET01TdHJp
bmcgbmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOworICAg
ICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBjb3VudChp
biBbT3B0aW9uYWxdIElEQktleVJhbmdlIHJhbmdlKQorICAgICAgICAgICAgcmFpc2VzIChJREJE
YXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDgwZjBmYzczMDA2ZTNh
NWY3ODVhNTU5ODY5ODhmZDZmYjM4MjljMWMuLjIxOWY5MWI0ZDE3Y2YyODJmMjA1YTE2NjRkMTE0
YzAzNTI0ZGM0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtNTQ2LDYgKzU0NiwyOSBAQCB2b2lkIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzcwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGN1cnNvci5yZWxlYXNlKCkpOwog
fQogCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50KFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tU
YXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudEludGVybmFsLCB0aGlzLCByYW5n
ZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQorICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7Cit9CisKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6Y291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbikKK3sKKyAgICB1
aW50MzJfdCBjb3VudCA9IDA7CisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBi
YWNraW5nU3RvcmVDdXJzb3IgPSBvYmplY3RTdG9yZS0+bV9iYWNraW5nU3RvcmUtPm9wZW5PYmpl
Y3RTdG9yZUN1cnNvcihvYmplY3RTdG9yZS0+bV9kYXRhYmFzZUlkLCBvYmplY3RTdG9yZS0+aWQo
KSwgcmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CisgICAgaWYgKCFiYWNraW5nU3RvcmVD
dXJzb3IpIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpudW1iZXJWYWx1ZShjb3VudCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
ZG8geworICAgICAgICArK2NvdW50OworICAgIH0gd2hpbGUgKGJhY2tpbmdTdG9yZUN1cnNvci0+
Y29udGludWVGdW5jdGlvbigwKSk7CisKKyAgICBiYWNraW5nU3RvcmVDdXJzb3ItPmNsb3NlKCk7
CisgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudW1iZXJW
YWx1ZShjb3VudCkpOworfQorCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmxvYWRJ
bmRleGVzKCkKIHsKICAgICBWZWN0b3I8aW50NjRfdD4gaWRzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaAppbmRleCA5MjliNmE0ZjAx
NDBlMWRjNzFiMjM3ZjM0NWNhMzQ5MzJkN2ZhMTE4Li4yYWI1NjI3MzBhN2JkZTBkNWFiZWIwYTc0
MjMxZTk0MzgwOTZjMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuaApAQCAtNzYsNiArNzYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdmlydHVhbCB2b2lkIG9w
ZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRp
cmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGNvdW50KFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHN0YXRpYyBib29s
IHBvcHVsYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4pOwogCkBA
IC05NSw2ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgY3JlYXRlSW5kZXhJbnRl
cm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVJ
bmRleEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHN0YXRpYyB2b2lk
IG9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2Us
IHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOworICAgIHN0YXRpYyB2b2lk
IGNvdW50SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
Pik7CiAKICAgICAvLyBUaGVzZSBhcmUgdXNlZCBhcyBzZXRWZXJzaW9uIHRyYW5zYWN0aW9uIGFi
b3J0IHRhc2tzLgogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUluZGV4RnJvbU1hcChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFz
c1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBiMTU3OWI1
NDQxYWU5ZjY0ZDgwM2EwMDY5MzBhNjk0NWIyOGMzZDdlLi4xZDcxMjVlNjQ5ZDU1MzdkMjMzYWYz
ZGQ3MWFhMDI5NjZiZmFjNjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWdu
ZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJREJJbmRleC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCSW5kZXguaAppbmRleCAyMjNlNWNjZThkNmQ5OTUwOWFhOThkNDFhYmQ1OGQx
ZTMxZWI4ZjgyLi5iN2Y1MjZkNzYzYjVmZjJjYjNmYmRiZTUwNWUwODU5NTQwZDlmOTJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJJbmRleC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkluZGV4LmgKQEAgLTY5LDYgKzY5
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5PYmplY3RDdXJzb3IoY29uc3Qg
V2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNr
cyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9wZW5LZXlDdXJzb3Io
Y29uc3QgV2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNh
bGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGNvdW50KGNv
bnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0KGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNh
bGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGdldEtleShj
b25zdCBXZWJJREJLZXkmLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlv
biYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUu
aAppbmRleCAwOTY5MTYzY2FhNDEyZjVlNDU0NTIwYTIxZDU2OGIzMWU4N2Q3OGM5Li40NDQ4YTli
YjQ3ODEwMjQyZWM3YTdjNGVhZjdlMzg1ZDA3ZjNjNTAxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKQEAgLTg4LDYgKzg4LDcgQEAg
cHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vy
c29yKGNvbnN0IFdlYklEQktleVJhbmdlJiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBXZWJJ
REJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUm
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjb3Vu
dChjb25zdCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRy
YW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiAKIHByb3RlY3RlZDoKICAgICBXZWJJREJPYmplY3RTdG9yZSgpIHt9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAKaW5k
ZXggOGU5NjYwMDFkOTczZWIwYWIxMjI1MTg3NjI3NzA5MTA1YTk3MGFiMy4uYmMyYzgzNmY4YjM4
NDYzNDIzYmZkNTkzYWU5MGExZjBkZjQ4NzA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcApAQCAtODgsNiArODgsMTQgQEAg
dm9pZCBJREJJbmRleEJhY2tlbmRQcm94eTo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgdW5zaWduZWQKICAgICBtX3dlYklEQkluZGV4LT5vcGVuT2JqZWN0Q3Vy
c29yKGtleVJhbmdlLCBkaXJlY3Rpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNr
cyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7CiB9CiAK
K3ZvaWQgSURCSW5kZXhCYWNrZW5kUHJveHk6OmNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9p
bnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLAorICAgIC8vIGFsbCBp
bXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJlIHByb3h5IG9iamVjdHMuCisgICAg
SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0aW9uUHJveHkgPSBzdGF0aWNfY2Fz
dDxJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5zYWN0aW9uKTsKKyAgICBtX3dlYklE
QkluZGV4LT5jb3VudChrZXlSYW5nZSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tz
KSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsKK30KKwog
dm9pZCBJREJJbmRleEJhY2tlbmRQcm94eTo6b3BlbktleUN1cnNvcihQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRy
YW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBUaGUgdHJhbnNhY3Rpb24g
cG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBh
cywgaW4gdGhlIHJlbmRlcmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkluZGV4QmFja2VuZFByb3h5LmgKaW5kZXggZjM5MTlhYTBjYjA3ZDVhYThiMmQxMzYwMmY4ZmFl
ODViYzgxYjg1My4uNGNlOGM4NzZiYjFkMTBhNzJmNzNjYTJhNDAzZTdkMmVlYjU5OWMwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5o
CkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29y
KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rp
b24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZp
cnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+
LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJh
Y2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBjb3VudChQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGdldChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4s
IFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRLZXkoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCmluZGV4
IGI1Y2IwOGQ5YjA5NzMwOWM5NjBlNjg5YjQzNDViMzdhYTdjYTE0YmUuLjcxZmI1NzFkMTI1ZTQz
NDJjMGM5YzQ0MzEyODFjNmY0ZmQ1ZjA2ZjQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKQEAgLTE0MSw2
ICsxNDEsMTQgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6b3BlbkN1cnNvcihQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWcKICAgICBtX3dlYklEQk9iamVjdFN0
b3JlLT5vcGVuQ3Vyc29yKHJhbmdlLCBkaXJlY3Rpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBs
KGNhbGxiYWNrcyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBl
Yyk7CiB9CiAKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNvdW50KFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVk
IHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLAor
ICAgIC8vIGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJlIHByb3h5IG9i
amVjdHMuCisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0aW9uUHJveHkg
PSBzdGF0aWNfY2FzdDxJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5zYWN0aW9uKTsK
KyAgICBtX3dlYklEQk9iamVjdFN0b3JlLT5jb3VudChyYW5nZSwgbmV3IFdlYklEQkNhbGxiYWNr
c0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9u
KCksIGVjKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oCmluZGV4IDRhYzM5MTkzNjk2OWNmMGY2N2Iz
YzcyZWNjNzA3YjE0NGZlYzY0NjcuLjZkMzM1NjM1YzVmNWM5ZWM1MDQwOGEyMzk1ZGFkYzRjMTQ3
OWMzM2QgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0
b3JlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kUHJveHkuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCB1bnNp
Z25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwg
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBjb3VudChQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QktleVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7
CiAKIHByaXZhdGU6CiAgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkoUGFzc093blB0cjxX
ZWJJREJPYmplY3RTdG9yZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCSW5kZXhJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkluZGV4SW1wbC5jcHAKaW5kZXggMDc3Mzk3YTMzZjllMmRmNzk2NzEyYTYzZDkyZjgyZDliY2Q1
NTA4Yy4uNzEwZTMwMGY5ZDg1OWI1ZmU1YzY2ZjllZjRmZTNiYzUwZmE1OGUxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3BwCkBAIC04Myw2ICs4
MywxMSBAQCB2b2lkIFdlYklEQkluZGV4SW1wbDo6b3BlbktleUN1cnNvcihjb25zdCBXZWJJREJL
ZXlSYW5nZSYga2V5UmFuZ2UsIHVuc2lnbmVkIHNobwogICAgIG1fYmFja2VuZC0+b3BlbktleUN1
cnNvcihrZXlSYW5nZSwgZGlyZWN0aW9uLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0
UHRyKGNhbGxiYWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UoKSwgZWMpOwogfQogCit2b2lkIFdlYklEQkluZGV4SW1wbDo6Y291bnQoY29uc3QgV2Vi
SURCS2V5UmFuZ2UmIGtleVJhbmdlLCAgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0
IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgbV9iYWNrZW5kLT5jb3VudChrZXlSYW5nZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0
ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKCksIGVjKTsKK30KKwogdm9pZCBXZWJJREJJbmRleEltcGw6OmdldE9iamVj
dChjb25zdCBXZWJJREJLZXkmIGtleVJhbmdlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywg
Y29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBtX2JhY2tlbmQtPmdldChrZXlSYW5nZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNy
ZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkluZGV4SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCSW5kZXhJbXBsLmgKaW5kZXggMDA2ZjllNTExYzkwZjYyMzdjYTdhOTg0NDZhZDlhZTJhZGI5
NzI2Ni4uMjI2ZmViOGUzMDFmMzE3NzUxMDhmMzQ3NWU4ZjNjOWJkMjZmZDY1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmgKQEAgLTUxLDYgKzUxLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5PYmplY3RDdXJzb3IoY29uc3QgV2Vi
SURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNrcyos
IGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOyAKICAgICB2aXJ0
dWFsIHZvaWQgb3BlbktleUN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYsIHVuc2lnbmVkIHNo
b3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24m
LCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGNvdW50KGNvbnN0IFdlYklE
QktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBX
ZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGdldE9iamVjdChjb25zdCBXZWJJ
REJLZXkmLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0S2V5KGNvbnN0IFdlYklEQktleSYs
IFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9u
Q29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJP
YmplY3RTdG9yZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2Jq
ZWN0U3RvcmVJbXBsLmNwcAppbmRleCAxZDViZmY2ZTJhMTMwZTFiMWM5ODhmZTEwY2Q2ZTkxMGYx
MDhhMDQ2Li4xZWM4YWY1YmMyYzA1ZDg5ZGYzYjVmYTgxMjNkOWVmNTQxMDM4MjBiIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5j
cHAKQEAgLTExMyw2ICsxMTMsMTEgQEAgdm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6Om9wZW5D
dXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmIGtleVJhbmdlLCB1bnNpZ25lZAogICAgIG1fb2Jq
ZWN0U3RvcmUtPm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIGRpcmVjdGlvbiwgSURCQ2FsbGJhY2tzUHJv
eHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKIH0KIAordm9pZCBXZWJJREJPYmplY3RTdG9y
ZUltcGw6OmNvdW50KGNvbnN0IFdlYklEQktleVJhbmdlJiBrZXlSYW5nZSwgV2ViSURCQ2FsbGJh
Y2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2Vi
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgbV9vYmplY3RTdG9yZS0+Y291bnQoa2V5UmFuZ2Us
IElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIHRyYW5zYWN0
aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUlt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5o
CmluZGV4IGIyZDE5ZWQzNWMzNzU0NmEyODI2MjkzOWJjM2JlYjg1MmU4YmQzNjguLjZmNTgwZjAx
YWQwMzE2MmM1NWJiYWMwZmZiZGYyZGQ3MTNhYzkzNTggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCkBAIC02MSw2ICs2MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29u
c3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIG9w
ZW5DdXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24s
IFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgY291bnQoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCBXZWJJREJDYWxs
YmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKIAog
IHByaXZhdGU6CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlPiBtX29iamVjdFN0b3JlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBhY2NiNDY3YjJiNmE0MmQ0MzlmNzYy
NDQxNmFhMGFkZWUzNGI4MzYuLjFhMTJiNTVmNzY4MmI0YmNjZGNjODM3NTY1YTJjOWM2YTc5NDIy
MDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0xMi0wNyAgSm9zaHVhIEJlbGwgIDxqc2Jl
bGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogSW1wbGVtZW50IElEQk9iamVj
dFN0b3JlLmNvdW50KCkgYW5kIElEQkluZGV4LmNvdW50KCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNjg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNp
Y3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2lj
cy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQuaHRt
bDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1i
YXNpY3MuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3Vu
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dHN0b3JlLWNvdW50Lmh0bWw6IEFkZGVkLgorCiAyMDExLTEyLTA3ICBCYWxhenMgS2VsZW1lbiAg
PGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdW1dLMl0gUkVHUkVTU0lPTigxMDIy
MjgpOiBsb3Qgb2YgdGVzdCBmYWlsdXJlcyBhZnRlciBlbmFibGVkIHBhZ2UgY2FjaGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MtZXhwZWN0
ZWQudHh0CmluZGV4IGQ2NzA5ODdmYzA5NjAxNTczYzkwZWVjMTc5ODUyZmRmMjAwMjg0NGUuLjU1
YTBhNThlN2RkZGE0YTZjNmZmYzU2NWU2YmYyM2UxMjAzYzRlN2UgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLWV4cGVjdGVkLnR4dApA
QCAtMjUsOSArMjUsMTUgQEAgUEFTUyAnbXVsdGlFbnRyeScgaW4gaW5kZXhPYmplY3QgaXMgdHJ1
ZQogUEFTUyBpbmRleE9iamVjdC51bmlxdWUgaXMgZmFsc2UKIFBBU1MgaW5kZXhPYmplY3QubXVs
dGlFbnRyeSBpcyBmYWxzZQogUEFTUyAnb3BlbktleUN1cnNvcicgaW4gaW5kZXhPYmplY3QgaXMg
dHJ1ZQorUEFTUyB0eXBlb2YgaW5kZXhPYmplY3Qub3BlbktleUN1cnNvciBpcyAiZnVuY3Rpb24i
CiBQQVNTICdvcGVuQ3Vyc29yJyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCitQQVNTIHR5cGVvZiBp
bmRleE9iamVjdC5vcGVuQ3Vyc29yIGlzICJmdW5jdGlvbiIKIFBBU1MgJ2dldEtleScgaW4gaW5k
ZXhPYmplY3QgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgaW5kZXhPYmplY3QuZ2V0S2V5IGlzICJmdW5j
dGlvbiIKIFBBU1MgJ2dldCcgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgaW5k
ZXhPYmplY3QuZ2V0IGlzICJmdW5jdGlvbiIKK1BBU1MgJ2NvdW50JyBpbiBpbmRleE9iamVjdCBp
cyB0cnVlCitQQVNTIHR5cGVvZiBpbmRleE9iamVjdC5jb3VudCBpcyAiZnVuY3Rpb24iCiBzdG9y
ZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonLCB6OiAyLjcyfSwgJ2tleScpCiBldmVudC50YXJn
ZXQuc291cmNlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJywgejogMi43MSwgZm9vYmFyOiAx
Mn0sICdrZXkyJykKIHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleFdoaWxlQWRkSXNJbkZsaWdodCcs
ICd4JykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJh
c2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0
bWwKaW5kZXggYTkyM2FiOGVlMWNiYjFhZDU4MDgyOTUzNTgwMWM4ZGYwYzE3NzhkOC4uOWJhZjdk
NzQ1NDg1YTdiNGVkOTJiMzQ3OWUyNDc1NGI3OTU4ZjkzMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWwKQEAgLTU3LDkgKzU3LDE1IEBAIGZ1
bmN0aW9uIGFkZERhdGEoKQogICAgIHNob3VsZEJlRmFsc2UoImluZGV4T2JqZWN0LnVuaXF1ZSIp
OwogICAgIHNob3VsZEJlRmFsc2UoImluZGV4T2JqZWN0Lm11bHRpRW50cnkiKTsKICAgICBzaG91
bGRCZVRydWUoIidvcGVuS2V5Q3Vyc29yJyBpbiBpbmRleE9iamVjdCIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygidHlwZW9mIGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IiLCAiZnVuY3Rp
b24iKTsKICAgICBzaG91bGRCZVRydWUoIidvcGVuQ3Vyc29yJyBpbiBpbmRleE9iamVjdCIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIGluZGV4T2JqZWN0Lm9wZW5DdXJzb3Ii
LCAiZnVuY3Rpb24iKTsKICAgICBzaG91bGRCZVRydWUoIidnZXRLZXknIGluIGluZGV4T2JqZWN0
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgaW5kZXhPYmplY3QuZ2V0S2V5
IiwgImZ1bmN0aW9uIik7CiAgICAgc2hvdWxkQmVUcnVlKCInZ2V0JyBpbiBpbmRleE9iamVjdCIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIGluZGV4T2JqZWN0LmdldCIsICJm
dW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2NvdW50JyBpbiBpbmRleE9iamVjdCIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIGluZGV4T2JqZWN0LmNvdW50IiwgImZ1
bmN0aW9uIik7CiAKICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFs
dWUnLCB5OiAnenp6JywgejogMi43Mn0sICdrZXknKSIpOwogICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gYWRkRGF0YTI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9p
bmRleC1jb3VudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9p
bmRleC1jb3VudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFiODE3ZjgzMDQ1ZTczOTMxZDIx
OGY4MTdhMmY5OGJlYmZjYWQ1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2luZGV4LWNvdW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkzIEBACitU
ZXN0IEluZGV4ZWREQidzIElEQkluZGV4LmNvdW50KCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCit3aW5kb3cuaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cu
d2Via2l0SW5kZXhlZERCCit3aW5kb3cuSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNh
Y3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uCit3aW5kb3cuSURCS2V5UmFuZ2Ug
PSB3aW5kb3cuSURCS2V5UmFuZ2UgfHwgd2luZG93LndlYmtpdElEQktleVJhbmdlCitpbmRleGVk
REIub3BlbignaW5kZXgtY291bnQnKQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitkYi5zZXRW
ZXJzaW9uKCduZXcgdmVyc2lvbicpCisKK3ByZXBhcmluZyBkYXRhYmFzZQordHJhbnMgPSBldmVu
dC50YXJnZXQucmVzdWx0CitQQVNTIHRyYW5zICE9PSBudWxsIGlzIHRydWUKK0RlbGV0ZWQgYWxs
IG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
LCBudWxsKQorc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKQorUEFTUyBzdG9yZS5p
bmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSBpcyB0cnVlCithZGRpbmcgMCAuLi4gOTkK
KwordmVyaWZ5aW5nIGNvdW50IHdpdGhvdXQgcmFuZ2UKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24o
J3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkKK1BBU1MgdHJhbnMgIT0gbnVs
bCBpcyB0cnVlCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorUEFTUyBz
dG9yZSAhPSBudWxsIGlzIHRydWUKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpCitQ
QVNTIGluZGV4ICE9IG51bGwgaXMgdHJ1ZQorcmVxdWVzdCA9IGluZGV4LmNvdW50KCkKK1BBU1Mg
dHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5y
ZXN1bHQgaXMgMTAwCisKK3ZlcmlmeWluZyBjb3VudCB3aXRoIHJhbmdlCit0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpCitQQVNTIHRy
YW5zICE9IG51bGwgaXMgdHJ1ZQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykKK1BBU1Mgc3RvcmUgIT0gbnVsbCBpcyB0cnVlCitpbmRleCA9IHRyYW5zLm9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKS5pbmRleCgnaW5kZXhOYW1lJykKK1BBU1MgaW5kZXggIT0gbnVsbCBpcyB0
cnVlCisKK3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dlck9wZW4iOmZhbHNlLCJ1cHBlciI6OTksInVw
cGVyT3BlbiI6ZmFsc2UsImV4cGVjdGVkIjoxMDB9CityZXF1ZXN0ID0gaW5kZXguY291bnQoSURC
S2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRl
c3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlz
IHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMTAwCisKK3Rlc3QgPSB7Imxvd2VyIjowLCJs
b3dlck9wZW4iOnRydWUsInVwcGVyIjo5OSwidXBwZXJPcGVuIjpmYWxzZSwiZXhwZWN0ZWQiOjk5
fQorcmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRl
c3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiBy
ZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlz
IDk5CisKK3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dlck9wZW4iOmZhbHNlLCJ1cHBlciI6OTksInVw
cGVyT3BlbiI6dHJ1ZSwiZXhwZWN0ZWQiOjk5fQorcmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktl
eVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0
LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0
cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDk5CisKK3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dl
ck9wZW4iOnRydWUsInVwcGVyIjo5OSwidXBwZXJPcGVuIjp0cnVlLCJleHBlY3RlZCI6OTh9City
ZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51
cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVl
c3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgOTgK
KwordGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVyIjoxMDAsInVwcGVy
T3BlbiI6ZmFsc2UsImV4cGVjdGVkIjoxMDB9CityZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5
UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3Qu
dXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRy
dWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMTAwCisKK3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dl
ck9wZW4iOmZhbHNlLCJ1cHBlciI6MTAwLCJ1cHBlck9wZW4iOmZhbHNlLCJleHBlY3RlZCI6MTAw
fQorcmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRl
c3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiBy
ZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlz
IDEwMAorCit0ZXN0ID0geyJsb3dlciI6MTAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVyIjoxMDAs
InVwcGVyT3BlbiI6ZmFsc2UsImV4cGVjdGVkIjo5MH0KK3JlcXVlc3QgPSBpbmRleC5jb3VudChJ
REJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3Blbiwg
dGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicg
aXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyA5MAorCit0ZXN0ID0geyJsb3dlciI6MCwi
bG93ZXJPcGVuIjpmYWxzZSwidXBwZXIiOjAsInVwcGVyT3BlbiI6ZmFsc2UsImV4cGVjdGVkIjox
fQorcmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRl
c3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiBy
ZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlz
IDEKKwordGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6dHJ1ZSwidXBwZXIiOjAsInVwcGVy
T3BlbiI6dHJ1ZSwiZXhwZWN0ZWQiOjB9CityZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5UmFu
Z2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBw
ZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUK
K1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMAorCit0ZXN0ID0geyJsb3dlciI6MjAsImxvd2VyT3Bl
biI6dHJ1ZSwidXBwZXIiOjEwLCJ1cHBlck9wZW4iOnRydWUsImV4cGVjdGVkIjowfQorcmVxdWVz
dCA9IGluZGV4LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIs
IHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0LnJl
c3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDAKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjVj
MjgyMDk2YzMxMDliMjBiYTUyZTg5N2UxNmExM2M5OWIxOTQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQuaHRtbApAQCAtMCwwICsx
LDEyNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIncyBJREJJbmRleC5jb3VudCgpLiIpOworaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGV2YWxBbmRMb2coIndpbmRvdy5pbmRleGVkREIg
PSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIiKTsKKyAgICBldmFs
QW5kTG9nKCJ3aW5kb3cuSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwg
d2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uIik7CisgICAgZXZhbEFuZExvZygid2luZG93LklE
QktleVJhbmdlID0gd2luZG93LklEQktleVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlSYW5n
ZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtY291
bnQnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHByZXBhcmVEYXRhYmFzZTsKKyAgICB9OworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0
YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygicHJlcGFyaW5nIGRhdGFiYXNl
Iik7CisgICAgd2luZG93LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworCisgICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKworICAgIHdpbmRv
dy5pbmRleCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnJyki
KTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFt
ZScpIik7CisKKyAgICBkZWJ1ZygiYWRkaW5nIDAgLi4uIDk5Iik7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICByZXF1ZXN0ID0gc3RvcmUuYWRkKGksIGkpOwor
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9
CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50OworfQorCitmdW5jdGlvbiB2ZXJp
ZnlDb3VudCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQg
d2l0aG91dCByYW5nZSIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHNo
b3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnRXaXRo
UmFuZ2U7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Cisg
ICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleE5hbWUnKSIp
OworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5jb3VudCgpIik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09
ICdudW1iZXInIik7CisgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAiMTAwIik7
CisgICAgICAgICAvLyBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCisgICAgfTsKK30KKwor
ZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoUmFuZ2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGggcmFuZ2UiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJF
QURfT05MWSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0
ZSA9IGRvbmU7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7
CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJpbmRleCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKS5pbmRleCgnaW5kZXhOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoImluZGV4ICE9
IG51bGwiKTsKKworICAgIHZhciB0ZXN0cyA9IFsKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJP
cGVuOiBmYWxzZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0s
CisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1cHBlck9w
ZW46IGZhbHNlLCBleHBlY3RlZDogOTkgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVu
OiBmYWxzZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OSB9LAorICAg
ICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0
cnVlLCBleHBlY3RlZDogOTggfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxz
ZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAgICAg
ICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZh
bHNlLCBleHBlY3RlZDogMTAwIH0sCisgICAgICAgIHsgbG93ZXI6IDEwLCBsb3dlck9wZW46IGZh
bHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogOTAgfSwKKyAgICAg
ICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDAsIHVwcGVyT3BlbjogZmFs
c2UsIGV4cGVjdGVkOiAxIH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwg
dXBwZXI6IDAsIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IDAgfSwKKyAgICAgICAgeyBsb3dl
cjogMjAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDEwLCB1cHBlck9wZW46IHRydWUsIGV4cGVj
dGVkOiAwIH0KKyAgICBdOworCisgICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7CisgICAgICAgIGRl
YnVnKCIiKTsKKyAgICAgICAgZXZhbEFuZExvZygidGVzdCA9ICIgKyBKU09OLnN0cmluZ2lmeSh0
ZXN0cy5zaGlmdCgpKSk7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
aW5kZXguY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVz
dC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5y
ZXN1bHQgPT0gJ251bWJlciciKTsKKyAgICAgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1
bHQiLCBTdHJpbmcodGVzdC5leHBlY3RlZCkpOworCisgICAgICAgICAgICAgaWYgKHRlc3RzLmxl
bmd0aCkgeworICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOworICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorICAg
ICAgICB9OworICAgIH0KKworICAgIG5leHRUZXN0KCk7Cit9CisKK3Rlc3QoKTsKKworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCBlNTAz
MTAyODQ2MmRlNTI1NjljYWY3Y2MwZjFhZDIxY2Y5ZTdmMWU0Li4xMWE5MGIwZTZkZGYxMjZkYzI0
M2VjYjc2OGQ0Y2EzODM4NTkzZTZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTE0
LDYgKzE0LDMwIEBAIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCiBjcmVhdGVPYmplY3RTdG9y
ZSgpOgogc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkKIHN0
b3JlTmFtZXMgPSBkYi5vYmplY3RTdG9yZU5hbWVzCitQQVNTICduYW1lJyBpbiBzdG9yZSBpcyB0
cnVlCitQQVNTICdrZXlQYXRoJyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTICdpbmRleE5hbWVzJyBp
biBzdG9yZSBpcyB0cnVlCitQQVNTICd0cmFuc2FjdGlvbicgaW4gc3RvcmUgaXMgdHJ1ZQorUEFT
UyAncHV0JyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIHR5cGVvZiBzdG9yZS5wdXQgaXMgImZ1bmN0
aW9uIgorUEFTUyAnYWRkJyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIHR5cGVvZiBzdG9yZS5hZGQg
aXMgImZ1bmN0aW9uIgorUEFTUyAnZGVsZXRlJyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIHR5cGVv
ZiBzdG9yZS5kZWxldGUgaXMgImZ1bmN0aW9uIgorUEFTUyAnZ2V0JyBpbiBzdG9yZSBpcyB0cnVl
CitQQVNTIHR5cGVvZiBzdG9yZS5nZXQgaXMgImZ1bmN0aW9uIgorUEFTUyAnY2xlYXInIGluIHN0
b3JlIGlzIHRydWUKK1BBU1MgdHlwZW9mIHN0b3JlLmNsZWFyIGlzICJmdW5jdGlvbiIKK1BBU1Mg
J29wZW5DdXJzb3InIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgdHlwZW9mIHN0b3JlLm9wZW5DdXJz
b3IgaXMgImZ1bmN0aW9uIgorUEFTUyAnY3JlYXRlSW5kZXgnIGluIHN0b3JlIGlzIHRydWUKK1BB
U1MgdHlwZW9mIHN0b3JlLmNyZWF0ZUluZGV4IGlzICJmdW5jdGlvbiIKK1BBU1MgJ2luZGV4JyBp
biBzdG9yZSBpcyB0cnVlCitQQVNTIHR5cGVvZiBzdG9yZS5pbmRleCBpcyAiZnVuY3Rpb24iCitQ
QVNTICdkZWxldGVJbmRleCcgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyB0eXBlb2Ygc3RvcmUuZGVs
ZXRlSW5kZXggaXMgImZ1bmN0aW9uIgorUEFTUyAnY291bnQnIGluIHN0b3JlIGlzIHRydWUKK1BB
U1MgdHlwZW9mIHN0b3JlLmNvdW50IGlzICJmdW5jdGlvbiIKIFBBU1Mgc3RvcmUubmFtZSBpcyAi
c3RvcmVOYW1lIgogUEFTUyBzdG9yZS5rZXlQYXRoIGlzIG51bGwKIFBBU1Mgc3RvcmVOYW1lcy5j
b250YWlucygnc3RvcmVOYW1lJykgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbAppbmRleCA3NjM4MGZmZWM3YjE2
ZDQzMTJmZDE5MTJlODMxMGNmYTA0NDkzNWQ3Li4yMzJhYTgzM2MyMTE5OGQ0YjRhZTcyZmJlMGU5
NmYyNmMyOTk5NGE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
YmplY3RzdG9yZS1iYXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbApAQCAtNDIsNiArNDIsMzEgQEAgZnVuY3Rpb24gc2V0
VmVyc2lvblN1Y2Nlc3MoKQogICAgIHdpbmRvdy5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CiAgICAgdmFyIHN0b3Jl
TmFtZXMgPSBldmFsQW5kTG9nKCJzdG9yZU5hbWVzID0gZGIub2JqZWN0U3RvcmVOYW1lcyIpOwog
CisgICAgc2hvdWxkQmVUcnVlKCInbmFtZScgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZVRydWUo
IidrZXlQYXRoJyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2luZGV4TmFtZXMnIGlu
IHN0b3JlIik7CisgICAgc2hvdWxkQmVUcnVlKCIndHJhbnNhY3Rpb24nIGluIHN0b3JlIik7Cisg
ICAgc2hvdWxkQmVUcnVlKCIncHV0JyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygidHlwZW9mIHN0b3JlLnB1dCIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgi
J2FkZCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9y
ZS5hZGQiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidkZWxldGUnIGluIHN0b3Jl
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuZGVsZXRlIiwgImZ1
bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInZ2V0JyBpbiBzdG9yZSIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmdldCIsICJmdW5jdGlvbiIpOworICAgIHNo
b3VsZEJlVHJ1ZSgiJ2NsZWFyJyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygidHlwZW9mIHN0b3JlLmNsZWFyIiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCIn
b3BlbkN1cnNvcicgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVv
ZiBzdG9yZS5vcGVuQ3Vyc29yIiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInY3Jl
YXRlSW5kZXgnIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Yg
c3RvcmUuY3JlYXRlSW5kZXgiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidpbmRl
eCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5p
bmRleCIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2RlbGV0ZUluZGV4JyBpbiBz
dG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHN0b3JlLmRlbGV0ZUlu
ZGV4IiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInY291bnQnIGluIHN0b3JlIik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuY291bnQiLCAiZnVuY3Rp
b24iKTsKKwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJzdG9yZU5h
bWUiKTsKICAgICBzaG91bGRCZU51bGwoInN0b3JlLmtleVBhdGgiKTsKICAgICBzaG91bGRCZSgi
c3RvcmVOYW1lcy5jb250YWlucygnc3RvcmVOYW1lJykiLCAidHJ1ZSIpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ODFlM2E4MWVkYTVlYmFjZmNkODFhYjhjMzU1MGE0MzI0
ODVmYWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
YmplY3RzdG9yZS1jb3VudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4NyBAQAorVGVzdCBJbmRl
eGVkREIncyBJREJPYmplY3RTdG9yZS5jb3VudCgpLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKword2luZG93LmluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93Lndl
YmtpdEluZGV4ZWREQgord2luZG93LklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5zYWN0
aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbgord2luZG93LklEQktleVJhbmdlID0g
d2luZG93LklEQktleVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlSYW5nZQoraW5kZXhlZERC
Lm9wZW4oJ29iamVjdHN0b3JlLWNvdW50JykKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorZGIu
c2V0VmVyc2lvbignbmV3IHZlcnNpb24nKQorCitwcmVwYXJpbmcgZGF0YWJhc2UKK3RyYW5zID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyB0cmFucyAhPT0gbnVsbCBpcyB0cnVlCitEZWxldGVk
IGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVO
YW1lJywgbnVsbCkKK2FkZGluZyAwIC4uLiA5OQorCit2ZXJpZnlpbmcgY291bnQgd2l0aG91dCBy
YW5nZQordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24u
UkVBRF9PTkxZKQorUEFTUyB0cmFucyAhPSBudWxsIGlzIHRydWUKK3N0b3JlID0gdHJhbnMub2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpCitQQVNTIHN0b3JlICE9IG51bGwgaXMgdHJ1ZQorcmVxdWVz
dCA9IHN0b3JlLmNvdW50KCkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXIn
IGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMTAwCisKK3ZlcmlmeWluZyBjb3VudCB3
aXRoIHJhbmdlCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX09OTFkpCitQQVNTIHRyYW5zICE9IG51bGwgaXMgdHJ1ZQorc3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKK1BBU1Mgc3RvcmUgIT0gbnVsbCBpcyB0cnVlCisK
K3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dlck9wZW4iOmZhbHNlLCJ1cHBlciI6OTksInVwcGVyT3Bl
biI6ZmFsc2UsImV4cGVjdGVkIjoxMDB9CityZXF1ZXN0ID0gc3RvcmUuY291bnQoSURCS2V5UmFu
Z2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBw
ZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUK
K1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMTAwCisKK3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dlck9w
ZW4iOnRydWUsInVwcGVyIjo5OSwidXBwZXJPcGVuIjpmYWxzZSwiZXhwZWN0ZWQiOjk5fQorcmVx
dWVzdCA9IHN0b3JlLmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBw
ZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0
LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDk5CisK
K3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dlck9wZW4iOmZhbHNlLCJ1cHBlciI6OTksInVwcGVyT3Bl
biI6dHJ1ZSwiZXhwZWN0ZWQiOjk5fQorcmVxdWVzdCA9IHN0b3JlLmNvdW50KElEQktleVJhbmdl
LmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVy
T3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQ
QVNTIHJlcXVlc3QucmVzdWx0IGlzIDk5CisKK3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dlck9wZW4i
OnRydWUsInVwcGVyIjo5OSwidXBwZXJPcGVuIjp0cnVlLCJleHBlY3RlZCI6OTh9CityZXF1ZXN0
ID0gc3RvcmUuY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwg
dGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVz
dWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgOTgKKwordGVz
dCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVyIjoxMDAsInVwcGVyT3BlbiI6
ZmFsc2UsImV4cGVjdGVkIjoxMDB9CityZXF1ZXN0ID0gc3RvcmUuY291bnQoSURCS2V5UmFuZ2Uu
Ym91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJP
cGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BB
U1MgcmVxdWVzdC5yZXN1bHQgaXMgMTAwCisKK3Rlc3QgPSB7Imxvd2VyIjowLCJsb3dlck9wZW4i
OmZhbHNlLCJ1cHBlciI6MTAwLCJ1cHBlck9wZW4iOmZhbHNlLCJleHBlY3RlZCI6MTAwfQorcmVx
dWVzdCA9IHN0b3JlLmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBw
ZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0
LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDEwMAor
Cit0ZXN0ID0geyJsb3dlciI6MTAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVyIjoxMDAsInVwcGVy
T3BlbiI6ZmFsc2UsImV4cGVjdGVkIjo5MH0KK3JlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlS
YW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51
cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1
ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyA5MAorCit0ZXN0ID0geyJsb3dlciI6MCwibG93ZXJP
cGVuIjpmYWxzZSwidXBwZXIiOjAsInVwcGVyT3BlbiI6ZmFsc2UsImV4cGVjdGVkIjoxfQorcmVx
dWVzdCA9IHN0b3JlLmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBw
ZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0
LnJlc3VsdCA9PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDEKKwor
dGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6dHJ1ZSwidXBwZXIiOjAsInVwcGVyT3BlbiI6
dHJ1ZSwiZXhwZWN0ZWQiOjB9CityZXF1ZXN0ID0gc3RvcmUuY291bnQoSURCS2V5UmFuZ2UuYm91
bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVu
KSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1Mg
cmVxdWVzdC5yZXN1bHQgaXMgMAorCit0ZXN0ID0geyJsb3dlciI6MjAsImxvd2VyT3BlbiI6dHJ1
ZSwidXBwZXIiOjEwLCJ1cHBlck9wZW4iOnRydWUsImV4cGVjdGVkIjowfQorcmVxdWVzdCA9IHN0
b3JlLmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3Qu
bG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9
PSAnbnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDAKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41YmVmMDdmYmYwYmFlNzQ0ZjVmNWQzZWEzZDQzNjg2ZmQxNmMyYTYzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQuaHRt
bApAQCAtMCwwICsxLDExOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitk
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJPYmplY3RTdG9yZS5jb3VudCgpLiIpOwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGV2YWxBbmRMb2co
IndpbmRvdy5pbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRl
eGVkREIiKTsKKyAgICBldmFsQW5kTG9nKCJ3aW5kb3cuSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cu
SURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uIik7CisgICAgZXZh
bEFuZExvZygid2luZG93LklEQktleVJhbmdlID0gd2luZG93LklEQktleVJhbmdlIHx8IHdpbmRv
dy53ZWJraXRJREJLZXlSYW5nZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3Blbignb2JqZWN0c3RvcmUtY291bnQnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lv
bicpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHByZXBhcmVEYXRhYmFzZTsKKyAgICB9Owor
fQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygicHJlcGFyaW5nIGRhdGFiYXNlIik7CisgICAgd2luZG93LnRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFu
cyAhPT0gbnVsbCIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHN0
b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1l
JywgbnVsbCkiKTsKKworICAgIGRlYnVnKCJhZGRpbmcgMCAuLi4gOTkiKTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIHJlcXVlc3QgPSBzdG9yZS5hZGQoaSwg
aSk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIH0KKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnQ7Cit9CisKK2Z1bmN0aW9u
IHZlcmlmeUNvdW50KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZlcmlmeWluZyBj
b3VudCB3aXRob3V0IHJhbmdlIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3Vu
dFdpdGhSYW5nZTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUuY291bnQoKSIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICBzaG91bGRCZVRydWUoInR5
cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOworICAgICAgICAgc2hvdWxkQmUoInJl
cXVlc3QucmVzdWx0IiwgIjEwMCIpOworICAgICAgICAgLy8gbGV0IHRoZSB0cmFuc2FjdGlvbiBj
b21wbGV0ZQorICAgIH07Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50V2l0aFJhbmdlKCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRoIHJhbmdlIik7
CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5h
bWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFu
cyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgIHRyYW5zLm9uY29tcGxldGUgPSBkb25lOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHNob3VsZEJl
VHJ1ZSgic3RvcmUgIT0gbnVsbCIpOworCisgICAgdmFyIHRlc3RzID0gWworICAgICAgICB7IGxv
d2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4
cGVjdGVkOiAxMDAgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBl
cjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5OSB9LAorICAgICAgICB7IGxvd2Vy
OiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0
ZWQ6IDk5IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5
LCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBs
b3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDog
MTAwIH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAs
IHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAgICAgICAgeyBsb3dlcjogMTAs
IGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVk
OiA5MCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMCwg
dXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93
ZXJPcGVuOiB0cnVlLCB1cHBlcjogMCwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogMCB9LAor
ICAgICAgICB7IGxvd2VyOiAyMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogMTAsIHVwcGVyT3Bl
bjogdHJ1ZSwgZXhwZWN0ZWQ6IDAgfQorICAgIF07CisKKyAgICBmdW5jdGlvbiBuZXh0VGVzdCgp
IHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0gIiArIEpT
T04uc3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0
ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKSIpOworICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBzaG91bGRCZVRydWUoInR5
cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOworICAgICAgICAgICAgIHNob3VsZEJl
KCJyZXF1ZXN0LnJlc3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7CisKKyAgICAgICAgICAg
ICBpZiAodGVzdHMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7CisgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0aW9u
IGNvbXBsZXRlCisgICAgICAgIH07CisgICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30KKwordGVz
dCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118600</attachid>
            <date>2011-12-09 11:43:29 -0800</date>
            <delta_ts>2011-12-16 13:27:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73686-20111209114328.patch</filename>
            <type>text/plain</type>
            <size>52484</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2NmMmNiM2YzNDEzNGVm
OWUxNzYyYjBhNWQzZjZiMTZmZTE1MTE5YS4uOTZlMzE4OWU3ZGZiMTkwNTY5ODMyZTY1MzU3Zjkx
NDg1ODIwZTRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDExLTEyLTA5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBs
ZW1lbnQgSURCT2JqZWN0U3RvcmUuY291bnQoKSBhbmQgSURCSW5kZXguY291bnQoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM2ODYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSBuZXcgbWV0aG9k
cyBvcGVuIGFuIGludGVybmFsIGN1cnNvciBhbmQgaXRlcmF0ZSB0aHJvdWdoIHRoZQorICAgICAg
ICByZXN1bHRzLCByZXR1cm5pbmcgdGhlIG51bWJlciBvZiBpdGVtcyBmb3VuZC4gTm90ZSB0aGF0
IG9ubHkKKyAgICAgICAgcGFzc2luZyBhbiBJREJLZXlSYW5nZSBpcyBzdXBwb3J0ZWQsIG5vdCBh
biBJREJLZXkuIFN1cHBvcnRpbmcKKyAgICAgICAgdGhhdCB3aWxsIHJlcXVpcmUgc29tZSBJREwv
YmluZGluZyBtb25rZXlpbmc7IHNldmVyYWwgb3RoZXIKKyAgICAgICAgbWV0aG9kcyBhbHNvIG5l
ZWQgdGhlIHNhbWUgS2V5LW9yLUtleVJhbmdlIGJlaGF2aW9yLgorCisgICAgICAgIFRlc3RzOiBz
dG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpudW1iZXJWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJJbmRleDo6Y291bnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXguaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4Ojpjb3VudCk6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5p
ZGw6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmNvdW50SW50ZXJuYWwpOgorICAgICAgICAo
V2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnQpOgorICAgICAgICAqIHN0b3JhZ2Uv
SURCSW5kZXhCYWNrZW5kSW1wbC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y291bnQpOgorICAgICAgICAqIHN0b3JhZ2Uv
SURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjb3Vu
dCk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZS5pZGw6CisgICAgICAgICogc3Rv
cmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50SW50ZXJuYWwpOgorICAgICAgICAqIHN0b3JhZ2Uv
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmg6CisKIDIwMTEtMTItMDggIEVyaWsgQXJ2aWRzc29uICA8
YXJ2QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDb2RlR2VuZXJhdG9yVjg6IEZpeCBpc3N1ZSB3
aXRoIG92ZXJsb2FkZWQgc3RhdGljIGNvbmRpdGlvbmFsIG1ldGhvZHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggNjliY2FjZWQzNWNjYWZkNTQ4YTFhNmMzOTZkY2EwZTFjMzExMTllZC4u
NWNlYzE0NjM2YjljMzBhMDE2YmViMjllZWZhYjMzZjFjNjU0Nzc5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMS0xMi0wOSAgSm9zaHVhIEJlbGwgIDxq
c2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogSW1wbGVtZW50IElEQk9i
amVjdFN0b3JlLmNvdW50KCkgYW5kIElEQkluZGV4LmNvdW50KCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNjg2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGx1bWJpbmcgdG8gc3VwcG9ydCB0aGUgbmV3
IG1ldGhvZHMgaW4gQ2hyb21pdW0uCisKKyAgICAgICAgKiBzcmMvSURCSW5kZXhCYWNrZW5kUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJJbmRleEJhY2tlbmRQcm94eTo6Y291bnQpOgor
ICAgICAgICAqIHNyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oOgorICAgICAgICAqIHNyYy9JREJP
YmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0
b3JlQmFja2VuZFByb3h5Ojpjb3VudCk6CisgICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlQmFj
a2VuZFByb3h5Lmg6CisgICAgICAgICogc3JjL1dlYklEQkluZGV4SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkluZGV4SW1wbDo6Y291bnQpOgorICAgICAgICAqIHNyYy9XZWJJREJJ
bmRleEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjb3VudCk6CisgICAgICAgICog
c3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oOgorCiAyMDExLTEyLTA4ICBFbGxpb3QgUG9nZXIg
IDxlcG9nZXJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBDaHJvbWl1bSBERVBTIHJvbGwgMTEyOTc0
IC0+IDExMzYwMwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNzAzMWE1NTIyMjcwZTU5NTAwMTVjNzMxMjlhYTI5M2Ji
MjI4MTg1Ni4uNjhjMzMxNmJjZjQ5MGIxNWRhOTQ2ODZhMjcyNmM0OGNlZWMzMjQ1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCkBAIC0yMTI0LDYgKzIxMjQsMTQgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Ym9vbGVhblZhbHVlKGJvb2wgdmFsdWUKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh3aXJlRGF0YSkpOwogfQog
CitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpudW1iZXJWYWx1ZShkb3VibGUgdmFsdWUpCit7CisgICAgV3JpdGVyIHdyaXRlcjsKKyAgICB3
cml0ZXIud3JpdGVOdW1iZXIodmFsdWUpOworICAgIFN0cmluZyB3aXJlRGF0YSA9IFN0cmluZ0lt
cGw6OmFkb3B0KHdyaXRlci5kYXRhKCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFs
aXplZFNjcmlwdFZhbHVlKHdpcmVEYXRhKSk7Cit9CisKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnJlbGVhc2UoKQogewogICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHJlc3VsdCA9IGFkb3B0UmVmKG5ldyBTZXJpYWxpemVk
U2NyaXB0VmFsdWUobV9kYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDI1ZGE4ODliMDg3ZDE1ZmY0NDE4ZmRhZGUz
NTBkNGJlZWY2NDYzYTIuLmQzYTY2OGI5ODNjNDBhYjRiMzhhYTY3N2ZkMzc3MzNiMzMwNGMxZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKiBudWxsVmFsdWUoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHVuZGVmaW5lZFZhbHVlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBib29sZWFuVmFsdWUoYm9vbCB2YWx1ZSk7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBudW1iZXJWYWx1ZShkb3VibGUgdmFs
dWUpOwogCiAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHJlbGVhc2UoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmNwcAppbmRleCA3MDk2MTMwMjNjNzcwM2NlMzll
NWRiNjRiM2FhNjQyNzhlMDcxMGFmLi5iZjJkMzhhZjJiMTdmMjg1NjAwNjBhYTIxMzdkMjlhZGQx
ZTJhYWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmNwcApAQCAtNzMsNiArNzMsMTcg
QEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXMKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAorUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6
Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgp
KTsKKyAgICBtX2JhY2tlbmQtPmNvdW50KGtleVJhbmdlLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9u
LT5iYWNrZW5kKCksIGVjKTsKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgcmVxdWVzdC0+bWFya0Vh
cmx5RGVhdGgoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXF1ZXN0
OworfQorCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtl
eVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIGlmIChkaXJlY3Rpb24gIT0gSURCQ3Vyc29yOjpORVhUICYmIGRpcmVjdGlvbiAhPSBJREJD
dXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFICYmIGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6OlBSRVYg
JiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEUpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCSW5kZXguaAppbmRleCA1ZDg4YWZjZGZiNmVhNTExYmQ3M2NkNjZkY2I5ZTA0ZTYy
MGE2N2E3Li45NmIzODBiYzk4MGRkOWNjMmEyOGE4ZmYxOThmNTJjNjQxZjJmNDdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJJbmRleC5oCkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKICAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwgMCwg
ZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBF
eGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXlSYW5nZSwg
SURCQ3Vyc29yOjpORVhULCBlYyk7IH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5D
dXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1
bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSB7IHJldHVybiBjb3VudChjb250ZXh0LCAwLCBlYyk7IH0KKyAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4
Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIDAsIGVjKTsg
fSAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4
Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleVJhbmdl
LCBJREJDdXJzb3I6Ok5FWFQsIGVjKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJJbmRleC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmlkbApp
bmRleCBiMGYzMmFhN2EwZTllZDdmMzYxYzc3NDkzYjllYTEzNWE5OTA1MzM4Li40YzhmNjU1ZTNh
YzJmOGJlMWY3MTU1NDM0MWQwMzc2MjNjN2JkZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkluZGV4LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQklu
ZGV4LmlkbApAQCAtNDIsNiArNDIsOCBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgICAgICBy
YWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3QgZ2V0S2V5KGluIElEQktleSBrZXkpCiAgICAgICAg
ICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKKyAgICAgICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3QgY291bnQoaW4gW09wdGlvbmFsXSBJREJL
ZXlSYW5nZSByYW5nZSkKKyAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24p
OwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5k
ZXhCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2Vu
ZEltcGwuY3BwCmluZGV4IGYwZGNmM2Q3ZWQzOWVkOWMyNWQyYTNiMDdlZmY3YmNkNGY1YmQzOGYu
LjZmNjFmNzc0ZGE5N2RiYmQzYmFlMGUzZWM0MDAyOTNmNWI3ZjYwYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAtMTIyLDYgKzEyMiwy
OSBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5LZXlDdXJzb3IoUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIHVucwogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7CiB9CiAKK3ZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6
Y291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRl
eEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbikKK3sKKyAgICB1aW50MzJfdCBjb3VudCA9IDA7
CisKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNv
ciA9IGluZGV4LT5tX2JhY2tpbmdTdG9yZS0+b3BlbkluZGV4S2V5Q3Vyc29yKGluZGV4LT5tX2Rh
dGFiYXNlSWQsIGluZGV4LT5tX29iamVjdFN0b3JlQmFja2VuZC0+aWQoKSwgaW5kZXgtPmlkKCks
IHJhbmdlLmdldCgpLCBJREJDdXJzb3I6Ok5FWFQpOworICAgIGlmICghYmFja2luZ1N0b3JlQ3Vy
c29yKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6bnVtYmVyVmFsdWUoY291bnQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRv
IHsKKyAgICAgICAgKytjb3VudDsKKyAgICB9IHdoaWxlIChiYWNraW5nU3RvcmVDdXJzb3ItPmNv
bnRpbnVlRnVuY3Rpb24oMCkpOworICAgIGJhY2tpbmdTdG9yZUN1cnNvci0+Y2xvc2UoKTsKKyAg
ICBjYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bWJlclZhbHVl
KGNvdW50KSk7Cit9CisKK3ZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnQoUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Ms
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxs
YmFja1Rhc2soJmNvdW50SW50ZXJuYWwsIHRoaXMsIHJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0
aW9uKSkpCisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VS
UjsKK30KKwogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFz
c1JlZlB0cjxJREJLZXk+IGtleSwgYm9vbCBnZXRPYmplY3QsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCiB7CiAgICAgLy8gRklYTUU6IFNwbGl0IGdldEludGVybmFsIGludG8g
dHdvIGZ1bmN0aW9ucywgZ2V0dGluZyByaWQgb2ZmIHxnZXRPYmplY3R8LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuaAppbmRleCA0MmU1Zjc3MDIzMWYzZjQ5
OTQ4MzkzZGE0NTAyMzRlNjI2NmYwZmEzLi4xMjI3NGFlOGJlN2YwMzBhNTgxYzNkNGM1ZmEyNjFl
NTQ3YjczMjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFj
a2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZElt
cGwuaApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG11bHRpRW50
cnkoKSB7IHJldHVybiBtX211bHRpRW50cnk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vy
c29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwg
RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBjb3VudChQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5LZXlDdXJz
b3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGdldChQYXNzUmVmUHRyPElEQktleT4s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRLZXkoUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTc3LDYgKzc4LDcgQEAgcHJpdmF0ZToKICAg
ICBJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlx
dWUsIGJvb2wgbXVsdGlFbnRyeSk7CiAKICAgICBzdGF0aWMgdm9pZCBvcGVuQ3Vyc29ySW50ZXJu
YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1w
bD4sIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIElE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKKyAgICBz
dGF0aWMgdm9pZCBjb3VudEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4pOwogICAgIHN0YXRpYyB2b2lkIGdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4s
IGJvb2wgZ2V0T2JqZWN0LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCiAgICAgc3RhdGlj
IGNvbnN0IGludDY0X3QgSW52YWxpZElkID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkluZGV4QmFja2VuZEludGVyZmFjZS5oCmluZGV4IDdjZTBlZjNiYThjZTJkN2UwZDk2
MjU5NGIwNGFjZWI1NzAxYmY1NzQuLmEwZjFiYTgxYjk5NjM2ZmY5M2U0OWQzNzJiNTY1MDBkODMw
NzcwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJ
bnRlcmZhY2UuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG11
bHRpRW50cnkoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihQYXNzUmVmUHRy
PElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5LZXlDdXJzb3IoUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRp
b25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0cjxJREJLZXk+LCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEtleShQYXNzUmVmUHRy
PElEQktleT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJPYmplY3RTdG9yZS5jcHAKaW5kZXggYzkwODZlNWNiNmRkNjNkNTE5MjBhZTIyZmQwMjdkODQ0
MmFkMDhlOS4uNzRhODAwMWY3Y2NkMjE2N2FkYjhiMGY4ZDk5NTAxMmYwN2NmOTRkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTIwMiw2ICsyMDIsMTcg
QEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7
CiB9CiAKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdl
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9
IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFu
c2FjdGlvbi5nZXQoKSk7CisgICAgbV9iYWNrZW5kLT5jb3VudChyYW5nZSwgcmVxdWVzdCwgbV90
cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIHJlcXVl
c3QtPm1hcmtFYXJseURlYXRoKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1
cm4gcmVxdWVzdC5yZWxlYXNlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJP
YmplY3RTdG9yZS5oCmluZGV4IDliNWFhNmIyZDNmNTM3MzFiYzYxNjU5Yjk2NTZjMzYzNDliY2Yy
NmIuLjgwYmJlMDhhOWFjYWFmYWY0ZmM0YzhlZDZhZDQwMTI0NWE3NGIyMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmgKQEAgLTc4LDYgKzc4LDggQEAgcHVibGljOgog
ICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7
CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rp
b24sIEV4Y2VwdGlvbkNvZGUmKTsgCisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1
cm4gY291bnQoY29udGV4dCwgMCwgZWMpOyB9CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBj
b3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4
Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKICAgICBJREJPYmplY3RTdG9yZShQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4sIElEQlRyYW5zYWN0aW9uKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsCmluZGV4IDAzOTMyZTc3MTk1MmVi
YTFhN2VmNjZkMWY3OThjNzBmYWU0ZjlhYTIuLmVhZTBiZWNlMzhiM2FkYjZmYTUxMGRkMWIyNWZj
YmI3NzRiODI3ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0
U3RvcmUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRs
CkBAIC01MSw1ICs1MSw3IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgICAgIHJhaXNlcyAo
SURCRGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICB2b2lkIGRlbGV0ZUluZGV4KGluIERPTVN0
cmluZyBuYW1lKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7Cisg
ICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGNvdW50
KGluIFtPcHRpb25hbF0gSURCS2V5UmFuZ2UgcmFuZ2UpCisgICAgICAgICAgICByYWlzZXMgKElE
QkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggODBmMGZjNzMwMDZl
M2E1Zjc4NWE1NTk4Njk4OGZkNmZiMzgyOWMxYy4uMjE5ZjkxYjRkMTdjZjI4MmYyMDVhMTY2NGQx
MTRjMDM1MjRkYzQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC01NDYsNiArNTQ2LDI5IEBAIHZvaWQgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzCiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoY3Vyc29yLnJlbGVhc2UoKSk7
CiB9CiAKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnQoUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFj
a1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50SW50ZXJuYWwsIHRoaXMsIHJh
bmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCisgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKK30KKwordm9pZCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpjb3VudEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQoreworICAg
IHVpbnQzMl90IGNvdW50ID0gMDsKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+
IGJhY2tpbmdTdG9yZUN1cnNvciA9IG9iamVjdFN0b3JlLT5tX2JhY2tpbmdTdG9yZS0+b3Blbk9i
amVjdFN0b3JlQ3Vyc29yKG9iamVjdFN0b3JlLT5tX2RhdGFiYXNlSWQsIG9iamVjdFN0b3JlLT5p
ZCgpLCByYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKKyAgICBpZiAoIWJhY2tpbmdTdG9y
ZUN1cnNvcikgeworICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0
VmFsdWU6Om51bWJlclZhbHVlKGNvdW50KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBkbyB7CisgICAgICAgICsrY291bnQ7CisgICAgfSB3aGlsZSAoYmFja2luZ1N0b3JlQ3Vyc29y
LT5jb250aW51ZUZ1bmN0aW9uKDApKTsKKworICAgIGJhY2tpbmdTdG9yZUN1cnNvci0+Y2xvc2Uo
KTsKKyAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bWJl
clZhbHVlKGNvdW50KSk7Cit9CisKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bG9h
ZEluZGV4ZXMoKQogewogICAgIFZlY3RvcjxpbnQ2NF90PiBpZHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCmluZGV4IDkyOWI2YTRm
MDE0MGUxZGM3MWIyMzdmMzQ1Y2EzNDkzMmQ3ZmExMTguLjJhYjU2MjczMGE3YmRlMGQ1YWJlYjBh
NzQyMzFlOTQzODA5NmMzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCkBAIC03Niw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2aXJ0dWFsIHZvaWQg
b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQg
ZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnQoUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgc3RhdGljIGJv
b2wgcG9wdWxhdGVJbmRleChJREJCYWNraW5nU3RvcmUmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPik7CiAK
QEAgLTk1LDYgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVJbmRleElu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHN0YXRpYyB2b2lkIGRlbGV0
ZUluZGV4SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4sIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgc3RhdGljIHZv
aWQgb3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5n
ZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CisgICAgc3RhdGljIHZv
aWQgY291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+KTsKIAogICAgIC8vIFRoZXNlIGFyZSB1c2VkIGFzIHNldFZlcnNpb24gdHJhbnNhY3Rpb24g
YWJvcnQgdGFza3MuCiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlSW5kZXhGcm9tTWFwKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQ
YXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IGIxNTc5
YjU0NDFhZTlmNjRkODAzYTAwNjkzMGE2OTQ1YjI4YzNkN2UuLjFkNzEyNWU2NDlkNTUzN2QyMzNh
ZjNkZDcxYWEwMjk2NmJmYWM2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNjgsNiArNjgsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNp
Z25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0g
MDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcAppbmRleCA4ZTk2NjAwMWQ5NzNl
YjBhYjEyMjUxODc2Mjc3MDkxMDVhOTcwYWIzLi5iYzJjODM2ZjhiMzg0NjM0MjNiZmQ1OTNhZTkw
YTFmMGRmNDg3MDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJ
bmRleEJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
SW5kZXhCYWNrZW5kUHJveHkuY3BwCkBAIC04OCw2ICs4OCwxNCBAQCB2b2lkIElEQkluZGV4QmFj
a2VuZFByb3h5OjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1
bnNpZ25lZAogICAgIG1fd2ViSURCSW5kZXgtPm9wZW5PYmplY3RDdXJzb3Ioa2V5UmFuZ2UsIGRp
cmVjdGlvbiwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0aW9u
UHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsKIH0KIAordm9pZCBJREJJbmRleEJh
Y2tlbmRQcm94eTo6Y291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIFRoZSB0cmFu
c2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkg
b2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCisgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBv
ZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KKyAgICBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9u
QmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOworICAgIG1fd2ViSURCSW5kZXgtPmNvdW50KGtl
eVJhbmdlLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCAqdHJhbnNhY3Rpb25Q
cm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpOworfQorCiB2b2lkIElEQkluZGV4QmFj
a2VuZFByb3h5OjpvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdl
LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJh
bnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVy
ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tl
bmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJv
eHkuaAppbmRleCBmMzkxOWFhMGNiMDdkNWFhOGIyZDEzNjAyZjhmYWU4NWJjODFiODUzLi40Y2U4
Yzg3NmJiMWQxMGE3MmY3M2NhMmE0MDNlN2QyZWViNTk5YzBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmgKQEAgLTQ5LDYgKzQ5LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5L
ZXlDdXJzb3IoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0
IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7
CisgICAgdmlydHVhbCB2b2lkIGNvdW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGdldEtleShQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJh
Y2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggYjVjYjA4ZDliMDk3MzA5
Yzk2MGU2ODliNDM0NWIzN2FhN2NhMTRiZS4uNzFmYjU3MWQxMjVlNDM0MmMwYzljNDQzMTI4MWM2
ZjRmZDVmMDZmNCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcApAQCAtMTQxLDYgKzE0MSwxNCBAQCB2b2lk
IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IHJhbmdlLCB1bnNpZwogICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPm9wZW5DdXJzb3Io
cmFuZ2UsIGRpcmVjdGlvbiwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRy
YW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsKIH0KIAordm9pZCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
cmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVy
IHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCisgICAgLy8gYWxsIGltcGxl
bWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KKyAgICBJREJU
cmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElE
QlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOworICAgIG1fd2ViSURCT2Jq
ZWN0U3RvcmUtPmNvdW50KHJhbmdlLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3Mp
LCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVC
YWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3Jl
QmFja2VuZFByb3h5LmgKaW5kZXggNGFjMzkxOTM2OTY5Y2YwZjY3YjNjNzJlY2M3MDdiMTQ0ZmVj
NjQ2Ny4uNmQzMzU2MzVjNWY1YzllYzUwNDA4YTIzOTVkYWRjNGMxNDc5YzMzZCAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQ
cm94eS5oCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNv
bnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJz
b3IoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVj
dGlvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAg
dmlydHVhbCB2b2lkIGNvdW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKICAg
ICBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eShQYXNzT3duUHRyPFdlYklEQk9iamVjdFN0b3Jl
Pik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleElt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcApp
bmRleCAwNzczOTdhMzNmOWUyZGY3OTY3MTJhNjNkOTJmODJkOWJjZDU1MDhjLi43MTBlMzAwZjlk
ODU5YjVmZTVjNjZmOWVmNGZlM2JjNTBmYTU4ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAKQEAgLTgzLDYgKzgzLDExIEBAIHZvaWQgV2Vi
SURCSW5kZXhJbXBsOjpvcGVuS2V5Q3Vyc29yKGNvbnN0IFdlYklEQktleVJhbmdlJiBrZXlSYW5n
ZSwgdW5zaWduZWQgc2hvCiAgICAgbV9iYWNrZW5kLT5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlLCBk
aXJlY3Rpb24sIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSks
IHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiB9
CiAKK3ZvaWQgV2ViSURCSW5kZXhJbXBsOjpjb3VudChjb25zdCBXZWJJREJLZXlSYW5nZSYga2V5
UmFuZ2UsICBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBtX2JhY2tlbmQt
PmNvdW50KGtleVJhbmdlLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxi
YWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwg
ZWMpOworfQorCiB2b2lkIFdlYklEQkluZGV4SW1wbDo6Z2V0T2JqZWN0KGNvbnN0IFdlYklEQktl
eSYga2V5UmFuZ2UsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG1fYmFj
a2VuZC0+Z2V0KGtleVJhbmdlLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNh
bGxiYWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uo
KSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5k
ZXhJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuaApp
bmRleCAwMDZmOWU1MTFjOTBmNjIzN2NhN2E5ODQ0NmFkOWFlMmFkYjk3MjY2Li4yMjZmZWI4ZTMw
MWYzMTc3NTEwOGYzNDc1ZThmM2M5YmQyNmZkNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJJbmRleEltcGwuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgb3Blbk9iamVjdEN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYsIHVu
c2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJh
bnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7IAogICAgIHZpcnR1YWwgdm9pZCBvcGVuS2V5
Q3Vyc29yKGNvbnN0IFdlYklEQktleVJhbmdlJiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBX
ZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnQoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCBXZWJJ
REJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0KGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNh
bGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBnZXRLZXkoY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJhY2tz
KiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3Bw
CmluZGV4IDFkNWJmZjZlMmExMzBlMWIxYzk4OGZlMTBjZDZlOTEwZjEwOGEwNDYuLjFlYzhhZjVi
YzJjMDVkODlkZjNiNWZhODEyM2Q5ZWY1NDEwMzgyMGIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMTEzLDYgKzEx
MywxMSBAQCB2b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6b3BlbkN1cnNvcihjb25zdCBXZWJJ
REJLZXlSYW5nZSYga2V5UmFuZ2UsIHVuc2lnbmVkCiAgICAgbV9vYmplY3RTdG9yZS0+b3BlbkN1
cnNvcihrZXlSYW5nZSwgZGlyZWN0aW9uLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0
UHRyKGNhbGxiYWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UoKSwgZWMpOwogfQogCit2b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6Y291bnQoY29u
c3QgV2ViSURCS2V5UmFuZ2UmIGtleVJhbmdlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywg
Y29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBtX29iamVjdFN0b3JlLT5jb3VudChrZXlSYW5nZSwgSURCQ2FsbGJhY2tzUHJv
eHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggYjJkMTllZDM1
YzM3NTQ2YTI4MjYyOTM5YmMzYmViODUyZThiZDM2OC4uNmY1ODBmMDFhZDAzMTYyYzU1YmJhYzBm
ZmJkZjJkZDcxM2FjOTM1OCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGVsZXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2Fj
dGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBX
ZWJJREJLZXlSYW5nZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tz
KiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCBjb3VudChjb25zdCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdl
YklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogCiAgcHJpdmF0ZToKICAgICBX
VEY6OlJlZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG1fb2Jq
ZWN0U3RvcmU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggM2Q3YmM1ODZkYTlkYWNkODcyNzRiZTY2NjE5MDRmMzBkNjQ4ZGYw
Ni4uMTZiY2M1YzdkYzBhZmU3NGNkNTgzYTQ3MWYxMGUzODQ1YjE5YmQwYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE5IEBACisyMDExLTEyLTA5ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBsZW1lbnQgSURCT2JqZWN0U3RvcmUuY291bnQoKSBh
bmQgSURCSW5kZXguY291bnQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzM2ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWw6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQuaHRt
bDogQWRkZWQuCisKIDIwMTEtMTItMDggIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgQWNjZXNzaWJpbGl0eTogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIg
c2hvdWxkIHN1cHBvcnQgbGlzdGVuaW5nIHRvIG5vdGlmaWNhdGlvbnMgb24gYWxsIGVsZW1lbnRz
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2lj
cy1leHBlY3RlZC50eHQKaW5kZXggZDY3MDk4N2ZjMDk2MDE1NzNjOTBlZWMxNzk4NTJmZGYyMDAy
ODQ0ZS4uNTVhMGE1OGU3ZGRkYTRhNmM2ZmZjNTY1ZTZiZjIzZTEyMDNjNGU3ZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MtZXhwZWN0
ZWQudHh0CkBAIC0yNSw5ICsyNSwxNSBAQCBQQVNTICdtdWx0aUVudHJ5JyBpbiBpbmRleE9iamVj
dCBpcyB0cnVlCiBQQVNTIGluZGV4T2JqZWN0LnVuaXF1ZSBpcyBmYWxzZQogUEFTUyBpbmRleE9i
amVjdC5tdWx0aUVudHJ5IGlzIGZhbHNlCiBQQVNTICdvcGVuS2V5Q3Vyc29yJyBpbiBpbmRleE9i
amVjdCBpcyB0cnVlCitQQVNTIHR5cGVvZiBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yIGlzICJm
dW5jdGlvbiIKIFBBU1MgJ29wZW5DdXJzb3InIGluIGluZGV4T2JqZWN0IGlzIHRydWUKK1BBU1Mg
dHlwZW9mIGluZGV4T2JqZWN0Lm9wZW5DdXJzb3IgaXMgImZ1bmN0aW9uIgogUEFTUyAnZ2V0S2V5
JyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCitQQVNTIHR5cGVvZiBpbmRleE9iamVjdC5nZXRLZXkg
aXMgImZ1bmN0aW9uIgogUEFTUyAnZ2V0JyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCitQQVNTIHR5
cGVvZiBpbmRleE9iamVjdC5nZXQgaXMgImZ1bmN0aW9uIgorUEFTUyAnY291bnQnIGluIGluZGV4
T2JqZWN0IGlzIHRydWUKK1BBU1MgdHlwZW9mIGluZGV4T2JqZWN0LmNvdW50IGlzICJmdW5jdGlv
biIKIHN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eicsIHo6IDIuNzJ9LCAna2V5JykKIGV2
ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAndmFsdWUyJywgeTogJ3p6ejInLCB6OiAyLjcxLCBm
b29iYXI6IDEyfSwgJ2tleTInKQogc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4V2hpbGVBZGRJc0lu
RmxpZ2h0JywgJ3gnKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW5kZXgtYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1i
YXNpY3MuaHRtbAppbmRleCBhOTIzYWI4ZWUxY2JiMWFkNTgwODI5NTM1ODAxYzhkZjBjMTc3OGQ4
Li45YmFmN2Q3NDU0ODVhN2I0ZWQ5MmIzNDc5ZTI0NzU0Yjc5NThmOTMwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRtbApAQCAtNTcsOSArNTcs
MTUgQEAgZnVuY3Rpb24gYWRkRGF0YSgpCiAgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhPYmplY3Qu
dW5pcXVlIik7CiAgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhPYmplY3QubXVsdGlFbnRyeSIpOwog
ICAgIHNob3VsZEJlVHJ1ZSgiJ29wZW5LZXlDdXJzb3InIGluIGluZGV4T2JqZWN0Iik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgaW5kZXhPYmplY3Qub3BlbktleUN1cnNvciIs
ICJmdW5jdGlvbiIpOwogICAgIHNob3VsZEJlVHJ1ZSgiJ29wZW5DdXJzb3InIGluIGluZGV4T2Jq
ZWN0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgaW5kZXhPYmplY3Qub3Bl
bkN1cnNvciIsICJmdW5jdGlvbiIpOwogICAgIHNob3VsZEJlVHJ1ZSgiJ2dldEtleScgaW4gaW5k
ZXhPYmplY3QiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBpbmRleE9iamVj
dC5nZXRLZXkiLCAiZnVuY3Rpb24iKTsKICAgICBzaG91bGRCZVRydWUoIidnZXQnIGluIGluZGV4
T2JqZWN0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgaW5kZXhPYmplY3Qu
Z2V0IiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInY291bnQnIGluIGluZGV4T2Jq
ZWN0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgaW5kZXhPYmplY3QuY291
bnQiLCAiZnVuY3Rpb24iKTsKIAogICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQo
e3g6ICd2YWx1ZScsIHk6ICd6enonLCB6OiAyLjcyfSwgJ2tleScpIik7CiAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhZGREYXRhMjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2luZGV4LWNvdW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2luZGV4LWNvdW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMWI4MTdmODMwNDVl
NzM5MzFkMjE4ZjgxN2EyZjk4YmViZmNhZDU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
OTMgQEAKK1Rlc3QgSW5kZXhlZERCJ3MgSURCSW5kZXguY291bnQoKS4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK3dpbmRvdy5pbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8
IHdpbmRvdy53ZWJraXRJbmRleGVkREIKK3dpbmRvdy5JREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5J
REJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb24KK3dpbmRvdy5JREJL
ZXlSYW5nZSA9IHdpbmRvdy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2UK
K2luZGV4ZWREQi5vcGVuKCdpbmRleC1jb3VudCcpCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQK
K2RiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykKKworcHJlcGFyaW5nIGRhdGFiYXNlCit0cmFu
cyA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgdHJhbnMgIT09IG51bGwgaXMgdHJ1ZQorRGVs
ZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlTmFtZScsIG51bGwpCitzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJycpCitQQVNT
IHN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIGlzIHRydWUKK2FkZGluZyAw
IC4uLiA5OQorCit2ZXJpZnlpbmcgY291bnQgd2l0aG91dCByYW5nZQordHJhbnMgPSBkYi50cmFu
c2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorUEFTUyB0cmFu
cyAhPSBudWxsIGlzIHRydWUKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
CitQQVNTIHN0b3JlICE9IG51bGwgaXMgdHJ1ZQoraW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXhO
YW1lJykKK1BBU1MgaW5kZXggIT0gbnVsbCBpcyB0cnVlCityZXF1ZXN0ID0gaW5kZXguY291bnQo
KQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyBy
ZXF1ZXN0LnJlc3VsdCBpcyAxMDAKKwordmVyaWZ5aW5nIGNvdW50IHdpdGggcmFuZ2UKK3RyYW5z
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkK
K1BBU1MgdHJhbnMgIT0gbnVsbCBpcyB0cnVlCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKQorUEFTUyBzdG9yZSAhPSBudWxsIGlzIHRydWUKK2luZGV4ID0gdHJhbnMub2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmluZGV4KCdpbmRleE5hbWUnKQorUEFTUyBpbmRleCAhPSBu
dWxsIGlzIHRydWUKKwordGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVy
Ijo5OSwidXBwZXJPcGVuIjpmYWxzZSwiZXhwZWN0ZWQiOjEwMH0KK3JlcXVlc3QgPSBpbmRleC5j
b3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2Vy
T3BlbiwgdGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251
bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyAxMDAKKwordGVzdCA9IHsibG93
ZXIiOjAsImxvd2VyT3BlbiI6dHJ1ZSwidXBwZXIiOjk5LCJ1cHBlck9wZW4iOmZhbHNlLCJleHBl
Y3RlZCI6OTl9CityZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5s
b3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1Mg
dHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5y
ZXN1bHQgaXMgOTkKKwordGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVy
Ijo5OSwidXBwZXJPcGVuIjp0cnVlLCJleHBlY3RlZCI6OTl9CityZXF1ZXN0ID0gaW5kZXguY291
bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9w
ZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1i
ZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgOTkKKwordGVzdCA9IHsibG93ZXIi
OjAsImxvd2VyT3BlbiI6dHJ1ZSwidXBwZXIiOjk5LCJ1cHBlck9wZW4iOnRydWUsImV4cGVjdGVk
Ijo5OH0KK3JlcXVlc3QgPSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2Vy
LCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBl
b2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3Vs
dCBpcyA5OAorCit0ZXN0ID0geyJsb3dlciI6MCwibG93ZXJPcGVuIjpmYWxzZSwidXBwZXIiOjEw
MCwidXBwZXJPcGVuIjpmYWxzZSwiZXhwZWN0ZWQiOjEwMH0KK3JlcXVlc3QgPSBpbmRleC5jb3Vu
dChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3Bl
biwgdGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJl
cicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyAxMDAKKwordGVzdCA9IHsibG93ZXIi
OjAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVyIjoxMDAsInVwcGVyT3BlbiI6ZmFsc2UsImV4cGVj
dGVkIjoxMDB9CityZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5s
b3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1Mg
dHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5y
ZXN1bHQgaXMgMTAwCisKK3Rlc3QgPSB7Imxvd2VyIjoxMCwibG93ZXJPcGVuIjpmYWxzZSwidXBw
ZXIiOjEwMCwidXBwZXJPcGVuIjpmYWxzZSwiZXhwZWN0ZWQiOjkwfQorcmVxdWVzdCA9IGluZGV4
LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93
ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAn
bnVtYmVyJyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDkwCisKK3Rlc3QgPSB7Imxv
d2VyIjowLCJsb3dlck9wZW4iOmZhbHNlLCJ1cHBlciI6MCwidXBwZXJPcGVuIjpmYWxzZSwiZXhw
ZWN0ZWQiOjF9CityZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5s
b3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1Mg
dHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5y
ZXN1bHQgaXMgMQorCit0ZXN0ID0geyJsb3dlciI6MCwibG93ZXJPcGVuIjp0cnVlLCJ1cHBlciI6
MCwidXBwZXJPcGVuIjp0cnVlLCJleHBlY3RlZCI6MH0KK3JlcXVlc3QgPSBpbmRleC5jb3VudChJ
REJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3Blbiwg
dGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicg
aXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyAwCisKK3Rlc3QgPSB7Imxvd2VyIjoyMCwi
bG93ZXJPcGVuIjp0cnVlLCJ1cHBlciI6MTAsInVwcGVyT3BlbiI6dHJ1ZSwiZXhwZWN0ZWQiOjB9
CityZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVz
dC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJl
cXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMg
MAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhiNWMyODIwOTZjMzEwOWIyMGJhNTJlODk3ZTE2YTEzYzk5YjE5NDgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sCkBA
IC0wLDAgKzEsMTI1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIElEQkluZGV4LmNvdW50KCkuIik7CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZXZhbEFuZExvZygid2luZG93Lmlu
ZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiIpOwor
ICAgIGV2YWxBbmRMb2coIndpbmRvdy5JREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2Fj
dGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb24iKTsKKyAgICBldmFsQW5kTG9nKCJ3
aW5kb3cuSURCS2V5UmFuZ2UgPSB3aW5kb3cuSURCS2V5UmFuZ2UgfHwgd2luZG93LndlYmtpdElE
QktleVJhbmdlIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdp
bmRleC1jb3VudCcpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gcHJlcGFyZURhdGFiYXNlOworICAgIH07Cit9CisKK2Z1bmN0aW9uIHBy
ZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJwcmVwYXJpbmcg
ZGF0YWJhc2UiKTsKKyAgICB3aW5kb3cudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisK
KyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworCisg
ICAgd2luZG93LmluZGV4ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFt
ZScsICcnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygn
aW5kZXhOYW1lJykiKTsKKworICAgIGRlYnVnKCJhZGRpbmcgMCAuLi4gOTkiKTsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIHJlcXVlc3QgPSBzdG9yZS5hZGQo
aSwgaSk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIH0KKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnQ7Cit9CisKK2Z1bmN0
aW9uIHZlcmlmeUNvdW50KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZlcmlmeWlu
ZyBjb3VudCB3aXRob3V0IHJhbmdlIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7
CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlD
b3VudFdpdGhSYW5nZTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51
bGwiKTsKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4
TmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleCAhPSBudWxsIik7CisKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4LmNvdW50KCkiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5y
ZXN1bHQgPT0gJ251bWJlciciKTsKKyAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIs
ICIxMDAiKTsKKyAgICAgICAgIC8vIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKKyAgICB9
OworfQorCitmdW5jdGlvbiB2ZXJpZnlDb3VudFdpdGhSYW5nZSgpCit7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCByYW5nZSIpOworICAgIHRyYW5zID0g
ZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNh
Y3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwor
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gZG9uZTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9
IG51bGwiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coImluZGV4ID0gdHJhbnMub2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScpLmluZGV4KCdpbmRleE5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgi
aW5kZXggIT0gbnVsbCIpOworCisgICAgdmFyIHRlc3RzID0gWworICAgICAgICB7IGxvd2VyOiAw
LCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVk
OiAxMDAgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTks
IHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5OSB9LAorICAgICAgICB7IGxvd2VyOiAwLCBs
b3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IDk5
IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1cHBl
ck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9w
ZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0s
CisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVy
T3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAgICAgICAgeyBsb3dlcjogMTAsIGxvd2Vy
T3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5MCB9
LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMCwgdXBwZXJP
cGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVu
OiB0cnVlLCB1cHBlcjogMCwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogMCB9LAorICAgICAg
ICB7IGxvd2VyOiAyMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogMTAsIHVwcGVyT3BlbjogdHJ1
ZSwgZXhwZWN0ZWQ6IDAgfQorICAgIF07CisKKyAgICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsKKyAg
ICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0gIiArIEpTT04uc3Ry
aW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVw
cGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKSIpOworICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBzaG91bGRCZVRydWUoInR5cGVvZiBy
ZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOworICAgICAgICAgICAgIHNob3VsZEJlKCJyZXF1
ZXN0LnJlc3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7CisKKyAgICAgICAgICAgICBpZiAo
dGVzdHMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7CisgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBs
ZXRlCisgICAgICAgIH07CisgICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30KKwordGVzdCgpOwor
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGU1MDMxMDI4NDYyZGU1MjU2OWNhZjdjYzBmMWFkMjFjZjllN2YxZTQuLjExYTkwYjBlNmRk
ZjEyNmRjMjQzZWNiNzY4ZDRjYTM4Mzg1OTNlNmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4
dApAQCAtMTQsNiArMTQsMzAgQEAgRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KIGNyZWF0ZU9i
amVjdFN0b3JlKCk6CiBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBu
dWxsKQogc3RvcmVOYW1lcyA9IGRiLm9iamVjdFN0b3JlTmFtZXMKK1BBU1MgJ25hbWUnIGluIHN0
b3JlIGlzIHRydWUKK1BBU1MgJ2tleVBhdGgnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgJ2luZGV4
TmFtZXMnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgJ3RyYW5zYWN0aW9uJyBpbiBzdG9yZSBpcyB0
cnVlCitQQVNTICdwdXQnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgdHlwZW9mIHN0b3JlLnB1dCBp
cyAiZnVuY3Rpb24iCitQQVNTICdhZGQnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgdHlwZW9mIHN0
b3JlLmFkZCBpcyAiZnVuY3Rpb24iCitQQVNTICdkZWxldGUnIGluIHN0b3JlIGlzIHRydWUKK1BB
U1MgdHlwZW9mIHN0b3JlLmRlbGV0ZSBpcyAiZnVuY3Rpb24iCitQQVNTICdnZXQnIGluIHN0b3Jl
IGlzIHRydWUKK1BBU1MgdHlwZW9mIHN0b3JlLmdldCBpcyAiZnVuY3Rpb24iCitQQVNTICdjbGVh
cicgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyB0eXBlb2Ygc3RvcmUuY2xlYXIgaXMgImZ1bmN0aW9u
IgorUEFTUyAnb3BlbkN1cnNvcicgaW4gc3RvcmUgaXMgdHJ1ZQorUEFTUyB0eXBlb2Ygc3RvcmUu
b3BlbkN1cnNvciBpcyAiZnVuY3Rpb24iCitQQVNTICdjcmVhdGVJbmRleCcgaW4gc3RvcmUgaXMg
dHJ1ZQorUEFTUyB0eXBlb2Ygc3RvcmUuY3JlYXRlSW5kZXggaXMgImZ1bmN0aW9uIgorUEFTUyAn
aW5kZXgnIGluIHN0b3JlIGlzIHRydWUKK1BBU1MgdHlwZW9mIHN0b3JlLmluZGV4IGlzICJmdW5j
dGlvbiIKK1BBU1MgJ2RlbGV0ZUluZGV4JyBpbiBzdG9yZSBpcyB0cnVlCitQQVNTIHR5cGVvZiBz
dG9yZS5kZWxldGVJbmRleCBpcyAiZnVuY3Rpb24iCitQQVNTICdjb3VudCcgaW4gc3RvcmUgaXMg
dHJ1ZQorUEFTUyB0eXBlb2Ygc3RvcmUuY291bnQgaXMgImZ1bmN0aW9uIgogUEFTUyBzdG9yZS5u
YW1lIGlzICJzdG9yZU5hbWUiCiBQQVNTIHN0b3JlLmtleVBhdGggaXMgbnVsbAogUEFTUyBzdG9y
ZU5hbWVzLmNvbnRhaW5zKCdzdG9yZU5hbWUnKSBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCmluZGV4IDc2Mzgw
ZmZlYzdiMTZkNDMxMmZkMTkxMmU4MzEwY2ZhMDQ0OTM1ZDcuLjIzMmFhODMzYzIxMTk4ZDRiNGFl
NzJmYmUwZTk2ZjI2YzI5OTk0YTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCkBAIC00Miw2ICs0MiwzMSBAQCBmdW5j
dGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCiAgICAgd2luZG93LnN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKICAgICB2
YXIgc3RvcmVOYW1lcyA9IGV2YWxBbmRMb2coInN0b3JlTmFtZXMgPSBkYi5vYmplY3RTdG9yZU5h
bWVzIik7CiAKKyAgICBzaG91bGRCZVRydWUoIiduYW1lJyBpbiBzdG9yZSIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiJ2tleVBhdGgnIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVUcnVlKCInaW5kZXhO
YW1lcycgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZVRydWUoIid0cmFuc2FjdGlvbicgaW4gc3Rv
cmUiKTsKKyAgICBzaG91bGRCZVRydWUoIidwdXQnIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUucHV0IiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxk
QmVUcnVlKCInYWRkJyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlw
ZW9mIHN0b3JlLmFkZCIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2RlbGV0ZScg
aW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5kZWxl
dGUiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidnZXQnIGluIHN0b3JlIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuZ2V0IiwgImZ1bmN0aW9uIik7
CisgICAgc2hvdWxkQmVUcnVlKCInY2xlYXInIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUuY2xlYXIiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRC
ZVRydWUoIidvcGVuQ3Vyc29yJyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygidHlwZW9mIHN0b3JlLm9wZW5DdXJzb3IiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRy
dWUoIidjcmVhdGVJbmRleCcgaW4gc3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InR5cGVvZiBzdG9yZS5jcmVhdGVJbmRleCIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlVHJ1
ZSgiJ2luZGV4JyBpbiBzdG9yZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9m
IHN0b3JlLmluZGV4IiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCInZGVsZXRlSW5k
ZXgnIGluIHN0b3JlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2Ygc3RvcmUu
ZGVsZXRlSW5kZXgiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIidjb3VudCcgaW4g
c3RvcmUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiBzdG9yZS5jb3VudCIs
ICJmdW5jdGlvbiIpOworCiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZS5uYW1lIiwg
InN0b3JlTmFtZSIpOwogICAgIHNob3VsZEJlTnVsbCgic3RvcmUua2V5UGF0aCIpOwogICAgIHNo
b3VsZEJlKCJzdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZU5hbWUnKSIsICJ0cnVlIik7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1j
b3VudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ4MWUzYTgxZWRhNWViYWNmY2Q4MWFiOGMz
NTUwYTQzMjQ4NWZhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL29iamVjdHN0b3JlLWNvdW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDg3IEBACitU
ZXN0IEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlLmNvdW50KCkuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCit3aW5kb3cuaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3
aW5kb3cud2Via2l0SW5kZXhlZERCCit3aW5kb3cuSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURC
VHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uCit3aW5kb3cuSURCS2V5
UmFuZ2UgPSB3aW5kb3cuSURCS2V5UmFuZ2UgfHwgd2luZG93LndlYmtpdElEQktleVJhbmdlCitp
bmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtY291bnQnKQorZGIgPSBldmVudC50YXJnZXQucmVz
dWx0CitkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpCisKK3ByZXBhcmluZyBkYXRhYmFzZQor
dHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIHRyYW5zICE9PSBudWxsIGlzIHRydWUK
K0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnLCBudWxsKQorYWRkaW5nIDAgLi4uIDk5CisKK3ZlcmlmeWluZyBjb3VudCB3
aXRob3V0IHJhbmdlCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFu
c2FjdGlvbi5SRUFEX09OTFkpCitQQVNTIHRyYW5zICE9IG51bGwgaXMgdHJ1ZQorc3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKK1BBU1Mgc3RvcmUgIT0gbnVsbCBpcyB0cnVl
CityZXF1ZXN0ID0gc3RvcmUuY291bnQoKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0g
J251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyAxMDAKKwordmVyaWZ5aW5n
IGNvdW50IHdpdGggcmFuZ2UKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElE
QlRyYW5zYWN0aW9uLlJFQURfT05MWSkKK1BBU1MgdHJhbnMgIT0gbnVsbCBpcyB0cnVlCitzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorUEFTUyBzdG9yZSAhPSBudWxsIGlz
IHRydWUKKwordGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVyIjo5OSwi
dXBwZXJPcGVuIjpmYWxzZSwiZXhwZWN0ZWQiOjEwMH0KK3JlcXVlc3QgPSBzdG9yZS5jb3VudChJ
REJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3Blbiwg
dGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicg
aXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyAxMDAKKwordGVzdCA9IHsibG93ZXIiOjAs
Imxvd2VyT3BlbiI6dHJ1ZSwidXBwZXIiOjk5LCJ1cHBlck9wZW4iOmZhbHNlLCJleHBlY3RlZCI6
OTl9CityZXF1ZXN0ID0gc3RvcmUuY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwg
dGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9m
IHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQg
aXMgOTkKKwordGVzdCA9IHsibG93ZXIiOjAsImxvd2VyT3BlbiI6ZmFsc2UsInVwcGVyIjo5OSwi
dXBwZXJPcGVuIjp0cnVlLCJleHBlY3RlZCI6OTl9CityZXF1ZXN0ID0gc3RvcmUuY291bnQoSURC
S2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRl
c3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlz
IHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgOTkKKwordGVzdCA9IHsibG93ZXIiOjAsImxv
d2VyT3BlbiI6dHJ1ZSwidXBwZXIiOjk5LCJ1cHBlck9wZW4iOnRydWUsImV4cGVjdGVkIjo5OH0K
K3JlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0
LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVx
dWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyA5
OAorCit0ZXN0ID0geyJsb3dlciI6MCwibG93ZXJPcGVuIjpmYWxzZSwidXBwZXIiOjEwMCwidXBw
ZXJPcGVuIjpmYWxzZSwiZXhwZWN0ZWQiOjEwMH0KK3JlcXVlc3QgPSBzdG9yZS5jb3VudChJREJL
ZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVz
dC51cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMg
dHJ1ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyAxMDAKKwordGVzdCA9IHsibG93ZXIiOjAsImxv
d2VyT3BlbiI6ZmFsc2UsInVwcGVyIjoxMDAsInVwcGVyT3BlbiI6ZmFsc2UsImV4cGVjdGVkIjox
MDB9CityZXF1ZXN0ID0gc3RvcmUuY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwg
dGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9m
IHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQg
aXMgMTAwCisKK3Rlc3QgPSB7Imxvd2VyIjoxMCwibG93ZXJPcGVuIjpmYWxzZSwidXBwZXIiOjEw
MCwidXBwZXJPcGVuIjpmYWxzZSwiZXhwZWN0ZWQiOjkwfQorcmVxdWVzdCA9IHN0b3JlLmNvdW50
KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVu
LCB0ZXN0LnVwcGVyT3BlbikpCitQQVNTIHR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVy
JyBpcyB0cnVlCitQQVNTIHJlcXVlc3QucmVzdWx0IGlzIDkwCisKK3Rlc3QgPSB7Imxvd2VyIjow
LCJsb3dlck9wZW4iOmZhbHNlLCJ1cHBlciI6MCwidXBwZXJPcGVuIjpmYWxzZSwiZXhwZWN0ZWQi
OjF9CityZXF1ZXN0ID0gc3RvcmUuY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwg
dGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9m
IHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQg
aXMgMQorCit0ZXN0ID0geyJsb3dlciI6MCwibG93ZXJPcGVuIjp0cnVlLCJ1cHBlciI6MCwidXBw
ZXJPcGVuIjp0cnVlLCJleHBlY3RlZCI6MH0KK3JlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlS
YW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51
cHBlck9wZW4pKQorUEFTUyB0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcicgaXMgdHJ1
ZQorUEFTUyByZXF1ZXN0LnJlc3VsdCBpcyAwCisKK3Rlc3QgPSB7Imxvd2VyIjoyMCwibG93ZXJP
cGVuIjp0cnVlLCJ1cHBlciI6MTAsInVwcGVyT3BlbiI6dHJ1ZSwiZXhwZWN0ZWQiOjB9CityZXF1
ZXN0ID0gc3RvcmUuY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBl
ciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkKK1BBU1MgdHlwZW9mIHJlcXVlc3Qu
cmVzdWx0ID09ICdudW1iZXInIGlzIHRydWUKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMgMAorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjViZWYwN2ZiZjBiYWU3NDRmNWY1ZDNlYTNkNDM2ODZmZDE2YzJhNjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1j
b3VudC5odG1sCkBAIC0wLDAgKzEsMTE4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlLmNvdW50
KCkuIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZXZh
bEFuZExvZygid2luZG93LmluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93Lndl
YmtpdEluZGV4ZWREQiIpOworICAgIGV2YWxBbmRMb2coIndpbmRvdy5JREJUcmFuc2FjdGlvbiA9
IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb24iKTsK
KyAgICBldmFsQW5kTG9nKCJ3aW5kb3cuSURCS2V5UmFuZ2UgPSB3aW5kb3cuSURCS2V5UmFuZ2Ug
fHwgd2luZG93LndlYmtpdElEQktleVJhbmdlIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKCdvYmplY3RzdG9yZS1jb3VudCcpIik7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25l
dyB2ZXJzaW9uJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHJlcGFyZURhdGFiYXNlOwor
ICAgIH07Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJwcmVwYXJpbmcgZGF0YWJhc2UiKTsKKyAgICB3aW5kb3cudHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRy
dWUoInRyYW5zICE9PSBudWxsIik7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwor
CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnLCBudWxsKSIpOworCisgICAgZGVidWcoImFkZGluZyAwIC4uLiA5OSIpOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgcmVxdWVzdCA9IHN0b3Jl
LmFkZChpLCBpKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgfQorICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudDsKK30KKwor
ZnVuY3Rpb24gdmVyaWZ5Q291bnQoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidmVy
aWZ5aW5nIGNvdW50IHdpdGhvdXQgcmFuZ2UiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05M
WSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHZl
cmlmeUNvdW50V2l0aFJhbmdlOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUg
IT0gbnVsbCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5j
b3VudCgpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgIHNob3VsZEJl
VHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7CisgICAgICAgICBzaG91
bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAiMTAwIik7CisgICAgICAgICAvLyBsZXQgdGhlIHRyYW5z
YWN0aW9uIGNvbXBsZXRlCisgICAgfTsKK30KKworZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoUmFu
Z2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGgg
cmFuZ2UiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24o
J3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRCZVRy
dWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGRvbmU7CisKKyAgICBzdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAg
c2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7CisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAg
ICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiBm
YWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IHRy
dWUsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDk5IH0sCisgICAgICAg
IHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVl
LCBleHBlY3RlZDogOTkgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1
cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IDk4IH0sCisgICAgICAgIHsgbG93
ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4
cGVjdGVkOiAxMDAgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBw
ZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAgICAgICB7IGxv
d2VyOiAxMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwg
ZXhwZWN0ZWQ6IDkwIH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVw
cGVyOiAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMSB9LAorICAgICAgICB7IGxvd2Vy
OiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiAwLCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVk
OiAwIH0sCisgICAgICAgIHsgbG93ZXI6IDIwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiAxMCwg
dXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogMCB9CisgICAgXTsKKworICAgIGZ1bmN0aW9uIG5l
eHRUZXN0KCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGV2YWxBbmRMb2coInRlc3Qg
PSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMuc2hpZnQoKSkpOworICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3Qu
bG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpIik7Cisg
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIHNob3VsZEJl
VHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7CisgICAgICAgICAgICAg
c2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgU3RyaW5nKHRlc3QuZXhwZWN0ZWQpKTsKKworICAg
ICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgbmV4dFRlc3Qo
KTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGxldCB0aGUgdHJh
bnNhY3Rpb24gY29tcGxldGUKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBuZXh0VGVzdCgpOwor
fQorCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>