<?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>89379</bug_id>
          
          <creation_ts>2012-06-18 14:09:43 -0700</creation_ts>
          <short_desc>IndexedDB: Implement IDBTransaction internal active flag</short_desc>
          <delta_ts>2012-06-28 17:38:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>90089</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>jsbell</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>651710</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-18 14:09:43 -0700</bug_when>
    <thetext>The IDB spec http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html says:

Transaction lifecycle:
&quot;Transactions have an active flag, which determines if new requests can be made against the transaction.&quot;
&quot;When a transaction is created its active flag is initially set to true.&quot; - i.e. right after the db.transaction() call
&quot;The implementation must allow requests to be placed against the transaction whenever the active flag is true.&quot;
&quot;Requests may be placed against a transaction only while that transaction is active. If an attempt is made to place a request against a transaction when that transaction is not active, the implementation must reject the attempt by throwing a DOMException of type TransactionInactiveError.&quot;

Version changes:
&quot;This transaction will be active inside the onupgradeneeded event handler, allowing the creation of new object stores and indexes.&quot;

Abort:
&quot;Otherwise this method sets the transaction&apos;s active flag to false...&quot;

Transaction creation:
&quot;When control is returned to the event loop, the implementation must set the active flag to false.&quot;

Firing events:
...
&quot;Set the active flag of transaction to true.&quot;
...
&quot;Set the active flag of transaction to false.&quot;
...

Right now we don&apos;t have a notion of non-active transaction - until it is |finished| we allow requests to be placed against it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651731</commentid>
    <comment_count>1</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-18 14:30:15 -0700</bug_when>
    <thetext>A plausible test for this looks like:

trans = db.transaction(&apos;store&apos;);
trans.oncomplete = finishJSTest;
var done = false;

function doRequest() {
  if (done)
    return;
  trans.objectStore(&apos;store&apos;).get(&apos;key&apos;).onsuccess = doRequest;
};

setTimeout(function () {
    evalAndExpectException(&quot;trans.objectStore(&apos;store&apos;).get(&apos;key&apos;)&quot;, &quot;IDBDatabaseException.TRANSACTION_INACTIVE_ERR&quot;, &quot;&apos;TransactionInactiveError&apos;&quot;);
    done = true;
}, 0);

In other words, show</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651804</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-18 15:27:14 -0700</bug_when>
    <thetext>Looks like I&apos;ll have to do this as part of webkit.org/b/89377</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652531</commentid>
    <comment_count>3</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-19 09:38:40 -0700</bug_when>
    <thetext>Also, don&apos;t abort empty transactions - commit them instead. (May require plumbing for Chromium port.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658156</commentid>
    <comment_count>4</comment_count>
      <attachid>149646</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-26 17:40:55 -0700</bug_when>
    <thetext>Created attachment 149646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658165</commentid>
    <comment_count>5</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-26 17:43:57 -0700</bug_when>
    <thetext>alecflett@ - please take a look

Landing sequence will be:
(1) Trivial patch with WebKit::WebIDBTransaction::commit() 
(2) Chromium patch for plumbing through commit() and disabling some layout-tests-as-browser-tests that are getting renamed
(3) This patch
(4) Re-enable the layout-tests-as-browser-tests

Forgot to mention in the ChangeLog, but the transaction-complete-XXX tests are renames of the transaction-abort-XXX tests, now that empty transactions commit rather than abort.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658756</commentid>
    <comment_count>6</comment_count>
      <attachid>149646</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-27 11:56:02 -0700</bug_when>
    <thetext>Comment on attachment 149646
Patch

This all looks quite reasonable, I wish I had more to add but it seems fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658758</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-27 11:57:49 -0700</bug_when>
    <thetext>Chromium WebKit public API addition is at:

http://webkit.org/b/90089</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658809</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-27 13:09:10 -0700</bug_when>
    <thetext>tony@ - can you take a look at your leisure? Various other things need to land before this can be submitted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658856</commentid>
    <comment_count>9</comment_count>
      <attachid>149646</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-06-27 14:05:35 -0700</bug_when>
    <thetext>Comment on attachment 149646
Patch

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

I don&apos;t understand all these changes, but it seems OK.

&gt; Source/WebCore/Modules/indexeddb/IDBPendingTransactionMonitor.cpp:37
&gt; +static ThreadSpecific&lt;Vector&lt;RefPtr&lt;IDBTransaction&gt; &gt; &gt;&amp; transactions()

Nit: Maybe use a typedef for Vector&lt;RefPtr&lt;IDBTransaction&gt; &gt; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658877</commentid>
    <comment_count>10</comment_count>
      <attachid>149795</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-27 14:29:39 -0700</bug_when>
    <thetext>Created attachment 149795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658880</commentid>
    <comment_count>11</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-27 14:31:44 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; 
&gt; Nit: Maybe use a typedef for Vector&lt;RefPtr&lt;IDBTransaction&gt; &gt; ?

Good idea - done.

New patch just adds this and rebases on http://trac.webkit.org/changeset/121366

Waiting on that to roll into Chromium and landing http://codereview.chromium.org/10692017/ before this can land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659823</commentid>
    <comment_count>12</comment_count>
      <attachid>150014</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-28 14:22:11 -0700</bug_when>
    <thetext>Created attachment 150014
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659978</commentid>
    <comment_count>13</comment_count>
      <attachid>150014</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 17:38:25 -0700</bug_when>
    <thetext>Comment on attachment 150014
Patch for landing

Clearing flags on attachment: 150014

Committed r121492: &lt;http://trac.webkit.org/changeset/121492&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659979</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 17:38:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149646</attachid>
            <date>2012-06-26 17:40:55 -0700</date>
            <delta_ts>2012-06-27 14:29:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89379-20120626174055.patch</filename>
            <type>text/plain</type>
            <size>88330</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk3ZjZhMjE2NjU2NDFj
NTBjNmJmZTIyMzFlYjFlY2JjY2ZlZDgxOS4uNDIwNWZmZjczMTUwZTM3ZDY4M2YxODdiZjNhY2Q2
NWJiMmFhNmE5NyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc3IEBACiAyMDEyLTA2LTI2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgSW5kZXhlZERCOiBJbXBs
ZW1lbnQgSURCVHJhbnNhY3Rpb24gaW50ZXJuYWwgYWN0aXZlIGZsYWcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5Mzc5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSURCIHRyYW5zYWN0aW9ucyBzaG91bGQg
b25seSAiYWN0aXZlIiBkdXJpbmcgSURCIHN1Y2Nlc3MvZXJyb3IgY2FsbGJhY2tzOworICAgICAg
ICBhdHRlbXB0cyB0byBtYWtlIG5ldyByZXF1ZXN0cyBvdGhlcndpc2UgKGUuZy4gaW4gYSBzZXRU
aW1lb3V0IGNhbGxiYWNrKQorICAgICAgICBzaG91bGQgZmFpbCBldmVuIGlmIHRoZSB0cmFuc2Fj
dGlvbiBoYXMgbm90IHlldCBmaW5pc2hlZC4gSW1wbGVtZW50IHRoaXMgbG9naWMsCisgICAgICAg
IGFuZCB0aGUgY2xvc2VseSByZWxhdGVkIHJlcXVpcmVtZW50IHRoYXQgdHJhbnNhY3Rpb25zIGFy
ZSBkZWFjdGl2YXRlZCB3aGVuCisgICAgICAgIHRoZSBjb250ZXh0IHRoZXkgd2VyZSBjcmVhdGVk
IGluIHJldHVybnMgdG8gdGhlIGV2ZW50IGxvb3AsIGFuZCBmaW5hbGx5IHRoYXQKKyAgICAgICAg
d2hlbiBzbyBkZWFjdGl2YXRlZCB0aGV5IHNob3VsZCBjb21taXQgcmF0aGVyIHRoYW4gYWJvcnQg
KGFzIHByZXZpb3VzbHkKKyAgICAgICAgaW1wbGVtZW50ZWQuKQorCisgICAgICAgIFRlc3RzOiBz
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hY3RpdmUtZmxhZy5odG1sCisgICAgICAgICAg
ICAgICBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vy
c2lvbi1jcm9zcy1mcmFtZS5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi5odG1sCisgICAgICAgICAgICAg
ICBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13b3JrZXJzLmh0bWwKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3Iu
Y3BwOiBTaW1wbGlmeSBBUEkuCisgICAgICAgIChXZWJDb3JlOjp0cmFuc2FjdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6YWRkTmV3VHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6
ZGVhY3RpdmF0ZU5ld1RyYW5zYWN0aW9ucyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDogVW5yZWdpc3RlcnMgZnJvbSB0cmFuc2FjdGlvbiB3aGVu
IGRvbmUsCisgICAgICAgIG5vdCBvbiBkZXN0cnVjdGlvbi4gTm8gbG9uZ2VyIHJlc3BvbnNpYmxl
IGZvciB3b3JraW5nIHdpdGggdGhlIHBlbmRpbmcgbW9uaXRvci4KKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlcXVlc3Q6OklEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6
fklEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6bWFya0Vhcmx5RGVh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cmVzZXRSZWFkeVN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KTogU2V0IGFjdGl2ZSBmbGFnIG9uIHRyYW5zYWN0
aW9uIGR1cmluZyBjYWxsYmFjay4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHA6IFVzZSBzdGF0ZSBlbnVtIHRvIGJldHRlciB0cmFjayBsaWZlY3ljbGUsIGFu
ZAorICAgICAgICB0YWtlIG93bmVyc2hpcCBvZiByZWxhdGlvbnNoaXAgd2l0aCBwZW5kaW5nIG1v
bml0b3IuCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24p
OiBTcGVjaWFsIGNhc2VzIGZvciB2ZXJzaW9uIGNoYW5nZQorICAgICAgICB0cmFuc2FjdGlvbnMu
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6fklEQlRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjplcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6c2V0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpv
YmplY3RTdG9yZUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9i
amVjdFN0b3JlRGVsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c2V0
QWN0aXZlKTogTGV0IElEQlJlcXVlc3QgYW5kIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IK
KyAgICAgICAgdG9nZ2xlIHRoZSBhY3RpdmUgc3RhdGUuIE5lZWRzIHNvbWUgc21hcnRzIGJlY2F1
c2UgKDEpIHN0YXRlIG1heSBtb3ZlIHRvIEZpbmlzaGluZyBkdXJpbmcKKyAgICAgICAgdGhlIHJl
cXVlc3QncyBkaXNwYXRjaCBwaGFzZSBkdWUgdG8gYW4gaW1wbGljaXQvZXhwbGljaXQgYWJvcnQs
IGFuZCAoMikgYSBtb25pdG9yIGNhbGwKKyAgICAgICAgd2lsbCBvbmx5IHRyaWdnZXIgYSBjb21t
aXQgaWYgdGhlIHRyYW5zYWN0aW9uIGhhc24ndCBoYWQgYW55IHJlcXVlc3RzIGZpbGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6YWJvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlZ2lzdGVyUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6dW5yZWdpc3RlclJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9uQWJvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246Om9uQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6Y2FuU3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZW5xdWV1
ZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmlzRmluaXNoZWQpOgorICAgICAgICAo
SURCVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbDo6Y29tbWl0KTogQWxsb3cgZXhwbGljaXQgY29tbWl0KCkgY2FsbHMgZnJvbSB0aGUg
ZnJvbnQgZW5kCisgICAgICAgIGlmIG5vIHJlcXVlc3RzIGhhdmUgYmVlbiBmaWxlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaDoK
KyAgICAgICAgKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSk6IEV4cG9zZSBjb21taXQo
KSBtZXRob2QuCisgICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6ZGlkTGVhdmVTY3Jp
cHRDb250ZXh0KTogQ2hhbmdlIHRhcmdldCBmdW5jdGlvbiBuYW1lLgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhSZWN1cnNp
b25TY29wZTo6ZGlkTGVhdmVTY3JpcHRDb250ZXh0KTogQ2hhbmdlIHRhcmdldCBmdW5jdGlvbiBu
YW1lLgorCisyMDEyLTA2LTI2ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisK
ICAgICAgICAgSW5kZXhlZERCOiBNb3ZlIG1ldGhvZCBwcmVjb25kaXRpb24gY2hlY2tzIHRvIGZy
b250IGVuZCBvYmplY3RzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04OTM3NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDc2YTBjYWNhMWQ0
NTRmZTI5YzE4MTU0N2UzNTZlNDIwNjMyYmU2ZjEuLjllYjdhZjdlMjcxMDI3ZDQwNThiMGFhNzIw
YjU5ZmM2ZWY2OGRhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTItMDYtMjYgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBJbmRleGVkREI6IEltcGxlbWVudCBJREJUcmFuc2FjdGlvbiBpbnRlcm5hbCBhY3RpdmUg
ZmxhZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkz
NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBt
YXRjaCB0aGUgSURCIHNwZWMsIHRyYW5zYWN0aW9ucyB0aGF0IGhhdmUgaGFkIG5vIHJlcXVlc3Rz
CisgICAgICAgIGZpbGVkIGFnYWluc3QgdGhlbSBzaG91bGQgY29tbWl0LCBub3QgYWJvcnQuIFRo
aXMgcmVxdWlyZXMgcGx1bWJpbmcKKyAgICAgICAgdGhyb3VnaCB0aGUgY29tbWl0KCkgY2FsbCBm
cm9tIGZyb250LWVuZCB0byBiYWNrLWVuZC4KKworICAgICAgICAqIHB1YmxpYy9XZWJJREJUcmFu
c2FjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbjo6Y29tbWl0KToK
KyAgICAgICAgKiBzcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6Y29tbWl0KToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgICogc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Lmg6CisgICAg
ICAgIChJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL1dlYklEQlRy
YW5zYWN0aW9uSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uSW1w
bDo6Y29tbWl0KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYklEQlRyYW5z
YWN0aW9uSW1wbC5oOgorCiAyMDEyLTA2LTI2ICBEYXZlIFR1ICA8ZHR1QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSByZW5kZXJpbmcgc3RhdGlzdGljcyB0byBXZWJX
aWRnZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJQ
ZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuY3BwCmluZGV4IDJjNWFjNWEyYjNh
ZGE5MTM4ZDJmYjQ1YjVlMzBjZWZjNTUwODFmNWYuLjBlZTUwZTE3OGUyYmM3YzhiZmEzOWVhZWYy
MjBiMzEyMGYxMDllNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuY3BwCkBAIC0y
NSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJREJQZW5kaW5n
VHJhbnNhY3Rpb25Nb25pdG9yLmgiCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU3BlY2lmaWMuaD4KIAogdXNpbmcgV1RGOjpUaHJlYWRTcGVjaWZpYzsKQEAgLTM0LDM0ICsz
NCwyNiBAQCB1c2luZyBXVEY6OlRocmVhZFNwZWNpZmljOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBUaHJlYWRTcGVjaWZpYzxWZWN0b3I8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKj4gPiYgdHJhbnNhY3Rpb25zKCkKK3N0YXRpYyBUaHJlYWRTcGVjaWZpYzxWZWN0b3I8
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiA+ID4mIHRyYW5zYWN0aW9ucygpCiB7CiAgICAgLy8gRklY
TUU6IE1vdmUgdGhlIFZlY3RvciB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRvIGF2b2lkIGRl
YWxpbmcgd2l0aAogICAgIC8vIHRocmVhZC1sb2NhbCBzdG9yYWdlLgotICAgIEF0b21pY2FsbHlJ
bml0aWFsaXplZFN0YXRpYyhUaHJlYWRTcGVjaWZpYzxWZWN0b3I8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKj4gPiosIHRyYW5zYWN0aW9ucyA9IG5ldyBUaHJlYWRTcGVjaWZpYzxWZWN0
b3I8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKj4gPik7CisgICAgQXRvbWljYWxseUlu
aXRpYWxpemVkU3RhdGljKFRocmVhZFNwZWNpZmljPFZlY3RvcjxSZWZQdHI8SURCVHJhbnNhY3Rp
b24+ID4gPiosIHRyYW5zYWN0aW9ucyA9IG5ldyBUaHJlYWRTcGVjaWZpYzxWZWN0b3I8UmVmUHRy
PElEQlRyYW5zYWN0aW9uPiA+ID4pOwogICAgIHJldHVybiAqdHJhbnNhY3Rpb25zOwogfQogCi12
b2lkIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OmFkZFBlbmRpbmdUcmFuc2FjdGlvbihJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQordm9pZCBJREJQZW5k
aW5nVHJhbnNhY3Rpb25Nb25pdG9yOjphZGROZXdUcmFuc2FjdGlvbihQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uPiB0cmFuc2FjdGlvbikKIHsKICAgICB0cmFuc2FjdGlvbnMoKS0+YXBwZW5kKHRy
YW5zYWN0aW9uKTsKIH0KIAotdm9pZCBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yOjpyZW1v
dmVQZW5kaW5nVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFu
c2FjdGlvbikKK3ZvaWQgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6ZGVhY3RpdmF0ZU5l
d1RyYW5zYWN0aW9ucygpCiB7Ci0gICAgVGhyZWFkU3BlY2lmaWM8VmVjdG9yPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSo+ID4mIHRyYW5zYWN0aW9uTGlzdCA9IHRyYW5zYWN0aW9ucygp
OwotICAgIHNpemVfdCBwb3MgPSB0cmFuc2FjdGlvbkxpc3QtPmZpbmQodHJhbnNhY3Rpb24pOwot
ICAgIGlmIChwb3MgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHRyYW5zYWN0
aW9uTGlzdC0+cmVtb3ZlKHBvcyk7Ci19Ci0KLXZvaWQgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9u
aXRvcjo6YWJvcnRQZW5kaW5nVHJhbnNhY3Rpb25zKCkKLXsKLSAgICBUaHJlYWRTcGVjaWZpYzxW
ZWN0b3I8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKj4gPiYgdHJhbnNhY3Rpb25MaXN0
ID0gdHJhbnNhY3Rpb25zKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2FjdGlv
bnMoKS0+c2l6ZSgpOyArK2kpCi0gICAgICAgIHRyYW5zYWN0aW9uTGlzdC0+YXQoaSktPmFib3J0
KCk7CisgICAgVGhyZWFkU3BlY2lmaWM8VmVjdG9yPFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gPiA+
JiB0cmFuc2FjdGlvbkxpc3QgPSB0cmFuc2FjdGlvbnMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHRyYW5zYWN0aW9uTGlzdC0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uTGlzdC0+YXQoaSk7CisgICAg
ICAgIHRyYW5zYWN0aW9uLT5zZXRBY3RpdmUoZmFsc2UpOworICAgIH0KICAgICAvLyBGSVhNRTog
RXhlcmNpc2UgdGhpcyBjYWxsIHRvIGNsZWFyKCkgaW4gYSBsYXlvdXQgdGVzdC4KICAgICB0cmFu
c2FjdGlvbkxpc3QtPmNsZWFyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgKaW5k
ZXggMTI4YjU1MTMzNGJkMzg5Yzg4YTUwYzA5ZGVkMzIyYzE0ZmE4M2NmZS4uZmVmNTVmZTNjMmY1
MzIwZDlhYWUwN2M4Mjg3ODQxYjQzMmY1MGIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0
b3IuaApAQCAtMzMsMjAgKzMzLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOworY2xhc3MgSURCVHJhbnNhY3Rpb247CiAK
IC8vIFRoaXMgY2xhc3Mga2VlcHMgdHJhY2sgb2YgdGhlIHRyYW5zYWN0aW9ucyBjcmVhdGVkIGR1
cmluZyB0aGUgY3VycmVudAotLy8gSmF2YXNjcmlwdCBleGVjdXRpb24gY29udGV4dC4gQSB0cmFu
c2FjdGlvbiBpcyAncGVuZGluZycgaWYgbm8gYXN5bmNocm9ub3VzCi0vLyBvcGVyYXRpb24gaXMg
Y3VycmVudGx5IHF1ZXVlZCBmb3IgaXQgKGUuZy4gYW4gSURCT2JqZWN0U3RvcmU6OnB1dCgpIG9y
IHNpbWlsYXIpLgotLy8gQWxsIHBlbmRpbmcgdHJhbnNhY3Rpb25zIGFyZSBhYm9ydGVkIGFzIHNv
b24gYXMgZXhlY3V0aW9uIHJldHVybnMgZnJvbQotLy8gdGhlIHNjcmlwdCBlbmdpbmUuCisvLyBK
YXZhc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LiBUcmFuc2FjdGlvbnMgaGF2ZSBhbiBpbnRlcm5h
bCB8YWN0aXZlfCBmbGFnCisvLyB3aGljaCBpcyBzZXQgdG8gdHJ1ZSBvbiBjcmVhdGlvbiwgYnV0
IG11c3QgYmUgc2V0IHRvIGZhbHNlIHdoZW4gY29udHJvbAorLy8gcmV0dXJucyB0byB0aGUgZXZl
bnQgbG9vcC4KIAogY2xhc3MgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcik7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIHZvaWQgYWRkUGVuZGluZ1RyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSopOwotICAgIHN0YXRpYyB2b2lkIHJlbW92ZVBlbmRpbmdUcmFuc2FjdGlv
bihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKLSAgICBzdGF0aWMgdm9pZCBhYm9y
dFBlbmRpbmdUcmFuc2FjdGlvbnMoKTsKKyAgICBzdGF0aWMgdm9pZCBhZGROZXdUcmFuc2FjdGlv
bihQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPik7CisgICAgc3RhdGljIHZvaWQgZGVhY3RpdmF0
ZU5ld1RyYW5zYWN0aW9ucygpOwogCiBwcml2YXRlOgogICAgIElEQlBlbmRpbmdUcmFuc2FjdGlv
bk1vbml0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5jcHAKaW5kZXggNzY2MjE1YmI5YzAwNWRhZTlhM2IwMTdmNWJlOTdiNzJiOTMyZGExNC4u
N2I5NWEyODIwM2NkZTQ0MGU5OTcwNDkyOTM3OGY1ZDQ1YWMwY2I0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTM4LDcgKzM4LDYg
QEAKICNpbmNsdWRlICJJREJDdXJzb3JXaXRoVmFsdWUuaCIKICNpbmNsdWRlICJJREJEYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIklEQkV2ZW50RGlzcGF0Y2hlci5oIgotI2luY2x1ZGUgIklEQlBlbmRp
bmdUcmFuc2FjdGlvbk1vbml0b3IuaCIKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb24uaCIKIApAQCAtNjUsMTUgKzY0LDEyIEBAIElEQlJlcXVlc3Q6OklE
QlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJB
bnk+IHNvdXJjCiB7CiAgICAgaWYgKG1fdHJhbnNhY3Rpb24pIHsKICAgICAgICAgbV90cmFuc2Fj
dGlvbi0+cmVnaXN0ZXJSZXF1ZXN0KHRoaXMpOwotICAgICAgICBJREJQZW5kaW5nVHJhbnNhY3Rp
b25Nb25pdG9yOjpyZW1vdmVQZW5kaW5nVHJhbnNhY3Rpb24obV90cmFuc2FjdGlvbi0+YmFja2Vu
ZCgpKTsKICAgICB9CiB9CiAKIElEQlJlcXVlc3Q6On5JREJSZXF1ZXN0KCkKIHsKICAgICBBU1NF
UlQobV9yZWFkeVN0YXRlID09IERPTkUgfHwgbV9yZWFkeVN0YXRlID09IEVhcmx5RGVhdGggfHwg
IXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgaWYgKG1fdHJhbnNhY3Rpb24pCi0gICAg
ICAgIG1fdHJhbnNhY3Rpb24tPnVucmVnaXN0ZXJSZXF1ZXN0KHRoaXMpOwogfQogCiBQYXNzUmVm
UHRyPElEQkFueT4gSURCUmVxdWVzdDo6cmVzdWx0KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdApA
QCAtMTM4LDYgKzEzNCw4IEBAIHZvaWQgSURCUmVxdWVzdDo6bWFya0Vhcmx5RGVhdGgoKQogewog
ICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gUEVORElORyk7CiAgICAgbV9yZWFkeVN0YXRlID0g
RWFybHlEZWF0aDsKKyAgICBpZiAobV90cmFuc2FjdGlvbikKKyAgICAgICAgbV90cmFuc2FjdGlv
bi0+dW5yZWdpc3RlclJlcXVlc3QodGhpcyk7CiB9CiAKIGJvb2wgSURCUmVxdWVzdDo6cmVzZXRS
ZWFkeVN0YXRlKElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKQEAgLTE1Myw4ICsxNTEsOCBA
QCBib29sIElEQlJlcXVlc3Q6OnJlc2V0UmVhZHlTdGF0ZShJREJUcmFuc2FjdGlvbiogdHJhbnNh
Y3Rpb24pCiAgICAgbV9lcnJvckNvZGUgPSAwOwogICAgIG1fZXJyb3IuY2xlYXIoKTsKICAgICBt
X2Vycm9yTWVzc2FnZSA9IFN0cmluZygpOwotCi0gICAgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9u
aXRvcjo6cmVtb3ZlUGVuZGluZ1RyYW5zYWN0aW9uKG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSk7
CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24pOworICAgIG1fdHJhbnNhY3Rpb24tPnJlZ2lzdGVy
UmVxdWVzdCh0aGlzKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjg5LDggKzI4Nyw2IEBA
IHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiBwcnBCYWNrZW5kCiAgICAgQVNTRVJUKG1fc291cmNlLT50eXBlKCkgPT0g
SURCQW55OjpJREJEYXRhYmFzZVR5cGUpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uLT5pc1Zl
cnNpb25DaGFuZ2UoKSk7CiAKLSAgICBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yOjpyZW1v
dmVQZW5kaW5nVHJhbnNhY3Rpb24obV90cmFuc2FjdGlvbi0+YmFja2VuZCgpKTsKLQogICAgIG1f
cmVzdWx0ID0gSURCQW55OjpjcmVhdGUoZnJvbnRlbmQucmVsZWFzZSgpKTsKICAgICBlbnF1ZXVl
RXZlbnQoY3JlYXRlU3VjY2Vzc0V2ZW50KCkpOwogfQpAQCAtMzg4LDcgKzM4NCwxMyBAQCBib29s
IElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAKICAg
ICAvLyBGSVhNRTogV2hlbiB3ZSBhbGxvdyBjdXN0b20gZXZlbnQgZGlzcGF0Y2hpbmcsIHRoaXMg
d2lsbCBwcm9iYWJseSBuZWVkIHRvIGNoYW5nZS4KICAgICBBU1NFUlQoZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmVycm9yRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmxvY2tlZEV2
ZW50KTsKKyAgICBjb25zdCBib29sIHNldFRyYW5zYWN0aW9uQWN0aXZlID0gbV90cmFuc2FjdGlv
biAmJiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50IHx8IChldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50ICYmIG1fZXJyb3JDb2RlICE9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CisKKyAgICBpZiAoc2V0VHJhbnNh
Y3Rpb25BY3RpdmUpCisgICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2ZSh0cnVlKTsKICAg
ICBib29sIGRvbnRQcmV2ZW50RGVmYXVsdCA9IElEQkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2go
ZXZlbnQuZ2V0KCksIHRhcmdldHMpOworICAgIGlmIChzZXRUcmFuc2FjdGlvbkFjdGl2ZSkKKyAg
ICAgICAgbV90cmFuc2FjdGlvbi0+c2V0QWN0aXZlKGZhbHNlKTsKIAogICAgIC8vIElmIHRoZSBy
ZXN1bHQgd2FzIG9mIHR5cGUgSURCQ3Vyc29yLCBvciBhIG9uQmxvY2tlZCBldmVudCwgdGhlbiB3
ZSdsbCBmaXJlIGFnYWluLgogICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5i
bG9ja2VkRXZlbnQgJiYgKCFjdXJzb3JUb05vdGlmeSB8fCBtX2N1cnNvckZpbmlzaGVkKSkKQEAg
LTQwNSw2ICs0MDcsMTAgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50KQogICAgICAgICB9CiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmJhY2tl
bmQoKS0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CiAgICAgfQorCisgICAgaWYgKG1fdHJhbnNh
Y3Rpb24gJiYgbV9yZWFkeVN0YXRlID09IERPTkUpCisgICAgICAgIG1fdHJhbnNhY3Rpb24tPnVu
cmVnaXN0ZXJSZXF1ZXN0KHRoaXMpOworCiAgICAgcmV0dXJuIGRvbnRQcmV2ZW50RGVmYXVsdDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCmluZGV4IDZhZDMwMDcyMzhlZjM2ZjY1OGY2YzIyYjVlYjljNmE3MzY3NzQ1YTUu
LjVmMjQ5MjEyYmY1NTY5MmE5ZTQ2Y2VjN2M2MDdhZDZmODg3NGMxZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTg1
LDE5ICs4NSwyOSBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcgogICAgICwgbV9kYXRhYmFzZShk
YikKICAgICAsIG1fbW9kZShtb2RlKQogICAgICwgbV9hY3RpdmUodHJ1ZSkKLSAgICAsIG1fdHJh
bnNhY3Rpb25GaW5pc2hlZChmYWxzZSkKKyAgICAsIG1fc3RhdGUoVW51c2VkKQogICAgICwgbV9j
b250ZXh0U3RvcHBlZChmYWxzZSkKIHsKICAgICBBU1NFUlQobV9iYWNrZW5kKTsKICAgICBBU1NF
UlQobV9tb2RlID09IG1fYmFja2VuZC0+bW9kZSgpKTsKLSAgICBJREJQZW5kaW5nVHJhbnNhY3Rp
b25Nb25pdG9yOjphZGRQZW5kaW5nVHJhbnNhY3Rpb24obV9iYWNrZW5kLmdldCgpKTsKKworICAg
IGlmIChtb2RlID09IFZFUlNJT05fQ0hBTkdFKSB7CisgICAgICAgIC8vIE5vdCBhY3RpdmUgdW50
aWwgdGhlIGNhbGxiYWNrLgorICAgICAgICBtX2FjdGl2ZSA9IGZhbHNlOworICAgICAgICAvLyBJ
bXBsaWNpdGx5IHVzZWQgYnkgdGhlIHZlcnNpb24gY2hhbmdlIGl0c2VsZi4KKyAgICAgICAgbV9z
dGF0ZSA9IFVzZWQ7CisgICAgfQorCiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlz
IG9iamVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVp
cmVtZW50KCk7CisgICAgaWYgKG1fYWN0aXZlKQorICAgICAgICBJREJQZW5kaW5nVHJhbnNhY3Rp
b25Nb25pdG9yOjphZGROZXdUcmFuc2FjdGlvbih0aGlzKTsKICAgICBtX2RhdGFiYXNlLT50cmFu
c2FjdGlvbkNyZWF0ZWQodGhpcyk7CiB9CiAKIElEQlRyYW5zYWN0aW9uOjp+SURCVHJhbnNhY3Rp
b24oKQogeworICAgIEFTU0VSVChtX3N0YXRlID09IEZpbmlzaGVkKTsKIH0KIAogSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiBJREJUcmFuc2FjdGlvbjo6YmFja2VuZCgpIGNvbnN0CkBA
IC0xMDUsMTEgKzExNSw2IEBAIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogSURCVHJh
bnNhY3Rpb246OmJhY2tlbmQoKSBjb25zdAogICAgIHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7CiB9
CiAKLWJvb2wgSURCVHJhbnNhY3Rpb246OmlzRmluaXNoZWQoKSBjb25zdAotewotICAgIHJldHVy
biBtX3RyYW5zYWN0aW9uRmluaXNoZWQ7Ci19Ci0KIGNvbnN0IFN0cmluZyYgSURCVHJhbnNhY3Rp
b246Om1vZGUoKSBjb25zdAogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMTI1LDcg
KzEzMCw3IEBAIElEQkRhdGFiYXNlKiBJREJUcmFuc2FjdGlvbjo6ZGIoKSBjb25zdAogCiBQYXNz
UmVmUHRyPERPTUVycm9yPiBJREJUcmFuc2FjdGlvbjo6ZXJyb3IoRXhjZXB0aW9uQ29kZSYgZWMp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQpIHsKKyAgICBpZiAobV9z
dGF0ZSAhPSBGaW5pc2hlZCkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJ
REJfSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTEzNCw3
ICsxMzksNyBAQCBQYXNzUmVmUHRyPERPTUVycm9yPiBJREJUcmFuc2FjdGlvbjo6ZXJyb3IoRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OnNldEVycm9yKFBh
c3NSZWZQdHI8RE9NRXJyb3I+IGVycm9yKQogewotICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbkZp
bmlzaGVkKTsKKyAgICBBU1NFUlQobV9zdGF0ZSAhPSBGaW5pc2hlZCk7CiAgICAgQVNTRVJUKGVy
cm9yKTsKIAogICAgIC8vIFRoZSBmaXJzdCBlcnJvciB0byBiZSBzZXQgaXMgdGhlIHRydWUgY2F1
c2Ugb2YgdGhlCkBAIC0xNDUsNyArMTUwLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6c2V0RXJy
b3IoUGFzc1JlZlB0cjxET01FcnJvcj4gZXJyb3IpCiAKIFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmU+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIGlmIChtX3RyYW5zYWN0aW9uRmluaXNoZWQpIHsKKyAgICBp
ZiAobV9zdGF0ZSA9PSBGaW5pc2hlZCkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAg
LTE3MCw3ICsxNzUsNyBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlv
bjo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcAogCiB2b2lkIElEQlRyYW5z
YWN0aW9uOjpvYmplY3RTdG9yZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlPiBwcnBPYmplY3RTdG9yZSkKIHsKLSAgICBBU1NFUlQoIW1fdHJhbnNh
Y3Rpb25GaW5pc2hlZCk7CisgICAgQVNTRVJUKG1fc3RhdGUgIT0gRmluaXNoZWQpOwogICAgIFJl
ZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBwcnBPYmplY3RTdG9yZTsKICAgICBt
X29iamVjdFN0b3JlTWFwLnNldChuYW1lLCBvYmplY3RTdG9yZSk7CiAgICAgaWYgKGlzVmVyc2lv
bkNoYW5nZSgpKQpAQCAtMTc5LDcgKzE4NCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9iamVj
dFN0b3JlQ3JlYXRlZChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCT2JqZWN0CiAK
IHZvaWQgSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZChjb25zdCBTdHJpbmcmIG5h
bWUpCiB7Ci0gICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQpOworICAgIEFTU0VSVCht
X3N0YXRlICE9IEZpbmlzaGVkKTsKICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogICAg
IElEQk9iamVjdFN0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVNYXAuZmluZChu
YW1lKTsKICAgICBpZiAoaXQgIT0gbV9vYmplY3RTdG9yZU1hcC5lbmQoKSkgewpAQCAtMTkwLDEw
ICsxOTUsMjQgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVEZWxldGVkKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICB9CiB9CiAKK3ZvaWQgSURCVHJhbnNhY3Rpb246OnNldEFjdGl2
ZShib29sIGFjdGl2ZSkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSAhPSBGaW5pc2hlZCk7CisgICAg
aWYgKG1fc3RhdGUgPT0gRmluaXNoaW5nKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1f
c3RhdGUgPT0gVW51c2VkIHx8IG1fc3RhdGUgPT0gVXNlZCk7CisgICAgQVNTRVJUKGFjdGl2ZSAh
PSBtX2FjdGl2ZSk7CisgICAgbV9hY3RpdmUgPSBhY3RpdmU7CisKKyAgICBpZiAoIWFjdGl2ZSAm
JiBtX3N0YXRlID09IFVudXNlZCkKKyAgICAgICAgbV9iYWNrZW5kLT5jb21taXQoKTsKK30KKwog
dm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnQoKQogewotICAgIGlmIChtX3RyYW5zYWN0aW9uRmlu
aXNoZWQpCisgICAgaWYgKG1fc3RhdGUgPT0gRmluaXNoaW5nIHx8IG1fc3RhdGUgPT0gRmluaXNo
ZWQpCiAgICAgICAgIHJldHVybjsKKyAgICBtX3N0YXRlID0gRmluaXNoaW5nOwogICAgIG1fYWN0
aXZlID0gZmFsc2U7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBzZWxmUmVmID0gdGhpczsK
ICAgICBpZiAobV9iYWNrZW5kKQpAQCAtMjMyLDIyICsyNTEsMjcgQEAgdm9pZCBJREJUcmFuc2Fj
dGlvbjo6Y2xvc2VPcGVuQ3Vyc29ycygpCiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlZ2lzdGVy
UmVxdWVzdChJREJSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIG1fY2hpbGRSZXF1ZXN0cy5hZGQo
cmVxdWVzdCk7CisgICAgQVNTRVJUKHJlcXVlc3QpOworICAgIEFTU0VSVChtX3N0YXRlID09IFVu
dXNlZCB8fCBtX3N0YXRlID09IFVzZWQpOworICAgIEFTU0VSVChtX2FjdGl2ZSk7CisgICAgbV9y
ZXF1ZXN0TGlzdC5hZGQocmVxdWVzdCk7CisgICAgbV9zdGF0ZSA9IFVzZWQ7CiB9CiAKIHZvaWQg
SURCVHJhbnNhY3Rpb246OnVucmVnaXN0ZXJSZXF1ZXN0KElEQlJlcXVlc3QqIHJlcXVlc3QpCiB7
CisgICAgQVNTRVJUKHJlcXVlc3QpOwogICAgIC8vIElmIHdlIGFib3J0ZWQgdGhlIHJlcXVlc3Qs
IGl0IHdpbGwgYWxyZWFkeSBoYXZlIGJlZW4gcmVtb3ZlZC4KLSAgICBtX2NoaWxkUmVxdWVzdHMu
cmVtb3ZlKHJlcXVlc3QpOworICAgIG1fcmVxdWVzdExpc3QucmVtb3ZlKHJlcXVlc3QpOwogfQog
CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkFib3J0KCkKIHsKLSAgICBBU1NFUlQoIW1fdHJhbnNh
Y3Rpb25GaW5pc2hlZCk7Ci0gICAgbV9hY3RpdmUgPSBmYWxzZTsKLSAgICB3aGlsZSAoIW1fY2hp
bGRSZXF1ZXN0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgSURCUmVxdWVzdCogcmVxdWVzdCA9ICpt
X2NoaWxkUmVxdWVzdHMuYmVnaW4oKTsKLSAgICAgICAgbV9jaGlsZFJlcXVlc3RzLnJlbW92ZShy
ZXF1ZXN0KTsKKyAgICBBU1NFUlQobV9zdGF0ZSAhPSBGaW5pc2hlZCk7CisgICAgbV9zdGF0ZSA9
IEZpbmlzaGluZzsKKyAgICB3aGlsZSAoIW1fcmVxdWVzdExpc3QuaXNFbXB0eSgpKSB7CisgICAg
ICAgIElEQlJlcXVlc3QqIHJlcXVlc3QgPSAqbV9yZXF1ZXN0TGlzdC5iZWdpbigpOworICAgICAg
ICBtX3JlcXVlc3RMaXN0LnJlbW92ZShyZXF1ZXN0KTsKICAgICAgICAgcmVxdWVzdC0+YWJvcnQo
KTsKICAgICB9CiAKQEAgLTI2Nyw4ICsyOTEsOCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkFi
b3J0KCkKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSgpCiB7Ci0gICAgQVNTRVJU
KCFtX3RyYW5zYWN0aW9uRmluaXNoZWQpOwotICAgIG1fYWN0aXZlID0gZmFsc2U7CisgICAgQVNT
RVJUKG1fc3RhdGUgIT0gRmluaXNoZWQpOworICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7CiAgICAg
bV9vYmplY3RTdG9yZUNsZWFudXBNYXAuY2xlYXIoKTsKICAgICBjbG9zZU9wZW5DdXJzb3JzKCk7
CiAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKQEAgLTI4NCw3ICsz
MDgsNyBAQCBib29sIElEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAog
ICAgIC8vIEZJWE1FOiBJbiBhbiBpZGVhbCB3b3JsZCwgd2Ugc2hvdWxkIHJldHVybiB0cnVlIGFz
IGxvbmcgYXMgYW55b25lIGhhcyBhIG9yIGNhbgogICAgIC8vICAgICAgICBnZXQgYSBoYW5kbGUg
dG8gdXMgb3IgYW55IGNoaWxkIHJlcXVlc3Qgb2JqZWN0IGFuZCBhbnkgb2YgdGhvc2UgaGF2ZQog
ICAgIC8vICAgICAgICBldmVudCBsaXN0ZW5lcnMuIFRoaXMgaXMgIGluIG9yZGVyIHRvIGhhbmRs
ZSB1c2VyIGdlbmVyYXRlZCBldmVudHMgcHJvcGVybHkuCi0gICAgcmV0dXJuICFtX3RyYW5zYWN0
aW9uRmluaXNoZWQgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKKyAg
ICByZXR1cm4gbV9zdGF0ZSAhPSBGaW5pc2hlZCB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRp
bmdBY3Rpdml0eSgpOwogfQogCiBJREJUcmFuc2FjdGlvbjo6TW9kZSBJREJUcmFuc2FjdGlvbjo6
c3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMp
CkBAIC0zMzIsMTAgKzM1NiwxMCBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJREJUcmFuc2Fj
dGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiBib29sIElEQlRyYW5zYWN0aW9u
OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIElEQl9UUkFD
RSgiSURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQiKTsKLSAgICBBU1NFUlQoIW1fdHJhbnNh
Y3Rpb25GaW5pc2hlZCk7CisgICAgQVNTRVJUKG1fc3RhdGUgIT0gRmluaXNoZWQpOwogICAgIEFT
U0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChldmVudC0+dGFyZ2V0
KCkgPT0gdGhpcyk7Ci0gICAgbV90cmFuc2FjdGlvbkZpbmlzaGVkID0gdHJ1ZTsKKyAgICBtX3N0
YXRlID0gRmluaXNoZWQ7CiAKICAgICAvLyBCcmVhayByZWZlcmVuY2UgY3ljbGVzLgogICAgIGZv
ciAoSURCT2JqZWN0U3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9vYmplY3RTdG9yZU1hcC5iZWdp
bigpOyBpdCAhPSBtX29iamVjdFN0b3JlTWFwLmVuZCgpOyArK2l0KQpAQCAtMzU1LDcgKzM3OSw3
IEBAIGJvb2wgSURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmQoKSBjb25zdAogewogICAgIC8vIEZJ
WE1FOiBUZWNobmljYWxseSB3ZSBjYW4gc3VzcGVuZCBiZWZvcmUgdGhlIGZpcnN0IHJlcXVlc3Qg
aXMgc2NoZWR1bGUKICAgICAvLyAgICAgICAgYW5kIGFmdGVyIHRoZSBjb21wbGV0ZS9hYm9ydCBl
dmVudCBpcyBlbnF1ZXVlZC4KLSAgICByZXR1cm4gbV90cmFuc2FjdGlvbkZpbmlzaGVkOworICAg
IHJldHVybiBtX3N0YXRlID09IEZpbmlzaGVkOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpz
dG9wKCkKQEAgLTM2OCw3ICszOTIsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzdG9wKCkKIAog
dm9pZCBJREJUcmFuc2FjdGlvbjo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
KQogewotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCwgIkEg
ZmluaXNoZWQgdHJhbnNhY3Rpb24gdHJpZWQgdG8gZW5xdWV1ZSBhbiBldmVudCBvZiB0eXBlICVz
LiIsIGV2ZW50LT50eXBlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShtX3N0YXRlICE9IEZpbmlzaGVkLCAiQSBmaW5pc2hlZCB0cmFuc2FjdGlvbiB0
cmllZCB0byBlbnF1ZXVlIGFuIGV2ZW50IG9mIHR5cGUgJXMuIiwgZXZlbnQtPnR5cGUoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDJjZTgyYjFjZjc3
YWFmMjBmZDIyNDBkYTFiOGY2OGMxYjkxZDIyZWMuLmU1ZmJhN2NiZTNlMWU4OWU5YzliNmJlNDMw
ZjdlOThhMTZjNjE1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIGJhY2tlbmQoKSBjb25zdDsKICAgICBib29sIGlz
QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmU7IH0KLSAgICBib29sIGlzRmluaXNoZWQo
KSBjb25zdDsKKyAgICBib29sIGlzRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09
IEZpbmlzaGVkOyB9CiAgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9tb2Rl
ID09IFJFQURfT05MWTsgfQogICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1
cm4gbV9tb2RlID09IFZFUlNJT05fQ0hBTkdFOyB9CiAKQEAgLTk1LDYgKzk1LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgdW5yZWdpc3RlclJlcXVlc3QoSURCUmVxdWVzdCopOwogICAgIHZvaWQgb2Jq
ZWN0U3RvcmVDcmVhdGVkKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+
KTsKICAgICB2b2lkIG9iamVjdFN0b3JlRGVsZXRlZChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IHNldEFjdGl2ZShib29sKTsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
YWJvcnQpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29tcGxldGUpOwpA
QCAtMTMzLDE1ICsxMzQsMjIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0
YSogZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3Vy
ZUV2ZW50VGFyZ2V0RGF0YSgpOwogCisgICAgZW51bSBTdGF0ZSB7CisgICAgICAgIFVudXNlZCwg
Ly8gTm8gcmVxdWVzdHMgaGF2ZSBiZWVuIG1hZGUuCisgICAgICAgIFVzZWQsIC8vIEF0IGxlYXN0
IG9uZSByZXF1ZXN0IGhhcyBiZWVuIG1hZGUuCisgICAgICAgIEZpbmlzaGluZywgLy8gSW4gdGhl
IHByb2Nlc3Mgb2YgYWJvcnRpbmcgb3IgY29tcGxldGluZy4KKyAgICAgICAgRmluaXNoZWQsIC8v
IE5vIG1vcmUgZXZlbnRzIHdpbGwgZmlyZSBhbmQgbm8gbmV3IHJlcXVlc3RzIG1heSBiZSBmaWxl
ZC4KKyAgICB9OworCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
bV9iYWNrZW5kOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gbV9kYXRhYmFzZTsKICAgICBjb25z
dCBNb2RlIG1fbW9kZTsKICAgICBib29sIG1fYWN0aXZlOwotICAgIGJvb2wgbV90cmFuc2FjdGlv
bkZpbmlzaGVkOyAvLyBJcyBpdCBwb3NzaWJsZSB0aGF0IHdlJ2xsIGZpcmUgYW55IG1vcmUgZXZl
bnRzIG9yIGFsbG93IGFueSBuZXcgcmVxdWVzdHM/IElmIG5vdCwgd2UncmUgZmluaXNoZWQuCisg
ICAgU3RhdGUgbV9zdGF0ZTsKICAgICBib29sIG1fY29udGV4dFN0b3BwZWQ7CiAgICAgUmVmUHRy
PERPTUVycm9yPiBtX2Vycm9yOwogCi0gICAgTGlzdEhhc2hTZXQ8SURCUmVxdWVzdCo+IG1fY2hp
bGRSZXF1ZXN0czsKKyAgICBMaXN0SGFzaFNldDxJREJSZXF1ZXN0Kj4gbV9yZXF1ZXN0TGlzdDsK
IAogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gPiBJ
REJPYmplY3RTdG9yZU1hcDsKICAgICBJREJPYmplY3RTdG9yZU1hcCBtX29iamVjdFN0b3JlTWFw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAppbmRleCA2ZGZmMmIwNTAxNDgyMTkzOWUzODQ2
ZDc3ZmQ1YjcwMzY0YTk1ZjEwLi45NGQzMGRjOTM2OTllYjkxMzZmNmFiZDcxYmIwNjczZWJiYWJi
ZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtMjAxLDEyICsyMDEsMTMgQEAg
dm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21taXQoKQogICAgIC8vIGNvbW1pdCBz
dGVwcyBiZWxvdy4gV2UgdGhlcmVmb3JlIHRha2UgYSBzZWxmIHJlZmVyZW5jZSB0byBrZWVwIG91
cnNlbHZlcwogICAgIC8vIGFsaXZlIHdoaWxlIGV4ZWN1dGluZyB0aGlzIG1ldGhvZC4KICAgICBS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gc2VsZih0aGlzKTsKLSAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBSdW5uaW5nKTsKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBVbnVzZWQgfHwgbV9z
dGF0ZSA9PSBSdW5uaW5nKTsKICAgICBBU1NFUlQobV90YXNrUXVldWUuaXNFbXB0eSgpKTsKIAor
ICAgIGJvb2wgdW51c2VkID0gbV9zdGF0ZSA9PSBVbnVzZWQ7CiAgICAgbV9zdGF0ZSA9IEZpbmlz
aGVkOwogCi0gICAgYm9vbCBjb21taXR0ZWQgPSBtX3RyYW5zYWN0aW9uLT5jb21taXQoKTsKKyAg
ICBib29sIGNvbW1pdHRlZCA9IHVudXNlZCB8fCBtX3RyYW5zYWN0aW9uLT5jb21taXQoKTsKIAog
ICAgIC8vIEJhY2tpbmcgc3RvcmUgcmVzb3VyY2VzIChoZWxkIHZpYSBjdXJzb3JzKSBtdXN0IGJl
IHJlbGVhc2VkIGJlZm9yZSBzY3JpcHQgY2FsbGJhY2tzCiAgICAgLy8gYXJlIGZpcmVkLCBhcyB0
aGUgc2NyaXB0IGNhbGxiYWNrcyBtYXkgcmVsZWFzZSByZWZlcmVuY2VzIGFuZCBhbGxvdyB0aGUg
YmFja2luZyBzdG9yZQpAQCAtMjE2LDcgKzIxNyw4IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbDo6Y29tbWl0KCkKIAogICAgIC8vIFRyYW5zYWN0aW9ucyBtdXN0IGFsc28gYmUgbWFy
a2VkIGFzIGNvbXBsZXRlZCBiZWZvcmUgdGhlIGZyb250LWVuZCBpcyBub3RpZmllZCwgYXMKICAg
ICAvLyB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGlvbiB1bmJsb2NrcyBvcGVyYXRpb25zIGxpa2Ug
Y2xvc2luZyBjb25uZWN0aW9ucy4KLSAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkNvb3JkaW5h
dG9yKCktPmRpZEZpbmlzaFRyYW5zYWN0aW9uKHRoaXMpOworICAgIGlmICghdW51c2VkKQorICAg
ICAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCktPmRpZEZpbmlzaFRyYW5z
YWN0aW9uKHRoaXMpOwogICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWQodGhpcyk7
CiAKICAgICBpZiAoY29tbWl0dGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaApp
bmRleCAwMDNkYmZkY2NmNTQyOTJiODJhYWIyYzM1ZjJhZGJjZTBmNTFkNjVkLi5kOGY0OGFiNTA4
NTcxMmVlMDhlNGZjM2Q5NTQ5MjljMGYzYTdmYmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBzaG9ydCBtb2RlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZVRhc2so
UGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBQYXNzT3duUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGFib3J0VGFzayA9IG51bGxwdHIpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVUYXNrRXZlbnRzKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBjb21taXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5kSW1w
bCopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJl
YWRFeGVjU3RhdGUuY3BwCmluZGV4IDAwYmMxNzBkMmIzNTIzNmUxODlkMjMzZTljOTQzYmIyNDk4
NWI5ZDYuLjk1ODhjOTRkMDhlM2MxMjZmMTFjY2I4OTMzZjk4MGZlN2Y0ZmQ5NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNw
cApAQCAtMzgsNyArMzgsOSBAQCBKU0M6OkV4ZWNTdGF0ZSogSlNNYWluVGhyZWFkRXhlY1N0YXRl
OjpzX21haW5UaHJlYWRTdGF0ZSA9IDA7CiB2b2lkIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6ZGlk
TGVhdmVTY3JpcHRDb250ZXh0KCkKIHsKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAg
ICBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yOjphYm9ydFBlbmRpbmdUcmFuc2FjdGlvbnMo
KTsgICAKKyAgICAvLyBJbmRleGVkIERCIHJlcXVpcmVzIHRoYXQgdHJhbnNhY3Rpb25zIGFyZSBj
cmVhdGVkIHdpdGggYW4gaW50ZXJuYWwgfGFjdGl2ZXwgZmxhZworICAgIC8vIHNldCB0byB0cnVl
LCBidXQgdGhlIGZsYWcgYmVjb21lcyBmYWxzZSB3aGVuIGNvbnRyb2wgcmV0dXJucyB0byB0aGUg
ZXZlbnQgbG9vcC4KKyAgICBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yOjpkZWFjdGl2YXRl
TmV3VHJhbnNhY3Rpb25zKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZF
UlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNj
b3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3Bw
CmluZGV4IDkyYmU3MjBiMTRjNjlmMDVmNmVlZjZhOTZjMjY4MmM0YjNjZmNmNjUuLjE2MDY3ZTUw
ZGZiNGExNzNmNTM1YzVjOGExNTExMTkyNjI1OTdkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwCkBAIC00MSwxMCArNDEsOSBAQCB2b2lk
IFY4UmVjdXJzaW9uU2NvcGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgpCiAgICAgLy8gRklYTUU6
IEluc3RydW1lbnQgYW55IHdvcmsgdGhhdCB0YWtlcyBwbGFjZSB3aGVuIHNjcmlwdCBleGl0cyB0
byBjKysgKGUuZy4gTXV0YXRpb24gT2JzZXJ2ZXJzKS4KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQotICAgIC8vIElmIHdlJ3ZlIGp1c3QgbGVmdCBhIHNjcmlwdCBjb250ZXh0IGFuZCBp
bmRleGVkIGRhdGFiYXNlIGhhcyBiZWVuCi0gICAgLy8gaW5zdGFudGlhdGVkLCB3ZSBtdXN0IGxl
dCBpdHMgdHJhbnNhY3Rpb24gY29vcmRpbmF0b3Iga25vdyBzbyBpdCBjYW4gdGVybWluYXRlCi0g
ICAgLy8gYW55IG5vdC15ZXQtc3RhcnRlZCB0cmFuc2FjdGlvbnMuCi0gICAgSURCUGVuZGluZ1Ry
YW5zYWN0aW9uTW9uaXRvcjo6YWJvcnRQZW5kaW5nVHJhbnNhY3Rpb25zKCk7CisgICAgLy8gSW5k
ZXhlZCBEQiByZXF1aXJlcyB0aGF0IHRyYW5zYWN0aW9ucyBhcmUgY3JlYXRlZCB3aXRoIGFuIGlu
dGVybmFsIHxhY3RpdmV8IGZsYWcKKyAgICAvLyBzZXQgdG8gdHJ1ZSwgYnV0IHRoZSBmbGFnIGJl
Y29tZXMgZmFsc2Ugd2hlbiBjb250cm9sIHJldHVybnMgdG8gdGhlIGV2ZW50IGxvb3AuCisgICAg
SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6ZGVhY3RpdmF0ZU5ld1RyYW5zYWN0aW9ucygp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmgKaW5kZXggNGQ0ODAw
MTEzMmVlYWEwZjMxYzA4MWZjNzBkZGNlZjhhNDIyZTliYS4uNGRkY2Q4YzU2MmI4YjdiNGE0NzRi
ZWJkY2FmMWUyYzI0ZmQxYjg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdCgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVUYXNrRXZlbnRzKCkgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tzKFdl
YklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9u
QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0
aW9uQmFja2VuZFByb3h5LmNwcAppbmRleCBiZmQ5ODA4ZWE4OTc2OWYzNWNlY2EzYWM1OWM2NTMy
OTExYzhjMThiLi41ZTdkZTJlYjBiY2NkYzNkODRmY2U5NzQ0YTkxOWEyYjRkYWI5NTNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25C
YWNrZW5kUHJveHkuY3BwCkBAIC02Nyw2ICs2NywxMSBAQCB1bnNpZ25lZCBzaG9ydCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRQcm94eTo6bW9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fd2ViSURCVHJh
bnNhY3Rpb24tPm1vZGUoKTsKIH0KIAordm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6
Y29tbWl0KCkKK3sKKyAgICBtX3dlYklEQlRyYW5zYWN0aW9uLT5jb21taXQoKTsKK30KKwogdm9p
ZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6YWJvcnQoKQogewogICAgIG1fd2ViSURCVHJh
bnNhY3Rpb24tPmFib3J0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaAppbmRleCBhZmVmMDA4MmNkZjE2NDVhNzdj
MzMxYjc4MDZlM2I0YWRlMWNmOWYwLi5lMWE5ZjUxMTViOWMxYmQ5ZDRkNjNlOTRlMjc0OGJiN2Zk
OTFhYWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5LmgKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBtb2RlKCkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGNvbW1pdCgpOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpOwogICAgIHZpcnR1YWwg
Ym9vbCBzY2hlZHVsZVRhc2soUGFzc093blB0cjxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiwgUGFzc093blB0cjxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlVGFza0V2ZW50cygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAK
aW5kZXggZTBhMDMxODkwZmVkNTM3NzBkODJkMWM3ODBlNDUyMTAzNTg5N2M5OC4uYmYxMGFkYjYw
OGM3YTE5N2JjMzI1ODg1YzdlZWYxYjlhYzY3ZmRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwCkBAIC01OSw2ICs1OSwx
MSBAQCBXZWJJREJPYmplY3RTdG9yZSogV2ViSURCVHJhbnNhY3Rpb25JbXBsOjpvYmplY3RTdG9y
ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIEV4YwogICAgIHJldHVybiBuZXcgV2ViSURCT2JqZWN0
U3RvcmVJbXBsKG9iamVjdFN0b3JlKTsKIH0KIAordm9pZCBXZWJJREJUcmFuc2FjdGlvbkltcGw6
OmNvbW1pdCgpCit7CisgICAgbV9iYWNrZW5kLT5jb21taXQoKTsKK30KKwogdm9pZCBXZWJJREJU
cmFuc2FjdGlvbkltcGw6OmFib3J0KCkKIHsKICAgICBtX2JhY2tlbmQtPmFib3J0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oCmlu
ZGV4IGZhMTA0OWJkMGExYjEzMTFkOTU1ODI2MjdhYzYwNGE4NzAyYTEzOTkuLmUwODVhYTcwZDJl
MmE5MDU1YmY0YzRjNzcwZTdmZDljNmRkMWQ3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oCkBAIC00Myw2ICs0Myw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgaW50IG1vZGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYklE
Qk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYkV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0KCk7CiAgICAgdmlydHVhbCB2b2lk
IGFib3J0KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlVGFza0V2ZW50cygpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NTAwZjUyYTZjYmI4MGI3Y2M0OGJjNmU4NDY1MjcxZWE4OGI0ZTAyLi40ZmY3ODAy
NTY4Y2M2YjA0NTFlMmIxZDYwZTJlMDMzOWRlNmIyZmU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAK
KzIwMTItMDYtMjYgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBJbmRleGVkREI6IEltcGxlbWVudCBJREJUcmFuc2FjdGlvbiBpbnRlcm5hbCBhY3RpdmUgZmxh
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkzNzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hY3RpdmUtZmxhZy5qczogQWRkZWQu
CisgICAgICAgICh0ZXN0LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVl
c3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5v
bnN1Y2Nlc3MpOgorICAgICAgICAodGVzdC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0
ZXN0KToKKyAgICAgICAgKHJ1blRyYW5zYWN0aW9uLmJ1c3kuYnVzeVJlcXVlc3Qub25zdWNjZXNz
KToKKyAgICAgICAgKHRlc3RUaW1lb3V0KToKKyAgICAgICAgKHRlc3RFdmVudENhbGxiYWNrKToK
KyAgICAgICAgKHRyYW5zYWN0aW9uQ29tcGxldGUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanM6CisgICAgICAgIChjb21wbGV0ZUNh
bGxiYWNrKToKKyAgICAgICAgKGVtcHR5Q29tcGxldGVDYWxsYmFjayk6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdvcmtlcnMuanM6
IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJh
bnNhY3Rpb24tYWJvcnQtd29ya2Vycy5qcy4KKyAgICAgICAgKHRlc3QucmVxdWVzdC5vbnN1Y2Nl
c3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGNyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAg
KGVtcHR5VHJhbnNhY3Rpb25Db21wbGV0ZWQpOgorICAgICAgICAocmVjdXJzaW9uVGVzdCk6Cisg
ICAgICAgIChyZWN1cnNlKToKKyAgICAgICAgKHRyYW5zYWN0aW9uQ29tcGxldGVkKToKKyAgICAg
ICAgKHRpbWVvdXRUZXN0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUpOgorICAgICAgICAodGltZW91
dFRlc3QpOgorICAgICAgICAoZXJyb3JUZXN0KToKKyAgICAgICAgKGVycm9ySGFuZGxlcik6Cisg
ICAgICAgIChlcnJvclRyYW5zYWN0aW9uQ29tcGxldGVkKToKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tYWN0aXZlLWZsYWctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hY3RpdmUtZmxhZy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdp
dGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVj
dXJzaW9uLWNyb3NzLWZyYW1lLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5o
dG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUuaHRtbC4KKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1l
eHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQuCisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNp
b24uaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5z
YWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLmh0bWwuCisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd29ya2Vycy1leHBlY3RlZC50eHQ6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13
b3JrZXJzLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1jb21wbGV0ZS13b3JrZXJzLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLmh0bWwuCisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvdHV0b3JpYWwuaHRtbDoKKwogMjAxMi0wNi0yNiAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggYSB0ZXN0IGFmdGVyIHIxMjEy
ODYuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
dHJhbnNhY3Rpb24tYWJvcnQtd29ya2Vycy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxYmEwZGYwNmYyZTYwZjY4ODQ1Y2JkOThiOWY4MjYzNGQ0MGMyMTU2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJz
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwotfQotCi1kZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIgd29ya2VycywgcmVjdXJzaW9uLCBhbmQgdHJhbnNhY3Rp
b24gdGVybWluYXRpb24uIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7Ci0KLSAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4o
J3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcicpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
KSB7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKLSAgICAgICAg
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5v
bmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7
Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIp
OwotICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGNyZWF0ZVRyYW5zYWN0aW9uOwotICAg
ICAgICB9OwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uKCkKLXsKLSAg
ICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoImNyZWF0ZVRyYW5zYWN0aW9uKCk6Iik7Ci0gICAgZXZh
bEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOwotICAgIGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAg
ICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0g
ICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRy
YW5zYWN0aW9uLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQ7Ci19Ci0KLWZ1bmN0aW9uIHRy
YW5zYWN0aW9uQWJvcnRlZCgpCi17Ci0gICAgdGVzdFBhc3NlZCgiVHJhbnNhY3Rpb24gYWJvcnRl
ZCIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCgwKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiLCAiJ1RyYW5zYWN0aW9uSW5h
Y3RpdmVFcnJvciciKTsKLSAgICByZWN1cnNpb25UZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3Vy
c2lvblRlc3QoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygicmVjdXJzaW9uVGVzdCgp
OiIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3Jl
JykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdz
dG9yZScpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxl
dGVkOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
LSAgICBldmFsQW5kTG9nKCJzdG9yZS5nZXQoMCkiKTsKLSAgICB0ZXN0UGFzc2VkKCJ0cmFuc2Fj
dGlvbiBpcyBhY3RpdmUiKTsKLSAgICByZWN1cnNlKDEpOwotfQotCi1mdW5jdGlvbiByZWN1cnNl
KGNvdW50KQotewotICAgIGRlYnVnKCJyZWN1cnNpb24gZGVwdGg6ICIgKyBjb3VudCk7Ci0gICAg
ZXZhbEFuZExvZygic3RvcmUuZ2V0KDApIik7Ci0gICAgdGVzdFBhc3NlZCgidHJhbnNhY3Rpb24g
aXMgc3RpbGwgYWN0aXZlIik7Ci0gICAgaWYgKGNvdW50IDwgMykgewotICAgICAgICByZWN1cnNl
KGNvdW50ICsgMSk7Ci0gICAgfQotICAgIGRlYnVnKCJyZWN1cnNpb24gZGVwdGg6ICIgKyBjb3Vu
dCk7Ci0gICAgZXZhbEFuZExvZygic3RvcmUuZ2V0KDApIik7Ci0gICAgdGVzdFBhc3NlZCgidHJh
bnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZlIik7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQ29t
cGxldGVkKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJ0cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKLSAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5nZXQoMCkiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIiwgIidUcmFuc2FjdGlvbkluYWN0aXZlRXJy
b3InIik7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRyeWluZyBhIHRpbWVvdXQgY2Fs
bGJhY2s6Iik7Ci0gICAgZXZhbEFuZExvZygic2V0VGltZW91dCh0aW1lb3V0VGVzdCwgMCkiKTsK
LX0KLQotZnVuY3Rpb24gdGltZW91dFRlc3QoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1
ZygidGltZW91dFRlc3QoKToiKTsKLQotICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIu
dHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBm
dW5jdGlvbiAoKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoInRyYW5zYWN0aW9uIHN0YXJ0ZWQgaW4g
c2V0VGltZW91dCgpIGNhbGxiYWNrIGFib3J0ZWQiKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9O
X0lOQUNUSVZFX0VSUiIsICInVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJyIpOwotCi0gICAgICAg
IGVycm9yVGVzdCgpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGVycm9yVGVzdCgpCi17Ci0gICAg
ZGVidWcoIiIpOwotICAgIGRlYnVnKCJlcnJvclRlc3QoKToiKTsKLSAgICBldmFsQW5kTG9nKCJz
ZWxmLm9sZF9vbmVycm9yID0gc2VsZi5vbmVycm9yIik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5v
bmVycm9yID0gZXJyb3JIYW5kbGVyIik7Ci0gICAgdGhyb3cgbmV3IEVycm9yKCJpZ25vcmUgdGhp
cyIpOwotfQotCi1mdW5jdGlvbiBlcnJvckhhbmRsZXIoZSkKLXsKLSAgICBkZWJ1ZygiIik7Ci0g
ICAgZGVidWcoImVycm9ySGFuZGxlcigpOiIpOwotICAgIC8vIEZJWE1FOiBTaG91bGQgYmUgYWJs
ZSB0byBzdG9wIHRoZSBlcnJvciBoZXJlLCBidXQgaXQgaXNuJ3QgYW4gRXZlbnQgb2JqZWN0Lgot
ICAgIC8vIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKLSAgICBldmFsQW5k
TG9nKCJzZWxmLm9uZXJyb3IgPSBzZWxmLm9sZF9vbmVycm9yIik7Ci0gICAgZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOwotICAgIGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICB0cmFuc2Fj
dGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0gICAgdHJhbnNh
Y3Rpb24ub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9u
Lm9uYWJvcnQgPSBlcnJvclRyYW5zYWN0aW9uQWJvcnRlZDsKLX0KLQotZnVuY3Rpb24gZXJyb3JU
cmFuc2FjdGlvbkFib3J0ZWQoKQotewotICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0aW9uIGFib3J0
ZWQiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5nZXQoMCkiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIiwgIidUcmFuc2FjdGlvbklu
YWN0aXZlRXJyb3InIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlv
bi1hY3RpdmUtZmxhZy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy90cmFuc2FjdGlvbi1hY3RpdmUtZmxhZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjUzNDk5NTEwOWY3ZjQ2
OGY3NGM4MDVkYThkNGEzMWE3MDc1Yjc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnLmpzCkBA
IC0wLDAgKzEsMTM4IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCIHRyYW5zYWN0aW9uIGludGVybmFsIGFjdGl2ZSBmbGFnLiIpOworCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnJyki
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnJykiKTsKKyAgICAg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkYiA9IHJlcXVlc3Qu
cmVzdWx0OworICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24o
JzEnKSIpOworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgIHRyYW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAgICAgICAg
ICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAg
ICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
JykiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5k
ZXgnLCAna2V5cGF0aCcpIik7CisgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IHJ1blRyYW5zYWN0aW9uOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9Owor
fQorCitmdW5jdGlvbiBydW5UcmFuc2FjdGlvbigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJydW5UcmFuc2FjdGlvbigpOiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0g
ZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWR3cml0ZScpIik7CisKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIlZlcmlmeSB0aGF0IHRyYW5zYWN0aW9ucyBhcmUgY3JlYXRlZCB3aXRoIHxh
Y3RpdmV8IGZsYWcgc2V0OiIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmlu
ZGV4KCdpbmRleCcpIik7CisgICAgZm9yIChpID0gMDsgaSA8IHN0YXRlbWVudHMubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coc3RhdGVtZW50c1tpXSk7CisgICAgfQorCisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUcmFuc2FjdGlvbiBzaG91bGRuJ3QgYmUgYWN0aXZl
IGluc2lkZSBhIG5vbi1JREItZXZlbnQgY2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJzZXRU
aW1lb3V0KHRlc3RUaW1lb3V0LCAwKSIpOworCisgICAgdGltZW91dENvbXBsZXRlID0gZmFsc2U7
CisKKyAgICAvLyBLZWVwIHRyYW5zYWN0aW9uIGFsaXZlIHVudGlsIHRpbWVvdXQgY2FsbGJhY2sg
Y29tcGxldGVzIC0gZG9uJ3QgbG9nCisgICAgLy8gYW55dGhpbmcgaGVyZSBhcyB0aGlzIGNvdWxk
IHJ1biBhIHZhcmlhYmxlIG51bWJlciBvZiB0aW1lcyBkZXBlbmRpbmcKKyAgICAvLyBvbiB0aGUg
cG9ydC4KKyAgICBmdW5jdGlvbiBidXN5KCkgeworICAgICAgICBpZiAodGltZW91dENvbXBsZXRl
KSB7CisgICAgICAgICAgICB0ZXN0RXZlbnRDYWxsYmFjaygpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGJ1c3lSZXF1ZXN0ID0gdHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoJ3N0b3JlJykuZ2V0KDApOworICAgICAgICBidXN5UmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIGJ1c3lSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIGJ1c3koKTsKKyAgICAgICAgfTsKKyAgICB9CisgICAgYnVz
eSgpOworCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGU7
Cit9CisKK3ZhciBzdGF0ZW1lbnRzID0gWworICAgICJzdG9yZS5hZGQoMCwgMCkiLAorICAgICJz
dG9yZS5wdXQoMCwgMCkiLAorICAgICJzdG9yZS5nZXQoMCkiLAorICAgICJzdG9yZS5nZXQoSURC
S2V5UmFuZ2Uub25seSgwKSkiLAorICAgICJzdG9yZS5kZWxldGUoMCkiLAorICAgICJzdG9yZS5k
ZWxldGUoSURCS2V5UmFuZ2Uub25seSgwKSkiLAorICAgICJzdG9yZS5jb3VudCgpIiwKKyAgICAi
c3RvcmUuY291bnQoMCkiLAorICAgICJzdG9yZS5jb3VudChJREJLZXlSYW5nZS5vbmx5KDApKSIs
CisgICAgInN0b3JlLmNsZWFyKCkiLAorICAgICJzdG9yZS5vcGVuQ3Vyc29yKCkiLAorICAgICJz
dG9yZS5vcGVuQ3Vyc29yKDApIiwKKyAgICAic3RvcmUub3BlbkN1cnNvcigwLCAnbmV4dCcpIiwK
KyAgICAic3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApKSIsCisgICAgInN0b3Jl
Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSwgJ25leHQnKSIsCisgICAgImluZGV4Lmdl
dCgwKSIsCisgICAgImluZGV4LmdldChJREJLZXlSYW5nZS5vbmx5KDApKSIsCisgICAgImluZGV4
LmdldEtleSgwKSIsCisgICAgImluZGV4LmdldEtleShJREJLZXlSYW5nZS5vbmx5KDApKSIsCisg
ICAgImluZGV4LmNvdW50KCkiLAorICAgICJpbmRleC5jb3VudCgwKSIsCisgICAgImluZGV4LmNv
dW50KElEQktleVJhbmdlLm9ubHkoMCkpIiwKKyAgICAiaW5kZXgub3BlbkN1cnNvcigpIiwKKyAg
ICAiaW5kZXgub3BlbkN1cnNvcigwKSIsCisgICAgImluZGV4Lm9wZW5DdXJzb3IoMCwgJ25leHQn
KSIsCisgICAgImluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSkiLAorICAgICJp
bmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCksICduZXh0JykiLAorICAgICJpbmRl
eC5vcGVuS2V5Q3Vyc29yKCkiLAorICAgICJpbmRleC5vcGVuS2V5Q3Vyc29yKDApIiwKKyAgICAi
aW5kZXgub3BlbktleUN1cnNvcigwLCAnbmV4dCcpIiwKKyAgICAiaW5kZXgub3BlbktleUN1cnNv
cihJREJLZXlSYW5nZS5vbmx5KDApKSIsCisgICAgImluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5
UmFuZ2Uub25seSgwKSwgJ25leHQnKSIKK107CisKK2Z1bmN0aW9uIHRlc3RUaW1lb3V0KCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RUaW1lb3V0KCk6Iik7CisgICAgZXZhbEFu
ZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2
YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4JykiKTsKKyAgICBmb3IgKGkgPSAw
OyBpIDwgc3RhdGVtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKHN0YXRlbWVudHNbaV0sICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9J
TkFDVElWRV9FUlIiLCAiJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciciKTsKKyAgICB9CisgICAg
dGltZW91dENvbXBsZXRlID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gdGVzdEV2ZW50Q2FsbGJhY2so
KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdEV2ZW50Q2FsbGJhY2soKToiKTsK
KworICAgIGRlYnVnKCJUcmFuc2FjdGlvbiBzaG91bGQgYmUgYWN0aXZlIGluc2lkZSBhIG5vbi1J
REItZXZlbnQgY2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5p
bmRleCgnaW5kZXgnKSIpOworICAgIGZvciAoaSA9IDA7IGkgPCBzdGF0ZW1lbnRzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgIHNob3VsZE5vdFRocm93KHN0YXRlbWVudHNbaV0pOworICAgIH0KK30K
KworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZSgpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJ0cmFuc2FjdGlvbkNvbXBsZXRlKCk6Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKSIsICJET01FeGNl
cHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWJhc2ljcy5qcwppbmRl
eCA0ZGE5ZGNlMmMwODE4ZGY4MGRmOGQ5Y2M5MjM3NjUxOTc2ODA4ZjMyLi5hNzc4NjFhZjMyZGQ3
NTBmNGI0MDM5MTVhYmVjYjI3YTdkMzVhMGEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMK
QEAgLTI0OSwxNCArMjQ5LDE0IEBAIGZ1bmN0aW9uIGNvbXBsZXRlQ2FsbGJhY2soKQogICAgIHNo
b3VsZEJlRmFsc2UoImV2ZW50LmNhbmNlbGFibGUiKTsKICAgICB0ZXN0UGFzc2VkKCJjb21wbGV0
ZSBldmVudCBmaXJlZCIpOwogICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNh
Y3Rpb24oWydzdG9yZU5hbWUnXSkiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gYWJvcnRD
YWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZW1wdHlDb21wbGV0ZUNhbGxi
YWNrOwogICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9y
ZS5uYW1lIiwgInN0b3JlTmFtZSIpOwogfQogCi1mdW5jdGlvbiBhYm9ydENhbGxiYWNrKCkKK2Z1
bmN0aW9uIGVtcHR5Q29tcGxldGVDYWxsYmFjaygpCiB7Ci0gICAgdGVzdFBhc3NlZCgiYWJvcnQg
ZXZlbnQgZmlyZWQiKTsKKyAgICB0ZXN0UGFzc2VkKCJjb21wbGV0ZSBldmVudCBmaXJlZCIpOwog
ICAgIHRlc3RET01TdHJpbmdMaXN0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb21wbGV0ZS13b3JrZXJzLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNv
bXBsZXRlLXdvcmtlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDYwMzI0ZGMwYWUyZGJjNmRlNzg3ZmUzOTY3
NmY5YjM3YTUyYmFkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb21wbGV0ZS13b3JrZXJzLmpzCkBAIC0wLDAg
KzEsMTI4IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygn
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRT
Y3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHdv
cmtlcnMsIHJlY3Vyc2lvbiwgYW5kIHRyYW5zYWN0aW9uIHRlcm1pbmF0aW9uLiIpOworCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgZXZhbEFu
ZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1jb21wbGV0ZS13b3Jr
ZXInKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBldmFsQW5kTG9n
KCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJs
b2NrZWRDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgICAgICAgICAgZXZh
bEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAgICAgICAgIHRyYW5zLm9u
Y29tcGxldGUgPSBjcmVhdGVUcmFuc2FjdGlvbjsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitm
dW5jdGlvbiBjcmVhdGVUcmFuc2FjdGlvbigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJjcmVhdGVUcmFuc2FjdGlvbigpOiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0g
ZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
YWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZW1wdHlU
cmFuc2FjdGlvbkNvbXBsZXRlZDsKK30KKworZnVuY3Rpb24gZW1wdHlUcmFuc2FjdGlvbkNvbXBs
ZXRlZCgpCit7CisgICAgdGVzdFBhc3NlZCgiVHJhbnNhY3Rpb24gY29tcGxldGVkIik7CisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIsICInVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9y
JyIpOworICAgIHJlY3Vyc2lvblRlc3QoKTsKK30KKworZnVuY3Rpb24gcmVjdXJzaW9uVGVzdCgp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJyZWN1cnNpb25UZXN0KCk6Iik7CisgICAg
ZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOworICAg
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsK
KyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZWQ7CisgICAg
dHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxB
bmRMb2coInN0b3JlLmdldCgwKSIpOworICAgIHRlc3RQYXNzZWQoInRyYW5zYWN0aW9uIGlzIGFj
dGl2ZSIpOworICAgIHJlY3Vyc2UoMSk7Cit9CisKK2Z1bmN0aW9uIHJlY3Vyc2UoY291bnQpCit7
CisgICAgZGVidWcoInJlY3Vyc2lvbiBkZXB0aDogIiArIGNvdW50KTsKKyAgICBldmFsQW5kTG9n
KCJzdG9yZS5nZXQoMCkiKTsKKyAgICB0ZXN0UGFzc2VkKCJ0cmFuc2FjdGlvbiBpcyBzdGlsbCBh
Y3RpdmUiKTsKKyAgICBpZiAoY291bnQgPCAzKSB7CisgICAgICAgIHJlY3Vyc2UoY291bnQgKyAx
KTsKKyAgICB9CisgICAgZGVidWcoInJlY3Vyc2lvbiBkZXB0aDogIiArIGNvdW50KTsKKyAgICBl
dmFsQW5kTG9nKCJzdG9yZS5nZXQoMCkiKTsKKyAgICB0ZXN0UGFzc2VkKCJ0cmFuc2FjdGlvbiBp
cyBzdGlsbCBhY3RpdmUiKTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZWQoKQor
eworICAgIHRlc3RQYXNzZWQoInRyYW5zYWN0aW9uIGNvbXBsZXRlZCIpOworICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFO
U0FDVElPTl9JTkFDVElWRV9FUlIiLCAiJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciciKTsKKwor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidHJ5aW5nIGEgdGltZW91dCBjYWxsYmFjazoiKTsK
KyAgICBldmFsQW5kTG9nKCJzZXRUaW1lb3V0KHRpbWVvdXRUZXN0LCAwKSIpOworfQorCitmdW5j
dGlvbiB0aW1lb3V0VGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0aW1lb3V0
VGVzdCgpOiIpOworCisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlv
bignc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0
U3RvcmUoJ3N0b3JlJykiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgdGVzdFBhc3NlZCgidHJhbnNhY3Rpb24gc3RhcnRlZCBpbiBzZXRUaW1lb3V0KCkg
Y2FsbGJhY2sgY29tcGxldGVkIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0
b3JlLmdldCgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9F
UlIiLCAiJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciciKTsKKworICAgICAgICBlcnJvclRlc3Qo
KTsKKyAgICB9OworfQorCitmdW5jdGlvbiBlcnJvclRlc3QoKQoreworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZygiZXJyb3JUZXN0KCk6Iik7CisgICAgZXZhbEFuZExvZygic2VsZi5vbGRfb25l
cnJvciA9IHNlbGYub25lcnJvciIpOworICAgIGV2YWxBbmRMb2coInNlbGYub25lcnJvciA9IGVy
cm9ySGFuZGxlciIpOworICAgIHRocm93IG5ldyBFcnJvcigiaWdub3JlIHRoaXMiKTsKK30KKwor
ZnVuY3Rpb24gZXJyb3JIYW5kbGVyKGUpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJl
cnJvckhhbmRsZXIoKToiKTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIGJlIGFibGUgdG8gc3RvcCB0
aGUgZXJyb3IgaGVyZSwgYnV0IGl0IGlzbid0IGFuIEV2ZW50IG9iamVjdC4KKyAgICAvLyBldmFs
QW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7CisgICAgZXZhbEFuZExvZygic2VsZi5v
bmVycm9yID0gc2VsZi5vbGRfb25lcnJvciIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRy
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgdHJhbnNhY3Rpb24ub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZXJy
b3JUcmFuc2FjdGlvbkNvbXBsZXRlZDsKK30KKworZnVuY3Rpb24gZXJyb3JUcmFuc2FjdGlvbkNv
bXBsZXRlZCgpCit7CisgICAgdGVzdFBhc3NlZCgiVHJhbnNhY3Rpb24gY29tcGxldGVkIik7Cisg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIsICInVHJhbnNhY3Rpb25JbmFjdGl2ZUVy
cm9yJyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLmh0bWwKaW5kZXggZDE3
ZjE4NDU5NmE0MWM5ZWI3NDAzZjM5ODQzZDJhNWVmZGM5NGVlMS4uMDMxODhkZTBlNjdkN2YzOWZh
NTJiZjVkYWRmMjllNjRjMGU3MzA4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3N0cnVjdHVyZWQtY2xvbmUuaHRtbApAQCAtNTE0LDggKzUxNCw4IEBAIGZ1bmN0
aW9uIHRlc3RCYWRUeXBlcygpCiAgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFu
c2FjdGlvbignc3RvcmVOYW1lJywgJ3JlYWR3cml0ZScpIik7CiAgICAgZXZhbEFuZExvZygic3Rv
cmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKICAgICB0cmFuc2Fj
dGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24u
b25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9u
Lm9uYWJvcnQgPSBmaW5pc2hKU1Rlc3Q7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmaW5pc2hK
U1Rlc3Q7CiAKICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoIk90aGVyIEphdmFTY3JpcHQgb2Jq
ZWN0IHR5cGVzOiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
dHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0
aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2ZmU5MjFiMzQzMjQwNmI2ODk5OTc1YTYyOWYwMmU1ZGExMTBkNjRiLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLWNy
b3NzLWZyYW1lLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVRl
c3QgdGhhdCBwZW5kaW5nIHRyYW5zYWN0aW9ucyBhcmUgbm90IGFib3J0ZWQgZHVyaW5nIHJlY3Vy
c2l2ZSBKUyBjYWxscyB1bnRpbCBhbGwgSlMgKGluIGFsbCBmcmFtZXMpIGlzIGZpbmlzaGVkLgot
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotaW5kZXhlZERCID0gc2VsZi5pbmRleGVk
REIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5t
c0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7Ci0KLWluZGV4ZWREQi5kZWxldGVEYXRhYmFz
ZSgndHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUnKQotaW5k
ZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZy
YW1lJykKLWRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAotZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKQotcGVuZGluZ1RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydvYmplY3RTdG9yZSdd
LCAncmVhZHdyaXRlJykKLVN0YXJ0IHJlLWVudHJhbnQgSlMKLXRyYW5zYWN0aW9uID0gZGIudHJh
bnNhY3Rpb24oWydvYmplY3RTdG9yZSddLCAncmVhZHdyaXRlJykKLUVuZCByZS1lbnRyYW50IEpT
Ci1zdG9yZSA9IHBlbmRpbmdUcmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnb2JqZWN0U3RvcmUnKQot
UEFTUyBzdG9yZSAhPT0gdW5kZWZpbmVkIGlzIHRydWUKLVBlbmRpbmcgdHJhbnNhY3Rpb24gYWJv
cnRlZAotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFi
b3J0LXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1m
cmFtZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWNmNDc5OTIwNTE0MDE0
ZjEwNjRmN2IzODljMDU2ZTQxYzY0ODI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw3NiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGlmcmFtZT4KLSAg
ICA8Ym9keT4KLSAgICA8L2JvZHk+Ci08L2lmcmFtZT4KLTxzY3JpcHQ+Ci0KLXZhciB0cmFuc2Fj
dGlvbjsKLXZhciBzdG9yZTsKLXZhciBkYjsKLXZhciBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImlmcmFtZSIpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5OwotCi1kZXNjcmlw
dGlvbigiVGVzdCB0aGF0IHBlbmRpbmcgdHJhbnNhY3Rpb25zIGFyZSBub3QgYWJvcnRlZCBkdXJp
bmcgcmVjdXJzaXZlIEpTIGNhbGxzIHVudGlsIGFsbCBKUyAoaW4gYWxsIGZyYW1lcykgaXMgZmlu
aXNoZWQuIik7Ci0KLWZ1bmN0aW9uIHNldHVwKCkgewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgn
dHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUnKSIpOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLWNyb3Nz
LWZyYW1lJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9Owot
fQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkgewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNp
b25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpIHsKLSAgICBzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScsIG51bGwpOwotICAgIGV2ZW50LnRhcmdldC5y
ZXN1bHQub25jb21wbGV0ZSA9IGNsaWNrOwotfQotCi1mdW5jdGlvbiBjbGljaygpIHsKLSAgICBi
b2R5Lm9uY2xpY2sgPSB0ZXN0OwotICAgIHZhciBwZW5kaW5nVHJhbnNhY3Rpb24gPSBldmFsQW5k
TG9nKCJwZW5kaW5nVHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10s
ICdyZWFkd3JpdGUnKSIpOwotICAgIHBlbmRpbmdUcmFuc2FjdGlvbi5vbnN1Y2Nlc3MgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBwZW5kaW5nVHJhbnNhY3Rpb24ub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHBlbmRpbmdUcmFuc2FjdGlvbi5vbmFib3J0ID0g
YWJvcnRDYWxsYmFjazsKLSAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiTW91
c2VFdmVudCIpOwotICAgIGV2ZW50LmluaXRNb3VzZUV2ZW50KCJjbGljayIsIHRydWUsIHRydWUs
IGRvY3VtZW50LmRlZmF1bHRWaWV3LCAwLCAwLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgMCwgbnVsbCk7Ci0gICAgYm9keS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKLSAgICB2
YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHBlbmRpbmdUcmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnb2JqZWN0U3RvcmUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT09IHVuZGVm
aW5lZCIpOwotICAgIGJvZHkub25jbGljayA9IHVuZGVmaW5lZDsKLX0KLQotZnVuY3Rpb24gdGVz
dCgpCi17Ci0gICAgZGVidWcoIlN0YXJ0IHJlLWVudHJhbnQgSlMiKTsKLSAgICB0cmFuc2FjdGlv
biA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydvYmplY3RTdG9y
ZSddLCAncmVhZHdyaXRlJykiKTsKLSAgICBkZWJ1ZygiRW5kIHJlLWVudHJhbnQgSlMiKTsKLX0K
LQotCi1mdW5jdGlvbiBhYm9ydENhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiUGVuZGluZyB0cmFu
c2FjdGlvbiBhYm9ydGVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXNldHVwKCk7Ci0K
LTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU0OGZjZTIwZDRlMmY0MjgyMTZiZWI4ZDNlMTBkMWJhMTg3OGY3ZDAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24tZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVGVzdCB0aGF0IHBlbmRp
bmcgdHJhbnNhY3Rpb25zIGFyZSBub3QgYWJvcnRlZCBkdXJpbmcgcmVjdXJzaXZlIEpTIGNhbGxz
IHVudGlsIGFsbCBKUyBpcyBmaW5pc2hlZC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgot
Ci0KLWluZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8
IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERC
OwotCi1pbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24n
KQotZGIgPSBldmVudC50YXJnZXQucmVzdWx0Ci1kYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicp
Ci1wZW5kaW5nVHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sICdy
ZWFkd3JpdGUnKQotU3RhcnQgcmUtZW50cmFudCBKUwotdHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKQotRW5kIHJlLWVudHJhbnQgSlMKLXN0
b3JlID0gcGVuZGluZ1RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScpCi1QQVNT
IHN0b3JlICE9PSB1bmRlZmluZWQgaXMgdHJ1ZQotUGVuZGluZyB0cmFuc2FjdGlvbiBhYm9ydGVk
Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQt
d2l0aC1qcy1yZWN1cnNpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDMzODc5MzU2NDMxNjUwZDFhMzM2MzY3ZWI2MjFiYWQ0MDFhZDRmY2UuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24uaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLTxodG1sPg0KLTxoZWFkPg0KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
DQotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pg0KLTwvaGVhZD4N
Ci08Ym9keT4NCi08c2NyaXB0Pg0KLQ0KLXZhciB0cmFuc2FjdGlvbjsNCi12YXIgc3RvcmU7DQot
dmFyIGRiOw0KLXZhciBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXTsNCi0NCi1kZXNjcmlwdGlvbigiVGVzdCB0aGF0IHBlbmRpbmcgdHJhbnNhY3Rpb25zIGFy
ZSBub3QgYWJvcnRlZCBkdXJpbmcgcmVjdXJzaXZlIEpTIGNhbGxzIHVudGlsIGFsbCBKUyBpcyBm
aW5pc2hlZC4iKTsNCi0NCi1mdW5jdGlvbiBzZXR1cCgpIHsNCi0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsNCi0NCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0
cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbicpIik7DQotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gc2V0VmVyc2lvbjsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIHNldFZlcnNpb24oKSB7DQotICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7DQotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2Vz
cygpDQotew0KLSAgICBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScs
IG51bGwpOw0KLSAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBjbGljazsNCi19
DQotDQotZnVuY3Rpb24gY2xpY2soKSANCi17DQotICAgIGJvZHkub25jbGljayA9IHRlc3Q7DQot
ICAgIHZhciBwZW5kaW5nVHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJwZW5kaW5nVHJhbnNhY3Rp
b24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKSIpOw0KLSAg
ICBwZW5kaW5nVHJhbnNhY3Rpb24ub25zdWNjZXNzID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
DQotICAgIHBlbmRpbmdUcmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7DQotICAgIHBlbmRpbmdUcmFuc2FjdGlvbi5vbmFib3J0ID0gYWJvcnRDYWxsYmFjazsNCi0g
ICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTsNCi0gICAg
ZXZlbnQuaW5pdE1vdXNlRXZlbnQoImNsaWNrIiwgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVs
dFZpZXcsIDAsIDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCBudWxs
KTsNCi0gICAgYm9keS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsNCi0gICAgdmFyIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSBwZW5kaW5nVHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ29iamVjdFN0
b3JlJykiKTsNCi0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPT0gdW5kZWZpbmVkIik7DQotICAg
IGJvZHkub25jbGljayA9IHVuZGVmaW5lZDsNCi19DQotDQotZnVuY3Rpb24gdGVzdCgpDQotew0K
LSAgICBkZWJ1ZygiU3RhcnQgcmUtZW50cmFudCBKUyIpOw0KLSAgICB0cmFuc2FjdGlvbiA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydvYmplY3RTdG9yZSddLCAn
cmVhZHdyaXRlJykiKTsNCi0gICAgZGVidWcoIkVuZCByZS1lbnRyYW50IEpTIik7DQotfQ0KLQ0K
LQ0KLWZ1bmN0aW9uIGFib3J0Q2FsbGJhY2soKQ0KLXsNCi0gICAgZGVidWcoIlBlbmRpbmcgdHJh
bnNhY3Rpb24gYWJvcnRlZCIpOw0KLSAgICBmaW5pc2hKU1Rlc3QoKTsNCi19DQotDQotc2V0dXAo
KTsNCi0NCi08L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4NCi08L2JvZHk+DQotPC9odG1sPg0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdvcmtl
cnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tYWJvcnQtd29ya2Vycy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQ3MDNmYmFiMTNmNjhlNGM5ODVjNDZiN2Y1OGE3ZDIxOWRlMDEwODUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd29ya2Vycy1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw4NCArMCwwIEBACi1bV29ya2VyXSBUZXN0IEluZGV4ZWREQiB3b3JrZXJzLCBy
ZWN1cnNpb24sIGFuZCB0cmFuc2FjdGlvbiB0ZXJtaW5hdGlvbi4KLQotT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgotCi0KLVN0YXJ0aW5nIHdvcmtlcjogcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFi
b3J0LXdvcmtlcnMuanMKLVtXb3JrZXJdIGluZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNl
bGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVk
REIgfHwgc2VsZi5PSW5kZXhlZERCOwotW1dvcmtlcl0gCi1bV29ya2VyXSByZXF1ZXN0ID0gaW5k
ZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcicpCi1bV29ya2VyXSBkYiA9IHJl
cXVlc3QucmVzdWx0Ci1bV29ya2VyXSByZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpCi1bV29y
a2VyXSBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotW1dvcmtlcl0gdHJhbnMgPSByZXF1ZXN0
LnJlc3VsdAotW1dvcmtlcl0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKLVtXb3JrZXJd
IAotW1dvcmtlcl0gY3JlYXRlVHJhbnNhY3Rpb24oKToKLVtXb3JrZXJdIHRyYW5zYWN0aW9uID0g
ZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykKLVtXb3JrZXJdIHN0b3JlID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlJykKLVBBU1MgW1dvcmtlcl0gVHJhbnNhY3Rpb24gYWJvcnRlZAotW1dv
cmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmdldCgwKQotUEFTUyBbV29ya2Vy
XSBFeGNlcHRpb24gd2FzIHRocm93bi4KLVBBU1MgW1dvcmtlcl0gY29kZSBpcyBJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKLVBBU1MgW1dvcmtlcl0gZW5hbWUg
aXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKLVtXb3JrZXJdIAotW1dvcmtlcl0gcmVjdXJz
aW9uVGVzdCgpOgotW1dvcmtlcl0gdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUn
KQotW1dvcmtlcl0gc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKQotW1dv
cmtlcl0gc3RvcmUuZ2V0KDApCi1QQVNTIFtXb3JrZXJdIHRyYW5zYWN0aW9uIGlzIGFjdGl2ZQot
W1dvcmtlcl0gcmVjdXJzaW9uIGRlcHRoOiAxCi1bV29ya2VyXSBzdG9yZS5nZXQoMCkKLVBBU1Mg
W1dvcmtlcl0gdHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZlCi1bV29ya2VyXSByZWN1cnNpb24g
ZGVwdGg6IDIKLVtXb3JrZXJdIHN0b3JlLmdldCgwKQotUEFTUyBbV29ya2VyXSB0cmFuc2FjdGlv
biBpcyBzdGlsbCBhY3RpdmUKLVtXb3JrZXJdIHJlY3Vyc2lvbiBkZXB0aDogMwotW1dvcmtlcl0g
c3RvcmUuZ2V0KDApCi1QQVNTIFtXb3JrZXJdIHRyYW5zYWN0aW9uIGlzIHN0aWxsIGFjdGl2ZQot
W1dvcmtlcl0gcmVjdXJzaW9uIGRlcHRoOiAzCi1bV29ya2VyXSBzdG9yZS5nZXQoMCkKLVBBU1Mg
W1dvcmtlcl0gdHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZlCi1bV29ya2VyXSByZWN1cnNpb24g
ZGVwdGg6IDIKLVtXb3JrZXJdIHN0b3JlLmdldCgwKQotUEFTUyBbV29ya2VyXSB0cmFuc2FjdGlv
biBpcyBzdGlsbCBhY3RpdmUKLVtXb3JrZXJdIHJlY3Vyc2lvbiBkZXB0aDogMQotW1dvcmtlcl0g
c3RvcmUuZ2V0KDApCi1QQVNTIFtXb3JrZXJdIHRyYW5zYWN0aW9uIGlzIHN0aWxsIGFjdGl2ZQot
UEFTUyBbV29ya2VyXSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQKLVtXb3JrZXJdIEV4cGVjdGluZyBl
eGNlcHRpb24gZnJvbSBzdG9yZS5nZXQoMCkKLVBBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0
aHJvd24uCi1QQVNTIFtXb3JrZXJdIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNB
Q1RJT05fSU5BQ1RJVkVfRVJSCi1QQVNTIFtXb3JrZXJdIGVuYW1lIGlzICdUcmFuc2FjdGlvbklu
YWN0aXZlRXJyb3InCi1bV29ya2VyXSAKLVtXb3JrZXJdIHRyeWluZyBhIHRpbWVvdXQgY2FsbGJh
Y2s6Ci1bV29ya2VyXSBzZXRUaW1lb3V0KHRpbWVvdXRUZXN0LCAwKQotW1dvcmtlcl0gCi1bV29y
a2VyXSB0aW1lb3V0VGVzdCgpOgotW1dvcmtlcl0gdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlv
bignc3RvcmUnKQotW1dvcmtlcl0gc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmUnKQotUEFTUyBbV29ya2VyXSB0cmFuc2FjdGlvbiBzdGFydGVkIGluIHNldFRpbWVvdXQoKSBj
YWxsYmFjayBhYm9ydGVkCi1bV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUu
Z2V0KDApCi1QQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgotUEFTUyBbV29ya2Vy
XSBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgot
UEFTUyBbV29ya2VyXSBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJwotW1dvcmtl
cl0gCi1bV29ya2VyXSBlcnJvclRlc3QoKToKLVtXb3JrZXJdIHNlbGYub2xkX29uZXJyb3IgPSBz
ZWxmLm9uZXJyb3IKLVtXb3JrZXJdIHNlbGYub25lcnJvciA9IGVycm9ySGFuZGxlcgotW1dvcmtl
cl0gCi1bV29ya2VyXSBlcnJvckhhbmRsZXIoKToKLVtXb3JrZXJdIHNlbGYub25lcnJvciA9IHNl
bGYub2xkX29uZXJyb3IKLVtXb3JrZXJdIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0
b3JlJykKLVtXb3JrZXJdIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykK
LUdvdCBleHBlY3RlZCBlcnJvciBmcm9tIHdvcmtlciwgaWdub3JpbmcKLWV2ZW50LnByZXZlbnRE
ZWZhdWx0KCkKLVBBU1MgW1dvcmtlcl0gVHJhbnNhY3Rpb24gYWJvcnRlZAotW1dvcmtlcl0gRXhw
ZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmdldCgwKQotUEFTUyBbV29ya2VyXSBFeGNlcHRp
b24gd2FzIHRocm93bi4KLVBBU1MgW1dvcmtlcl0gY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlv
bi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKLVBBU1MgW1dvcmtlcl0gZW5hbWUgaXMgJ1RyYW5z
YWN0aW9uSW5hY3RpdmVFcnJvcicKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQot
VEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDQ2ODI2NGMxZDM5NmZiMTAwNGYyZTAxMWZlNDgzZjdjMTY3MmRmZjkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd29ya2Vycy5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMjkgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3Jp
cHQ+Ci0KLXZhciB3b3JrZXIgPSBzdGFydFdvcmtlcigncmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFi
b3J0LXdvcmtlcnMuanMnKTsKLQotLy8gRklYTUU6IEl0IHNob3VsZCBiZSBwb3NzaWJsZSBmb3Ig
dGhlIHdvcmtlciB0byBzZXQgc2VsZi5vbmVycm9yIHRvIGNhdGNoIHRoZSBldmVudAotLy8gYW5k
IGNhbGwgZXZlbnQucHJldmVudERlZmF1bHQoKSwgYnV0IGluIHRoZSBjdXJyZW50IFdvcmtlciBp
bXBsZW1lbnRhdGlvbiB0aGUgcmF3Ci0vLyBleGNlcHRpb24gaXMgc2VlbiBieSB0aGUgZXZlbnQg
aGFuZGxlciBpbiB0aGUgd29ya2VyLCBub3QgYW4gRXJyb3JFdmVudCBvYmplY3QuCi0KLXZhciBv
cmlnX29uZXJyb3IgPSB3b3JrZXIub25lcnJvcjsKLXdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24g
KGV2ZW50KSB7Ci0gICAgaWYgKGV2ZW50Lm1lc3NhZ2UgPT09ICJVbmNhdWdodCBFcnJvcjogaWdu
b3JlIHRoaXMiKSB7Ci0gICAgICAgIGRlYnVnKCJHb3QgZXhwZWN0ZWQgZXJyb3IgZnJvbSB3b3Jr
ZXIsIGlnbm9yaW5nIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0
KCkiKTsKLSAgICB9IGVsc2UgaWYgKG9yaWdfb25lcnJvcikgewotICAgICAgICBvcmlnX29uZXJy
b3IoZXZlbnQpOwotICAgIH0KLX07Ci0KLQotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWFjdGl2ZS1mbGFnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTkx
YzViNjY1ODE2YTZjZThlMGI1OWM1NjAyNmMxNzgyOTRkNjhlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWN0aXZlLWZsYWctZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMzIEBACitUZXN0IEluZGV4ZWREQiB0cmFuc2FjdGlvbiBp
bnRlcm5hbCBhY3RpdmUgZmxhZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2lu
ZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYu
bW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitp
bmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnJykKK2luZGV4
ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1hY3RpdmUtZmxhZycpCitkYi5zZXRWZXJzaW9uKCcxJykK
K3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKK3N0b3JlLmNyZWF0ZUluZGV4
KCdpbmRleCcsICdrZXlwYXRoJykKKworcnVuVHJhbnNhY3Rpb24oKToKK3RyYW5zYWN0aW9uID0g
ZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWR3cml0ZScpCisKK1ZlcmlmeSB0aGF0IHRyYW5z
YWN0aW9ucyBhcmUgY3JlYXRlZCB3aXRoIHxhY3RpdmV8IGZsYWcgc2V0Ogorc3RvcmUgPSB0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKQoraW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXgn
KQorUEFTUyBzdG9yZS5hZGQoMCwgMCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHN0
b3JlLnB1dCgwLCAwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3RvcmUuZ2V0KDAp
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5nZXQoSURCS2V5UmFuZ2Uub25s
eSgwKSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHN0b3JlLmRlbGV0ZSgwKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3RvcmUuZGVsZXRlKElEQktleVJhbmdlLm9ubHko
MCkpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5jb3VudCgpIGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5jb3VudCgwKSBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KK1BBU1Mgc3RvcmUuY291bnQoSURCS2V5UmFuZ2Uub25seSgwKSkgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTIHN0b3JlLmNsZWFyKCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CitQQVNTIHN0b3JlLm9wZW5DdXJzb3IoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
c3RvcmUub3BlbkN1cnNvcigwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3RvcmUu
b3BlbkN1cnNvcigwLCAnbmV4dCcpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdG9y
ZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCkpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCksICduZXh0JykgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGluZGV4LmdldCgwKSBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KK1BBU1MgaW5kZXguZ2V0KElEQktleVJhbmdlLm9ubHkoMCkpIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5nZXRLZXkoMCkgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIGluZGV4LmdldEtleShJREJLZXlSYW5nZS5vbmx5KDApKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXguY291bnQoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1MgaW5kZXguY291bnQoMCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGluZGV4
LmNvdW50KElEQktleVJhbmdlLm9ubHkoMCkpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFT
UyBpbmRleC5vcGVuQ3Vyc29yKCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGluZGV4
Lm9wZW5DdXJzb3IoMCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGluZGV4Lm9wZW5D
dXJzb3IoMCwgJ25leHQnKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXgub3Bl
bkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApLCAnbmV4dCcpIGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5vcGVuS2V5Q3Vyc29yKCkgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTIGluZGV4Lm9wZW5LZXlDdXJzb3IoMCkgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIGluZGV4Lm9wZW5LZXlDdXJzb3IoMCwgJ25leHQnKSBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXgub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS5vbmx5
KDApKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXgub3BlbktleUN1cnNvcihJ
REJLZXlSYW5nZS5vbmx5KDApLCAnbmV4dCcpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorCitU
cmFuc2FjdGlvbiBzaG91bGRuJ3QgYmUgYWN0aXZlIGluc2lkZSBhIG5vbi1JREItZXZlbnQgY2Fs
bGJhY2sKK3NldFRpbWVvdXQodGVzdFRpbWVvdXQsIDApCisKK3Rlc3RUaW1lb3V0KCk6CitzdG9y
ZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpCitpbmRleCA9IHN0b3JlLmluZGV4
KCdpbmRleCcpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuYWRkKDAsIDApCitQQVNT
IEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9u
LlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFj
dGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLnB1dCgwLCAwKQorUEFT
UyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlv
bi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5h
Y3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5nZXQoMCkKK1BBU1Mg
RXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24u
VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0
aXZlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuZ2V0KElEQktleVJhbmdl
Lm9ubHkoMCkpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRh
dGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAn
VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3Jl
LmRlbGV0ZSgwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJE
YXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMg
J1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9y
ZS5kZWxldGUoSURCS2V5UmFuZ2Uub25seSgwKSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24u
CitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSCitQQVNTIGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3Rpbmcg
ZXhjZXB0aW9uIGZyb20gc3RvcmUuY291bnQoKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4K
K1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9F
UlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBl
eGNlcHRpb24gZnJvbSBzdG9yZS5jb3VudCgwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4K
K1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9F
UlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBl
eGNlcHRpb24gZnJvbSBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5vbmx5KDApKQorUEFTUyBFeGNl
cHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFO
U0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVF
cnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5jbGVhcigpCitQQVNTIEV4Y2Vw
dGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVy
cm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLm9wZW5DdXJzb3IoKQorUEFTUyBF
eGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5U
UkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3Rp
dmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5vcGVuQ3Vyc29yKDApCitQ
QVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0
aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25J
bmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLm9wZW5DdXJzb3Io
MCwgJ25leHQnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJE
YXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMg
J1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9y
ZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCkpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhy
b3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0
aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSwg
J25leHQnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRh
YmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1Ry
YW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBpbmRleC5n
ZXQoMCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJh
c2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1lIGlzICdUcmFu
c2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gaW5kZXguZ2V0
KElEQktleVJhbmdlLm9ubHkoMCkpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBj
b2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFT
UyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlv
biBmcm9tIGluZGV4LmdldEtleSgwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1Mg
Y29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BB
U1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRp
b24gZnJvbSBpbmRleC5nZXRLZXkoSURCS2V5UmFuZ2Uub25seSgwKSkKK1BBU1MgRXhjZXB0aW9u
IHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJ
T05fSU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3In
CitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gaW5kZXguY291bnQoKQorUEFTUyBFeGNlcHRpb24g
d2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElP
Tl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicK
K0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBpbmRleC5jb3VudCgwKQorUEFTUyBFeGNlcHRpb24g
d2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElP
Tl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicK
K0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5vbmx5KDAp
KQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4
Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0
aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBpbmRleC5vcGVuQ3Vy
c29yKCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJh
c2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1lIGlzICdUcmFu
c2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gaW5kZXgub3Bl
bkN1cnNvcigwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJE
YXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMg
J1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBpbmRl
eC5vcGVuQ3Vyc29yKDAsICduZXh0JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNT
IGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitQ
QVNTIGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0
aW9uIGZyb20gaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApKQorUEFTUyBFeGNl
cHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFO
U0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVF
cnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJh
bmdlLm9ubHkoMCksICduZXh0JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNv
ZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitQQVNT
IGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9u
IGZyb20gaW5kZXgub3BlbktleUN1cnNvcigpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgor
UEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VS
UgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4
Y2VwdGlvbiBmcm9tIGluZGV4Lm9wZW5LZXlDdXJzb3IoMCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0
aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5B
Q1RJVkVfRVJSCitQQVNTIGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBl
Y3RpbmcgZXhjZXB0aW9uIGZyb20gaW5kZXgub3BlbktleUN1cnNvcigwLCAnbmV4dCcpCitQQVNT
IEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9u
LlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFj
dGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGluZGV4Lm9wZW5LZXlDdXJzb3Io
SURCS2V5UmFuZ2Uub25seSgwKSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNv
ZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitQQVNT
IGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9u
IGZyb20gaW5kZXgub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApLCAnbmV4dCcpCitQ
QVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0
aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25J
bmFjdGl2ZUVycm9yJworCit0ZXN0RXZlbnRDYWxsYmFjaygpOgorVHJhbnNhY3Rpb24gc2hvdWxk
IGJlIGFjdGl2ZSBpbnNpZGUgYSBub24tSURCLWV2ZW50IGNhbGxiYWNrCitzdG9yZSA9IHRyYW5z
YWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpCitpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleCcp
CitQQVNTIHN0b3JlLmFkZCgwLCAwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3Rv
cmUucHV0KDAsIDApIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5nZXQoMCkg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHN0b3JlLmdldChJREJLZXlSYW5nZS5vbmx5
KDApKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3RvcmUuZGVsZXRlKDApIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5kZWxldGUoSURCS2V5UmFuZ2Uub25seSgw
KSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHN0b3JlLmNvdW50KCkgZGlkIG5vdCB0
aHJvdyBleGNlcHRpb24uCitQQVNTIHN0b3JlLmNvdW50KDApIGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgorUEFTUyBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5vbmx5KDApKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1Mgc3RvcmUuY2xlYXIoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1Mgc3RvcmUub3BlbkN1cnNvcigpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBz
dG9yZS5vcGVuQ3Vyc29yKDApIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5v
cGVuQ3Vyc29yKDAsICduZXh0JykgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHN0b3Jl
Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CitQQVNTIHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSwgJ25leHQnKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXguZ2V0KDApIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUEFTUyBpbmRleC5nZXQoSURCS2V5UmFuZ2Uub25seSgwKSkgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTIGluZGV4LmdldEtleSgwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK1BBU1MgaW5kZXguZ2V0S2V5KElEQktleVJhbmdlLm9ubHkoMCkpIGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgorUEFTUyBpbmRleC5jb3VudCgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgor
UEFTUyBpbmRleC5jb3VudCgwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXgu
Y291bnQoSURCS2V5UmFuZ2Uub25seSgwKSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IGluZGV4Lm9wZW5DdXJzb3IoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXgu
b3BlbkN1cnNvcigwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXgub3BlbkN1
cnNvcigwLCAnbmV4dCcpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5vcGVu
Q3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCkpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFT
UyBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCksICduZXh0JykgZGlkIG5vdCB0
aHJvdyBleGNlcHRpb24uCitQQVNTIGluZGV4Lm9wZW5LZXlDdXJzb3IoKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXgub3BlbktleUN1cnNvcigwKSBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KK1BBU1MgaW5kZXgub3BlbktleUN1cnNvcigwLCAnbmV4dCcpIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLm9ubHko
MCkpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5vcGVuS2V5Q3Vyc29yKElE
QktleVJhbmdlLm9ubHkoMCksICduZXh0JykgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCisKK3Ry
YW5zYWN0aW9uQ29tcGxldGUoKToKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZSA9IHRy
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3du
LgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFt
ZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tYWN0aXZlLWZsYWcuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU2MjZk
NDlmODA3YTdiZWZlMTQyYzExYjM4MmExMGExYjhjYWFiMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnLmh0bWwK
QEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWN0aXZlLWZsYWcuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCAyZDhkY2U0
MDMwYWY5YTJhY2I0NDM2NzRlZWRlMzg5ZTM1MTg4MmI5Li43OTI3MDhlNzRkMGIyOTA3NjJmZTEy
ZTIyY2VlZWU0OWRkZGI3MWJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTE4Nyw3
ICsxODcsNyBAQCBQQVNTIGNvbXBsZXRlIGV2ZW50IGZpcmVkCiBkYi50cmFuc2FjdGlvbihbJ3N0
b3JlTmFtZSddKQogc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykK
IFBBU1Mgc3RvcmUubmFtZSBpcyAic3RvcmVOYW1lIgotUEFTUyBhYm9ydCBldmVudCBmaXJlZAor
UEFTUyBjb21wbGV0ZSBldmVudCBmaXJlZAogCiBWZXJpZnlpbmcgRE9NU3RyaW5nTGlzdCB3b3Jr
cyBhcyBhcmd1bWVudCBmb3IgSURCRGF0YWJhc2UudHJhbnNhY3Rpb24oKQogZGIub2JqZWN0U3Rv
cmVOYW1lcyBpcyBbb2JqZWN0IERPTVN0cmluZ0xpc3RdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lv
bi1jcm9zcy1mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhlMjcxNTlkYjkxZTk0NWEyMmRkYjFlYzQwNzgxNTg4MmIy
YmQ5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDIyIEBACitUZXN0IHRoYXQgcGVuZGluZyB0cmFuc2FjdGlvbnMgYXJl
IG5vdCBjb21wbGV0ZWQgZHVyaW5nIHJlY3Vyc2l2ZSBKUyBjYWxscyB1bnRpbCBhbGwgSlMgKGlu
IGFsbCBmcmFtZXMpIGlzIGZpbmlzaGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwg
c2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7
CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgndHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1q
cy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUnKQoraW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWNv
bXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lJykKK2RiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdAorZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKQorcGVuZGluZ1RyYW5zYWN0aW9u
ID0gZGIudHJhbnNhY3Rpb24oWydvYmplY3RTdG9yZSddLCAncmVhZHdyaXRlJykKK1N0YXJ0IHJl
LWVudHJhbnQgSlMKK3RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydvYmplY3RTdG9yZSdd
LCAncmVhZHdyaXRlJykKK0VuZCByZS1lbnRyYW50IEpTCitzdG9yZSA9IHBlbmRpbmdUcmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnb2JqZWN0U3RvcmUnKQorUEFTUyBzdG9yZSAhPT0gdW5kZWZpbmVk
IGlzIHRydWUKK1BlbmRpbmcgdHJhbnNhY3Rpb24gY29tcGxldGVkCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNp
b24tY3Jvc3MtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5z
YWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2FlYTczNTI5NmJjMzMyZTVhY2VkMzU3OTIxZDBkNzBmY2ZjMzFlZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBs
ZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLmh0bWwKQEAgLTAsMCArMSw3NiBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWU+CisgICAgPGJvZHk+CisgICAgPC9i
b2R5PgorPC9pZnJhbWU+Cis8c2NyaXB0PgorCit2YXIgdHJhbnNhY3Rpb247Cit2YXIgc3RvcmU7
Cit2YXIgZGI7Cit2YXIgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJh
bWUiKVswXS5jb250ZW50RG9jdW1lbnQuYm9keTsKKworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBw
ZW5kaW5nIHRyYW5zYWN0aW9ucyBhcmUgbm90IGNvbXBsZXRlZCBkdXJpbmcgcmVjdXJzaXZlIEpT
IGNhbGxzIHVudGlsIGFsbCBKUyAoaW4gYWxsIGZyYW1lcykgaXMgZmluaXNoZWQuIik7CisKK2Z1
bmN0aW9uIHNldHVwKCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgndHJhbnNhY3Rpb24tY29t
cGxldGUtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUnKSIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKCkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lJyki
KTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOworICAgICAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9OworfQorCitmdW5j
dGlvbiBzZXRWZXJzaW9uKCkgeworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25l
dyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpIHsKKyAgICBzdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdvYmplY3RTdG9yZScsIG51bGwpOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25j
b21wbGV0ZSA9IGNsaWNrOworfQorCitmdW5jdGlvbiBjbGljaygpIHsKKyAgICBib2R5Lm9uY2xp
Y2sgPSB0ZXN0OworICAgIHZhciBwZW5kaW5nVHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJwZW5k
aW5nVHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3Jp
dGUnKSIpOworICAgIHBlbmRpbmdUcmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcGVuZGluZ1RyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjazsKKyAgICBwZW5kaW5nVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGNvbXBsZXRl
Q2FsbGJhY2s7CisgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZl
bnQiKTsKKyAgICBldmVudC5pbml0TW91c2VFdmVudCgiY2xpY2siLCB0cnVlLCB0cnVlLCBkb2N1
bWVudC5kZWZhdWx0VmlldywgMCwgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIDAsIG51bGwpOworICAgIGJvZHkuZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgdmFyIHN0
b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBwZW5kaW5nVHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J29iamVjdFN0b3JlJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9PSB1bmRlZmluZWQi
KTsKKyAgICBib2R5Lm9uY2xpY2sgPSB1bmRlZmluZWQ7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIGRlYnVnKCJTdGFydCByZS1lbnRyYW50IEpTIik7CisgICAgdHJhbnNhY3Rpb24gPSBl
dmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnb2JqZWN0U3RvcmUnXSwg
J3JlYWR3cml0ZScpIik7CisgICAgZGVidWcoIkVuZCByZS1lbnRyYW50IEpTIik7Cit9CisKKwor
ZnVuY3Rpb24gY29tcGxldGVDYWxsYmFjaygpCit7CisgICAgZGVidWcoIlBlbmRpbmcgdHJhbnNh
Y3Rpb24gY29tcGxldGVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3NldHVwKCk7CisK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vy
c2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDM4MzA1NmE0M2E1YWZiODMzNzVjZTViZTgyYWNhY2RiMWNmYmEzZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdp
dGgtanMtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIyIEBACitUZXN0IHRoYXQg
cGVuZGluZyB0cmFuc2FjdGlvbnMgYXJlIG5vdCBjb21wbGV0ZWQgZHVyaW5nIHJlY3Vyc2l2ZSBK
UyBjYWxscyB1bnRpbCBhbGwgSlMgaXMgZmluaXNoZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4
ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0lu
ZGV4ZWREQjsKKworaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCd0cmFuc2FjdGlvbi1jb21wbGV0
ZS13aXRoLWpzLXJlY3Vyc2lvbicpCitpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tY29tcGxl
dGUtd2l0aC1qcy1yZWN1cnNpb24nKQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitkYi5zZXRW
ZXJzaW9uKCduZXcgdmVyc2lvbicpCitwZW5kaW5nVHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlv
bihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKQorU3RhcnQgcmUtZW50cmFudCBKUwordHJh
bnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKQor
RW5kIHJlLWVudHJhbnQgSlMKK3N0b3JlID0gcGVuZGluZ1RyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCdvYmplY3RTdG9yZScpCitQQVNTIHN0b3JlICE9PSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyBQ
ZW5kaW5nIHRyYW5zYWN0aW9uIGNvbXBsZXRlZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpz
LXJlY3Vyc2lvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjYzJiZmJhNmVkNTAyNTNiMGE0MTc5OGRjMWI4
NDRkOTQwNjdkZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi5odG1sCkBAIC0wLDAg
KzEsNzUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorCit2YXIgdHJh
bnNhY3Rpb247Cit2YXIgc3RvcmU7Cit2YXIgZGI7Cit2YXIgYm9keSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgcGVu
ZGluZyB0cmFuc2FjdGlvbnMgYXJlIG5vdCBjb21wbGV0ZWQgZHVyaW5nIHJlY3Vyc2l2ZSBKUyBj
YWxscyB1bnRpbCBhbGwgSlMgaXMgZmluaXNoZWQuIik7CisKK2Z1bmN0aW9uIHNldHVwKCkgewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCd0cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJl
Y3Vyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tY29tcGxldGUtd2l0
aC1qcy1yZWN1cnNpb24nKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNp
b247CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIH07Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKSB7CisgICAgZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
ZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
c2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBzdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScsIG51bGwpOworICAgIGV2ZW50
LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IGNsaWNrOworfQorCitmdW5jdGlvbiBjbGljaygp
IAoreworICAgIGJvZHkub25jbGljayA9IHRlc3Q7CisgICAgdmFyIHBlbmRpbmdUcmFuc2FjdGlv
biA9IGV2YWxBbmRMb2coInBlbmRpbmdUcmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnb2Jq
ZWN0U3RvcmUnXSwgJ3JlYWR3cml0ZScpIik7CisgICAgcGVuZGluZ1RyYW5zYWN0aW9uLm9uc3Vj
Y2VzcyA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHBlbmRpbmdUcmFuc2FjdGlvbi5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcGVuZGluZ1RyYW5zYWN0aW9u
Lm9uY29tcGxldGUgPSBjb21wbGV0ZUNhbGxiYWNrOworICAgIHZhciBldmVudCA9IGRvY3VtZW50
LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50Iik7CisgICAgZXZlbnQuaW5pdE1vdXNlRXZlbnQoImNs
aWNrIiwgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVsdFZpZXcsIDAsIDAsIDAsIDAsIDAsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCBudWxsKTsKKyAgICBib2R5LmRpc3BhdGNoRXZl
bnQoZXZlbnQpOworICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gcGVuZGluZ1Ry
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScpIik7CisgICAgc2hvdWxkQmVUcnVl
KCJzdG9yZSAhPT0gdW5kZWZpbmVkIik7CisgICAgYm9keS5vbmNsaWNrID0gdW5kZWZpbmVkOwor
fQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBkZWJ1ZygiU3RhcnQgcmUtZW50cmFudCBKUyIp
OworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKSIpOworICAgIGRlYnVnKCJFbmQgcmUt
ZW50cmFudCBKUyIpOworfQorCisKK2Z1bmN0aW9uIGNvbXBsZXRlQ2FsbGJhY2soKQoreworICAg
IHRlc3RQYXNzZWQoIlBlbmRpbmcgdHJhbnNhY3Rpb24gY29tcGxldGVkIik7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK3NldHVwKCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1jb21wbGV0ZS13b3JrZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdvcmtlcnMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY0M2Q5ZjhmNDU1MmY4NDkzYWFiZTA0NjBkZTc1MTIwODk2OTg1YWEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21w
bGV0ZS13b3JrZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDg0IEBACitbV29ya2VyXSBUZXN0
IEluZGV4ZWREQiB3b3JrZXJzLCByZWN1cnNpb24sIGFuZCB0cmFuc2FjdGlvbiB0ZXJtaW5hdGlv
bi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1N0YXJ0aW5nIHdvcmtlcjogcmVz
b3VyY2VzL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdvcmtlcnMuanMKK1tXb3JrZXJdIGluZGV4ZWRE
QiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5k
ZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworW1dvcmtlcl0g
CitbV29ya2VyXSByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWNvbXBsZXRl
LXdvcmtlcicpCitbV29ya2VyXSBkYiA9IHJlcXVlc3QucmVzdWx0CitbV29ya2VyXSByZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbignMScpCitbV29ya2VyXSBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVz
LgorW1dvcmtlcl0gdHJhbnMgPSByZXF1ZXN0LnJlc3VsdAorW1dvcmtlcl0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlJykKK1tXb3JrZXJdIAorW1dvcmtlcl0gY3JlYXRlVHJhbnNhY3Rpb24o
KToKK1tXb3JrZXJdIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykKK1tXb3Jr
ZXJdIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK1BBU1MgW1dvcmtl
cl0gVHJhbnNhY3Rpb24gY29tcGxldGVkCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZy
b20gc3RvcmUuZ2V0KDApCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFT
UyBbV29ya2VyXSBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUgorUEFTUyBbV29ya2VyXSBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9y
JworW1dvcmtlcl0gCitbV29ya2VyXSByZWN1cnNpb25UZXN0KCk6CitbV29ya2VyXSB0cmFuc2Fj
dGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpCitbV29ya2VyXSBzdG9yZSA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpCitbV29ya2VyXSBzdG9yZS5nZXQoMCkKK1BBU1MgW1dv
cmtlcl0gdHJhbnNhY3Rpb24gaXMgYWN0aXZlCitbV29ya2VyXSByZWN1cnNpb24gZGVwdGg6IDEK
K1tXb3JrZXJdIHN0b3JlLmdldCgwKQorUEFTUyBbV29ya2VyXSB0cmFuc2FjdGlvbiBpcyBzdGls
bCBhY3RpdmUKK1tXb3JrZXJdIHJlY3Vyc2lvbiBkZXB0aDogMgorW1dvcmtlcl0gc3RvcmUuZ2V0
KDApCitQQVNTIFtXb3JrZXJdIHRyYW5zYWN0aW9uIGlzIHN0aWxsIGFjdGl2ZQorW1dvcmtlcl0g
cmVjdXJzaW9uIGRlcHRoOiAzCitbV29ya2VyXSBzdG9yZS5nZXQoMCkKK1BBU1MgW1dvcmtlcl0g
dHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZlCitbV29ya2VyXSByZWN1cnNpb24gZGVwdGg6IDMK
K1tXb3JrZXJdIHN0b3JlLmdldCgwKQorUEFTUyBbV29ya2VyXSB0cmFuc2FjdGlvbiBpcyBzdGls
bCBhY3RpdmUKK1tXb3JrZXJdIHJlY3Vyc2lvbiBkZXB0aDogMgorW1dvcmtlcl0gc3RvcmUuZ2V0
KDApCitQQVNTIFtXb3JrZXJdIHRyYW5zYWN0aW9uIGlzIHN0aWxsIGFjdGl2ZQorW1dvcmtlcl0g
cmVjdXJzaW9uIGRlcHRoOiAxCitbV29ya2VyXSBzdG9yZS5nZXQoMCkKK1BBU1MgW1dvcmtlcl0g
dHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZlCitQQVNTIFtXb3JrZXJdIHRyYW5zYWN0aW9uIGNv
bXBsZXRlZAorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmdldCgwKQor
UEFTUyBbV29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBp
cyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgW1dv
cmtlcl0gZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK1tXb3JrZXJdIAorW1dv
cmtlcl0gdHJ5aW5nIGEgdGltZW91dCBjYWxsYmFjazoKK1tXb3JrZXJdIHNldFRpbWVvdXQodGlt
ZW91dFRlc3QsIDApCitbV29ya2VyXSAKK1tXb3JrZXJdIHRpbWVvdXRUZXN0KCk6CitbV29ya2Vy
XSB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpCitbV29ya2VyXSBzdG9yZSA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpCitQQVNTIFtXb3JrZXJdIHRyYW5zYWN0
aW9uIHN0YXJ0ZWQgaW4gc2V0VGltZW91dCgpIGNhbGxiYWNrIGNvbXBsZXRlZAorW1dvcmtlcl0g
RXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmdldCgwKQorUEFTUyBbV29ya2VyXSBFeGNl
cHRpb24gd2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyBJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgW1dvcmtlcl0gZW5hbWUgaXMgJ1Ry
YW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK1tXb3JrZXJdIAorW1dvcmtlcl0gZXJyb3JUZXN0KCk6
CitbV29ya2VyXSBzZWxmLm9sZF9vbmVycm9yID0gc2VsZi5vbmVycm9yCitbV29ya2VyXSBzZWxm
Lm9uZXJyb3IgPSBlcnJvckhhbmRsZXIKK1tXb3JrZXJdIAorW1dvcmtlcl0gZXJyb3JIYW5kbGVy
KCk6CitbV29ya2VyXSBzZWxmLm9uZXJyb3IgPSBzZWxmLm9sZF9vbmVycm9yCitbV29ya2VyXSB0
cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpCitbV29ya2VyXSBzdG9yZSA9IHRy
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpCitHb3QgZXhwZWN0ZWQgZXJyb3IgZnJvbSB3
b3JrZXIsIGlnbm9yaW5nCitldmVudC5wcmV2ZW50RGVmYXVsdCgpCitQQVNTIFtXb3JrZXJdIFRy
YW5zYWN0aW9uIGNvbXBsZXRlZAorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0
b3JlLmdldCgwKQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgW1dv
cmtlcl0gY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9F
UlIKK1BBU1MgW1dvcmtlcl0gZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13
b3JrZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1j
b21wbGV0ZS13b3JrZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNlY2YxYWRkMWJkM2RjNzk2YTFkMTdh
NzA3NDA0MmNlZTI2ZTFlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdvcmtlcnMuaHRtbApAQCAtMCwwICsxLDI5
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKwordmFyIHdvcmtlciA9
IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvdHJhbnNhY3Rpb24tY29tcGxldGUtd29ya2Vycy5qcycp
OworCisvLyBGSVhNRTogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIGZvciB0aGUgd29ya2VyIHRvIHNl
dCBzZWxmLm9uZXJyb3IgdG8gY2F0Y2ggdGhlIGV2ZW50CisvLyBhbmQgY2FsbCBldmVudC5wcmV2
ZW50RGVmYXVsdCgpLCBidXQgaW4gdGhlIGN1cnJlbnQgV29ya2VyIGltcGxlbWVudGF0aW9uIHRo
ZSByYXcKKy8vIGV4Y2VwdGlvbiBpcyBzZWVuIGJ5IHRoZSBldmVudCBoYW5kbGVyIGluIHRoZSB3
b3JrZXIsIG5vdCBhbiBFcnJvckV2ZW50IG9iamVjdC4KKwordmFyIG9yaWdfb25lcnJvciA9IHdv
cmtlci5vbmVycm9yOword29ya2VyLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICBp
ZiAoZXZlbnQubWVzc2FnZSA9PT0gIlVuY2F1Z2h0IEVycm9yOiBpZ25vcmUgdGhpcyIpIHsKKyAg
ICAgICAgZGVidWcoIkdvdCBleHBlY3RlZCBlcnJvciBmcm9tIHdvcmtlciwgaWdub3JpbmciKTsK
KyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOworICAgIH0gZWxz
ZSBpZiAob3JpZ19vbmVycm9yKSB7CisgICAgICAgIG9yaWdfb25lcnJvcihldmVudCk7CisgICAg
fQorfTsKKworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHV0b3JpYWwuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3R1dG9yaWFsLmh0bWwKaW5kZXggYjkzNWVlNTQ3MTdkY2Ix
NmVmNzU4NDgyZTFmZGQ5MDFmN2ZlZjE3OC4uMDI4OWE4NWQ2MGQzOGYwNDg2ZGVhZDM5ZWQ5MDli
MDU3OTBiN2VmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHV0
b3JpYWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90dXRvcmlhbC5o
dG1sCkBAIC04MiwxMSArODIsOCBAQCBmdW5jdGlvbiB1bmV4cGVjdGVkRXJyb3IoKQogICAgIC8v
IHRoZSBjb3JyZWN0IHZhbHVlcy4KICAgICBsb2dFcnJvcigiRXJyb3IgIiArIGV2ZW50LmNvZGUg
KyAiOiAiICsgZXZlbnQubWVzc2FnZSk7CiAKLSAgICAvLyBVbmZvcnR1bmF0ZWx5LCBDaHJvbWl1
bS9XZWJLaXQgZG8gbm90IGltcGxpY2l0bHkgYWJvcnQgYSB0cmFuc2FjdGlvbiB3aGVuIGFuIGVy
cm9yIG9jY3VycwotICAgIC8vIHdpdGhpbiBvbmUgb2YgaXRzIGFzeW5jIG9wZXJhdGlvbnMuIElu
IHRoZSBmdXR1cmUsIHdoZW4gYW4gZXJyb3Igb2NjdXJzIGFuZCB0aGUgZXZlbnQgaXMKLSAgICAv
LyBub3QgY2FuY2VsZWQsIHRoZSB0cmFuc2FjdGlvbiB3aWxsIGJlIGFib3J0ZWQuCi0gICAgaWYg
KGN1cnJlbnRUcmFuc2FjdGlvbikKLSAgICAgICAgY3VycmVudFRyYW5zYWN0aW9uLmFib3J0KCk7
CisgICAgLy8gSWYgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIGVycm9yIGlzIG5vdCBwcmV2
ZW50ZWQsIHRoZSB0cmFuc2FjdGlvbiB3aWxsIGltcGxpY2l0bHkKKyAgICAvLyBiZSBhYm9ydGVk
LgogfQogCiBmdW5jdGlvbiBvbk9wZW4oKQpAQCAtMjE5LDggKzIxNiw4IEBAIGZ1bmN0aW9uIG9u
U2V0VmVyc2lvbkNvbXBsZXRlKCkKICAgICAvLyBUaGF0J3MgZmluZSBmb3IgdGhpcyBjYXNlLCBi
dXQgbGF0ZXIgd2UnbGwgYXNrIGZvciAncmVhZHdyaXRlJy4gQXQgdGhlIG1vbWVudCwKICAgICAv
LyBDaHJvbWl1bS9XZWJLaXQgcHJldGVuZHMgZXZlcnkgdHJhbnNhY3Rpb24gaXMgUkVBRF9XUklU
RSwgd2hpY2ggaXMga2luZCBvZiBiYWQuCiAgICAgd2luZG93LmN1cnJlbnRUcmFuc2FjdGlvbiA9
IGRiLnRyYW5zYWN0aW9uKCJwZW9wbGUiLCAncmVhZHdyaXRlJyk7Ci0gICAgY3VycmVudFRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGU7Ci0gICAgY3VycmVudFRyYW5z
YWN0aW9uLm9uYWJvcnQgPSBvblRyYW5zYWN0aW9uQWJvcnRlZDsKKyAgICBjdXJyZW50VHJhbnNh
Y3Rpb24ub25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21wbGV0ZWQ7CisgICAgY3VycmVudFRy
YW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnQ7CiAKICAgICAvLyBWZXJpZnkgdGhh
dCAicGVvcGxlIiBpcyB0aGUgb25seSBvYmplY3Qgc3RvcmUgaW4gZXhpc3RhbmNlLiBUaGUgb2Jq
ZWN0U3RvcmVOYW1lcyBhdHRyaWJ1dGUgaXMKICAgICAvLyBhIERPTVN0cmluZ0xpc3Qgd2hpY2gg
aXMgc29tZXdoYXQgbGlrZSBhbiBhcnJheS4KQEAgLTI1NCwxNiArMjUxLDExIEBAIGZ1bmN0aW9u
IG9uU2V0VmVyc2lvbkNvbXBsZXRlKCkKICAgICBpZiAob2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5s
ZW5ndGggIT0gMikKICAgICAgICAgbG9nRXJyb3IoIlNvbWV0aGluZyB3ZW50IHdyb25nLiIpOwog
Ci0gICAgLy8gTm90ZSB0aGF0IG5vIGFzeW5jIGFjdGlvbnMgd2VyZSBldmVyIHF1ZXVlZCB1cCBh
Z2lhbnN0IG91ciB0cmFuc2FjdGlvbiwgc28gaXQnbGwgYWJvcnQgb25jZQorICAgIC8vIE5vdGUg
dGhhdCBubyBhc3luYyBhY3Rpb25zIHdlcmUgZXZlciBxdWV1ZWQgdXAgYWdhaW5zdCBvdXIgdHJh
bnNhY3Rpb24uIEl0IHdpbGwgY29tbWl0IHdoZW4KICAgICAvLyB3ZSBsZWF2ZSB0aGlzIGNvbnRl
eHQuCiB9CiAKLWZ1bmN0aW9uIHVuZXhwZWN0ZWRDb21wbGV0ZSgpCi17Ci0gICAgbG9nRXJyb3Io
IkEgdHJhbnNhY3Rpb24gY29tbWl0dGVkIHVuZXhwZWN0ZWRseSEiKTsKLX0KLQotZnVuY3Rpb24g
b25UcmFuc2FjdGlvbkFib3J0ZWQoKQorZnVuY3Rpb24gb25UcmFuc2FjdGlvbkNvbXBsZXRlZCgp
CiB7CiAgICAgLy8gTm93IGxldCdzIG1ha2UgYSByZWFsIHRyYW5zYWN0aW9uIGFuZCBhIHBlcnNv
biB0byBvdXIgb2JqZWN0U3RvcmUuCiAgICAgd2luZG93LmN1cnJlbnRUcmFuc2FjdGlvbiA9IGRi
LnRyYW5zYWN0aW9uKCJwZW9wbGUiLCAncmVhZHdyaXRlJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149795</attachid>
            <date>2012-06-27 14:29:39 -0700</date>
            <delta_ts>2012-06-28 14:22:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89379-20120627142939.patch</filename>
            <type>text/plain</type>
            <size>86973</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjYwZDExOGVhOWM2NmRj
M2EyZWFhNmQxM2UwY2MxZDE2Y2YyNTdlZS4uNTdhNzg2MzRmN2VkYWYyZjdiMzIyOGFhYmNjMmNh
MTFhNzcyYWZmMCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTA2LTI2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBs
ZW1lbnQgSURCVHJhbnNhY3Rpb24gaW50ZXJuYWwgYWN0aXZlIGZsYWcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5Mzc5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSURCIHRyYW5zYWN0aW9ucyBzaG91bGQg
b25seSAiYWN0aXZlIiBkdXJpbmcgSURCIHN1Y2Nlc3MvZXJyb3IgY2FsbGJhY2tzOworICAgICAg
ICBhdHRlbXB0cyB0byBtYWtlIG5ldyByZXF1ZXN0cyBvdGhlcndpc2UgKGUuZy4gaW4gYSBzZXRU
aW1lb3V0IGNhbGxiYWNrKQorICAgICAgICBzaG91bGQgZmFpbCBldmVuIGlmIHRoZSB0cmFuc2Fj
dGlvbiBoYXMgbm90IHlldCBmaW5pc2hlZC4gSW1wbGVtZW50IHRoaXMgbG9naWMsCisgICAgICAg
IGFuZCB0aGUgY2xvc2VseSByZWxhdGVkIHJlcXVpcmVtZW50IHRoYXQgdHJhbnNhY3Rpb25zIGFy
ZSBkZWFjdGl2YXRlZCB3aGVuCisgICAgICAgIHRoZSBjb250ZXh0IHRoZXkgd2VyZSBjcmVhdGVk
IGluIHJldHVybnMgdG8gdGhlIGV2ZW50IGxvb3AsIGFuZCBmaW5hbGx5IHRoYXQKKyAgICAgICAg
d2hlbiBzbyBkZWFjdGl2YXRlZCB0aGV5IHNob3VsZCBjb21taXQgcmF0aGVyIHRoYW4gYWJvcnQg
KGFzIHByZXZpb3VzbHkKKyAgICAgICAgaW1wbGVtZW50ZWQuKQorCisgICAgICAgIFRlc3RzOiBz
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hY3RpdmUtZmxhZy5odG1sCisgICAgICAgICAg
ICAgICBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vy
c2lvbi1jcm9zcy1mcmFtZS5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi5odG1sCisgICAgICAgICAgICAg
ICBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13b3JrZXJzLmh0bWwKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3Iu
Y3BwOiBTaW1wbGlmeSBBUEkuCisgICAgICAgIChXZWJDb3JlOjp0cmFuc2FjdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6YWRkTmV3VHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6
ZGVhY3RpdmF0ZU5ld1RyYW5zYWN0aW9ucyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDogVW5yZWdpc3RlcnMgZnJvbSB0cmFuc2FjdGlvbiB3aGVu
IGRvbmUsCisgICAgICAgIG5vdCBvbiBkZXN0cnVjdGlvbi4gTm8gbG9uZ2VyIHJlc3BvbnNpYmxl
IGZvciB3b3JraW5nIHdpdGggdGhlIHBlbmRpbmcgbW9uaXRvci4KKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlcXVlc3Q6OklEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6
fklEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6bWFya0Vhcmx5RGVh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cmVzZXRSZWFkeVN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KTogU2V0IGFjdGl2ZSBmbGFnIG9uIHRyYW5zYWN0
aW9uIGR1cmluZyBjYWxsYmFjay4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHA6IFVzZSBzdGF0ZSBlbnVtIHRvIGJldHRlciB0cmFjayBsaWZlY3ljbGUsIGFu
ZAorICAgICAgICB0YWtlIG93bmVyc2hpcCBvZiByZWxhdGlvbnNoaXAgd2l0aCBwZW5kaW5nIG1v
bml0b3IuCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24p
OiBTcGVjaWFsIGNhc2VzIGZvciB2ZXJzaW9uIGNoYW5nZQorICAgICAgICB0cmFuc2FjdGlvbnMu
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6fklEQlRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjplcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6c2V0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpv
YmplY3RTdG9yZUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9i
amVjdFN0b3JlRGVsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c2V0
QWN0aXZlKTogTGV0IElEQlJlcXVlc3QgYW5kIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IK
KyAgICAgICAgdG9nZ2xlIHRoZSBhY3RpdmUgc3RhdGUuIE5lZWRzIHNvbWUgc21hcnRzIGJlY2F1
c2UgKDEpIHN0YXRlIG1heSBtb3ZlIHRvIEZpbmlzaGluZyBkdXJpbmcKKyAgICAgICAgdGhlIHJl
cXVlc3QncyBkaXNwYXRjaCBwaGFzZSBkdWUgdG8gYW4gaW1wbGljaXQvZXhwbGljaXQgYWJvcnQs
IGFuZCAoMikgYSBtb25pdG9yIGNhbGwKKyAgICAgICAgd2lsbCBvbmx5IHRyaWdnZXIgYSBjb21t
aXQgaWYgdGhlIHRyYW5zYWN0aW9uIGhhc24ndCBoYWQgYW55IHJlcXVlc3RzIGZpbGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6YWJvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlZ2lzdGVyUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6dW5yZWdpc3RlclJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9uQWJvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246Om9uQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6Y2FuU3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZW5xdWV1
ZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmlzRmluaXNoZWQpOgorICAgICAgICAo
SURCVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbDo6Y29tbWl0KTogQWxsb3cgZXhwbGljaXQgY29tbWl0KCkgY2FsbHMgZnJvbSB0aGUg
ZnJvbnQgZW5kCisgICAgICAgIGlmIG5vIHJlcXVlc3RzIGhhdmUgYmVlbiBmaWxlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaDoK
KyAgICAgICAgKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSk6IEV4cG9zZSBjb21taXQo
KSBtZXRob2QuCisgICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6ZGlkTGVhdmVTY3Jp
cHRDb250ZXh0KTogQ2hhbmdlIHRhcmdldCBmdW5jdGlvbiBuYW1lLgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhSZWN1cnNp
b25TY29wZTo6ZGlkTGVhdmVTY3JpcHRDb250ZXh0KTogQ2hhbmdlIHRhcmdldCBmdW5jdGlvbiBu
YW1lLgorCiAyMDEyLTA2LTI3ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gQWxsb3cgc2NyZWVuIHNwYWNlIHJlY3RzIGFuZCBvY2NsdWRp
bmcgcmVjdHMgdG8gYmUgdmlzdWFsaXplZCBmb3IgZGVidWdnaW5nLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCA4MTdkMmE5MThhM2NmYWU2OTMwYjVhY2U1YzY4YTNkMDIyOWQ4N2I3Li43
MWRkZjQ1ODMyN2FjNWQ1ZGQyNGI0ZjVlNjk3MGY5MTZhZDdjZTNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA2LTI2ICBKb3NodWEgQmVsbCAgPGpz
YmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBsZW1lbnQgSURCVHJh
bnNhY3Rpb24gaW50ZXJuYWwgYWN0aXZlIGZsYWcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg5Mzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVG8gbWF0Y2ggdGhlIElEQiBzcGVjLCB0cmFuc2FjdGlvbnMg
dGhhdCBoYXZlIGhhZCBubyByZXF1ZXN0cworICAgICAgICBmaWxlZCBhZ2FpbnN0IHRoZW0gc2hv
dWxkIGNvbW1pdCwgbm90IGFib3J0LiBUaGlzIHJlcXVpcmVzIHBsdW1iaW5nCisgICAgICAgIHRo
cm91Z2ggdGhlIGNvbW1pdCgpIGNhbGwgZnJvbSBmcm9udC1lbmQgdG8gYmFjay1lbmQuCisKKyAg
ICAgICAgKiBzcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6Y29tbWl0KToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Lmg6CisgICAgICAg
IChJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL1dlYklEQlRyYW5z
YWN0aW9uSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uSW1wbDo6
Y29tbWl0KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYklEQlRyYW5zYWN0
aW9uSW1wbC5oOgorCiAyMDEyLTA2LTI3ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBJbmRleGVkREI6IEV4cG9zZSBXZWJJREJUcmFuc2Fj
dGlvbjo6Y29tbWl0KCkgbWV0aG9kIGluIHB1YmxpYyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ1RyYW5zYWN0aW9u
TW9uaXRvci5jcHAKaW5kZXggMmM1YWM1YTJiM2FkYTkxMzhkMmZiNDViNWUzMGNlZmM1NTA4MWY1
Zi4uNTUzYWYzZjIxMTQxMjFhMDU2NDA2NDQ0YjI2YzQyZDVlMDQ5OWIxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9u
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGlu
Z1RyYW5zYWN0aW9uTW9uaXRvci5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCIKLSNpbmNs
dWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJUcmFu
c2FjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgogCiB1c2luZyBXVEY6
OlRocmVhZFNwZWNpZmljOwpAQCAtMzQsMzYgKzM0LDI5IEBAIHVzaW5nIFdURjo6VGhyZWFkU3Bl
Y2lmaWM7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFRocmVhZFNwZWNpZmljPFZl
Y3RvcjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqPiA+JiB0cmFuc2FjdGlvbnMoKQor
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPElEQlRyYW5zYWN0aW9uPiA+IFRyYW5zYWN0aW9uTGlzdDsK
K3N0YXRpYyBUaHJlYWRTcGVjaWZpYzxUcmFuc2FjdGlvbkxpc3Q+JiB0cmFuc2FjdGlvbnMoKQog
ewogICAgIC8vIEZJWE1FOiBNb3ZlIHRoZSBWZWN0b3IgdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCB0byBhdm9pZCBkZWFsaW5nIHdpdGgKICAgICAvLyB0aHJlYWQtbG9jYWwgc3RvcmFnZS4KLSAg
ICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoVGhyZWFkU3BlY2lmaWM8VmVjdG9yPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSo+ID4qLCB0cmFuc2FjdGlvbnMgPSBuZXcgVGhyZWFk
U3BlY2lmaWM8VmVjdG9yPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSo+ID4pOworICAg
IEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhUaHJlYWRTcGVjaWZpYzxUcmFuc2FjdGlvbkxp
c3Q+KiwgdHJhbnNhY3Rpb25zID0gbmV3IFRocmVhZFNwZWNpZmljPFRyYW5zYWN0aW9uTGlzdD4p
OwogICAgIHJldHVybiAqdHJhbnNhY3Rpb25zOwogfQogCi12b2lkIElEQlBlbmRpbmdUcmFuc2Fj
dGlvbk1vbml0b3I6OmFkZFBlbmRpbmdUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uKQordm9pZCBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9y
OjphZGROZXdUcmFuc2FjdGlvbihQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlv
bikKIHsKICAgICB0cmFuc2FjdGlvbnMoKS0+YXBwZW5kKHRyYW5zYWN0aW9uKTsKIH0KIAotdm9p
ZCBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yOjpyZW1vdmVQZW5kaW5nVHJhbnNhY3Rpb24o
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKK3ZvaWQgSURCUGVu
ZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6ZGVhY3RpdmF0ZU5ld1RyYW5zYWN0aW9ucygpCiB7Ci0g
ICAgVGhyZWFkU3BlY2lmaWM8VmVjdG9yPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSo+
ID4mIHRyYW5zYWN0aW9uTGlzdCA9IHRyYW5zYWN0aW9ucygpOwotICAgIHNpemVfdCBwb3MgPSB0
cmFuc2FjdGlvbkxpc3QtPmZpbmQodHJhbnNhY3Rpb24pOwotICAgIGlmIChwb3MgPT0gbm90Rm91
bmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHRyYW5zYWN0aW9uTGlzdC0+cmVtb3ZlKHBvcyk7
Ci19Ci0KLXZvaWQgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6YWJvcnRQZW5kaW5nVHJh
bnNhY3Rpb25zKCkKLXsKLSAgICBUaHJlYWRTcGVjaWZpYzxWZWN0b3I8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKj4gPiYgdHJhbnNhY3Rpb25MaXN0ID0gdHJhbnNhY3Rpb25zKCk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2FjdGlvbnMoKS0+c2l6ZSgpOyArK2kpCi0g
ICAgICAgIHRyYW5zYWN0aW9uTGlzdC0+YXQoaSktPmFib3J0KCk7CisgICAgVGhyZWFkU3BlY2lm
aWM8VHJhbnNhY3Rpb25MaXN0PiYgbGlzdCA9IHRyYW5zYWN0aW9ucygpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGlzdC0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IGxpc3QtPmF0KGkpOworICAgICAgICB0cmFuc2FjdGlv
bi0+c2V0QWN0aXZlKGZhbHNlKTsKKyAgICB9CiAgICAgLy8gRklYTUU6IEV4ZXJjaXNlIHRoaXMg
Y2FsbCB0byBjbGVhcigpIGluIGEgbGF5b3V0IHRlc3QuCi0gICAgdHJhbnNhY3Rpb25MaXN0LT5j
bGVhcigpOworICAgIGxpc3QtPmNsZWFyKCk7CiB9CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5nVHJhbnNhY3Rpb25N
b25pdG9yLmgKaW5kZXggMTI4YjU1MTMzNGJkMzg5Yzg4YTUwYzA5ZGVkMzIyYzE0ZmE4M2NmZS4u
ZmVmNTVmZTNjMmY1MzIwZDlhYWUwN2M4Mjg3ODQxYjQzMmY1MGIwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlBlbmRpbmdUcmFu
c2FjdGlvbk1vbml0b3IuaApAQCAtMzMsMjAgKzMzLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOworY2xhc3MgSURCVHJh
bnNhY3Rpb247CiAKIC8vIFRoaXMgY2xhc3Mga2VlcHMgdHJhY2sgb2YgdGhlIHRyYW5zYWN0aW9u
cyBjcmVhdGVkIGR1cmluZyB0aGUgY3VycmVudAotLy8gSmF2YXNjcmlwdCBleGVjdXRpb24gY29u
dGV4dC4gQSB0cmFuc2FjdGlvbiBpcyAncGVuZGluZycgaWYgbm8gYXN5bmNocm9ub3VzCi0vLyBv
cGVyYXRpb24gaXMgY3VycmVudGx5IHF1ZXVlZCBmb3IgaXQgKGUuZy4gYW4gSURCT2JqZWN0U3Rv
cmU6OnB1dCgpIG9yIHNpbWlsYXIpLgotLy8gQWxsIHBlbmRpbmcgdHJhbnNhY3Rpb25zIGFyZSBh
Ym9ydGVkIGFzIHNvb24gYXMgZXhlY3V0aW9uIHJldHVybnMgZnJvbQotLy8gdGhlIHNjcmlwdCBl
bmdpbmUuCisvLyBKYXZhc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LiBUcmFuc2FjdGlvbnMgaGF2
ZSBhbiBpbnRlcm5hbCB8YWN0aXZlfCBmbGFnCisvLyB3aGljaCBpcyBzZXQgdG8gdHJ1ZSBvbiBj
cmVhdGlvbiwgYnV0IG11c3QgYmUgc2V0IHRvIGZhbHNlIHdoZW4gY29udHJvbAorLy8gcmV0dXJu
cyB0byB0aGUgZXZlbnQgbG9vcC4KIAogY2xhc3MgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRv
ciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRv
cik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYWRkUGVuZGluZ1RyYW5zYWN0aW9uKElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwotICAgIHN0YXRpYyB2b2lkIHJlbW92ZVBlbmRp
bmdUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKLSAgICBzdGF0
aWMgdm9pZCBhYm9ydFBlbmRpbmdUcmFuc2FjdGlvbnMoKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRO
ZXdUcmFuc2FjdGlvbihQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPik7CisgICAgc3RhdGljIHZv
aWQgZGVhY3RpdmF0ZU5ld1RyYW5zYWN0aW9ucygpOwogCiBwcml2YXRlOgogICAgIElEQlBlbmRp
bmdUcmFuc2FjdGlvbk1vbml0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggNzY2MjE1YmI5YzAwNWRhZTlhM2IwMTdmNWJlOTdi
NzJiOTMyZGExNC4uN2I5NWEyODIwM2NkZTQ0MGU5OTcwNDkyOTM3OGY1ZDQ1YWMwY2I0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAg
LTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJJREJDdXJzb3JXaXRoVmFsdWUuaCIKICNpbmNsdWRl
ICJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIklEQkV2ZW50RGlzcGF0Y2hlci5oIgotI2luY2x1
ZGUgIklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCIKICNpbmNsdWRlICJJREJUcmFjaW5n
LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKIApAQCAtNjUsMTUgKzY0LDEyIEBAIElE
QlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxJREJBbnk+IHNvdXJjCiB7CiAgICAgaWYgKG1fdHJhbnNhY3Rpb24pIHsKICAgICAg
ICAgbV90cmFuc2FjdGlvbi0+cmVnaXN0ZXJSZXF1ZXN0KHRoaXMpOwotICAgICAgICBJREJQZW5k
aW5nVHJhbnNhY3Rpb25Nb25pdG9yOjpyZW1vdmVQZW5kaW5nVHJhbnNhY3Rpb24obV90cmFuc2Fj
dGlvbi0+YmFja2VuZCgpKTsKICAgICB9CiB9CiAKIElEQlJlcXVlc3Q6On5JREJSZXF1ZXN0KCkK
IHsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IERPTkUgfHwgbV9yZWFkeVN0YXRlID09IEVh
cmx5RGVhdGggfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgaWYgKG1fdHJhbnNh
Y3Rpb24pCi0gICAgICAgIG1fdHJhbnNhY3Rpb24tPnVucmVnaXN0ZXJSZXF1ZXN0KHRoaXMpOwog
fQogCiBQYXNzUmVmUHRyPElEQkFueT4gSURCUmVxdWVzdDo6cmVzdWx0KEV4Y2VwdGlvbkNvZGUm
IGVjKSBjb25zdApAQCAtMTM4LDYgKzEzNCw4IEBAIHZvaWQgSURCUmVxdWVzdDo6bWFya0Vhcmx5
RGVhdGgoKQogewogICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gUEVORElORyk7CiAgICAgbV9y
ZWFkeVN0YXRlID0gRWFybHlEZWF0aDsKKyAgICBpZiAobV90cmFuc2FjdGlvbikKKyAgICAgICAg
bV90cmFuc2FjdGlvbi0+dW5yZWdpc3RlclJlcXVlc3QodGhpcyk7CiB9CiAKIGJvb2wgSURCUmVx
dWVzdDo6cmVzZXRSZWFkeVN0YXRlKElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKQEAgLTE1
Myw4ICsxNTEsOCBAQCBib29sIElEQlJlcXVlc3Q6OnJlc2V0UmVhZHlTdGF0ZShJREJUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24pCiAgICAgbV9lcnJvckNvZGUgPSAwOwogICAgIG1fZXJyb3IuY2xl
YXIoKTsKICAgICBtX2Vycm9yTWVzc2FnZSA9IFN0cmluZygpOwotCi0gICAgSURCUGVuZGluZ1Ry
YW5zYWN0aW9uTW9uaXRvcjo6cmVtb3ZlUGVuZGluZ1RyYW5zYWN0aW9uKG1fdHJhbnNhY3Rpb24t
PmJhY2tlbmQoKSk7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24pOworICAgIG1fdHJhbnNhY3Rp
b24tPnJlZ2lzdGVyUmVxdWVzdCh0aGlzKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjg5
LDggKzI4Nyw2IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBwcnBCYWNrZW5kCiAgICAgQVNTRVJUKG1fc291cmNl
LT50eXBlKCkgPT0gSURCQW55OjpJREJEYXRhYmFzZVR5cGUpOwogICAgIEFTU0VSVChtX3RyYW5z
YWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7CiAKLSAgICBJREJQZW5kaW5nVHJhbnNhY3Rpb25N
b25pdG9yOjpyZW1vdmVQZW5kaW5nVHJhbnNhY3Rpb24obV90cmFuc2FjdGlvbi0+YmFja2VuZCgp
KTsKLQogICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoZnJvbnRlbmQucmVsZWFzZSgpKTsK
ICAgICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vzc0V2ZW50KCkpOwogfQpAQCAtMzg4LDcgKzM4
NCwxMyBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQpCiAKICAgICAvLyBGSVhNRTogV2hlbiB3ZSBhbGxvdyBjdXN0b20gZXZlbnQgZGlzcGF0
Y2hpbmcsIHRoaXMgd2lsbCBwcm9iYWJseSBuZWVkIHRvIGNoYW5nZS4KICAgICBBU1NFUlQoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50IHx8IGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVz
KCkuYmxvY2tlZEV2ZW50KTsKKyAgICBjb25zdCBib29sIHNldFRyYW5zYWN0aW9uQWN0aXZlID0g
bV90cmFuc2FjdGlvbiAmJiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2
ZW50IHx8IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50ICYmIG1fZXJy
b3JDb2RlICE9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CisKKyAgICBp
ZiAoc2V0VHJhbnNhY3Rpb25BY3RpdmUpCisgICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2
ZSh0cnVlKTsKICAgICBib29sIGRvbnRQcmV2ZW50RGVmYXVsdCA9IElEQkV2ZW50RGlzcGF0Y2hl
cjo6ZGlzcGF0Y2goZXZlbnQuZ2V0KCksIHRhcmdldHMpOworICAgIGlmIChzZXRUcmFuc2FjdGlv
bkFjdGl2ZSkKKyAgICAgICAgbV90cmFuc2FjdGlvbi0+c2V0QWN0aXZlKGZhbHNlKTsKIAogICAg
IC8vIElmIHRoZSByZXN1bHQgd2FzIG9mIHR5cGUgSURCQ3Vyc29yLCBvciBhIG9uQmxvY2tlZCBl
dmVudCwgdGhlbiB3ZSdsbCBmaXJlIGFnYWluLgogICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2
ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQgJiYgKCFjdXJzb3JUb05vdGlmeSB8fCBtX2N1cnNvckZp
bmlzaGVkKSkKQEAgLTQwNSw2ICs0MDcsMTAgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgICAgICB9CiAgICAgICAgIG1fdHJhbnNh
Y3Rpb24tPmJhY2tlbmQoKS0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CiAgICAgfQorCisgICAg
aWYgKG1fdHJhbnNhY3Rpb24gJiYgbV9yZWFkeVN0YXRlID09IERPTkUpCisgICAgICAgIG1fdHJh
bnNhY3Rpb24tPnVucmVnaXN0ZXJSZXF1ZXN0KHRoaXMpOworCiAgICAgcmV0dXJuIGRvbnRQcmV2
ZW50RGVmYXVsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDZhZDMwMDcyMzhlZjM2ZjY1OGY2YzIyYjVlYjlj
NmE3MzY3NzQ1YTUuLjVmMjQ5MjEyYmY1NTY5MmE5ZTQ2Y2VjN2M2MDdhZDZmODg3NGMxZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHAKQEAgLTg1LDE5ICs4NSwyOSBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcgogICAgICwg
bV9kYXRhYmFzZShkYikKICAgICAsIG1fbW9kZShtb2RlKQogICAgICwgbV9hY3RpdmUodHJ1ZSkK
LSAgICAsIG1fdHJhbnNhY3Rpb25GaW5pc2hlZChmYWxzZSkKKyAgICAsIG1fc3RhdGUoVW51c2Vk
KQogICAgICwgbV9jb250ZXh0U3RvcHBlZChmYWxzZSkKIHsKICAgICBBU1NFUlQobV9iYWNrZW5k
KTsKICAgICBBU1NFUlQobV9tb2RlID09IG1fYmFja2VuZC0+bW9kZSgpKTsKLSAgICBJREJQZW5k
aW5nVHJhbnNhY3Rpb25Nb25pdG9yOjphZGRQZW5kaW5nVHJhbnNhY3Rpb24obV9iYWNrZW5kLmdl
dCgpKTsKKworICAgIGlmIChtb2RlID09IFZFUlNJT05fQ0hBTkdFKSB7CisgICAgICAgIC8vIE5v
dCBhY3RpdmUgdW50aWwgdGhlIGNhbGxiYWNrLgorICAgICAgICBtX2FjdGl2ZSA9IGZhbHNlOwor
ICAgICAgICAvLyBJbXBsaWNpdGx5IHVzZWQgYnkgdGhlIHZlcnNpb24gY2hhbmdlIGl0c2VsZi4K
KyAgICAgICAgbV9zdGF0ZSA9IFVzZWQ7CisgICAgfQorCiAgICAgLy8gV2UgcGFzcyBhIHJlZmVy
ZW5jZSBvZiB0aGlzIG9iamVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhB
ZG9wdGlvblJlcXVpcmVtZW50KCk7CisgICAgaWYgKG1fYWN0aXZlKQorICAgICAgICBJREJQZW5k
aW5nVHJhbnNhY3Rpb25Nb25pdG9yOjphZGROZXdUcmFuc2FjdGlvbih0aGlzKTsKICAgICBtX2Rh
dGFiYXNlLT50cmFuc2FjdGlvbkNyZWF0ZWQodGhpcyk7CiB9CiAKIElEQlRyYW5zYWN0aW9uOjp+
SURCVHJhbnNhY3Rpb24oKQogeworICAgIEFTU0VSVChtX3N0YXRlID09IEZpbmlzaGVkKTsKIH0K
IAogSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiBJREJUcmFuc2FjdGlvbjo6YmFja2Vu
ZCgpIGNvbnN0CkBAIC0xMDUsMTEgKzExNSw2IEBAIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSogSURCVHJhbnNhY3Rpb246OmJhY2tlbmQoKSBjb25zdAogICAgIHJldHVybiBtX2JhY2tl
bmQuZ2V0KCk7CiB9CiAKLWJvb2wgSURCVHJhbnNhY3Rpb246OmlzRmluaXNoZWQoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3RyYW5zYWN0aW9uRmluaXNoZWQ7Ci19Ci0KIGNvbnN0IFN0cmluZyYg
SURCVHJhbnNhY3Rpb246Om1vZGUoKSBjb25zdAogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwpAQCAtMTI1LDcgKzEzMCw3IEBAIElEQkRhdGFiYXNlKiBJREJUcmFuc2FjdGlvbjo6ZGIoKSBj
b25zdAogCiBQYXNzUmVmUHRyPERPTUVycm9yPiBJREJUcmFuc2FjdGlvbjo6ZXJyb3IoRXhjZXB0
aW9uQ29kZSYgZWMpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQpIHsK
KyAgICBpZiAobV9zdGF0ZSAhPSBGaW5pc2hlZCkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KQEAgLTEzNCw3ICsxMzksNyBAQCBQYXNzUmVmUHRyPERPTUVycm9yPiBJREJUcmFuc2FjdGlv
bjo6ZXJyb3IoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246
OnNldEVycm9yKFBhc3NSZWZQdHI8RE9NRXJyb3I+IGVycm9yKQogewotICAgIEFTU0VSVCghbV90
cmFuc2FjdGlvbkZpbmlzaGVkKTsKKyAgICBBU1NFUlQobV9zdGF0ZSAhPSBGaW5pc2hlZCk7CiAg
ICAgQVNTRVJUKGVycm9yKTsKIAogICAgIC8vIFRoZSBmaXJzdCBlcnJvciB0byBiZSBzZXQgaXMg
dGhlIHRydWUgY2F1c2Ugb2YgdGhlCkBAIC0xNDUsNyArMTUwLDcgQEAgdm9pZCBJREJUcmFuc2Fj
dGlvbjo6c2V0RXJyb3IoUGFzc1JlZlB0cjxET01FcnJvcj4gZXJyb3IpCiAKIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmU+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChtX3RyYW5zYWN0aW9uRmluaXNo
ZWQpIHsKKyAgICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hlZCkgewogICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KQEAgLTE3MCw3ICsxNzUsNyBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJ
REJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcAogCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiBuYW1l
LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBwcnBPYmplY3RTdG9yZSkKIHsKLSAgICBBU1NF
UlQoIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7CisgICAgQVNTRVJUKG1fc3RhdGUgIT0gRmluaXNo
ZWQpOwogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBwcnBPYmplY3RT
dG9yZTsKICAgICBtX29iamVjdFN0b3JlTWFwLnNldChuYW1lLCBvYmplY3RTdG9yZSk7CiAgICAg
aWYgKGlzVmVyc2lvbkNoYW5nZSgpKQpAQCAtMTc5LDcgKzE4NCw3IEBAIHZvaWQgSURCVHJhbnNh
Y3Rpb246Om9iamVjdFN0b3JlQ3JlYXRlZChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8
SURCT2JqZWN0CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZChjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQpOwor
ICAgIEFTU0VSVChtX3N0YXRlICE9IEZpbmlzaGVkKTsKICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hh
bmdlKCkpOwogICAgIElEQk9iamVjdFN0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fb2JqZWN0U3Rv
cmVNYXAuZmluZChuYW1lKTsKICAgICBpZiAoaXQgIT0gbV9vYmplY3RTdG9yZU1hcC5lbmQoKSkg
ewpAQCAtMTkwLDEwICsxOTUsMjQgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVE
ZWxldGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB9CiB9CiAKK3ZvaWQgSURCVHJhbnNhY3Rp
b246OnNldEFjdGl2ZShib29sIGFjdGl2ZSkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSAhPSBGaW5p
c2hlZCk7CisgICAgaWYgKG1fc3RhdGUgPT0gRmluaXNoaW5nKQorICAgICAgICByZXR1cm47Cisg
ICAgQVNTRVJUKG1fc3RhdGUgPT0gVW51c2VkIHx8IG1fc3RhdGUgPT0gVXNlZCk7CisgICAgQVNT
RVJUKGFjdGl2ZSAhPSBtX2FjdGl2ZSk7CisgICAgbV9hY3RpdmUgPSBhY3RpdmU7CisKKyAgICBp
ZiAoIWFjdGl2ZSAmJiBtX3N0YXRlID09IFVudXNlZCkKKyAgICAgICAgbV9iYWNrZW5kLT5jb21t
aXQoKTsKK30KKwogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnQoKQogewotICAgIGlmIChtX3Ry
YW5zYWN0aW9uRmluaXNoZWQpCisgICAgaWYgKG1fc3RhdGUgPT0gRmluaXNoaW5nIHx8IG1fc3Rh
dGUgPT0gRmluaXNoZWQpCiAgICAgICAgIHJldHVybjsKKyAgICBtX3N0YXRlID0gRmluaXNoaW5n
OwogICAgIG1fYWN0aXZlID0gZmFsc2U7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBzZWxm
UmVmID0gdGhpczsKICAgICBpZiAobV9iYWNrZW5kKQpAQCAtMjMyLDIyICsyNTEsMjcgQEAgdm9p
ZCBJREJUcmFuc2FjdGlvbjo6Y2xvc2VPcGVuQ3Vyc29ycygpCiAKIHZvaWQgSURCVHJhbnNhY3Rp
b246OnJlZ2lzdGVyUmVxdWVzdChJREJSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIG1fY2hpbGRS
ZXF1ZXN0cy5hZGQocmVxdWVzdCk7CisgICAgQVNTRVJUKHJlcXVlc3QpOworICAgIEFTU0VSVCht
X3N0YXRlID09IFVudXNlZCB8fCBtX3N0YXRlID09IFVzZWQpOworICAgIEFTU0VSVChtX2FjdGl2
ZSk7CisgICAgbV9yZXF1ZXN0TGlzdC5hZGQocmVxdWVzdCk7CisgICAgbV9zdGF0ZSA9IFVzZWQ7
CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OnVucmVnaXN0ZXJSZXF1ZXN0KElEQlJlcXVlc3Qq
IHJlcXVlc3QpCiB7CisgICAgQVNTRVJUKHJlcXVlc3QpOwogICAgIC8vIElmIHdlIGFib3J0ZWQg
dGhlIHJlcXVlc3QsIGl0IHdpbGwgYWxyZWFkeSBoYXZlIGJlZW4gcmVtb3ZlZC4KLSAgICBtX2No
aWxkUmVxdWVzdHMucmVtb3ZlKHJlcXVlc3QpOworICAgIG1fcmVxdWVzdExpc3QucmVtb3ZlKHJl
cXVlc3QpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkFib3J0KCkKIHsKLSAgICBBU1NF
UlQoIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7Ci0gICAgbV9hY3RpdmUgPSBmYWxzZTsKLSAgICB3
aGlsZSAoIW1fY2hpbGRSZXF1ZXN0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgSURCUmVxdWVzdCog
cmVxdWVzdCA9ICptX2NoaWxkUmVxdWVzdHMuYmVnaW4oKTsKLSAgICAgICAgbV9jaGlsZFJlcXVl
c3RzLnJlbW92ZShyZXF1ZXN0KTsKKyAgICBBU1NFUlQobV9zdGF0ZSAhPSBGaW5pc2hlZCk7Cisg
ICAgbV9zdGF0ZSA9IEZpbmlzaGluZzsKKyAgICB3aGlsZSAoIW1fcmVxdWVzdExpc3QuaXNFbXB0
eSgpKSB7CisgICAgICAgIElEQlJlcXVlc3QqIHJlcXVlc3QgPSAqbV9yZXF1ZXN0TGlzdC5iZWdp
bigpOworICAgICAgICBtX3JlcXVlc3RMaXN0LnJlbW92ZShyZXF1ZXN0KTsKICAgICAgICAgcmVx
dWVzdC0+YWJvcnQoKTsKICAgICB9CiAKQEAgLTI2Nyw4ICsyOTEsOCBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uOjpvbkFib3J0KCkKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSgpCiB7
Ci0gICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQpOwotICAgIG1fYWN0aXZlID0gZmFs
c2U7CisgICAgQVNTRVJUKG1fc3RhdGUgIT0gRmluaXNoZWQpOworICAgIG1fc3RhdGUgPSBGaW5p
c2hpbmc7CiAgICAgbV9vYmplY3RTdG9yZUNsZWFudXBNYXAuY2xlYXIoKTsKICAgICBjbG9zZU9w
ZW5DdXJzb3JzKCk7CiAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsK
QEAgLTI4NCw3ICszMDgsNyBAQCBib29sIElEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZp
dHkoKSBjb25zdAogICAgIC8vIEZJWE1FOiBJbiBhbiBpZGVhbCB3b3JsZCwgd2Ugc2hvdWxkIHJl
dHVybiB0cnVlIGFzIGxvbmcgYXMgYW55b25lIGhhcyBhIG9yIGNhbgogICAgIC8vICAgICAgICBn
ZXQgYSBoYW5kbGUgdG8gdXMgb3IgYW55IGNoaWxkIHJlcXVlc3Qgb2JqZWN0IGFuZCBhbnkgb2Yg
dGhvc2UgaGF2ZQogICAgIC8vICAgICAgICBldmVudCBsaXN0ZW5lcnMuIFRoaXMgaXMgIGluIG9y
ZGVyIHRvIGhhbmRsZSB1c2VyIGdlbmVyYXRlZCBldmVudHMgcHJvcGVybHkuCi0gICAgcmV0dXJu
ICFtX3RyYW5zYWN0aW9uRmluaXNoZWQgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0
aXZpdHkoKTsKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBGaW5pc2hlZCB8fCBBY3RpdmVET01PYmpl
Y3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCiBJREJUcmFuc2FjdGlvbjo6TW9kZSBJREJU
cmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgRXhjZXB0
aW9uQ29kZSYgZWMpCkBAIC0zMzIsMTAgKzM1NiwxMCBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBJREJUcmFuc2FjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiBib29sIElE
QlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewog
ICAgIElEQl9UUkFDRSgiSURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQiKTsKLSAgICBBU1NF
UlQoIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7CisgICAgQVNTRVJUKG1fc3RhdGUgIT0gRmluaXNo
ZWQpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChl
dmVudC0+dGFyZ2V0KCkgPT0gdGhpcyk7Ci0gICAgbV90cmFuc2FjdGlvbkZpbmlzaGVkID0gdHJ1
ZTsKKyAgICBtX3N0YXRlID0gRmluaXNoZWQ7CiAKICAgICAvLyBCcmVhayByZWZlcmVuY2UgY3lj
bGVzLgogICAgIGZvciAoSURCT2JqZWN0U3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9vYmplY3RT
dG9yZU1hcC5iZWdpbigpOyBpdCAhPSBtX29iamVjdFN0b3JlTWFwLmVuZCgpOyArK2l0KQpAQCAt
MzU1LDcgKzM3OSw3IEBAIGJvb2wgSURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmQoKSBjb25zdAog
ewogICAgIC8vIEZJWE1FOiBUZWNobmljYWxseSB3ZSBjYW4gc3VzcGVuZCBiZWZvcmUgdGhlIGZp
cnN0IHJlcXVlc3QgaXMgc2NoZWR1bGUKICAgICAvLyAgICAgICAgYW5kIGFmdGVyIHRoZSBjb21w
bGV0ZS9hYm9ydCBldmVudCBpcyBlbnF1ZXVlZC4KLSAgICByZXR1cm4gbV90cmFuc2FjdGlvbkZp
bmlzaGVkOworICAgIHJldHVybiBtX3N0YXRlID09IEZpbmlzaGVkOwogfQogCiB2b2lkIElEQlRy
YW5zYWN0aW9uOjpzdG9wKCkKQEAgLTM2OCw3ICszOTIsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9u
OjpzdG9wKCkKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8
RXZlbnQ+IGV2ZW50KQogewotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fdHJhbnNhY3Rpb25G
aW5pc2hlZCwgIkEgZmluaXNoZWQgdHJhbnNhY3Rpb24gdHJpZWQgdG8gZW5xdWV1ZSBhbiBldmVu
dCBvZiB0eXBlICVzLiIsIGV2ZW50LT50eXBlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3N0YXRlICE9IEZpbmlzaGVkLCAiQSBmaW5pc2hlZCB0
cmFuc2FjdGlvbiB0cmllZCB0byBlbnF1ZXVlIGFuIGV2ZW50IG9mIHR5cGUgJXMuIiwgZXZlbnQt
PnR5cGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBpZiAobV9jb250ZXh0U3RvcHBl
ZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4
IDJjZTgyYjFjZjc3YWFmMjBmZDIyNDBkYTFiOGY2OGMxYjkxZDIyZWMuLmU1ZmJhN2NiZTNlMWU4
OWU5YzliNmJlNDMwZjdlOThhMTZjNjE1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6
CiAKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIGJhY2tlbmQoKSBjb25zdDsK
ICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmU7IH0KLSAgICBib29s
IGlzRmluaXNoZWQoKSBjb25zdDsKKyAgICBib29sIGlzRmluaXNoZWQoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlID09IEZpbmlzaGVkOyB9CiAgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgeyBy
ZXR1cm4gbV9tb2RlID09IFJFQURfT05MWTsgfQogICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkg
Y29uc3QgeyByZXR1cm4gbV9tb2RlID09IFZFUlNJT05fQ0hBTkdFOyB9CiAKQEAgLTk1LDYgKzk1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlclJlcXVlc3QoSURCUmVxdWVzdCopOwog
ICAgIHZvaWQgb2JqZWN0U3RvcmVDcmVhdGVkKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8SURC
T2JqZWN0U3RvcmU+KTsKICAgICB2b2lkIG9iamVjdFN0b3JlRGVsZXRlZChjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoYWJvcnQpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
Y29tcGxldGUpOwpAQCAtMTMzLDE1ICsxMzQsMjIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgdmlydHVhbCBFdmVudFRhcmdl
dERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwogCisgICAgZW51bSBTdGF0ZSB7CisgICAg
ICAgIFVudXNlZCwgLy8gTm8gcmVxdWVzdHMgaGF2ZSBiZWVuIG1hZGUuCisgICAgICAgIFVzZWQs
IC8vIEF0IGxlYXN0IG9uZSByZXF1ZXN0IGhhcyBiZWVuIG1hZGUuCisgICAgICAgIEZpbmlzaGlu
ZywgLy8gSW4gdGhlIHByb2Nlc3Mgb2YgYWJvcnRpbmcgb3IgY29tcGxldGluZy4KKyAgICAgICAg
RmluaXNoZWQsIC8vIE5vIG1vcmUgZXZlbnRzIHdpbGwgZmlyZSBhbmQgbm8gbmV3IHJlcXVlc3Rz
IG1heSBiZSBmaWxlZC4KKyAgICB9OworCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4gbV9iYWNrZW5kOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gbV9kYXRhYmFz
ZTsKICAgICBjb25zdCBNb2RlIG1fbW9kZTsKICAgICBib29sIG1fYWN0aXZlOwotICAgIGJvb2wg
bV90cmFuc2FjdGlvbkZpbmlzaGVkOyAvLyBJcyBpdCBwb3NzaWJsZSB0aGF0IHdlJ2xsIGZpcmUg
YW55IG1vcmUgZXZlbnRzIG9yIGFsbG93IGFueSBuZXcgcmVxdWVzdHM/IElmIG5vdCwgd2UncmUg
ZmluaXNoZWQuCisgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBib29sIG1fY29udGV4dFN0b3BwZWQ7
CiAgICAgUmVmUHRyPERPTUVycm9yPiBtX2Vycm9yOwogCi0gICAgTGlzdEhhc2hTZXQ8SURCUmVx
dWVzdCo+IG1fY2hpbGRSZXF1ZXN0czsKKyAgICBMaXN0SGFzaFNldDxJREJSZXF1ZXN0Kj4gbV9y
ZXF1ZXN0TGlzdDsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJPYmpl
Y3RTdG9yZT4gPiBJREJPYmplY3RTdG9yZU1hcDsKICAgICBJREJPYmplY3RTdG9yZU1hcCBtX29i
amVjdFN0b3JlTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAppbmRleCA2ZGZmMmIwNTAx
NDgyMTkzOWUzODQ2ZDc3ZmQ1YjcwMzY0YTk1ZjEwLi45NGQzMGRjOTM2OTllYjkxMzZmNmFiZDcx
YmIwNjczZWJiYWJiZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtMjAxLDEy
ICsyMDEsMTMgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21taXQoKQogICAg
IC8vIGNvbW1pdCBzdGVwcyBiZWxvdy4gV2UgdGhlcmVmb3JlIHRha2UgYSBzZWxmIHJlZmVyZW5j
ZSB0byBrZWVwIG91cnNlbHZlcwogICAgIC8vIGFsaXZlIHdoaWxlIGV4ZWN1dGluZyB0aGlzIG1l
dGhvZC4KICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gc2VsZih0aGlzKTsK
LSAgICBBU1NFUlQobV9zdGF0ZSA9PSBSdW5uaW5nKTsKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBV
bnVzZWQgfHwgbV9zdGF0ZSA9PSBSdW5uaW5nKTsKICAgICBBU1NFUlQobV90YXNrUXVldWUuaXNF
bXB0eSgpKTsKIAorICAgIGJvb2wgdW51c2VkID0gbV9zdGF0ZSA9PSBVbnVzZWQ7CiAgICAgbV9z
dGF0ZSA9IEZpbmlzaGVkOwogCi0gICAgYm9vbCBjb21taXR0ZWQgPSBtX3RyYW5zYWN0aW9uLT5j
b21taXQoKTsKKyAgICBib29sIGNvbW1pdHRlZCA9IHVudXNlZCB8fCBtX3RyYW5zYWN0aW9uLT5j
b21taXQoKTsKIAogICAgIC8vIEJhY2tpbmcgc3RvcmUgcmVzb3VyY2VzIChoZWxkIHZpYSBjdXJz
b3JzKSBtdXN0IGJlIHJlbGVhc2VkIGJlZm9yZSBzY3JpcHQgY2FsbGJhY2tzCiAgICAgLy8gYXJl
IGZpcmVkLCBhcyB0aGUgc2NyaXB0IGNhbGxiYWNrcyBtYXkgcmVsZWFzZSByZWZlcmVuY2VzIGFu
ZCBhbGxvdyB0aGUgYmFja2luZyBzdG9yZQpAQCAtMjE2LDcgKzIxNyw4IEBAIHZvaWQgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29tbWl0KCkKIAogICAgIC8vIFRyYW5zYWN0aW9ucyBtdXN0
IGFsc28gYmUgbWFya2VkIGFzIGNvbXBsZXRlZCBiZWZvcmUgdGhlIGZyb250LWVuZCBpcyBub3Rp
ZmllZCwgYXMKICAgICAvLyB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGlvbiB1bmJsb2NrcyBvcGVy
YXRpb25zIGxpa2UgY2xvc2luZyBjb25uZWN0aW9ucy4KLSAgICBtX2RhdGFiYXNlLT50cmFuc2Fj
dGlvbkNvb3JkaW5hdG9yKCktPmRpZEZpbmlzaFRyYW5zYWN0aW9uKHRoaXMpOworICAgIGlmICgh
dW51c2VkKQorICAgICAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCktPmRp
ZEZpbmlzaFRyYW5zYWN0aW9uKHRoaXMpOwogICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmlu
aXNoZWQodGhpcyk7CiAKICAgICBpZiAoY29tbWl0dGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UuaAppbmRleCAwMDNkYmZkY2NmNTQyOTJiODJhYWIyYzM1ZjJhZGJjZTBmNTFkNjVk
Li5kOGY0OGFiNTA4NTcxMmVlMDhlNGZjM2Q5NTQ5MjljMGYzYTdmYmZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB1bnNpZ25lZCBzaG9ydCBtb2RlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBz
Y2hlZHVsZVRhc2soUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNr
LCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGFib3J0VGFzayA9IG51
bGxwdHIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVUYXNrRXZlbnRzKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjb21taXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoSURCVHJhbnNhY3Rpb25DYWxs
YmFja3MqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJz
b3JCYWNrZW5kSW1wbCopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwCmluZGV4IDAwYmMxNzBkMmIzNTIzNmUxODlkMjMz
ZTljOTQzYmIyNDk4NWI5ZDYuLjk1ODhjOTRkMDhlM2MxMjZmMTFjY2I4OTMzZjk4MGZlN2Y0ZmQ5
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4
ZWNTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFk
RXhlY1N0YXRlLmNwcApAQCAtMzgsNyArMzgsOSBAQCBKU0M6OkV4ZWNTdGF0ZSogSlNNYWluVGhy
ZWFkRXhlY1N0YXRlOjpzX21haW5UaHJlYWRTdGF0ZSA9IDA7CiB2b2lkIEpTTWFpblRocmVhZEV4
ZWNTdGF0ZTo6ZGlkTGVhdmVTY3JpcHRDb250ZXh0KCkKIHsKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKLSAgICBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yOjphYm9ydFBlbmRpbmdU
cmFuc2FjdGlvbnMoKTsgICAKKyAgICAvLyBJbmRleGVkIERCIHJlcXVpcmVzIHRoYXQgdHJhbnNh
Y3Rpb25zIGFyZSBjcmVhdGVkIHdpdGggYW4gaW50ZXJuYWwgfGFjdGl2ZXwgZmxhZworICAgIC8v
IHNldCB0byB0cnVlLCBidXQgdGhlIGZsYWcgYmVjb21lcyBmYWxzZSB3aGVuIGNvbnRyb2wgcmV0
dXJucyB0byB0aGUgZXZlbnQgbG9vcC4KKyAgICBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9y
OjpkZWFjdGl2YXRlTmV3VHJhbnNhY3Rpb25zKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNVVRB
VElPTl9PQlNFUlZFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFJlY3Vyc2lvblNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJz
aW9uU2NvcGUuY3BwCmluZGV4IDkyYmU3MjBiMTRjNjlmMDVmNmVlZjZhOTZjMjY4MmM0YjNjZmNm
NjUuLjE2MDY3ZTUwZGZiNGExNzNmNTM1YzVjOGExNTExMTkyNjI1OTdkMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3BwCkBAIC00MSwxMCAr
NDEsOSBAQCB2b2lkIFY4UmVjdXJzaW9uU2NvcGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgpCiAg
ICAgLy8gRklYTUU6IEluc3RydW1lbnQgYW55IHdvcmsgdGhhdCB0YWtlcyBwbGFjZSB3aGVuIHNj
cmlwdCBleGl0cyB0byBjKysgKGUuZy4gTXV0YXRpb24gT2JzZXJ2ZXJzKS4KIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQotICAgIC8vIElmIHdlJ3ZlIGp1c3QgbGVmdCBhIHNjcmlwdCBj
b250ZXh0IGFuZCBpbmRleGVkIGRhdGFiYXNlIGhhcyBiZWVuCi0gICAgLy8gaW5zdGFudGlhdGVk
LCB3ZSBtdXN0IGxldCBpdHMgdHJhbnNhY3Rpb24gY29vcmRpbmF0b3Iga25vdyBzbyBpdCBjYW4g
dGVybWluYXRlCi0gICAgLy8gYW55IG5vdC15ZXQtc3RhcnRlZCB0cmFuc2FjdGlvbnMuCi0gICAg
SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6YWJvcnRQZW5kaW5nVHJhbnNhY3Rpb25zKCk7
CisgICAgLy8gSW5kZXhlZCBEQiByZXF1aXJlcyB0aGF0IHRyYW5zYWN0aW9ucyBhcmUgY3JlYXRl
ZCB3aXRoIGFuIGludGVybmFsIHxhY3RpdmV8IGZsYWcKKyAgICAvLyBzZXQgdG8gdHJ1ZSwgYnV0
IHRoZSBmbGFnIGJlY29tZXMgZmFsc2Ugd2hlbiBjb250cm9sIHJldHVybnMgdG8gdGhlIGV2ZW50
IGxvb3AuCisgICAgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6ZGVhY3RpdmF0ZU5ld1Ry
YW5zYWN0aW9ucygpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25C
YWNrZW5kUHJveHkuY3BwCmluZGV4IGJmZDk4MDhlYTg5NzY5ZjM1Y2VjYTNhYzU5YzY1MzI5MTFj
OGMxOGIuLjVlN2RlMmViMGJjY2RjM2Q4NGZjZTk3NDRhOTE5YTJiNGRhYjk1M2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tl
bmRQcm94eS5jcHAKQEAgLTY3LDYgKzY3LDExIEBAIHVuc2lnbmVkIHNob3J0IElEQlRyYW5zYWN0
aW9uQmFja2VuZFByb3h5Ojptb2RlKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJJREJUcmFuc2Fj
dGlvbi0+bW9kZSgpOwogfQogCit2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Ojpjb21t
aXQoKQoreworICAgIG1fd2ViSURCVHJhbnNhY3Rpb24tPmNvbW1pdCgpOworfQorCiB2b2lkIElE
QlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjphYm9ydCgpCiB7CiAgICAgbV93ZWJJREJUcmFuc2Fj
dGlvbi0+YWJvcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oCmluZGV4IGFmZWYwMDgyY2RmMTY0NWE3N2MzMzFi
NzgwNmUzYjRhZGUxY2Y5ZjAuLmUxYTlmNTExNWI5YzFiZDlkNGQ2M2U5NGUyNzQ4YmI3ZmQ5MWFh
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9u
QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kUHJveHkuaApAQCAtNDMsNiArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBv
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsK
ICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IG1vZGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgY29tbWl0KCk7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCk7CiAgICAgdmlydHVhbCBib29s
IHNjaGVkdWxlVGFzayhQYXNzT3duUHRyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+LCBQYXNzT3duUHRyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmNwcAppbmRl
eCBlMGEwMzE4OTBmZWQ1Mzc3MGQ4MmQxYzc4MGU0NTIxMDM1ODk3Yzk4Li5iZjEwYWRiNjA4Yzdh
MTk3YmMzMjU4ODVjN2VlZjFiOWFjNjdmZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAKQEAgLTU5LDYgKzU5LDExIEBA
IFdlYklEQk9iamVjdFN0b3JlKiBXZWJJREJUcmFuc2FjdGlvbkltcGw6Om9iamVjdFN0b3JlKGNv
bnN0IFdlYlN0cmluZyYgbmFtZSwgRXhjCiAgICAgcmV0dXJuIG5ldyBXZWJJREJPYmplY3RTdG9y
ZUltcGwob2JqZWN0U3RvcmUpOwogfQogCit2b2lkIFdlYklEQlRyYW5zYWN0aW9uSW1wbDo6Y29t
bWl0KCkKK3sKKyAgICBtX2JhY2tlbmQtPmNvbW1pdCgpOworfQorCiB2b2lkIFdlYklEQlRyYW5z
YWN0aW9uSW1wbDo6YWJvcnQoKQogewogICAgIG1fYmFja2VuZC0+YWJvcnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgKaW5kZXgg
ZmExMDQ5YmQwYTFiMTMxMWQ5NTU4MjYyN2FjNjA0YTg3MDJhMTM5OS4uZTA4NWFhNzBkMmUyYTkw
NTViZjRjNGM3NzBlN2ZkOWM2ZGQxZDcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBpbnQgbW9kZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViSURCT2Jq
ZWN0U3RvcmUqIG9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViRXhjZXB0aW9u
Q29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBjb21taXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJv
cnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldENhbGxiYWNrcyhXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyopOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGFjMTJjZDdmNTkzNzViMDQ1NTZhNThmNzFhM2YxNmNhOTdiMTMzOWQuLjEyMjE4YWRiNzA4
MDdiZDYyM2NiNTU0NGEwMDAwM2IxM2I4YmI3ZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAx
Mi0wNi0yNiAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIElu
ZGV4ZWREQjogSW1wbGVtZW50IElEQlRyYW5zYWN0aW9uIGludGVybmFsIGFjdGl2ZSBmbGFnCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTM3OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpz
OgorICAgICAgICAoY29tcGxldGVDYWxsYmFjayk6IEVtcHR5IHRyYW5zYWN0aW9ucyBub3cgY29t
bWl0IHJhdGhlciB0aGFuIGFib3J0LgorICAgICAgICAoZW1wdHlDb21wbGV0ZUNhbGxiYWNrKToK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tY29tcGxl
dGUtd29ya2Vycy5qczogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLmpzLgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL3N0cnVjdHVyZWQtY2xvbmUuaHRtbDogQXNzdW1lZCBlbXB0eSB0cmFuc2Fj
dGlvbnMgYWJvcnRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1h
Y3RpdmUtZmxhZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24t
Y3Jvc3MtZnJhbWUtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJh
bWUtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLmh0bWw6IFJlbmFtZWQgZnJv
bSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpz
LXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1sLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dDogUmVu
YW1lZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0
LXdpdGgtanMtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi5odG1sOiBSZW5hbWVk
IGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0
aC1qcy1yZWN1cnNpb24uaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1jb21wbGV0ZS13b3JrZXJzLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcnMtZXhwZWN0ZWQu
dHh0LgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdv
cmtlcnMuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLWFib3J0LXdvcmtlcnMuaHRtbC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi90dXRvcmlhbC5odG1sOiBBc3N1bWVkIGVtcHR5IHRyYW5zYWN0aW9ucyBhYm9ydGVkLgorCiAy
MDEyLTA2LTI3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJF
R1JFU1NJT04gKFNhZmFyaSA1Pyk6IFBhc3RpbmcgYSBsaW5lIGludG8gdGV4dGFyZWEgaW5zZXJ0
cyB0d28gbmV3bGluZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcnMuanMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYTBkZjA2ZjJlNjBmNjg4NDVjYmQ5OGI5Zjgy
NjM0ZDQwYzIxNTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFi
b3J0LXdvcmtlcnMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotaWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB3b3JrZXJzLCByZWN1cnNpb24sIGFu
ZCB0cmFuc2FjdGlvbiB0ZXJtaW5hdGlvbi4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRl
eGVkREIub3BlbigndHJhbnNhY3Rpb24tYWJvcnQtd29ya2VyJykiKTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIp
OwotICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0g
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAg
ICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7Ci0gICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVz
dC5yZXN1bHQiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZScpIik7Ci0gICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gY3JlYXRlVHJhbnNh
Y3Rpb247Ci0gICAgICAgIH07Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlVHJhbnNhY3Rp
b24oKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiY3JlYXRlVHJhbnNhY3Rpb24oKToi
KTsKLSAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScp
Iik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmUnKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVD
YWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDsKLX0KLQot
ZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJUcmFuc2Fj
dGlvbiBhYm9ydGVkIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZ2V0KDAp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIsICInVHJh
bnNhY3Rpb25JbmFjdGl2ZUVycm9yJyIpOwotICAgIHJlY3Vyc2lvblRlc3QoKTsKLX0KLQotZnVu
Y3Rpb24gcmVjdXJzaW9uVGVzdCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJyZWN1
cnNpb25UZXN0KCk6Iik7Ci0gICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbignc3RvcmUnKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdHJhbnNh
Y3Rpb25Db21wbGV0ZWQ7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotICAgIGV2YWxBbmRMb2coInN0b3JlLmdldCgwKSIpOwotICAgIHRlc3RQYXNz
ZWQoInRyYW5zYWN0aW9uIGlzIGFjdGl2ZSIpOwotICAgIHJlY3Vyc2UoMSk7Ci19Ci0KLWZ1bmN0
aW9uIHJlY3Vyc2UoY291bnQpCi17Ci0gICAgZGVidWcoInJlY3Vyc2lvbiBkZXB0aDogIiArIGNv
dW50KTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5nZXQoMCkiKTsKLSAgICB0ZXN0UGFzc2VkKCJ0
cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUiKTsKLSAgICBpZiAoY291bnQgPCAzKSB7Ci0gICAg
ICAgIHJlY3Vyc2UoY291bnQgKyAxKTsKLSAgICB9Ci0gICAgZGVidWcoInJlY3Vyc2lvbiBkZXB0
aDogIiArIGNvdW50KTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5nZXQoMCkiKTsKLSAgICB0ZXN0
UGFzc2VkKCJ0cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUiKTsKLX0KLQotZnVuY3Rpb24gdHJh
bnNhY3Rpb25Db21wbGV0ZWQoKQotewotICAgIHRlc3RQYXNzZWQoInRyYW5zYWN0aW9uIGNvbXBs
ZXRlZCIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCgwKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiLCAiJ1RyYW5zYWN0aW9u
SW5hY3RpdmVFcnJvciciKTsKLQotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidHJ5aW5nIGEg
dGltZW91dCBjYWxsYmFjazoiKTsKLSAgICBldmFsQW5kTG9nKCJzZXRUaW1lb3V0KHRpbWVvdXRU
ZXN0LCAwKSIpOwotfQotCi1mdW5jdGlvbiB0aW1lb3V0VGVzdCgpCi17Ci0gICAgZGVidWcoIiIp
OwotICAgIGRlYnVnKCJ0aW1lb3V0VGVzdCgpOiIpOwotCi0gICAgZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3Jl
ID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICB0cmFuc2FjdGlvbi5v
bmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24u
b25hYm9ydCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgidHJhbnNhY3Rpb24g
c3RhcnRlZCBpbiBzZXRUaW1lb3V0KCkgY2FsbGJhY2sgYWJvcnRlZCIpOwotICAgICAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5nZXQoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIiwgIidUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InIik7
Ci0KLSAgICAgICAgZXJyb3JUZXN0KCk7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gZXJyb3JUZXN0
KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoImVycm9yVGVzdCgpOiIpOwotICAgIGV2
YWxBbmRMb2coInNlbGYub2xkX29uZXJyb3IgPSBzZWxmLm9uZXJyb3IiKTsKLSAgICBldmFsQW5k
TG9nKCJzZWxmLm9uZXJyb3IgPSBlcnJvckhhbmRsZXIiKTsKLSAgICB0aHJvdyBuZXcgRXJyb3Io
Imlnbm9yZSB0aGlzIik7Ci19Ci0KLWZ1bmN0aW9uIGVycm9ySGFuZGxlcihlKQotewotICAgIGRl
YnVnKCIiKTsKLSAgICBkZWJ1ZygiZXJyb3JIYW5kbGVyKCk6Iik7Ci0gICAgLy8gRklYTUU6IFNo
b3VsZCBiZSBhYmxlIHRvIHN0b3AgdGhlIGVycm9yIGhlcmUsIGJ1dCBpdCBpc24ndCBhbiBFdmVu
dCBvYmplY3QuCi0gICAgLy8gZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOwot
ICAgIGV2YWxBbmRMb2coInNlbGYub25lcnJvciA9IHNlbGYub2xkX29uZXJyb3IiKTsKLSAgICBl
dmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7Ci0gICAg
ZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwot
ICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsK
LSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
dHJhbnNhY3Rpb24ub25hYm9ydCA9IGVycm9yVHJhbnNhY3Rpb25BYm9ydGVkOwotfQotCi1mdW5j
dGlvbiBlcnJvclRyYW5zYWN0aW9uQWJvcnRlZCgpCi17Ci0gICAgdGVzdFBhc3NlZCgiVHJhbnNh
Y3Rpb24gYWJvcnRlZCIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCgw
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiLCAiJ1Ry
YW5zYWN0aW9uSW5hY3RpdmVFcnJvciciKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVz
dCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmNTM0
OTk1MTA5ZjdmNDY4Zjc0YzgwNWRhOGQ0YTMxYTcwNzViNzgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWN0aXZl
LWZsYWcuanMKQEAgLTAsMCArMSwxMzggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIgdHJhbnNhY3Rpb24gaW50ZXJuYWwgYWN0aXZlIGZsYWcuIik7CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgndHJhbnNhY3Rpb24tYWN0
aXZlLWZsYWcnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYWN0aXZlLWZsYWcn
KSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRi
ID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIu
c2V0VmVyc2lvbignMScpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24gPSByZXF1ZXN0LnJlc3VsdDsKKyAg
ICAgICAgICAgICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0
ZUluZGV4KCdpbmRleCcsICdrZXlwYXRoJykiKTsKKyAgICAgICAgICAgICAgICB0cmFuc2FjdGlv
bi5vbmNvbXBsZXRlID0gcnVuVHJhbnNhY3Rpb247CisgICAgICAgICAgICB9OworICAgICAgICB9
OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHJ1blRyYW5zYWN0aW9uKCkKK3sKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoInJ1blRyYW5zYWN0aW9uKCk6Iik7CisgICAgZXZhbEFuZExvZygidHJh
bnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykiKTsKKworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQgdHJhbnNhY3Rpb25zIGFyZSBjcmVh
dGVkIHdpdGggfGFjdGl2ZXwgZmxhZyBzZXQ6Iik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0
cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coImluZGV4
ID0gc3RvcmUuaW5kZXgoJ2luZGV4JykiKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc3RhdGVtZW50
cy5sZW5ndGg7ICsraSkgeworICAgICAgICBzaG91bGROb3RUaHJvdyhzdGF0ZW1lbnRzW2ldKTsK
KyAgICB9CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRyYW5zYWN0aW9uIHNob3VsZG4n
dCBiZSBhY3RpdmUgaW5zaWRlIGEgbm9uLUlEQi1ldmVudCBjYWxsYmFjayIpOworICAgIGV2YWxB
bmRMb2coInNldFRpbWVvdXQodGVzdFRpbWVvdXQsIDApIik7CisKKyAgICB0aW1lb3V0Q29tcGxl
dGUgPSBmYWxzZTsKKworICAgIC8vIEtlZXAgdHJhbnNhY3Rpb24gYWxpdmUgdW50aWwgdGltZW91
dCBjYWxsYmFjayBjb21wbGV0ZXMgLSBkb24ndCBsb2cKKyAgICAvLyBhbnl0aGluZyBoZXJlIGFz
IHRoaXMgY291bGQgcnVuIGEgdmFyaWFibGUgbnVtYmVyIG9mIHRpbWVzIGRlcGVuZGluZworICAg
IC8vIG9uIHRoZSBwb3J0LgorICAgIGZ1bmN0aW9uIGJ1c3koKSB7CisgICAgICAgIGlmICh0aW1l
b3V0Q29tcGxldGUpIHsKKyAgICAgICAgICAgIHRlc3RFdmVudENhbGxiYWNrKCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYnVzeVJlcXVlc3QgPSB0cmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgnc3RvcmUnKS5nZXQoMCk7CisgICAgICAgIGJ1c3lSZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgYnVzeVJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgYnVzeSgpOworICAgICAgICB9OworICAg
IH0KKyAgICBidXN5KCk7CisKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdHJhbnNhY3Rp
b25Db21wbGV0ZTsKK30KKwordmFyIHN0YXRlbWVudHMgPSBbCisgICAgInN0b3JlLmFkZCgwLCAw
KSIsCisgICAgInN0b3JlLnB1dCgwLCAwKSIsCisgICAgInN0b3JlLmdldCgwKSIsCisgICAgInN0
b3JlLmdldChJREJLZXlSYW5nZS5vbmx5KDApKSIsCisgICAgInN0b3JlLmRlbGV0ZSgwKSIsCisg
ICAgInN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZS5vbmx5KDApKSIsCisgICAgInN0b3JlLmNvdW50
KCkiLAorICAgICJzdG9yZS5jb3VudCgwKSIsCisgICAgInN0b3JlLmNvdW50KElEQktleVJhbmdl
Lm9ubHkoMCkpIiwKKyAgICAic3RvcmUuY2xlYXIoKSIsCisgICAgInN0b3JlLm9wZW5DdXJzb3Io
KSIsCisgICAgInN0b3JlLm9wZW5DdXJzb3IoMCkiLAorICAgICJzdG9yZS5vcGVuQ3Vyc29yKDAs
ICduZXh0JykiLAorICAgICJzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCkpIiwK
KyAgICAic3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApLCAnbmV4dCcpIiwKKyAg
ICAiaW5kZXguZ2V0KDApIiwKKyAgICAiaW5kZXguZ2V0KElEQktleVJhbmdlLm9ubHkoMCkpIiwK
KyAgICAiaW5kZXguZ2V0S2V5KDApIiwKKyAgICAiaW5kZXguZ2V0S2V5KElEQktleVJhbmdlLm9u
bHkoMCkpIiwKKyAgICAiaW5kZXguY291bnQoKSIsCisgICAgImluZGV4LmNvdW50KDApIiwKKyAg
ICAiaW5kZXguY291bnQoSURCS2V5UmFuZ2Uub25seSgwKSkiLAorICAgICJpbmRleC5vcGVuQ3Vy
c29yKCkiLAorICAgICJpbmRleC5vcGVuQ3Vyc29yKDApIiwKKyAgICAiaW5kZXgub3BlbkN1cnNv
cigwLCAnbmV4dCcpIiwKKyAgICAiaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDAp
KSIsCisgICAgImluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSwgJ25leHQnKSIs
CisgICAgImluZGV4Lm9wZW5LZXlDdXJzb3IoKSIsCisgICAgImluZGV4Lm9wZW5LZXlDdXJzb3Io
MCkiLAorICAgICJpbmRleC5vcGVuS2V5Q3Vyc29yKDAsICduZXh0JykiLAorICAgICJpbmRleC5v
cGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCkpIiwKKyAgICAiaW5kZXgub3BlbktleUN1
cnNvcihJREJLZXlSYW5nZS5vbmx5KDApLCAnbmV4dCcpIgorXTsKKworZnVuY3Rpb24gdGVzdFRp
bWVvdXQoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdFRpbWVvdXQoKToiKTsK
KyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScp
Iik7CisgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXgnKSIpOworICAg
IGZvciAoaSA9IDA7IGkgPCBzdGF0ZW1lbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oc3RhdGVtZW50c1tpXSwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRS
QU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIsICInVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJyIpOwor
ICAgIH0KKyAgICB0aW1lb3V0Q29tcGxldGUgPSB0cnVlOworfQorCitmdW5jdGlvbiB0ZXN0RXZl
bnRDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0RXZlbnRDYWxs
YmFjaygpOiIpOworCisgICAgZGVidWcoIlRyYW5zYWN0aW9uIHNob3VsZCBiZSBhY3RpdmUgaW5z
aWRlIGEgbm9uLUlEQi1ldmVudCBjYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJpbmRl
eCA9IHN0b3JlLmluZGV4KCdpbmRleCcpIik7CisgICAgZm9yIChpID0gMDsgaSA8IHN0YXRlbWVu
dHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coc3RhdGVtZW50c1tpXSk7
CisgICAgfQorfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxldGUoKToiKTsKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScp
IiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3In
Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFz
aWNzLmpzCmluZGV4IDRkYTlkY2UyYzA4MThkZjgwZGY4ZDljYzkyMzc2NTE5NzY4MDhmMzIuLmE3
Nzg2MWFmMzJkZDc1MGY0YjQwMzkxNWFiZWNiMjdhN2QzNWEwYTIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9u
LWJhc2ljcy5qcwpAQCAtMjQ5LDE0ICsyNDksMTQgQEAgZnVuY3Rpb24gY29tcGxldGVDYWxsYmFj
aygpCiAgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQuY2FuY2VsYWJsZSIpOwogICAgIHRlc3RQYXNz
ZWQoImNvbXBsZXRlIGV2ZW50IGZpcmVkIik7CiAgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9n
KCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJv
cnQgPSBhYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBlbXB0eUNv
bXBsZXRlQ2FsbGJhY2s7CiAgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInN0b3JlLm5hbWUiLCAic3RvcmVOYW1lIik7CiB9CiAKLWZ1bmN0aW9uIGFib3J0Q2Fs
bGJhY2soKQorZnVuY3Rpb24gZW1wdHlDb21wbGV0ZUNhbGxiYWNrKCkKIHsKLSAgICB0ZXN0UGFz
c2VkKCJhYm9ydCBldmVudCBmaXJlZCIpOworICAgIHRlc3RQYXNzZWQoImNvbXBsZXRlIGV2ZW50
IGZpcmVkIik7CiAgICAgdGVzdERPTVN0cmluZ0xpc3QoKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNvbXBsZXRl
LXdvcmtlcnMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJh
bnNhY3Rpb24tY29tcGxldGUtd29ya2Vycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjAzMjRkYzBhZTJkYmM2
ZGU3ODdmZTM5Njc2ZjliMzdhNTJiYWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdvcmtlcnMu
anMKQEAgLTAsMCArMSwxMjggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBv
cnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwor
ICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIgd29ya2VycywgcmVjdXJzaW9uLCBhbmQgdHJhbnNhY3Rpb24gdGVybWluYXRpb24u
Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisK
KyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWNv
bXBsZXRlLXdvcmtlcicpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAg
IGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1
bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAg
ICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAg
ICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAg
ICAgdHJhbnMub25jb21wbGV0ZSA9IGNyZWF0ZVRyYW5zYWN0aW9uOworICAgICAgICB9OworICAg
IH07Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uKCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoImNyZWF0ZVRyYW5zYWN0aW9uKCk6Iik7CisgICAgZXZhbEFuZExvZygidHJh
bnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICB0cmFuc2FjdGlv
bi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxl
dGUgPSBlbXB0eVRyYW5zYWN0aW9uQ29tcGxldGVkOworfQorCitmdW5jdGlvbiBlbXB0eVRyYW5z
YWN0aW9uQ29tcGxldGVkKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiBjb21wbGV0
ZWQiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5nZXQoMCkiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIiwgIidUcmFuc2FjdGlvbklu
YWN0aXZlRXJyb3InIik7CisgICAgcmVjdXJzaW9uVGVzdCgpOworfQorCitmdW5jdGlvbiByZWN1
cnNpb25UZXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInJlY3Vyc2lvblRlc3Qo
KToiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgn
c3RvcmUnKSIpOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBs
ZXRlZDsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7
CisgICAgZXZhbEFuZExvZygic3RvcmUuZ2V0KDApIik7CisgICAgdGVzdFBhc3NlZCgidHJhbnNh
Y3Rpb24gaXMgYWN0aXZlIik7CisgICAgcmVjdXJzZSgxKTsKK30KKworZnVuY3Rpb24gcmVjdXJz
ZShjb3VudCkKK3sKKyAgICBkZWJ1ZygicmVjdXJzaW9uIGRlcHRoOiAiICsgY291bnQpOworICAg
IGV2YWxBbmRMb2coInN0b3JlLmdldCgwKSIpOworICAgIHRlc3RQYXNzZWQoInRyYW5zYWN0aW9u
IGlzIHN0aWxsIGFjdGl2ZSIpOworICAgIGlmIChjb3VudCA8IDMpIHsKKyAgICAgICAgcmVjdXJz
ZShjb3VudCArIDEpOworICAgIH0KKyAgICBkZWJ1ZygicmVjdXJzaW9uIGRlcHRoOiAiICsgY291
bnQpOworICAgIGV2YWxBbmRMb2coInN0b3JlLmdldCgwKSIpOworICAgIHRlc3RQYXNzZWQoInRy
YW5zYWN0aW9uIGlzIHN0aWxsIGFjdGl2ZSIpOworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkNv
bXBsZXRlZCgpCit7CisgICAgdGVzdFBhc3NlZCgidHJhbnNhY3Rpb24gY29tcGxldGVkIik7Cisg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIsICInVHJhbnNhY3Rpb25JbmFjdGl2ZUVy
cm9yJyIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0cnlpbmcgYSB0aW1lb3V0IGNh
bGxiYWNrOiIpOworICAgIGV2YWxBbmRMb2coInNldFRpbWVvdXQodGltZW91dFRlc3QsIDApIik7
Cit9CisKK2Z1bmN0aW9uIHRpbWVvdXRUZXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoInRpbWVvdXRUZXN0KCk6Iik7CisKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRi
LnRyYW5zYWN0aW9uKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVu
Y3Rpb24gKCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJ0cmFuc2FjdGlvbiBzdGFydGVkIGluIHNl
dFRpbWVvdXQoKSBjYWxsYmFjayBjb21wbGV0ZWQiKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9O
X0lOQUNUSVZFX0VSUiIsICInVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJyIpOworCisgICAgICAg
IGVycm9yVGVzdCgpOworICAgIH07Cit9CisKK2Z1bmN0aW9uIGVycm9yVGVzdCgpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJlcnJvclRlc3QoKToiKTsKKyAgICBldmFsQW5kTG9nKCJz
ZWxmLm9sZF9vbmVycm9yID0gc2VsZi5vbmVycm9yIik7CisgICAgZXZhbEFuZExvZygic2VsZi5v
bmVycm9yID0gZXJyb3JIYW5kbGVyIik7CisgICAgdGhyb3cgbmV3IEVycm9yKCJpZ25vcmUgdGhp
cyIpOworfQorCitmdW5jdGlvbiBlcnJvckhhbmRsZXIoZSkKK3sKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoImVycm9ySGFuZGxlcigpOiIpOworICAgIC8vIEZJWE1FOiBTaG91bGQgYmUgYWJs
ZSB0byBzdG9wIHRoZSBlcnJvciBoZXJlLCBidXQgaXQgaXNuJ3QgYW4gRXZlbnQgb2JqZWN0Lgor
ICAgIC8vIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKKyAgICBldmFsQW5k
TG9nKCJzZWxmLm9uZXJyb3IgPSBzZWxmLm9sZF9vbmVycm9yIik7CisgICAgZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICB0cmFuc2Fj
dGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24u
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29t
cGxldGUgPSBlcnJvclRyYW5zYWN0aW9uQ29tcGxldGVkOworfQorCitmdW5jdGlvbiBlcnJvclRy
YW5zYWN0aW9uQ29tcGxldGVkKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiBjb21w
bGV0ZWQiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5nZXQoMCkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIiwgIidUcmFuc2FjdGlv
bkluYWN0aXZlRXJyb3InIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0cnVjdHVyZWQtY2xvbmUu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0cnVjdHVyZWQtY2xvbmUuaHRt
bAppbmRleCBkMTdmMTg0NTk2YTQxYzllYjc0MDNmMzk4NDNkMmE1ZWZkYzk0ZWUxLi4wMzE4OGRl
MGU2N2Q3ZjM5ZmE1MmJmNWRhZGYyOWU2NGMwZTczMDgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS5odG1sCkBAIC01MTQsOCArNTE0
LDggQEAgZnVuY3Rpb24gdGVzdEJhZFR5cGVzKCkKICAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlv
biA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCAncmVhZHdyaXRlJykiKTsKICAgICBldmFs
QW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwog
ICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0gICAg
dHJhbnNhY3Rpb24ub25hYm9ydCA9IGZpbmlzaEpTVGVzdDsKKyAgICB0cmFuc2FjdGlvbi5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZpbmlzaEpTVGVzdDsKIAogICAgIGRlYnVnKCIiKTsKICAgICBkZWJ1ZygiT3RoZXIgSmF2
YVNjcmlwdCBvYmplY3QgdHlwZXM6Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFt
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmZTkyMWIzNDMyNDA2YjY4OTk5NzVhNjI5ZjAyZTVk
YTExMGQ2NGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1y
ZWN1cnNpb24tY3Jvc3MtZnJhbWUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjIg
KzAsMCBAQAotVGVzdCB0aGF0IHBlbmRpbmcgdHJhbnNhY3Rpb25zIGFyZSBub3QgYWJvcnRlZCBk
dXJpbmcgcmVjdXJzaXZlIEpTIGNhbGxzIHVudGlsIGFsbCBKUyAoaW4gYWxsIGZyYW1lcykgaXMg
ZmluaXNoZWQuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1pbmRleGVkREIgPSBz
ZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWRE
QiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKLQotaW5kZXhlZERCLmRl
bGV0ZURhdGFiYXNlKCd0cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1m
cmFtZScpCi1pbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNp
b24tY3Jvc3MtZnJhbWUnKQotZGIgPSBldmVudC50YXJnZXQucmVzdWx0Ci1kYi5zZXRWZXJzaW9u
KCduZXcgdmVyc2lvbicpCi1wZW5kaW5nVHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29i
amVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKQotU3RhcnQgcmUtZW50cmFudCBKUwotdHJhbnNhY3Rp
b24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKQotRW5kIHJl
LWVudHJhbnQgSlMKLXN0b3JlID0gcGVuZGluZ1RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdvYmpl
Y3RTdG9yZScpCi1QQVNTIHN0b3JlICE9PSB1bmRlZmluZWQgaXMgdHJ1ZQotUGVuZGluZyB0cmFu
c2FjdGlvbiBhYm9ydGVkCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1Qg
Q09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUuaHRtbCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJz
aW9uLWNyb3NzLWZyYW1lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxY2Y0
Nzk5MjA1MTQwMTRmMTA2NGY3YjM4OWMwNTZlNDFjNjQ4MjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
dHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
aWZyYW1lPgotICAgIDxib2R5PgotICAgIDwvYm9keT4KLTwvaWZyYW1lPgotPHNjcmlwdD4KLQot
dmFyIHRyYW5zYWN0aW9uOwotdmFyIHN0b3JlOwotdmFyIGRiOwotdmFyIGJvZHkgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMF0uY29udGVudERvY3VtZW50LmJvZHk7
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgcGVuZGluZyB0cmFuc2FjdGlvbnMgYXJlIG5vdCBh
Ym9ydGVkIGR1cmluZyByZWN1cnNpdmUgSlMgY2FsbHMgdW50aWwgYWxsIEpTIChpbiBhbGwgZnJh
bWVzKSBpcyBmaW5pc2hlZC4iKTsKLQotZnVuY3Rpb24gc2V0dXAoKSB7Ci0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0
ZURhdGFiYXNlKCd0cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFt
ZScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1
cnNpb24tY3Jvc3MtZnJhbWUnKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZl
cnNpb247Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24oKSB7Ci0gICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkgewotICAgIHN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ29iamVjdFN0b3JlJywgbnVsbCk7Ci0gICAgZXZl
bnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gY2xpY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsaWNr
KCkgewotICAgIGJvZHkub25jbGljayA9IHRlc3Q7Ci0gICAgdmFyIHBlbmRpbmdUcmFuc2FjdGlv
biA9IGV2YWxBbmRMb2coInBlbmRpbmdUcmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnb2Jq
ZWN0U3RvcmUnXSwgJ3JlYWR3cml0ZScpIik7Ci0gICAgcGVuZGluZ1RyYW5zYWN0aW9uLm9uc3Vj
Y2VzcyA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHBlbmRpbmdUcmFuc2FjdGlvbi5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcGVuZGluZ1RyYW5zYWN0aW9u
Lm9uYWJvcnQgPSBhYm9ydENhbGxiYWNrOwotICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0
ZUV2ZW50KCJNb3VzZUV2ZW50Iik7Ci0gICAgZXZlbnQuaW5pdE1vdXNlRXZlbnQoImNsaWNrIiwg
dHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVsdFZpZXcsIDAsIDAsIDAsIDAsIDAsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCAwLCBudWxsKTsKLSAgICBib2R5LmRpc3BhdGNoRXZlbnQoZXZl
bnQpOwotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gcGVuZGluZ1RyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9y
ZSAhPT0gdW5kZWZpbmVkIik7Ci0gICAgYm9keS5vbmNsaWNrID0gdW5kZWZpbmVkOwotfQotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBkZWJ1ZygiU3RhcnQgcmUtZW50cmFudCBKUyIpOwotICAg
IHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihb
J29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKSIpOwotICAgIGRlYnVnKCJFbmQgcmUtZW50cmFu
dCBKUyIpOwotfQotCi0KLWZ1bmN0aW9uIGFib3J0Q2FsbGJhY2soKQotewotICAgIGRlYnVnKCJQ
ZW5kaW5nIHRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
c2V0dXAoKTsKLQotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdpdGgt
anMtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ4ZmNlMjBkNGUyZjQyODIxNmJlYjhkM2UxMGQxYmEx
ODc4ZjdkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJl
Y3Vyc2lvbi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1UZXN0
IHRoYXQgcGVuZGluZyB0cmFuc2FjdGlvbnMgYXJlIG5vdCBhYm9ydGVkIGR1cmluZyByZWN1cnNp
dmUgSlMgY2FsbHMgdW50aWwgYWxsIEpTIGlzIGZpbmlzaGVkLgotCi1PbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCi0KLQotaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJ
bmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxm
Lk9JbmRleGVkREI7Ci0KLWluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpz
LXJlY3Vyc2lvbicpCi1kYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKLWRiLnNldFZlcnNpb24oJ25l
dyB2ZXJzaW9uJykKLXBlbmRpbmdUcmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnb2JqZWN0
U3RvcmUnXSwgJ3JlYWR3cml0ZScpCi1TdGFydCByZS1lbnRyYW50IEpTCi10cmFuc2FjdGlvbiA9
IGRiLnRyYW5zYWN0aW9uKFsnb2JqZWN0U3RvcmUnXSwgJ3JlYWR3cml0ZScpCi1FbmQgcmUtZW50
cmFudCBKUwotc3RvcmUgPSBwZW5kaW5nVHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ29iamVjdFN0
b3JlJykKLVBBU1Mgc3RvcmUgIT09IHVuZGVmaW5lZCBpcyB0cnVlCi1QZW5kaW5nIHRyYW5zYWN0
aW9uIGFib3J0ZWQKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01Q
TEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24uaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM4NzkzNTY0MzE2NTBkMWEzMzYzNjdlYjYyMWJhZDQw
MWFkNGZjZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJl
Y3Vyc2lvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotPGh0bWw+DQotPGhl
YWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxzY3JpcHQ+DQotDQotdmFyIHRyYW5zYWN0aW9uOw0KLXZh
ciBzdG9yZTsNCi12YXIgZGI7DQotdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdOw0KLQ0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgcGVuZGluZyB0cmFu
c2FjdGlvbnMgYXJlIG5vdCBhYm9ydGVkIGR1cmluZyByZWN1cnNpdmUgSlMgY2FsbHMgdW50aWwg
YWxsIEpTIGlzIGZpbmlzaGVkLiIpOw0KLQ0KLWZ1bmN0aW9uIHNldHVwKCkgew0KLSAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOw0KLQ0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uJykiKTsNCi0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOw0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24gc2V0VmVyc2lvbigpIHsN
Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsNCi0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsNCi0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsNCi0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIHNldFZl
cnNpb25TdWNjZXNzKCkNCi17DQotICAgIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ29i
amVjdFN0b3JlJywgbnVsbCk7DQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9
IGNsaWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBjbGljaygpIA0KLXsNCi0gICAgYm9keS5vbmNsaWNr
ID0gdGVzdDsNCi0gICAgdmFyIHBlbmRpbmdUcmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInBlbmRp
bmdUcmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnb2JqZWN0U3RvcmUnXSwgJ3JlYWR3cml0
ZScpIik7DQotICAgIHBlbmRpbmdUcmFuc2FjdGlvbi5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsNCi0gICAgcGVuZGluZ1RyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsNCi0gICAgcGVuZGluZ1RyYW5zYWN0aW9uLm9uYWJvcnQgPSBhYm9ydENh
bGxiYWNrOw0KLSAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVu
dCIpOw0KLSAgICBldmVudC5pbml0TW91c2VFdmVudCgiY2xpY2siLCB0cnVlLCB0cnVlLCBkb2N1
bWVudC5kZWZhdWx0VmlldywgMCwgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIDAsIG51bGwpOw0KLSAgICBib2R5LmRpc3BhdGNoRXZlbnQoZXZlbnQpOw0KLSAgICB2YXIg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHBlbmRpbmdUcmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgnb2JqZWN0U3RvcmUnKSIpOw0KLSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9PSB1bmRlZmlu
ZWQiKTsNCi0gICAgYm9keS5vbmNsaWNrID0gdW5kZWZpbmVkOw0KLX0NCi0NCi1mdW5jdGlvbiB0
ZXN0KCkNCi17DQotICAgIGRlYnVnKCJTdGFydCByZS1lbnRyYW50IEpTIik7DQotICAgIHRyYW5z
YWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVj
dFN0b3JlJ10sICdyZWFkd3JpdGUnKSIpOw0KLSAgICBkZWJ1ZygiRW5kIHJlLWVudHJhbnQgSlMi
KTsNCi19DQotDQotDQotZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpDQotew0KLSAgICBkZWJ1Zygi
UGVuZGluZyB0cmFuc2FjdGlvbiBhYm9ydGVkIik7DQotICAgIGZpbmlzaEpTVGVzdCgpOw0KLX0N
Ci0NCi1zZXR1cCgpOw0KLQ0KLTwvc2NyaXB0Pg0KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KLTwvYm9keT4NCi08L2h0bWw+
DQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
YWJvcnQtd29ya2Vycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZDcwM2ZiYWIxM2Y2OGU0Yzk4NWM0NmI3ZjU4YTdkMjE5ZGUwMTA4NS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLVtXb3JrZXJdIFRlc3QgSW5kZXhlZERC
IHdvcmtlcnMsIHJlY3Vyc2lvbiwgYW5kIHRyYW5zYWN0aW9uIHRlcm1pbmF0aW9uLgotCi1PbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotU3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMvdHJh
bnNhY3Rpb24tYWJvcnQtd29ya2Vycy5qcwotW1dvcmtlcl0gaW5kZXhlZERCID0gc2VsZi5pbmRl
eGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2Vs
Zi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7Ci1bV29ya2VyXSAKLVtXb3JrZXJdIHJl
cXVlc3QgPSBpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYWJvcnQtd29ya2VyJykKLVtXb3Jr
ZXJdIGRiID0gcmVxdWVzdC5yZXN1bHQKLVtXb3JrZXJdIHJlcXVlc3QgPSBkYi5zZXRWZXJzaW9u
KCcxJykKLVtXb3JrZXJdIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi1bV29ya2VyXSB0cmFu
cyA9IHJlcXVlc3QucmVzdWx0Ci1bV29ya2VyXSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUn
KQotW1dvcmtlcl0gCi1bV29ya2VyXSBjcmVhdGVUcmFuc2FjdGlvbigpOgotW1dvcmtlcl0gdHJh
bnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKQotW1dvcmtlcl0gc3RvcmUgPSB0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKQotUEFTUyBbV29ya2VyXSBUcmFuc2FjdGlvbiBh
Ym9ydGVkCi1bV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuZ2V0KDApCi1Q
QVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgotUEFTUyBbV29ya2VyXSBjb2RlIGlz
IElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgotUEFTUyBbV29y
a2VyXSBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJwotW1dvcmtlcl0gCi1bV29y
a2VyXSByZWN1cnNpb25UZXN0KCk6Ci1bV29ya2VyXSB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0
aW9uKCdzdG9yZScpCi1bV29ya2VyXSBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdz
dG9yZScpCi1bV29ya2VyXSBzdG9yZS5nZXQoMCkKLVBBU1MgW1dvcmtlcl0gdHJhbnNhY3Rpb24g
aXMgYWN0aXZlCi1bV29ya2VyXSByZWN1cnNpb24gZGVwdGg6IDEKLVtXb3JrZXJdIHN0b3JlLmdl
dCgwKQotUEFTUyBbV29ya2VyXSB0cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUKLVtXb3JrZXJd
IHJlY3Vyc2lvbiBkZXB0aDogMgotW1dvcmtlcl0gc3RvcmUuZ2V0KDApCi1QQVNTIFtXb3JrZXJd
IHRyYW5zYWN0aW9uIGlzIHN0aWxsIGFjdGl2ZQotW1dvcmtlcl0gcmVjdXJzaW9uIGRlcHRoOiAz
Ci1bV29ya2VyXSBzdG9yZS5nZXQoMCkKLVBBU1MgW1dvcmtlcl0gdHJhbnNhY3Rpb24gaXMgc3Rp
bGwgYWN0aXZlCi1bV29ya2VyXSByZWN1cnNpb24gZGVwdGg6IDMKLVtXb3JrZXJdIHN0b3JlLmdl
dCgwKQotUEFTUyBbV29ya2VyXSB0cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUKLVtXb3JrZXJd
IHJlY3Vyc2lvbiBkZXB0aDogMgotW1dvcmtlcl0gc3RvcmUuZ2V0KDApCi1QQVNTIFtXb3JrZXJd
IHRyYW5zYWN0aW9uIGlzIHN0aWxsIGFjdGl2ZQotW1dvcmtlcl0gcmVjdXJzaW9uIGRlcHRoOiAx
Ci1bV29ya2VyXSBzdG9yZS5nZXQoMCkKLVBBU1MgW1dvcmtlcl0gdHJhbnNhY3Rpb24gaXMgc3Rp
bGwgYWN0aXZlCi1QQVNTIFtXb3JrZXJdIHRyYW5zYWN0aW9uIGNvbXBsZXRlZAotW1dvcmtlcl0g
RXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmdldCgwKQotUEFTUyBbV29ya2VyXSBFeGNl
cHRpb24gd2FzIHRocm93bi4KLVBBU1MgW1dvcmtlcl0gY29kZSBpcyBJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKLVBBU1MgW1dvcmtlcl0gZW5hbWUgaXMgJ1Ry
YW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKLVtXb3JrZXJdIAotW1dvcmtlcl0gdHJ5aW5nIGEgdGlt
ZW91dCBjYWxsYmFjazoKLVtXb3JrZXJdIHNldFRpbWVvdXQodGltZW91dFRlc3QsIDApCi1bV29y
a2VyXSAKLVtXb3JrZXJdIHRpbWVvdXRUZXN0KCk6Ci1bV29ya2VyXSB0cmFuc2FjdGlvbiA9IGRi
LnRyYW5zYWN0aW9uKCdzdG9yZScpCi1bV29ya2VyXSBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZScpCi1QQVNTIFtXb3JrZXJdIHRyYW5zYWN0aW9uIHN0YXJ0ZWQgaW4gc2V0
VGltZW91dCgpIGNhbGxiYWNrIGFib3J0ZWQKLVtXb3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24g
ZnJvbSBzdG9yZS5nZXQoMCkKLVBBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCi1Q
QVNTIFtXb3JrZXJdIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5B
Q1RJVkVfRVJSCi1QQVNTIFtXb3JrZXJdIGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJy
b3InCi1bV29ya2VyXSAKLVtXb3JrZXJdIGVycm9yVGVzdCgpOgotW1dvcmtlcl0gc2VsZi5vbGRf
b25lcnJvciA9IHNlbGYub25lcnJvcgotW1dvcmtlcl0gc2VsZi5vbmVycm9yID0gZXJyb3JIYW5k
bGVyCi1bV29ya2VyXSAKLVtXb3JrZXJdIGVycm9ySGFuZGxlcigpOgotW1dvcmtlcl0gc2VsZi5v
bmVycm9yID0gc2VsZi5vbGRfb25lcnJvcgotW1dvcmtlcl0gdHJhbnNhY3Rpb24gPSBkYi50cmFu
c2FjdGlvbignc3RvcmUnKQotW1dvcmtlcl0gc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgnc3RvcmUnKQotR290IGV4cGVjdGVkIGVycm9yIGZyb20gd29ya2VyLCBpZ25vcmluZwotZXZl
bnQucHJldmVudERlZmF1bHQoKQotUEFTUyBbV29ya2VyXSBUcmFuc2FjdGlvbiBhYm9ydGVkCi1b
V29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuZ2V0KDApCi1QQVNTIFtXb3Jr
ZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgotUEFTUyBbV29ya2VyXSBjb2RlIGlzIElEQkRhdGFi
YXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgotUEFTUyBbV29ya2VyXSBlbmFt
ZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcnMuaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcnMuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY4MjY0YzFkMzk2ZmIxMDA0ZjJlMDExZmU0ODNmN2Mx
NjcyZGZmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPHNjcmlwdD4KLQotdmFyIHdvcmtlciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvdHJh
bnNhY3Rpb24tYWJvcnQtd29ya2Vycy5qcycpOwotCi0vLyBGSVhNRTogSXQgc2hvdWxkIGJlIHBv
c3NpYmxlIGZvciB0aGUgd29ya2VyIHRvIHNldCBzZWxmLm9uZXJyb3IgdG8gY2F0Y2ggdGhlIGV2
ZW50Ci0vLyBhbmQgY2FsbCBldmVudC5wcmV2ZW50RGVmYXVsdCgpLCBidXQgaW4gdGhlIGN1cnJl
bnQgV29ya2VyIGltcGxlbWVudGF0aW9uIHRoZSByYXcKLS8vIGV4Y2VwdGlvbiBpcyBzZWVuIGJ5
IHRoZSBldmVudCBoYW5kbGVyIGluIHRoZSB3b3JrZXIsIG5vdCBhbiBFcnJvckV2ZW50IG9iamVj
dC4KLQotdmFyIG9yaWdfb25lcnJvciA9IHdvcmtlci5vbmVycm9yOwotd29ya2VyLm9uZXJyb3Ig
PSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICBpZiAoZXZlbnQubWVzc2FnZSA9PT0gIlVuY2F1Z2h0
IEVycm9yOiBpZ25vcmUgdGhpcyIpIHsKLSAgICAgICAgZGVidWcoIkdvdCBleHBlY3RlZCBlcnJv
ciBmcm9tIHdvcmtlciwgaWdub3JpbmciKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQucHJl
dmVudERlZmF1bHQoKSIpOwotICAgIH0gZWxzZSBpZiAob3JpZ19vbmVycm9yKSB7Ci0gICAgICAg
IG9yaWdfb25lcnJvcihldmVudCk7Ci0gICAgfQotfTsKLQotCi08L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tYWN0aXZlLWZsYWctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWN0aXZlLWZsYWctZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJhOTFjNWI2NjU4MTZhNmNlOGUwYjU5YzU2MDI2YzE3ODI5NGQ2OGUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hY3Rp
dmUtZmxhZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMzMgQEAKK1Rlc3QgSW5kZXhlZERCIHRy
YW5zYWN0aW9uIGludGVybmFsIGFjdGl2ZSBmbGFnLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVk
REIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRl
eGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgndHJhbnNhY3Rpb24tYWN0aXZlLWZs
YWcnKQoraW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnJykKK2RiLnNldFZl
cnNpb24oJzEnKQorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQorc3RvcmUu
Y3JlYXRlSW5kZXgoJ2luZGV4JywgJ2tleXBhdGgnKQorCitydW5UcmFuc2FjdGlvbigpOgordHJh
bnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykKKworVmVyaWZ5
IHRoYXQgdHJhbnNhY3Rpb25zIGFyZSBjcmVhdGVkIHdpdGggfGFjdGl2ZXwgZmxhZyBzZXQ6Citz
dG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpCitpbmRleCA9IHN0b3JlLmlu
ZGV4KCdpbmRleCcpCitQQVNTIHN0b3JlLmFkZCgwLCAwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK1BBU1Mgc3RvcmUucHV0KDAsIDApIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBz
dG9yZS5nZXQoMCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHN0b3JlLmdldChJREJL
ZXlSYW5nZS5vbmx5KDApKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3RvcmUuZGVs
ZXRlKDApIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5kZWxldGUoSURCS2V5
UmFuZ2Uub25seSgwKSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHN0b3JlLmNvdW50
KCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHN0b3JlLmNvdW50KDApIGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5vbmx5KDApKSBk
aWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3RvcmUuY2xlYXIoKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1Mgc3RvcmUub3BlbkN1cnNvcigpIGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgorUEFTUyBzdG9yZS5vcGVuQ3Vyc29yKDApIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgor
UEFTUyBzdG9yZS5vcGVuQ3Vyc29yKDAsICduZXh0JykgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CitQQVNTIHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSkgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTIHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSwg
J25leHQnKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXguZ2V0KDApIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5nZXQoSURCS2V5UmFuZ2Uub25seSgwKSkg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGluZGV4LmdldEtleSgwKSBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXguZ2V0S2V5KElEQktleVJhbmdlLm9ubHkoMCkpIGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5jb3VudCgpIGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgorUEFTUyBpbmRleC5jb3VudCgwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1MgaW5kZXguY291bnQoSURCS2V5UmFuZ2Uub25seSgwKSkgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCitQQVNTIGluZGV4Lm9wZW5DdXJzb3IoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1MgaW5kZXgub3BlbkN1cnNvcigwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
aW5kZXgub3BlbkN1cnNvcigwLCAnbmV4dCcpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFT
UyBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCkpIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUEFTUyBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCksICduZXh0
JykgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGluZGV4Lm9wZW5LZXlDdXJzb3IoKSBk
aWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXgub3BlbktleUN1cnNvcigwKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXgub3BlbktleUN1cnNvcigwLCAnbmV4dCcp
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktl
eVJhbmdlLm9ubHkoMCkpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5vcGVu
S2V5Q3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCksICduZXh0JykgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCisKK1RyYW5zYWN0aW9uIHNob3VsZG4ndCBiZSBhY3RpdmUgaW5zaWRlIGEgbm9uLUlE
Qi1ldmVudCBjYWxsYmFjaworc2V0VGltZW91dCh0ZXN0VGltZW91dCwgMCkKKwordGVzdFRpbWVv
dXQoKToKK3N0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK2luZGV4ID0g
c3RvcmUuaW5kZXgoJ2luZGV4JykKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5hZGQo
MCwgMCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJh
c2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1lIGlzICdUcmFu
c2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUucHV0
KDAsIDApCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFi
YXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJh
bnNhY3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmdl
dCgwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5z
YWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5nZXQo
SURCS2V5UmFuZ2Uub25seSgwKSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNv
ZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitQQVNT
IGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9u
IGZyb20gc3RvcmUuZGVsZXRlKDApCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBj
b2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFT
UyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlv
biBmcm9tIHN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZS5vbmx5KDApKQorUEFTUyBFeGNlcHRpb24g
d2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElP
Tl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicK
K0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5jb3VudCgpCitQQVNTIEV4Y2VwdGlvbiB3
YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9O
X0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJwor
RXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmNvdW50KDApCitQQVNTIEV4Y2VwdGlvbiB3
YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9O
X0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJwor
RXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmNvdW50KElEQktleVJhbmdlLm9ubHkoMCkp
CitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhj
ZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rp
b25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmNsZWFyKCkK
K1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNl
cHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1lIGlzICdUcmFuc2FjdGlv
bkluYWN0aXZlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUub3BlbkN1cnNv
cigpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNl
RXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNh
Y3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLm9wZW5D
dXJzb3IoMCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0
YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1lIGlzICdU
cmFuc2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUu
b3BlbkN1cnNvcigwLCAnbmV4dCcpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBj
b2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFT
UyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlv
biBmcm9tIHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSkKK1BBU1MgRXhjZXB0
aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNB
Q1RJT05fSU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJy
b3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5n
ZS5vbmx5KDApLCAnbmV4dCcpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2Rl
IGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBl
bmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBm
cm9tIGluZGV4LmdldCgwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBp
cyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5h
bWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJv
bSBpbmRleC5nZXQoSURCS2V5UmFuZ2Uub25seSgwKSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJv
d24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJ
VkVfRVJSCitQQVNTIGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3Rp
bmcgZXhjZXB0aW9uIGZyb20gaW5kZXguZ2V0S2V5KDApCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhy
b3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0
aW5nIGV4Y2VwdGlvbiBmcm9tIGluZGV4LmdldEtleShJREJLZXlSYW5nZS5vbmx5KDApKQorUEFT
UyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlv
bi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5h
Y3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBpbmRleC5jb3VudCgpCitQQVNT
IEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9u
LlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFj
dGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGluZGV4LmNvdW50KDApCitQQVNT
IEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9u
LlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFj
dGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGluZGV4LmNvdW50KElEQktleVJh
bmdlLm9ubHkoMCkpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElE
QkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBp
cyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGlu
ZGV4Lm9wZW5DdXJzb3IoKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBp
cyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5h
bWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJv
bSBpbmRleC5vcGVuQ3Vyc29yKDApCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBj
b2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFT
UyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlv
biBmcm9tIGluZGV4Lm9wZW5DdXJzb3IoMCwgJ25leHQnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRo
cm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFD
VElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVj
dGluZyBleGNlcHRpb24gZnJvbSBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCkp
CitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhj
ZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rp
b25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGluZGV4Lm9wZW5DdXJz
b3IoSURCS2V5UmFuZ2Uub25seSgwKSwgJ25leHQnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93
bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElW
RV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGlu
ZyBleGNlcHRpb24gZnJvbSBpbmRleC5vcGVuS2V5Q3Vyc29yKCkKK1BBU1MgRXhjZXB0aW9uIHdh
cyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InCitF
eHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gaW5kZXgub3BlbktleUN1cnNvcigwKQorUEFTUyBFeGNl
cHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFO
U0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVF
cnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBpbmRleC5vcGVuS2V5Q3Vyc29yKDAsICdu
ZXh0JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJh
c2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1lIGlzICdUcmFu
c2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gaW5kZXgub3Bl
bktleUN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93
bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElW
RV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGlu
ZyBleGNlcHRpb24gZnJvbSBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCks
ICduZXh0JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0
YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1lIGlzICdU
cmFuc2FjdGlvbkluYWN0aXZlRXJyb3InCisKK3Rlc3RFdmVudENhbGxiYWNrKCk6CitUcmFuc2Fj
dGlvbiBzaG91bGQgYmUgYWN0aXZlIGluc2lkZSBhIG5vbi1JREItZXZlbnQgY2FsbGJhY2sKK3N0
b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK2luZGV4ID0gc3RvcmUuaW5k
ZXgoJ2luZGV4JykKK1BBU1Mgc3RvcmUuYWRkKDAsIDApIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyBzdG9yZS5wdXQoMCwgMCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHN0
b3JlLmdldCgwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3RvcmUuZ2V0KElEQktl
eVJhbmdlLm9ubHkoMCkpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5kZWxl
dGUoMCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHN0b3JlLmRlbGV0ZShJREJLZXlS
YW5nZS5vbmx5KDApKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3RvcmUuY291bnQo
KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3RvcmUuY291bnQoMCkgZGlkIG5vdCB0
aHJvdyBleGNlcHRpb24uCitQQVNTIHN0b3JlLmNvdW50KElEQktleVJhbmdlLm9ubHkoMCkpIGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5jbGVhcigpIGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5vcGVuQ3Vyc29yKCkgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIHN0b3JlLm9wZW5DdXJzb3IoMCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQ
QVNTIHN0b3JlLm9wZW5DdXJzb3IoMCwgJ25leHQnKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1Mgc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1Mgc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApLCAn
bmV4dCcpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5nZXQoMCkgZGlkIG5v
dCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGluZGV4LmdldChJREJLZXlSYW5nZS5vbmx5KDApKSBk
aWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXguZ2V0S2V5KDApIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5nZXRLZXkoSURCS2V5UmFuZ2Uub25seSgwKSkgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGluZGV4LmNvdW50KCkgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIGluZGV4LmNvdW50KDApIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgor
UEFTUyBpbmRleC5jb3VudChJREJLZXlSYW5nZS5vbmx5KDApKSBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KK1BBU1MgaW5kZXgub3BlbkN1cnNvcigpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgor
UEFTUyBpbmRleC5vcGVuQ3Vyc29yKDApIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBp
bmRleC5vcGVuQ3Vyc29yKDAsICduZXh0JykgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSkgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCitQQVNTIGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSwgJ25leHQn
KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXgub3BlbktleUN1cnNvcigpIGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5vcGVuS2V5Q3Vyc29yKDApIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5vcGVuS2V5Q3Vyc29yKDAsICduZXh0Jykg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5
UmFuZ2Uub25seSgwKSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGluZGV4Lm9wZW5L
ZXlDdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSwgJ25leHQnKSBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KKwordHJhbnNhY3Rpb25Db21wbGV0ZSgpOgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9t
IHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK1BBU1MgRXhjZXB0aW9u
IHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJS
CitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hY3RpdmUtZmxhZy5odG1sIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWN0aXZlLWZsYWcuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41ZTYyNmQ0OWY4MDdhN2JlZmUxNDJjMTFiMzgyYTEwYTFiOGNhYWIxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWN0aXZl
LWZsYWcuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1hY3RpdmUtZmxhZy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDJkOGRjZTQwMzBhZjlhMmFjYjQ0MzY3NGVlZGUzODllMzUxODgyYjkuLjc5MjcwOGU3NGQw
YjI5MDc2MmZlMTJlMjJjZWVlZTQ5ZGRkYjcxYmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVkLnR4
dApAQCAtMTg3LDcgKzE4Nyw3IEBAIFBBU1MgY29tcGxldGUgZXZlbnQgZmlyZWQKIGRiLnRyYW5z
YWN0aW9uKFsnc3RvcmVOYW1lJ10pCiBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKQogUEFTUyBzdG9yZS5uYW1lIGlzICJzdG9yZU5hbWUiCi1QQVNTIGFib3J0IGV2
ZW50IGZpcmVkCitQQVNTIGNvbXBsZXRlIGV2ZW50IGZpcmVkCiAKIFZlcmlmeWluZyBET01TdHJp
bmdMaXN0IHdvcmtzIGFzIGFyZ3VtZW50IGZvciBJREJEYXRhYmFzZS50cmFuc2FjdGlvbigpCiBk
Yi5vYmplY3RTdG9yZU5hbWVzIGlzIFtvYmplY3QgRE9NU3RyaW5nTGlzdF0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgt
anMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3Nz
LWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGUyNzE1OWRiOTFlOTQ1YTIyZGRiMWVj
NDA3ODE1ODgyYjJiZDljCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJh
bWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3QgdGhhdCBwZW5kaW5nIHRyYW5z
YWN0aW9ucyBhcmUgbm90IGNvbXBsZXRlZCBkdXJpbmcgcmVjdXJzaXZlIEpTIGNhbGxzIHVudGls
IGFsbCBKUyAoaW4gYWxsIGZyYW1lcykgaXMgZmluaXNoZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdElu
ZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYu
T0luZGV4ZWREQjsKKworaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCd0cmFuc2FjdGlvbi1jb21w
bGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZScpCitpbmRleGVkREIub3BlbigndHJh
bnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUnKQorZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0CitkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpCitwZW5kaW5n
VHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUn
KQorU3RhcnQgcmUtZW50cmFudCBKUwordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29i
amVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKQorRW5kIHJlLWVudHJhbnQgSlMKK3N0b3JlID0gcGVu
ZGluZ1RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScpCitQQVNTIHN0b3JlICE9
PSB1bmRlZmluZWQgaXMgdHJ1ZQorUGVuZGluZyB0cmFuc2FjdGlvbiBjb21wbGV0ZWQKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRo
LWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jYWVhNzM1Mjk2YmMzMzJlNWFjZWQzNTc5MjFkMGQ3MGZjZmMzMWVk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNh
Y3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUuaHRtbApAQCAtMCww
ICsxLDc2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZT4KKyAgICA8Ym9k
eT4KKyAgICA8L2JvZHk+Cis8L2lmcmFtZT4KKzxzY3JpcHQ+CisKK3ZhciB0cmFuc2FjdGlvbjsK
K3ZhciBzdG9yZTsKK3ZhciBkYjsKK3ZhciBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImlmcmFtZSIpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5OworCitkZXNjcmlwdGlvbigi
VGVzdCB0aGF0IHBlbmRpbmcgdHJhbnNhY3Rpb25zIGFyZSBub3QgY29tcGxldGVkIGR1cmluZyBy
ZWN1cnNpdmUgSlMgY2FsbHMgdW50aWwgYWxsIEpTIChpbiBhbGwgZnJhbWVzKSBpcyBmaW5pc2hl
ZC4iKTsKKworZnVuY3Rpb24gc2V0dXAoKSB7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCd0cmFu
c2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZScpIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24tY3Jv
c3MtZnJhbWUnKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Cisg
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH07
Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKSB7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0
VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVy
c2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkgeworICAgIHN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ29iamVjdFN0b3JlJywgbnVsbCk7CisgICAgZXZlbnQudGFyZ2V0
LnJlc3VsdC5vbmNvbXBsZXRlID0gY2xpY2s7Cit9CisKK2Z1bmN0aW9uIGNsaWNrKCkgeworICAg
IGJvZHkub25jbGljayA9IHRlc3Q7CisgICAgdmFyIHBlbmRpbmdUcmFuc2FjdGlvbiA9IGV2YWxB
bmRMb2coInBlbmRpbmdUcmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnb2JqZWN0U3RvcmUn
XSwgJ3JlYWR3cml0ZScpIik7CisgICAgcGVuZGluZ1RyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBwZW5kaW5nVHJhbnNhY3Rpb24ub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHBlbmRpbmdUcmFuc2FjdGlvbi5vbmNvbXBsZXRl
ID0gY29tcGxldGVDYWxsYmFjazsKKyAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVu
dCgiTW91c2VFdmVudCIpOworICAgIGV2ZW50LmluaXRNb3VzZUV2ZW50KCJjbGljayIsIHRydWUs
IHRydWUsIGRvY3VtZW50LmRlZmF1bHRWaWV3LCAwLCAwLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgMCwgbnVsbCk7CisgICAgYm9keS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsK
KyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHBlbmRpbmdUcmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnb2JqZWN0U3RvcmUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT09
IHVuZGVmaW5lZCIpOworICAgIGJvZHkub25jbGljayA9IHVuZGVmaW5lZDsKK30KKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgZGVidWcoIlN0YXJ0IHJlLWVudHJhbnQgSlMiKTsKKyAgICB0cmFu
c2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydvYmpl
Y3RTdG9yZSddLCAncmVhZHdyaXRlJykiKTsKKyAgICBkZWJ1ZygiRW5kIHJlLWVudHJhbnQgSlMi
KTsKK30KKworCitmdW5jdGlvbiBjb21wbGV0ZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiUGVu
ZGluZyB0cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
c2V0dXAoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdp
dGgtanMtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wMzgzMDU2YTQzYTVhZmI4MzM3NWNlNWJlODJhY2FjZGIxY2ZiYTNmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
Y29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAK
K1Rlc3QgdGhhdCBwZW5kaW5nIHRyYW5zYWN0aW9ucyBhcmUgbm90IGNvbXBsZXRlZCBkdXJpbmcg
cmVjdXJzaXZlIEpTIGNhbGxzIHVudGlsIGFsbCBKUyBpcyBmaW5pc2hlZC4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYu
d2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIg
fHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ3RyYW5zYWN0
aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uJykKK2luZGV4ZWREQi5vcGVuKCd0cmFuc2Fj
dGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbicpCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQKK2RiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykKK3BlbmRpbmdUcmFuc2FjdGlvbiA9IGRi
LnRyYW5zYWN0aW9uKFsnb2JqZWN0U3RvcmUnXSwgJ3JlYWR3cml0ZScpCitTdGFydCByZS1lbnRy
YW50IEpTCit0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnb2JqZWN0U3RvcmUnXSwgJ3Jl
YWR3cml0ZScpCitFbmQgcmUtZW50cmFudCBKUworc3RvcmUgPSBwZW5kaW5nVHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ29iamVjdFN0b3JlJykKK1BBU1Mgc3RvcmUgIT09IHVuZGVmaW5lZCBpcyB0
cnVlCitQQVNTIFBlbmRpbmcgdHJhbnNhY3Rpb24gY29tcGxldGVkCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNp
b24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBs
ZXRlLXdpdGgtanMtcmVjdXJzaW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNjMmJmYmE2ZWQ1MDI1M2Iw
YTQxNzk4ZGMxYjg0NGQ5NDA2N2RlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLmh0
bWwKQEAgLTAsMCArMSw3NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+
CisKK3ZhciB0cmFuc2FjdGlvbjsKK3ZhciBzdG9yZTsKK3ZhciBkYjsKK3ZhciBib2R5ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTsKKworZGVzY3JpcHRpb24oIlRl
c3QgdGhhdCBwZW5kaW5nIHRyYW5zYWN0aW9ucyBhcmUgbm90IGNvbXBsZXRlZCBkdXJpbmcgcmVj
dXJzaXZlIEpTIGNhbGxzIHVudGlsIGFsbCBKUyBpcyBmaW5pc2hlZC4iKTsKKworZnVuY3Rpb24g
c2V0dXAoKSB7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ3RyYW5zYWN0aW9uLWNvbXBsZXRl
LXdpdGgtanMtcmVjdXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1j
b21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbicpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gc2V0VmVyc2lvbjsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgfTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbigpIHsKKyAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQor
eworICAgIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ29iamVjdFN0b3JlJywgbnVsbCk7
CisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gY2xpY2s7Cit9CisKK2Z1bmN0
aW9uIGNsaWNrKCkgCit7CisgICAgYm9keS5vbmNsaWNrID0gdGVzdDsKKyAgICB2YXIgcGVuZGlu
Z1RyYW5zYWN0aW9uID0gZXZhbEFuZExvZygicGVuZGluZ1RyYW5zYWN0aW9uID0gZGIudHJhbnNh
Y3Rpb24oWydvYmplY3RTdG9yZSddLCAncmVhZHdyaXRlJykiKTsKKyAgICBwZW5kaW5nVHJhbnNh
Y3Rpb24ub25zdWNjZXNzID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcGVuZGluZ1Ry
YW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBwZW5kaW5n
VHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGNvbXBsZXRlQ2FsbGJhY2s7CisgICAgdmFyIGV2ZW50
ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTsKKyAgICBldmVudC5pbml0TW91
c2VFdmVudCgiY2xpY2siLCB0cnVlLCB0cnVlLCBkb2N1bWVudC5kZWZhdWx0VmlldywgMCwgMCwg
MCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIG51bGwpOworICAgIGJvZHku
ZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSBwZW5kaW5nVHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ29iamVjdFN0b3JlJykiKTsKKyAgICBz
aG91bGRCZVRydWUoInN0b3JlICE9PSB1bmRlZmluZWQiKTsKKyAgICBib2R5Lm9uY2xpY2sgPSB1
bmRlZmluZWQ7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGRlYnVnKCJTdGFydCByZS1l
bnRyYW50IEpTIik7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9
IGRiLnRyYW5zYWN0aW9uKFsnb2JqZWN0U3RvcmUnXSwgJ3JlYWR3cml0ZScpIik7CisgICAgZGVi
dWcoIkVuZCByZS1lbnRyYW50IEpTIik7Cit9CisKKworZnVuY3Rpb24gY29tcGxldGVDYWxsYmFj
aygpCit7CisgICAgdGVzdFBhc3NlZCgiUGVuZGluZyB0cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworc2V0dXAoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdvcmtlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd29ya2Vycy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjQzZDlmOGY0NTUyZjg0OTNhYWJlMDQ2MGRlNzUxMjA4OTY5ODVh
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5z
YWN0aW9uLWNvbXBsZXRlLXdvcmtlcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODQgQEAKK1tX
b3JrZXJdIFRlc3QgSW5kZXhlZERCIHdvcmtlcnMsIHJlY3Vyc2lvbiwgYW5kIHRyYW5zYWN0aW9u
IHRlcm1pbmF0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworU3RhcnRpbmcg
d29ya2VyOiByZXNvdXJjZXMvdHJhbnNhY3Rpb24tY29tcGxldGUtd29ya2Vycy5qcworW1dvcmtl
cl0gaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwg
c2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7
CitbV29ya2VyXSAKK1tXb3JrZXJdIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbigndHJhbnNhY3Rp
b24tY29tcGxldGUtd29ya2VyJykKK1tXb3JrZXJdIGRiID0gcmVxdWVzdC5yZXN1bHQKK1tXb3Jr
ZXJdIHJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykKK1tXb3JrZXJdIERlbGV0ZWQgYWxsIG9i
amVjdCBzdG9yZXMuCitbV29ya2VyXSB0cmFucyA9IHJlcXVlc3QucmVzdWx0CitbV29ya2VyXSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQorW1dvcmtlcl0gCitbV29ya2VyXSBjcmVhdGVU
cmFuc2FjdGlvbigpOgorW1dvcmtlcl0gdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3Rv
cmUnKQorW1dvcmtlcl0gc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKQor
UEFTUyBbV29ya2VyXSBUcmFuc2FjdGlvbiBjb21wbGV0ZWQKK1tXb3JrZXJdIEV4cGVjdGluZyBl
eGNlcHRpb24gZnJvbSBzdG9yZS5nZXQoMCkKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0
aHJvd24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNB
Q1RJT05fSU5BQ1RJVkVfRVJSCitQQVNTIFtXb3JrZXJdIGVuYW1lIGlzICdUcmFuc2FjdGlvbklu
YWN0aXZlRXJyb3InCitbV29ya2VyXSAKK1tXb3JrZXJdIHJlY3Vyc2lvblRlc3QoKToKK1tXb3Jr
ZXJdIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykKK1tXb3JrZXJdIHN0b3Jl
ID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK1tXb3JrZXJdIHN0b3JlLmdldCgw
KQorUEFTUyBbV29ya2VyXSB0cmFuc2FjdGlvbiBpcyBhY3RpdmUKK1tXb3JrZXJdIHJlY3Vyc2lv
biBkZXB0aDogMQorW1dvcmtlcl0gc3RvcmUuZ2V0KDApCitQQVNTIFtXb3JrZXJdIHRyYW5zYWN0
aW9uIGlzIHN0aWxsIGFjdGl2ZQorW1dvcmtlcl0gcmVjdXJzaW9uIGRlcHRoOiAyCitbV29ya2Vy
XSBzdG9yZS5nZXQoMCkKK1BBU1MgW1dvcmtlcl0gdHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZl
CitbV29ya2VyXSByZWN1cnNpb24gZGVwdGg6IDMKK1tXb3JrZXJdIHN0b3JlLmdldCgwKQorUEFT
UyBbV29ya2VyXSB0cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUKK1tXb3JrZXJdIHJlY3Vyc2lv
biBkZXB0aDogMworW1dvcmtlcl0gc3RvcmUuZ2V0KDApCitQQVNTIFtXb3JrZXJdIHRyYW5zYWN0
aW9uIGlzIHN0aWxsIGFjdGl2ZQorW1dvcmtlcl0gcmVjdXJzaW9uIGRlcHRoOiAyCitbV29ya2Vy
XSBzdG9yZS5nZXQoMCkKK1BBU1MgW1dvcmtlcl0gdHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZl
CitbV29ya2VyXSByZWN1cnNpb24gZGVwdGg6IDEKK1tXb3JrZXJdIHN0b3JlLmdldCgwKQorUEFT
UyBbV29ya2VyXSB0cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUKK1BBU1MgW1dvcmtlcl0gdHJh
bnNhY3Rpb24gY29tcGxldGVkCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3Rv
cmUuZ2V0KDApCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29y
a2VyXSBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VS
UgorUEFTUyBbV29ya2VyXSBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworW1dv
cmtlcl0gCitbV29ya2VyXSB0cnlpbmcgYSB0aW1lb3V0IGNhbGxiYWNrOgorW1dvcmtlcl0gc2V0
VGltZW91dCh0aW1lb3V0VGVzdCwgMCkKK1tXb3JrZXJdIAorW1dvcmtlcl0gdGltZW91dFRlc3Qo
KToKK1tXb3JrZXJdIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykKK1tXb3Jr
ZXJdIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK1BBU1MgW1dvcmtl
cl0gdHJhbnNhY3Rpb24gc3RhcnRlZCBpbiBzZXRUaW1lb3V0KCkgY2FsbGJhY2sgY29tcGxldGVk
CitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuZ2V0KDApCitQQVNTIFtX
b3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIElEQkRh
dGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBbV29ya2VyXSBl
bmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworW1dvcmtlcl0gCitbV29ya2VyXSBl
cnJvclRlc3QoKToKK1tXb3JrZXJdIHNlbGYub2xkX29uZXJyb3IgPSBzZWxmLm9uZXJyb3IKK1tX
b3JrZXJdIHNlbGYub25lcnJvciA9IGVycm9ySGFuZGxlcgorW1dvcmtlcl0gCitbV29ya2VyXSBl
cnJvckhhbmRsZXIoKToKK1tXb3JrZXJdIHNlbGYub25lcnJvciA9IHNlbGYub2xkX29uZXJyb3IK
K1tXb3JrZXJdIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykKK1tXb3JrZXJd
IHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK0dvdCBleHBlY3RlZCBl
cnJvciBmcm9tIHdvcmtlciwgaWdub3JpbmcKK2V2ZW50LnByZXZlbnREZWZhdWx0KCkKK1BBU1Mg
W1dvcmtlcl0gVHJhbnNhY3Rpb24gY29tcGxldGVkCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0
aW9uIGZyb20gc3RvcmUuZ2V0KDApCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3du
LgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9O
X0lOQUNUSVZFX0VSUgorUEFTUyBbV29ya2VyXSBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2
ZUVycm9yJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LWNvbXBsZXRlLXdvcmtlcnMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLWNvbXBsZXRlLXdvcmtlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2VjZjFhZGQxYmQz
ZGM3OTZhMWQxN2E3MDc0MDQyY2VlMjZlMWU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd29ya2Vycy5odG1sCkBA
IC0wLDAgKzEsMjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorCit2
YXIgd29ya2VyID0gc3RhcnRXb3JrZXIoJ3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb21wbGV0ZS13
b3JrZXJzLmpzJyk7CisKKy8vIEZJWE1FOiBJdCBzaG91bGQgYmUgcG9zc2libGUgZm9yIHRoZSB3
b3JrZXIgdG8gc2V0IHNlbGYub25lcnJvciB0byBjYXRjaCB0aGUgZXZlbnQKKy8vIGFuZCBjYWxs
IGV2ZW50LnByZXZlbnREZWZhdWx0KCksIGJ1dCBpbiB0aGUgY3VycmVudCBXb3JrZXIgaW1wbGVt
ZW50YXRpb24gdGhlIHJhdworLy8gZXhjZXB0aW9uIGlzIHNlZW4gYnkgdGhlIGV2ZW50IGhhbmRs
ZXIgaW4gdGhlIHdvcmtlciwgbm90IGFuIEVycm9yRXZlbnQgb2JqZWN0LgorCit2YXIgb3JpZ19v
bmVycm9yID0gd29ya2VyLm9uZXJyb3I7Cit3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uIChldmVu
dCkgeworICAgIGlmIChldmVudC5tZXNzYWdlID09PSAiVW5jYXVnaHQgRXJyb3I6IGlnbm9yZSB0
aGlzIikgeworICAgICAgICBkZWJ1ZygiR290IGV4cGVjdGVkIGVycm9yIGZyb20gd29ya2VyLCBp
Z25vcmluZyIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7
CisgICAgfSBlbHNlIGlmIChvcmlnX29uZXJyb3IpIHsKKyAgICAgICAgb3JpZ19vbmVycm9yKGV2
ZW50KTsKKyAgICB9Cit9OworCisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90dXRvcmlhbC5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHV0b3JpYWwuaHRtbAppbmRleCBiOTM1
ZWU1NDcxN2RjYjE2ZWY3NTg0ODJlMWZkZDkwMWY3ZmVmMTc4Li4wMjg5YTg1ZDYwZDM4ZjA0ODZk
ZWFkMzllZDkwOWIwNTc5MGI3ZWY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi90dXRvcmlhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3R1dG9yaWFsLmh0bWwKQEAgLTgyLDExICs4Miw4IEBAIGZ1bmN0aW9uIHVuZXhwZWN0ZWRFcnJv
cigpCiAgICAgLy8gdGhlIGNvcnJlY3QgdmFsdWVzLgogICAgIGxvZ0Vycm9yKCJFcnJvciAiICsg
ZXZlbnQuY29kZSArICI6ICIgKyBldmVudC5tZXNzYWdlKTsKIAotICAgIC8vIFVuZm9ydHVuYXRl
bHksIENocm9taXVtL1dlYktpdCBkbyBub3QgaW1wbGljaXRseSBhYm9ydCBhIHRyYW5zYWN0aW9u
IHdoZW4gYW4gZXJyb3Igb2NjdXJzCi0gICAgLy8gd2l0aGluIG9uZSBvZiBpdHMgYXN5bmMgb3Bl
cmF0aW9ucy4gSW4gdGhlIGZ1dHVyZSwgd2hlbiBhbiBlcnJvciBvY2N1cnMgYW5kIHRoZSBldmVu
dCBpcwotICAgIC8vIG5vdCBjYW5jZWxlZCwgdGhlIHRyYW5zYWN0aW9uIHdpbGwgYmUgYWJvcnRl
ZC4KLSAgICBpZiAoY3VycmVudFRyYW5zYWN0aW9uKQotICAgICAgICBjdXJyZW50VHJhbnNhY3Rp
b24uYWJvcnQoKTsKKyAgICAvLyBJZiB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgZXJyb3Ig
aXMgbm90IHByZXZlbnRlZCwgdGhlIHRyYW5zYWN0aW9uIHdpbGwgaW1wbGljaXRseQorICAgIC8v
IGJlIGFib3J0ZWQuCiB9CiAKIGZ1bmN0aW9uIG9uT3BlbigpCkBAIC0yMTksOCArMjE2LDggQEAg
ZnVuY3Rpb24gb25TZXRWZXJzaW9uQ29tcGxldGUoKQogICAgIC8vIFRoYXQncyBmaW5lIGZvciB0
aGlzIGNhc2UsIGJ1dCBsYXRlciB3ZSdsbCBhc2sgZm9yICdyZWFkd3JpdGUnLiBBdCB0aGUgbW9t
ZW50LAogICAgIC8vIENocm9taXVtL1dlYktpdCBwcmV0ZW5kcyBldmVyeSB0cmFuc2FjdGlvbiBp
cyBSRUFEX1dSSVRFLCB3aGljaCBpcyBraW5kIG9mIGJhZC4KICAgICB3aW5kb3cuY3VycmVudFRy
YW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oInBlb3BsZSIsICdyZWFkd3JpdGUnKTsKLSAgICBj
dXJyZW50VHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZTsKLSAgICBj
dXJyZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9IG9uVHJhbnNhY3Rpb25BYm9ydGVkOworICAgIGN1
cnJlbnRUcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gb25UcmFuc2FjdGlvbkNvbXBsZXRlZDsKKyAg
ICBjdXJyZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydDsKIAogICAgIC8v
IFZlcmlmeSB0aGF0ICJwZW9wbGUiIGlzIHRoZSBvbmx5IG9iamVjdCBzdG9yZSBpbiBleGlzdGFu
Y2UuIFRoZSBvYmplY3RTdG9yZU5hbWVzIGF0dHJpYnV0ZSBpcwogICAgIC8vIGEgRE9NU3RyaW5n
TGlzdCB3aGljaCBpcyBzb21ld2hhdCBsaWtlIGFuIGFycmF5LgpAQCAtMjU0LDE2ICsyNTEsMTEg
QEAgZnVuY3Rpb24gb25TZXRWZXJzaW9uQ29tcGxldGUoKQogICAgIGlmIChvYmplY3RTdG9yZS5p
bmRleE5hbWVzLmxlbmd0aCAhPSAyKQogICAgICAgICBsb2dFcnJvcigiU29tZXRoaW5nIHdlbnQg
d3JvbmcuIik7CiAKLSAgICAvLyBOb3RlIHRoYXQgbm8gYXN5bmMgYWN0aW9ucyB3ZXJlIGV2ZXIg
cXVldWVkIHVwIGFnaWFuc3Qgb3VyIHRyYW5zYWN0aW9uLCBzbyBpdCdsbCBhYm9ydCBvbmNlCisg
ICAgLy8gTm90ZSB0aGF0IG5vIGFzeW5jIGFjdGlvbnMgd2VyZSBldmVyIHF1ZXVlZCB1cCBhZ2Fp
bnN0IG91ciB0cmFuc2FjdGlvbi4gSXQgd2lsbCBjb21taXQgd2hlbgogICAgIC8vIHdlIGxlYXZl
IHRoaXMgY29udGV4dC4KIH0KIAotZnVuY3Rpb24gdW5leHBlY3RlZENvbXBsZXRlKCkKLXsKLSAg
ICBsb2dFcnJvcigiQSB0cmFuc2FjdGlvbiBjb21taXR0ZWQgdW5leHBlY3RlZGx5ISIpOwotfQot
Ci1mdW5jdGlvbiBvblRyYW5zYWN0aW9uQWJvcnRlZCgpCitmdW5jdGlvbiBvblRyYW5zYWN0aW9u
Q29tcGxldGVkKCkKIHsKICAgICAvLyBOb3cgbGV0J3MgbWFrZSBhIHJlYWwgdHJhbnNhY3Rpb24g
YW5kIGEgcGVyc29uIHRvIG91ciBvYmplY3RTdG9yZS4KICAgICB3aW5kb3cuY3VycmVudFRyYW5z
YWN0aW9uID0gZGIudHJhbnNhY3Rpb24oInBlb3BsZSIsICdyZWFkd3JpdGUnKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150014</attachid>
            <date>2012-06-28 14:22:11 -0700</date>
            <delta_ts>2012-06-28 17:38:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-89379-20120628142211.patch</filename>
            <type>text/plain</type>
            <size>86913</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M2ZTA4ZjEwZGUzM2Nm
NjE1MDZlNWYzMGEyYjM4ZDZjZmVhZDI3ZC4uZjhiMTk0MjU3Y2IwYjA3MTNiODVlM2Y2OTNkNDNh
OGY3YTNhZTA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTA2LTI2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBs
ZW1lbnQgSURCVHJhbnNhY3Rpb24gaW50ZXJuYWwgYWN0aXZlIGZsYWcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5Mzc5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBJREIgdHJhbnNhY3Rpb25zIHNob3VsZCBvbmx5
IGJlICJhY3RpdmUiIGR1cmluZyBJREIgc3VjY2Vzcy9lcnJvciBjYWxsYmFja3M7CisgICAgICAg
IGF0dGVtcHRzIHRvIG1ha2UgbmV3IHJlcXVlc3RzIG90aGVyd2lzZSAoZS5nLiBpbiBhIHNldFRp
bWVvdXQgY2FsbGJhY2spCisgICAgICAgIHNob3VsZCBmYWlsIGV2ZW4gaWYgdGhlIHRyYW5zYWN0
aW9uIGhhcyBub3QgeWV0IGZpbmlzaGVkLiBJbXBsZW1lbnQgdGhpcyBsb2dpYywKKyAgICAgICAg
YW5kIHRoZSBjbG9zZWx5IHJlbGF0ZWQgcmVxdWlyZW1lbnQgdGhhdCB0cmFuc2FjdGlvbnMgYXJl
IGRlYWN0aXZhdGVkIHdoZW4KKyAgICAgICAgdGhlIGNvbnRleHQgdGhleSB3ZXJlIGNyZWF0ZWQg
aW4gcmV0dXJucyB0byB0aGUgZXZlbnQgbG9vcCwgYW5kIGZpbmFsbHkgdGhhdAorICAgICAgICB3
aGVuIHNvIGRlYWN0aXZhdGVkIHRoZXkgc2hvdWxkIGNvbW1pdCByYXRoZXIgdGhhbiBhYm9ydCAo
YXMgcHJldmlvdXNseQorICAgICAgICBpbXBsZW1lbnRlZCkgaWYgbm8gcmVxdWVzdHMgaGF2ZSBi
ZWVuIGZpbGVkLgorCisgICAgICAgIFRlc3RzOiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1hY3RpdmUtZmxhZy5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1sCisgICAg
ICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpz
LXJlY3Vyc2lvbi5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1jb21wbGV0ZS13b3JrZXJzLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuY3BwOiBTaW1wbGlmeSBBUEkuCisgICAgICAg
IChXZWJDb3JlOjp0cmFuc2FjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SURCUGVuZGluZ1Ry
YW5zYWN0aW9uTW9uaXRvcjo6YWRkTmV3VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6ZGVhY3RpdmF0ZU5ld1RyYW5zYWN0aW9ucyk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRv
ci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJQZW5kaW5nVHJhbnNhY3Rpb25N
b25pdG9yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDogVW5y
ZWdpc3RlcnMgZnJvbSB0cmFuc2FjdGlvbiB3aGVuIGRvbmUsCisgICAgICAgIG5vdCBvbiBkZXN0
cnVjdGlvbi4gTm8gbG9uZ2VyIHJlc3BvbnNpYmxlIGZvciB3b3JraW5nIHdpdGggdGhlIHBlbmRp
bmcgbW9uaXRvci4KKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OklEQlJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6fklEQlJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVxdWVzdDo6bWFya0Vhcmx5RGVhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVxdWVzdDo6cmVzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6
Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50
KTogU2V0IGFjdGl2ZSBmbGFnIG9uIHRyYW5zYWN0aW9uIGR1cmluZyBjYWxsYmFjay4KKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6IFVzZSBzdGF0ZSBlbnVt
IHRvIGJldHRlciB0cmFjayBsaWZlY3ljbGUsIGFuZAorICAgICAgICB0YWtlIG93bmVyc2hpcCBv
ZiByZWxhdGlvbnNoaXAgd2l0aCBwZW5kaW5nIG1vbml0b3IuCisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24pOiBTcGVjaWFsIGNhc2VzIGZvciB2ZXJzaW9u
IGNoYW5nZQorICAgICAgICB0cmFuc2FjdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6fklEQlRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c2V0RXJyb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZUNyZWF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c2V0QWN0aXZlKTogTGV0IElEQlJlcXVlc3QgYW5k
IElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IKKyAgICAgICAgdG9nZ2xlIHRoZSBhY3RpdmUg
c3RhdGUuIE5lZWRzIHNvbWUgc21hcnRzIGJlY2F1c2UgKDEpIHN0YXRlIG1heSBtb3ZlIHRvIEZp
bmlzaGluZyBkdXJpbmcKKyAgICAgICAgdGhlIHJlcXVlc3QncyBkaXNwYXRjaCBwaGFzZSBkdWUg
dG8gYW4gaW1wbGljaXQvZXhwbGljaXQgYWJvcnQsIGFuZCAoMikgYSBtb25pdG9yIGNhbGwKKyAg
ICAgICAgd2lsbCBvbmx5IHRyaWdnZXIgYSBjb21taXQgaWYgdGhlIHRyYW5zYWN0aW9uIGhhc24n
dCBoYWQgYW55IHJlcXVlc3RzIGZpbGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OnJlZ2lzdGVyUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbjo6dW5yZWdpc3RlclJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246Om9uQWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9uQ29tcGxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0
eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y2FuU3VzcGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OmlzRmluaXNoZWQpOgorICAgICAgICAoSURCVHJhbnNhY3Rpb24pOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29tbWl0KTogQWxsb3cgZXhw
bGljaXQgY29tbWl0KCkgY2FsbHMgZnJvbSB0aGUgZnJvbnQgZW5kCisgICAgICAgIGlmIG5vIHJl
cXVlc3RzIGhhdmUgYmVlbiBmaWxlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSk6IEV4cG9zZSBjb21taXQoKSBtZXRob2QuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWFp
blRocmVhZEV4ZWNTdGF0ZTo6ZGlkTGVhdmVTY3JpcHRDb250ZXh0KTogQ2hhbmdlIHRhcmdldCBm
dW5jdGlvbiBuYW1lLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UmVjdXJzaW9uU2NvcGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhSZWN1cnNpb25TY29wZTo6ZGlkTGVhdmVTY3JpcHRDb250
ZXh0KTogQ2hhbmdlIHRhcmdldCBmdW5jdGlvbiBuYW1lLgorCiAyMDEyLTA2LTI4ICBDaHJpc3Rv
cGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0g
VXNlIEVpbmFfTW9kdWxlIEFQSSBpbnN0ZWFkIG9mIGRsb3BlbiBpbiBQbHVnaW5QYWNrYWdlRWZs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDA0ODQ5YzI4YmUzNDMyOGY5NjVhNGQxNmNj
ODVkYWFiNjY0MTYxMjcuLmE0ZGEyMzI4OWVhZmYwOGJhYTU0NWRhOTBlNDJkYzkyZTI1NjUzZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDYtMjYg
IEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6
IEltcGxlbWVudCBJREJUcmFuc2FjdGlvbiBpbnRlcm5hbCBhY3RpdmUgZmxhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkzNzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIFRvIG1hdGNoIHRoZSBJREIgc3BlYywg
dHJhbnNhY3Rpb25zIHRoYXQgaGF2ZSBoYWQgbm8gcmVxdWVzdHMKKyAgICAgICAgZmlsZWQgYWdh
aW5zdCB0aGVtIHNob3VsZCBjb21taXQsIG5vdCBhYm9ydC4gVGhpcyByZXF1aXJlcyBwbHVtYmlu
ZworICAgICAgICB0aHJvdWdoIHRoZSBjb21taXQoKSBjYWxsIGZyb20gZnJvbnQtZW5kIHRvIGJh
Y2stZW5kLgorCisgICAgICAgICogc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OmNvbW1pdCk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94
eS5oOgorICAgICAgICAoSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNy
Yy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJUcmFu
c2FjdGlvbkltcGw6OmNvbW1pdCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9X
ZWJJREJUcmFuc2FjdGlvbkltcGwuaDoKKwogMjAxMi0wNi0yOCAgQWxwaGEgTGFtICA8aGNsYW1A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjE0NjMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5n
VHJhbnNhY3Rpb25Nb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuY3BwCmluZGV4IDJjNWFjNWEyYjNhZGE5MTM4
ZDJmYjQ1YjVlMzBjZWZjNTUwODFmNWYuLjU1M2FmM2YyMTE0MTIxYTA1NjQwNjQ0NGIyNmM0MmQ1
ZTA0OTliMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuY3BwCkBAIC0yNSw3ICsy
NSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNh
Y3Rpb25Nb25pdG9yLmgiCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
LmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkU3Bl
Y2lmaWMuaD4KIAogdXNpbmcgV1RGOjpUaHJlYWRTcGVjaWZpYzsKQEAgLTM0LDM2ICszNCwyOSBA
QCB1c2luZyBXVEY6OlRocmVhZFNwZWNpZmljOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBUaHJlYWRTcGVjaWZpYzxWZWN0b3I8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
Kj4gPiYgdHJhbnNhY3Rpb25zKCkKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxJREJUcmFuc2FjdGlv
bj4gPiBUcmFuc2FjdGlvbkxpc3Q7CitzdGF0aWMgVGhyZWFkU3BlY2lmaWM8VHJhbnNhY3Rpb25M
aXN0PiYgdHJhbnNhY3Rpb25zKCkKIHsKICAgICAvLyBGSVhNRTogTW92ZSB0aGUgVmVjdG9yIHRv
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgdG8gYXZvaWQgZGVhbGluZyB3aXRoCiAgICAgLy8gdGhy
ZWFkLWxvY2FsIHN0b3JhZ2UuCi0gICAgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljKFRocmVh
ZFNwZWNpZmljPFZlY3RvcjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqPiA+KiwgdHJh
bnNhY3Rpb25zID0gbmV3IFRocmVhZFNwZWNpZmljPFZlY3RvcjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqPiA+KTsKKyAgICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoVGhyZWFk
U3BlY2lmaWM8VHJhbnNhY3Rpb25MaXN0PiosIHRyYW5zYWN0aW9ucyA9IG5ldyBUaHJlYWRTcGVj
aWZpYzxUcmFuc2FjdGlvbkxpc3Q+KTsKICAgICByZXR1cm4gKnRyYW5zYWN0aW9uczsKIH0KIAot
dm9pZCBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yOjphZGRQZW5kaW5nVHJhbnNhY3Rpb24o
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKK3ZvaWQgSURCUGVu
ZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6YWRkTmV3VHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24pCiB7CiAgICAgdHJhbnNhY3Rpb25zKCktPmFwcGVuZCh0
cmFuc2FjdGlvbik7CiB9CiAKLXZvaWQgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6cmVt
b3ZlUGVuZGluZ1RyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJh
bnNhY3Rpb24pCit2b2lkIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OmRlYWN0aXZhdGVO
ZXdUcmFuc2FjdGlvbnMoKQogewotICAgIFRocmVhZFNwZWNpZmljPFZlY3RvcjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqPiA+JiB0cmFuc2FjdGlvbkxpc3QgPSB0cmFuc2FjdGlvbnMo
KTsKLSAgICBzaXplX3QgcG9zID0gdHJhbnNhY3Rpb25MaXN0LT5maW5kKHRyYW5zYWN0aW9uKTsK
LSAgICBpZiAocG9zID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0KLSAgICB0cmFuc2Fj
dGlvbkxpc3QtPnJlbW92ZShwb3MpOwotfQotCi12b2lkIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1v
bml0b3I6OmFib3J0UGVuZGluZ1RyYW5zYWN0aW9ucygpCi17Ci0gICAgVGhyZWFkU3BlY2lmaWM8
VmVjdG9yPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSo+ID4mIHRyYW5zYWN0aW9uTGlz
dCA9IHRyYW5zYWN0aW9ucygpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNhY3Rp
b25zKCktPnNpemUoKTsgKytpKQotICAgICAgICB0cmFuc2FjdGlvbkxpc3QtPmF0KGkpLT5hYm9y
dCgpOworICAgIFRocmVhZFNwZWNpZmljPFRyYW5zYWN0aW9uTGlzdD4mIGxpc3QgPSB0cmFuc2Fj
dGlvbnMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3QtPnNpemUoKTsgKytpKSB7
CisgICAgICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBsaXN0LT5hdChp
KTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPnNldEFjdGl2ZShmYWxzZSk7CisgICAgfQogICAgIC8v
IEZJWE1FOiBFeGVyY2lzZSB0aGlzIGNhbGwgdG8gY2xlYXIoKSBpbiBhIGxheW91dCB0ZXN0Lgot
ICAgIHRyYW5zYWN0aW9uTGlzdC0+Y2xlYXIoKTsKKyAgICBsaXN0LT5jbGVhcigpOwogfQogCiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGlu
Z1RyYW5zYWN0aW9uTW9uaXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oCmluZGV4IDEyOGI1NTEzMzRiZDM4OWM4OGE1
MGMwOWRlZDMyMmMxNGZhODNjZmUuLmZlZjU1ZmUzYzJmNTMyMGQ5YWFlMDdjODI4Nzg0MWI0MzJm
NTBiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlBl
bmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgKQEAgLTMzLDIwICszMywxOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZTsKK2NsYXNzIElEQlRyYW5zYWN0aW9uOwogCiAvLyBUaGlzIGNsYXNzIGtlZXBzIHRy
YWNrIG9mIHRoZSB0cmFuc2FjdGlvbnMgY3JlYXRlZCBkdXJpbmcgdGhlIGN1cnJlbnQKLS8vIEph
dmFzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQuIEEgdHJhbnNhY3Rpb24gaXMgJ3BlbmRpbmcnIGlm
IG5vIGFzeW5jaHJvbm91cwotLy8gb3BlcmF0aW9uIGlzIGN1cnJlbnRseSBxdWV1ZWQgZm9yIGl0
IChlLmcuIGFuIElEQk9iamVjdFN0b3JlOjpwdXQoKSBvciBzaW1pbGFyKS4KLS8vIEFsbCBwZW5k
aW5nIHRyYW5zYWN0aW9ucyBhcmUgYWJvcnRlZCBhcyBzb29uIGFzIGV4ZWN1dGlvbiByZXR1cm5z
IGZyb20KLS8vIHRoZSBzY3JpcHQgZW5naW5lLgorLy8gSmF2YXNjcmlwdCBleGVjdXRpb24gY29u
dGV4dC4gVHJhbnNhY3Rpb25zIGhhdmUgYW4gaW50ZXJuYWwgfGFjdGl2ZXwgZmxhZworLy8gd2hp
Y2ggaXMgc2V0IHRvIHRydWUgb24gY3JlYXRpb24sIGJ1dCBtdXN0IGJlIHNldCB0byBmYWxzZSB3
aGVuIGNvbnRyb2wKKy8vIHJldHVybnMgdG8gdGhlIGV2ZW50IGxvb3AuCiAKIGNsYXNzIElEQlBl
bmRpbmdUcmFuc2FjdGlvbk1vbml0b3IgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElEQlBl
bmRpbmdUcmFuc2FjdGlvbk1vbml0b3IpOwogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFkZFBl
bmRpbmdUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKLSAgICBz
dGF0aWMgdm9pZCByZW1vdmVQZW5kaW5nVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKik7Ci0gICAgc3RhdGljIHZvaWQgYWJvcnRQZW5kaW5nVHJhbnNhY3Rpb25zKCk7
CisgICAgc3RhdGljIHZvaWQgYWRkTmV3VHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbj4pOworICAgIHN0YXRpYyB2b2lkIGRlYWN0aXZhdGVOZXdUcmFuc2FjdGlvbnMoKTsKIAog
cHJpdmF0ZToKICAgICBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IDc2NjIxNWJi
OWMwMDVkYWU5YTNiMDE3ZjViZTk3YjcyYjkzMmRhMTQuLjdiOTVhMjgyMDNjZGU0NDBlOTk3MDQ5
MjkzNzhmNWQ0NWFjMGNiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiSURCQ3Vyc29y
V2l0aFZhbHVlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJFdmVu
dERpc3BhdGNoZXIuaCIKLSNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgi
CiAjaW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAK
QEAgLTY1LDE1ICs2NCwxMiBAQCBJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyYwogewogICAgIGlmICht
X3RyYW5zYWN0aW9uKSB7CiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPnJlZ2lzdGVyUmVxdWVzdCh0
aGlzKTsKLSAgICAgICAgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6cmVtb3ZlUGVuZGlu
Z1RyYW5zYWN0aW9uKG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSk7CiAgICAgfQogfQogCiBJREJS
ZXF1ZXN0Ojp+SURCUmVxdWVzdCgpCiB7CiAgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBET05F
IHx8IG1fcmVhZHlTdGF0ZSA9PSBFYXJseURlYXRoIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwotICAgIGlmIChtX3RyYW5zYWN0aW9uKQotICAgICAgICBtX3RyYW5zYWN0aW9uLT51bnJl
Z2lzdGVyUmVxdWVzdCh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxJREJBbnk+IElEQlJlcXVlc3Q6
OnJlc3VsdChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKQEAgLTEzOCw2ICsxMzQsOCBAQCB2b2lk
IElEQlJlcXVlc3Q6Om1hcmtFYXJseURlYXRoKCkKIHsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRl
ID09IFBFTkRJTkcpOwogICAgIG1fcmVhZHlTdGF0ZSA9IEVhcmx5RGVhdGg7CisgICAgaWYgKG1f
dHJhbnNhY3Rpb24pCisgICAgICAgIG1fdHJhbnNhY3Rpb24tPnVucmVnaXN0ZXJSZXF1ZXN0KHRo
aXMpOwogfQogCiBib29sIElEQlJlcXVlc3Q6OnJlc2V0UmVhZHlTdGF0ZShJREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24pCkBAIC0xNTMsOCArMTUxLDggQEAgYm9vbCBJREJSZXF1ZXN0OjpyZXNl
dFJlYWR5U3RhdGUoSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIG1fZXJyb3JDb2Rl
ID0gMDsKICAgICBtX2Vycm9yLmNsZWFyKCk7CiAgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJpbmco
KTsKLQotICAgIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OnJlbW92ZVBlbmRpbmdUcmFu
c2FjdGlvbihtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCkpOworICAgIEFTU0VSVChtX3RyYW5zYWN0
aW9uKTsKKyAgICBtX3RyYW5zYWN0aW9uLT5yZWdpc3RlclJlcXVlc3QodGhpcyk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTI4OSw4ICsyODcsNiBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gcHJwQmFja2Vu
ZAogICAgIEFTU0VSVChtX3NvdXJjZS0+dHlwZSgpID09IElEQkFueTo6SURCRGF0YWJhc2VUeXBl
KTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpOwogCi0gICAg
SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6cmVtb3ZlUGVuZGluZ1RyYW5zYWN0aW9uKG1f
dHJhbnNhY3Rpb24tPmJhY2tlbmQoKSk7Ci0KICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRl
KGZyb250ZW5kLnJlbGVhc2UoKSk7CiAgICAgZW5xdWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVu
dCgpKTsKIH0KQEAgLTM4OCw3ICszODQsMTMgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogCiAgICAgLy8gRklYTUU6IFdoZW4gd2UgYWxs
b3cgY3VzdG9tIGV2ZW50IGRpc3BhdGNoaW5nLCB0aGlzIHdpbGwgcHJvYmFibHkgbmVlZCB0byBj
aGFuZ2UuCiAgICAgQVNTRVJUKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1Y2Nlc3NF
dmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IHx8IGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCk7CisgICAgY29uc3QgYm9vbCBz
ZXRUcmFuc2FjdGlvbkFjdGl2ZSA9IG1fdHJhbnNhY3Rpb24gJiYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCB8fCAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVz
KCkuZXJyb3JFdmVudCAmJiBtX2Vycm9yQ29kZSAhPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURC
X0FCT1JUX0VSUikpOworCisgICAgaWYgKHNldFRyYW5zYWN0aW9uQWN0aXZlKQorICAgICAgICBt
X3RyYW5zYWN0aW9uLT5zZXRBY3RpdmUodHJ1ZSk7CiAgICAgYm9vbCBkb250UHJldmVudERlZmF1
bHQgPSBJREJFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsK
KyAgICBpZiAoc2V0VHJhbnNhY3Rpb25BY3RpdmUpCisgICAgICAgIG1fdHJhbnNhY3Rpb24tPnNl
dEFjdGl2ZShmYWxzZSk7CiAKICAgICAvLyBJZiB0aGUgcmVzdWx0IHdhcyBvZiB0eXBlIElEQkN1
cnNvciwgb3IgYSBvbkJsb2NrZWQgZXZlbnQsIHRoZW4gd2UnbGwgZmlyZSBhZ2Fpbi4KICAgICBp
ZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50ICYmICghY3Vyc29y
VG9Ob3RpZnkgfHwgbV9jdXJzb3JGaW5pc2hlZCkpCkBAIC00MDUsNiArNDA3LDEwIEBAIGJvb2wg
SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICAg
ICAgfQogICAgICAgICBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCktPmRpZENvbXBsZXRlVGFza0V2
ZW50cygpOwogICAgIH0KKworICAgIGlmIChtX3RyYW5zYWN0aW9uICYmIG1fcmVhZHlTdGF0ZSA9
PSBET05FKQorICAgICAgICBtX3RyYW5zYWN0aW9uLT51bnJlZ2lzdGVyUmVxdWVzdCh0aGlzKTsK
KwogICAgIHJldHVybiBkb250UHJldmVudERlZmF1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA2YWQzMDA3
MjM4ZWYzNmY2NThmNmMyMmI1ZWI5YzZhNzM2Nzc0NWE1Li41ZjI0OTIxMmJmNTU2OTJhOWU0NmNl
YzdjNjA3YWQ2Zjg4NzRjMWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC04NSwxOSArODUsMjkgQEAgSURCVHJhbnNh
Y3Rpb246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8SURCVHIKICAgICAsIG1fZGF0YWJhc2UoZGIpCiAgICAgLCBtX21vZGUobW9kZSkK
ICAgICAsIG1fYWN0aXZlKHRydWUpCi0gICAgLCBtX3RyYW5zYWN0aW9uRmluaXNoZWQoZmFsc2Up
CisgICAgLCBtX3N0YXRlKFVudXNlZCkKICAgICAsIG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCiB7
CiAgICAgQVNTRVJUKG1fYmFja2VuZCk7CiAgICAgQVNTRVJUKG1fbW9kZSA9PSBtX2JhY2tlbmQt
Pm1vZGUoKSk7Ci0gICAgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6YWRkUGVuZGluZ1Ry
YW5zYWN0aW9uKG1fYmFja2VuZC5nZXQoKSk7CisKKyAgICBpZiAobW9kZSA9PSBWRVJTSU9OX0NI
QU5HRSkgeworICAgICAgICAvLyBOb3QgYWN0aXZlIHVudGlsIHRoZSBjYWxsYmFjay4KKyAgICAg
ICAgbV9hY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgLy8gSW1wbGljaXRseSB1c2VkIGJ5IHRoZSB2
ZXJzaW9uIGNoYW5nZSBpdHNlbGYuCisgICAgICAgIG1fc3RhdGUgPSBVc2VkOworICAgIH0KKwog
ICAgIC8vIFdlIHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhpcyBvYmplY3QgYmVmb3JlIGl0IGNhbiBi
ZSBhZG9wdGVkLgogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOworICAgIGlmIChtX2Fj
dGl2ZSkKKyAgICAgICAgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6YWRkTmV3VHJhbnNh
Y3Rpb24odGhpcyk7CiAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25DcmVhdGVkKHRoaXMpOwog
fQogCiBJREJUcmFuc2FjdGlvbjo6fklEQlRyYW5zYWN0aW9uKCkKIHsKKyAgICBBU1NFUlQobV9z
dGF0ZSA9PSBGaW5pc2hlZCk7CiB9CiAKIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSog
SURCVHJhbnNhY3Rpb246OmJhY2tlbmQoKSBjb25zdApAQCAtMTA1LDExICsxMTUsNiBAQCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIElEQlRyYW5zYWN0aW9uOjpiYWNrZW5kKCkgY29u
c3QKICAgICByZXR1cm4gbV9iYWNrZW5kLmdldCgpOwogfQogCi1ib29sIElEQlRyYW5zYWN0aW9u
Ojppc0ZpbmlzaGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90cmFuc2FjdGlvbkZpbmlzaGVk
OwotfQotCiBjb25zdCBTdHJpbmcmIElEQlRyYW5zYWN0aW9uOjptb2RlKCkgY29uc3QKIHsKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTEyNSw3ICsxMzAsNyBAQCBJREJEYXRhYmFzZSog
SURCVHJhbnNhY3Rpb246OmRiKCkgY29uc3QKIAogUGFzc1JlZlB0cjxET01FcnJvcj4gSURCVHJh
bnNhY3Rpb246OmVycm9yKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIGlmICghbV90
cmFuc2FjdGlvbkZpbmlzaGVkKSB7CisgICAgaWYgKG1fc3RhdGUgIT0gRmluaXNoZWQpIHsKICAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xMzQsNyArMTM5LDcgQEAgUGFzc1JlZlB0cjxE
T01FcnJvcj4gSURCVHJhbnNhY3Rpb246OmVycm9yKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAog
CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpzZXRFcnJvcihQYXNzUmVmUHRyPERPTUVycm9yPiBlcnJv
cikKIHsKLSAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7CisgICAgQVNTRVJUKG1f
c3RhdGUgIT0gRmluaXNoZWQpOwogICAgIEFTU0VSVChlcnJvcik7CiAKICAgICAvLyBUaGUgZmly
c3QgZXJyb3IgdG8gYmUgc2V0IGlzIHRoZSB0cnVlIGNhdXNlIG9mIHRoZQpAQCAtMTQ1LDcgKzE1
MCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnNldEVycm9yKFBhc3NSZWZQdHI8RE9NRXJyb3I+
IGVycm9yKQogCiBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6b2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBp
ZiAobV90cmFuc2FjdGlvbkZpbmlzaGVkKSB7CisgICAgaWYgKG1fc3RhdGUgPT0gRmluaXNoZWQp
IHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVf
RVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xNzAsNyArMTc1LDcgQEAgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgRXhjZXAKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVDcmVh
dGVkKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gcHJwT2Jq
ZWN0U3RvcmUpCiB7Ci0gICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQpOworICAgIEFT
U0VSVChtX3N0YXRlICE9IEZpbmlzaGVkKTsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9i
amVjdFN0b3JlID0gcHJwT2JqZWN0U3RvcmU7CiAgICAgbV9vYmplY3RTdG9yZU1hcC5zZXQobmFt
ZSwgb2JqZWN0U3RvcmUpOwogICAgIGlmIChpc1ZlcnNpb25DaGFuZ2UoKSkKQEAgLTE3OSw3ICsx
ODQsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZUNyZWF0ZWQoY29uc3QgU3Ry
aW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQk9iamVjdAogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpv
YmplY3RTdG9yZURlbGV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIEFTU0VSVCghbV90
cmFuc2FjdGlvbkZpbmlzaGVkKTsKKyAgICBBU1NFUlQobV9zdGF0ZSAhPSBGaW5pc2hlZCk7CiAg
ICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKICAgICBJREJPYmplY3RTdG9yZU1hcDo6aXRl
cmF0b3IgaXQgPSBtX29iamVjdFN0b3JlTWFwLmZpbmQobmFtZSk7CiAgICAgaWYgKGl0ICE9IG1f
b2JqZWN0U3RvcmVNYXAuZW5kKCkpIHsKQEAgLTE5MCwxMCArMTk1LDI0IEBAIHZvaWQgSURCVHJh
bnNhY3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgfQog
fQogCit2b2lkIElEQlRyYW5zYWN0aW9uOjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCit7CisgICAg
QVNTRVJUKG1fc3RhdGUgIT0gRmluaXNoZWQpOworICAgIGlmIChtX3N0YXRlID09IEZpbmlzaGlu
ZykKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX3N0YXRlID09IFVudXNlZCB8fCBtX3N0
YXRlID09IFVzZWQpOworICAgIEFTU0VSVChhY3RpdmUgIT0gbV9hY3RpdmUpOworICAgIG1fYWN0
aXZlID0gYWN0aXZlOworCisgICAgaWYgKCFhY3RpdmUgJiYgbV9zdGF0ZSA9PSBVbnVzZWQpCisg
ICAgICAgIG1fYmFja2VuZC0+Y29tbWl0KCk7Cit9CisKIHZvaWQgSURCVHJhbnNhY3Rpb246OmFi
b3J0KCkKIHsKLSAgICBpZiAobV90cmFuc2FjdGlvbkZpbmlzaGVkKQorICAgIGlmIChtX3N0YXRl
ID09IEZpbmlzaGluZyB8fCBtX3N0YXRlID09IEZpbmlzaGVkKQogICAgICAgICByZXR1cm47Cisg
ICAgbV9zdGF0ZSA9IEZpbmlzaGluZzsKICAgICBtX2FjdGl2ZSA9IGZhbHNlOwogICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbj4gc2VsZlJlZiA9IHRoaXM7CiAgICAgaWYgKG1fYmFja2VuZCkKQEAg
LTIzMiwyMiArMjUxLDI3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmNsb3NlT3BlbkN1cnNvcnMo
KQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZWdpc3RlclJlcXVlc3QoSURCUmVxdWVzdCogcmVx
dWVzdCkKIHsKLSAgICBtX2NoaWxkUmVxdWVzdHMuYWRkKHJlcXVlc3QpOworICAgIEFTU0VSVChy
ZXF1ZXN0KTsKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBVbnVzZWQgfHwgbV9zdGF0ZSA9PSBVc2Vk
KTsKKyAgICBBU1NFUlQobV9hY3RpdmUpOworICAgIG1fcmVxdWVzdExpc3QuYWRkKHJlcXVlc3Qp
OworICAgIG1fc3RhdGUgPSBVc2VkOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjp1bnJlZ2lz
dGVyUmVxdWVzdChJREJSZXF1ZXN0KiByZXF1ZXN0KQogeworICAgIEFTU0VSVChyZXF1ZXN0KTsK
ICAgICAvLyBJZiB3ZSBhYm9ydGVkIHRoZSByZXF1ZXN0LCBpdCB3aWxsIGFscmVhZHkgaGF2ZSBi
ZWVuIHJlbW92ZWQuCi0gICAgbV9jaGlsZFJlcXVlc3RzLnJlbW92ZShyZXF1ZXN0KTsKKyAgICBt
X3JlcXVlc3RMaXN0LnJlbW92ZShyZXF1ZXN0KTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6
b25BYm9ydCgpCiB7Ci0gICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQpOwotICAgIG1f
YWN0aXZlID0gZmFsc2U7Ci0gICAgd2hpbGUgKCFtX2NoaWxkUmVxdWVzdHMuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIElEQlJlcXVlc3QqIHJlcXVlc3QgPSAqbV9jaGlsZFJlcXVlc3RzLmJlZ2luKCk7
Ci0gICAgICAgIG1fY2hpbGRSZXF1ZXN0cy5yZW1vdmUocmVxdWVzdCk7CisgICAgQVNTRVJUKG1f
c3RhdGUgIT0gRmluaXNoZWQpOworICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7CisgICAgd2hpbGUg
KCFtX3JlcXVlc3RMaXN0LmlzRW1wdHkoKSkgeworICAgICAgICBJREJSZXF1ZXN0KiByZXF1ZXN0
ID0gKm1fcmVxdWVzdExpc3QuYmVnaW4oKTsKKyAgICAgICAgbV9yZXF1ZXN0TGlzdC5yZW1vdmUo
cmVxdWVzdCk7CiAgICAgICAgIHJlcXVlc3QtPmFib3J0KCk7CiAgICAgfQogCkBAIC0yNjcsOCAr
MjkxLDggQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b25BYm9ydCgpCiAKIHZvaWQgSURCVHJhbnNh
Y3Rpb246Om9uQ29tcGxldGUoKQogewotICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbkZpbmlzaGVk
KTsKLSAgICBtX2FjdGl2ZSA9IGZhbHNlOworICAgIEFTU0VSVChtX3N0YXRlICE9IEZpbmlzaGVk
KTsKKyAgICBtX3N0YXRlID0gRmluaXNoaW5nOwogICAgIG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFw
LmNsZWFyKCk7CiAgICAgY2xvc2VPcGVuQ3Vyc29ycygpOwogICAgIG1fZGF0YWJhc2UtPnRyYW5z
YWN0aW9uRmluaXNoZWQodGhpcyk7CkBAIC0yODQsNyArMzA4LDcgQEAgYm9vbCBJREJUcmFuc2Fj
dGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKICAgICAvLyBGSVhNRTogSW4gYW4gaWRl
YWwgd29ybGQsIHdlIHNob3VsZCByZXR1cm4gdHJ1ZSBhcyBsb25nIGFzIGFueW9uZSBoYXMgYSBv
ciBjYW4KICAgICAvLyAgICAgICAgZ2V0IGEgaGFuZGxlIHRvIHVzIG9yIGFueSBjaGlsZCByZXF1
ZXN0IG9iamVjdCBhbmQgYW55IG9mIHRob3NlIGhhdmUKICAgICAvLyAgICAgICAgZXZlbnQgbGlz
dGVuZXJzLiBUaGlzIGlzICBpbiBvcmRlciB0byBoYW5kbGUgdXNlciBnZW5lcmF0ZWQgZXZlbnRz
IHByb3Blcmx5LgotICAgIHJldHVybiAhbV90cmFuc2FjdGlvbkZpbmlzaGVkIHx8IEFjdGl2ZURP
TU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgcmV0dXJuIG1fc3RhdGUgIT0gRmlu
aXNoZWQgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIH0KIAogSURC
VHJhbnNhY3Rpb246Ok1vZGUgSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShjb25zdCBTdHJp
bmcmIG1vZGVTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzMyLDEwICszNTYsMTAgQEAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSURCVHJhbnNhY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdAogYm9vbCBJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBJREJfVFJBQ0UoIklEQlRyYW5zYWN0aW9uOjpkaXNw
YXRjaEV2ZW50Iik7Ci0gICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQpOworICAgIEFT
U0VSVChtX3N0YXRlICE9IEZpbmlzaGVkKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKICAgICBBU1NFUlQoZXZlbnQtPnRhcmdldCgpID09IHRoaXMpOwotICAgIG1fdHJh
bnNhY3Rpb25GaW5pc2hlZCA9IHRydWU7CisgICAgbV9zdGF0ZSA9IEZpbmlzaGVkOwogCiAgICAg
Ly8gQnJlYWsgcmVmZXJlbmNlIGN5Y2xlcy4KICAgICBmb3IgKElEQk9iamVjdFN0b3JlTWFwOjpp
dGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVNYXAuYmVnaW4oKTsgaXQgIT0gbV9vYmplY3RTdG9y
ZU1hcC5lbmQoKTsgKytpdCkKQEAgLTM1NSw3ICszNzksNyBAQCBib29sIElEQlRyYW5zYWN0aW9u
OjpjYW5TdXNwZW5kKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGVjaG5pY2FsbHkgd2UgY2Fu
IHN1c3BlbmQgYmVmb3JlIHRoZSBmaXJzdCByZXF1ZXN0IGlzIHNjaGVkdWxlCiAgICAgLy8gICAg
ICAgIGFuZCBhZnRlciB0aGUgY29tcGxldGUvYWJvcnQgZXZlbnQgaXMgZW5xdWV1ZWQuCi0gICAg
cmV0dXJuIG1fdHJhbnNhY3Rpb25GaW5pc2hlZDsKKyAgICByZXR1cm4gbV9zdGF0ZSA9PSBGaW5p
c2hlZDsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6c3RvcCgpCkBAIC0zNjgsNyArMzkyLDcg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6c3RvcCgpCiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmVu
cXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKLSAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQsICJBIGZpbmlzaGVkIHRyYW5zYWN0aW9uIHRy
aWVkIHRvIGVucXVldWUgYW4gZXZlbnQgb2YgdHlwZSAlcy4iLCBldmVudC0+dHlwZSgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9zdGF0ZSAhPSBG
aW5pc2hlZCwgIkEgZmluaXNoZWQgdHJhbnNhY3Rpb24gdHJpZWQgdG8gZW5xdWV1ZSBhbiBldmVu
dCBvZiB0eXBlICVzLiIsIGV2ZW50LT50eXBlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAg
ICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaAppbmRleCAyY2U4MmIxY2Y3N2FhZjIwZmQyMjQwZGExYjhmNjhjMWI5
MWQyMmVjLi5lNWZiYTdjYmUzZTFlODllOWM5YjZiZTQzMGY3ZTk4YTE2YzYxNTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAg
LTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiBiYWNrZW5kKCkgY29uc3Q7CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYWN0aXZlOyB9Ci0gICAgYm9vbCBpc0ZpbmlzaGVkKCkgY29uc3Q7CisgICAgYm9vbCBpc0Zp
bmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBGaW5pc2hlZDsgfQogICAgIGJvb2wg
aXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9PSBSRUFEX09OTFk7IH0KICAgICBi
b29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9PSBWRVJTSU9OX0NI
QU5HRTsgfQogCkBAIC05NSw2ICs5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJS
ZXF1ZXN0KElEQlJlcXVlc3QqKTsKICAgICB2b2lkIG9iamVjdFN0b3JlQ3JlYXRlZChjb25zdCBT
dHJpbmcmLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPik7CiAgICAgdm9pZCBvYmplY3RTdG9y
ZURlbGV0ZWQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CiAKICAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFib3J0KTsKICAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvbXBsZXRlKTsKQEAgLTEzMywxNSArMTM0LDIyIEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwog
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKIAor
ICAgIGVudW0gU3RhdGUgeworICAgICAgICBVbnVzZWQsIC8vIE5vIHJlcXVlc3RzIGhhdmUgYmVl
biBtYWRlLgorICAgICAgICBVc2VkLCAvLyBBdCBsZWFzdCBvbmUgcmVxdWVzdCBoYXMgYmVlbiBt
YWRlLgorICAgICAgICBGaW5pc2hpbmcsIC8vIEluIHRoZSBwcm9jZXNzIG9mIGFib3J0aW5nIG9y
IGNvbXBsZXRpbmcuCisgICAgICAgIEZpbmlzaGVkLCAvLyBObyBtb3JlIGV2ZW50cyB3aWxsIGZp
cmUgYW5kIG5vIG5ldyByZXF1ZXN0cyBtYXkgYmUgZmlsZWQuCisgICAgfTsKKwogICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8
SURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7CiAgICAgY29uc3QgTW9kZSBtX21vZGU7CiAgICAgYm9v
bCBtX2FjdGl2ZTsKLSAgICBib29sIG1fdHJhbnNhY3Rpb25GaW5pc2hlZDsgLy8gSXMgaXQgcG9z
c2libGUgdGhhdCB3ZSdsbCBmaXJlIGFueSBtb3JlIGV2ZW50cyBvciBhbGxvdyBhbnkgbmV3IHJl
cXVlc3RzPyBJZiBub3QsIHdlJ3JlIGZpbmlzaGVkLgorICAgIFN0YXRlIG1fc3RhdGU7CiAgICAg
Ym9vbCBtX2NvbnRleHRTdG9wcGVkOwogICAgIFJlZlB0cjxET01FcnJvcj4gbV9lcnJvcjsKIAot
ICAgIExpc3RIYXNoU2V0PElEQlJlcXVlc3QqPiBtX2NoaWxkUmVxdWVzdHM7CisgICAgTGlzdEhh
c2hTZXQ8SURCUmVxdWVzdCo+IG1fcmVxdWVzdExpc3Q7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+ID4gSURCT2JqZWN0U3RvcmVNYXA7CiAgICAg
SURCT2JqZWN0U3RvcmVNYXAgbV9vYmplY3RTdG9yZU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bC5jcHAKaW5kZXggNmRmZjJiMDUwMTQ4MjE5MzllMzg0NmQ3N2ZkNWI3MDM2NGE5NWYxMC4uOTRk
MzBkYzkzNjk5ZWI5MTM2ZjZhYmQ3MWJiMDY3M2ViYmFiYmRmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbC5jcHAKQEAgLTIwMSwxMiArMjAxLDEzIEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbDo6Y29tbWl0KCkKICAgICAvLyBjb21taXQgc3RlcHMgYmVsb3cuIFdlIHRoZXJlZm9y
ZSB0YWtlIGEgc2VsZiByZWZlcmVuY2UgdG8ga2VlcCBvdXJzZWx2ZXMKICAgICAvLyBhbGl2ZSB3
aGlsZSBleGVjdXRpbmcgdGhpcyBtZXRob2QuCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw+IHNlbGYodGhpcyk7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gUnVubmluZyk7Cisg
ICAgQVNTRVJUKG1fc3RhdGUgPT0gVW51c2VkIHx8IG1fc3RhdGUgPT0gUnVubmluZyk7CiAgICAg
QVNTRVJUKG1fdGFza1F1ZXVlLmlzRW1wdHkoKSk7CiAKKyAgICBib29sIHVudXNlZCA9IG1fc3Rh
dGUgPT0gVW51c2VkOwogICAgIG1fc3RhdGUgPSBGaW5pc2hlZDsKIAotICAgIGJvb2wgY29tbWl0
dGVkID0gbV90cmFuc2FjdGlvbi0+Y29tbWl0KCk7CisgICAgYm9vbCBjb21taXR0ZWQgPSB1bnVz
ZWQgfHwgbV90cmFuc2FjdGlvbi0+Y29tbWl0KCk7CiAKICAgICAvLyBCYWNraW5nIHN0b3JlIHJl
c291cmNlcyAoaGVsZCB2aWEgY3Vyc29ycykgbXVzdCBiZSByZWxlYXNlZCBiZWZvcmUgc2NyaXB0
IGNhbGxiYWNrcwogICAgIC8vIGFyZSBmaXJlZCwgYXMgdGhlIHNjcmlwdCBjYWxsYmFja3MgbWF5
IHJlbGVhc2UgcmVmZXJlbmNlcyBhbmQgYWxsb3cgdGhlIGJhY2tpbmcgc3RvcmUKQEAgLTIxNiw3
ICsyMTcsOCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCgpCiAKICAg
ICAvLyBUcmFuc2FjdGlvbnMgbXVzdCBhbHNvIGJlIG1hcmtlZCBhcyBjb21wbGV0ZWQgYmVmb3Jl
IHRoZSBmcm9udC1lbmQgaXMgbm90aWZpZWQsIGFzCiAgICAgLy8gdGhlIHRyYW5zYWN0aW9uIGNv
bXBsZXRpb24gdW5ibG9ja3Mgb3BlcmF0aW9ucyBsaWtlIGNsb3NpbmcgY29ubmVjdGlvbnMuCi0g
ICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25Db29yZGluYXRvcigpLT5kaWRGaW5pc2hUcmFuc2Fj
dGlvbih0aGlzKTsKKyAgICBpZiAoIXVudXNlZCkKKyAgICAgICAgbV9kYXRhYmFzZS0+dHJhbnNh
Y3Rpb25Db29yZGluYXRvcigpLT5kaWRGaW5pc2hUcmFuc2FjdGlvbih0aGlzKTsKICAgICBtX2Rh
dGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMpOwogCiAgICAgaWYgKGNvbW1pdHRlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggMDAzZGJmZGNjZjU0MjkyYjgy
YWFiMmMzNWYyYWRiY2UwZjUxZDY1ZC4uZDhmNDhhYjUwODU3MTJlZTA4ZTRmYzNkOTU0OTI5YzBm
M2E3ZmJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTUzLDYgKzUz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgbW9kZSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPiBhYm9ydFRhc2sgPSBudWxscHRyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENv
bXBsZXRlVGFza0V2ZW50cygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0KCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJh
Y2tzKElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWdp
c3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZEltcGwqKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcAppbmRleCAw
MGJjMTcwZDJiMzUyMzZlMTg5ZDIzM2U5Yzk0M2JiMjQ5ODViOWQ2Li45NTg4Yzk0ZDA4ZTNjMTI2
ZjExY2NiODkzM2Y5ODBmZTdmNGZkOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAKQEAgLTM4LDcgKzM4LDkgQEAgSlND
OjpFeGVjU3RhdGUqIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6c19tYWluVGhyZWFkU3RhdGUgPSAw
Owogdm9pZCBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmRpZExlYXZlU2NyaXB0Q29udGV4dCgpCiB7
CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgSURCUGVuZGluZ1RyYW5zYWN0aW9u
TW9uaXRvcjo6YWJvcnRQZW5kaW5nVHJhbnNhY3Rpb25zKCk7ICAgCisgICAgLy8gSW5kZXhlZCBE
QiByZXF1aXJlcyB0aGF0IHRyYW5zYWN0aW9ucyBhcmUgY3JlYXRlZCB3aXRoIGFuIGludGVybmFs
IHxhY3RpdmV8IGZsYWcKKyAgICAvLyBzZXQgdG8gdHJ1ZSwgYnV0IHRoZSBmbGFnIGJlY29tZXMg
ZmFsc2Ugd2hlbiBjb250cm9sIHJldHVybnMgdG8gdGhlIGV2ZW50IGxvb3AuCisgICAgSURCUGVu
ZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6ZGVhY3RpdmF0ZU5ld1RyYW5zYWN0aW9ucygpOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmNwcAppbmRleCA5MmJlNzIwYjE0YzY5ZjA1
ZjZlZWY2YTk2YzI2ODJjNGIzY2ZjZjY1Li4xNjA2N2U1MGRmYjRhMTczZjUzNWM1YzhhMTUxMTE5
MjYyNTk3ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vy
c2lvblNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFJlY3Vyc2lv
blNjb3BlLmNwcApAQCAtNDEsMTAgKzQxLDkgQEAgdm9pZCBWOFJlY3Vyc2lvblNjb3BlOjpkaWRM
ZWF2ZVNjcmlwdENvbnRleHQoKQogICAgIC8vIEZJWE1FOiBJbnN0cnVtZW50IGFueSB3b3JrIHRo
YXQgdGFrZXMgcGxhY2Ugd2hlbiBzY3JpcHQgZXhpdHMgdG8gYysrIChlLmcuIE11dGF0aW9uIE9i
c2VydmVycykuCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICAvLyBJZiB3ZSd2
ZSBqdXN0IGxlZnQgYSBzY3JpcHQgY29udGV4dCBhbmQgaW5kZXhlZCBkYXRhYmFzZSBoYXMgYmVl
bgotICAgIC8vIGluc3RhbnRpYXRlZCwgd2UgbXVzdCBsZXQgaXRzIHRyYW5zYWN0aW9uIGNvb3Jk
aW5hdG9yIGtub3cgc28gaXQgY2FuIHRlcm1pbmF0ZQotICAgIC8vIGFueSBub3QteWV0LXN0YXJ0
ZWQgdHJhbnNhY3Rpb25zLgotICAgIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OmFib3J0
UGVuZGluZ1RyYW5zYWN0aW9ucygpOworICAgIC8vIEluZGV4ZWQgREIgcmVxdWlyZXMgdGhhdCB0
cmFuc2FjdGlvbnMgYXJlIGNyZWF0ZWQgd2l0aCBhbiBpbnRlcm5hbCB8YWN0aXZlfCBmbGFnCisg
ICAgLy8gc2V0IHRvIHRydWUsIGJ1dCB0aGUgZmxhZyBiZWNvbWVzIGZhbHNlIHdoZW4gY29udHJv
bCByZXR1cm5zIHRvIHRoZSBldmVudCBsb29wLgorICAgIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1v
bml0b3I6OmRlYWN0aXZhdGVOZXdUcmFuc2FjdGlvbnMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KE1VVEFUSU9OX09CU0VSVkVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmNwcAppbmRleCBiZmQ5ODA4ZWE4OTc2
OWYzNWNlY2EzYWM1OWM2NTMyOTExYzhjMThiLi41ZTdkZTJlYjBiY2NkYzNkODRmY2U5NzQ0YTkx
OWEyYjRkYWI5NTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJU
cmFuc2FjdGlvbkJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuY3BwCkBAIC02Nyw2ICs2NywxMSBAQCB1bnNp
Z25lZCBzaG9ydCBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6bW9kZSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fd2ViSURCVHJhbnNhY3Rpb24tPm1vZGUoKTsKIH0KIAordm9pZCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRQcm94eTo6Y29tbWl0KCkKK3sKKyAgICBtX3dlYklEQlRyYW5zYWN0aW9uLT5j
b21taXQoKTsKK30KKwogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6YWJvcnQoKQog
ewogICAgIG1fd2ViSURCVHJhbnNhY3Rpb24tPmFib3J0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaAppbmRleCBh
ZmVmMDA4MmNkZjE2NDVhNzdjMzMxYjc4MDZlM2I0YWRlMWNmOWYwLi5lMWE5ZjUxMTViOWMxYmQ5
ZDRkNjNlOTRlMjc0OGJiN2ZkOTFhYWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgKQEAgLTQzLDYgKzQzLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBtb2RlKCkg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdCgpOwogICAgIHZpcnR1YWwgdm9pZCBhYm9y
dCgpOwogICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZVRhc2soUGFzc093blB0cjxXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgUGFzc093blB0cjxXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlVGFz
a0V2ZW50cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
VHJhbnNhY3Rpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRy
YW5zYWN0aW9uSW1wbC5jcHAKaW5kZXggZTBhMDMxODkwZmVkNTM3NzBkODJkMWM3ODBlNDUyMTAz
NTg5N2M5OC4uYmYxMGFkYjYwOGM3YTE5N2JjMzI1ODg1YzdlZWYxYjlhYzY3ZmRjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwu
Y3BwCkBAIC01OSw2ICs1OSwxMSBAQCBXZWJJREJPYmplY3RTdG9yZSogV2ViSURCVHJhbnNhY3Rp
b25JbXBsOjpvYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIEV4YwogICAgIHJldHVy
biBuZXcgV2ViSURCT2JqZWN0U3RvcmVJbXBsKG9iamVjdFN0b3JlKTsKIH0KIAordm9pZCBXZWJJ
REJUcmFuc2FjdGlvbkltcGw6OmNvbW1pdCgpCit7CisgICAgbV9iYWNrZW5kLT5jb21taXQoKTsK
K30KKwogdm9pZCBXZWJJREJUcmFuc2FjdGlvbkltcGw6OmFib3J0KCkKIHsKICAgICBtX2JhY2tl
bmQtPmFib3J0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJUcmFuc2FjdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRy
YW5zYWN0aW9uSW1wbC5oCmluZGV4IGZhMTA0OWJkMGExYjEzMTFkOTU1ODI2MjdhYzYwNGE4NzAy
YTEzOTkuLmUwODVhYTcwZDJlMmE5MDU1YmY0YzRjNzcwZTdmZDljNmRkMWQ3MjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oCkBA
IC00Myw2ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50IG1vZGUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZShjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0KCk7
CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRl
VGFza0V2ZW50cygpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoV2ViSURCVHJhbnNh
Y3Rpb25DYWxsYmFja3MqKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MTJmYjY4ZTQzYzY0YTk1NmNhNDllYTkwOTJjM2I2
ODgzNjg1MGIwLi44M2FmZDM0OGQ5NzZiZTNhNDZjZWE2NWI3ZDYzZTZjMWQ1MjAwOTljIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDYtMjYgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEltcGxlbWVudCBJREJUcmFuc2FjdGlvbiBp
bnRlcm5hbCBhY3RpdmUgZmxhZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODkzNzkKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFjdGl2ZS1m
bGFnLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJh
bnNhY3Rpb24tYmFzaWNzLmpzOgorICAgICAgICAoY29tcGxldGVDYWxsYmFjayk6IEVtcHR5IHRy
YW5zYWN0aW9ucyBub3cgY29tbWl0IHJhdGhlciB0aGFuIGFib3J0LgorICAgICAgICAoZW1wdHlD
b21wbGV0ZUNhbGxiYWNrKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
dHJhbnNhY3Rpb24tY29tcGxldGUtd29ya2Vycy5qczogUmVuYW1lZCBmcm9tIExheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLmpz
LgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3N0cnVjdHVyZWQtY2xvbmUuaHRtbDogQXNz
dW1lZCBlbXB0eSB0cmFuc2FjdGlvbnMgYWJvcnRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1hY3RpdmUtZmxhZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUt
d2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1y
ZWN1cnNpb24tY3Jvc3MtZnJhbWUtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1l
Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1sLgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9u
LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dC4KKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vy
c2lvbi5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24uaHRtbC4KKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13b3JrZXJzLWV4cGVjdGVkLnR4dDogUmVu
YW1lZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0
LXdvcmtlcnMtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5z
YWN0aW9uLWNvbXBsZXRlLXdvcmtlcnMuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcnMuaHRtbC4KKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi90dXRvcmlhbC5odG1sOiBBc3N1bWVkIGVtcHR5IHRyYW5zYWN0
aW9ucyBhYm9ydGVkLgorCiAyMDEyLTA2LTI4ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3Bo
ZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gRW5hYmxlIHN1cHBvcnQgZm9yIEhU
TUw1IGRhdGFsaXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWJvcnQtd29ya2Vycy5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmEwZGYwNmYyZTYwZjY4ODQ1Y2JkOThiOWY4MjYz
NGQ0MGMyMTU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hYm9y
dC13b3JrZXJzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLWlmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwot
fQotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgd29ya2VycywgcmVjdXJzaW9uLCBhbmQg
dHJhbnNhY3Rpb24gdGVybWluYXRpb24uIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhl
ZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcicpIik7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsK
LSAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAg
cmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOwotICAgICAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3Qu
cmVzdWx0Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgn
c3RvcmUnKSIpOwotICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGNyZWF0ZVRyYW5zYWN0
aW9uOwotICAgICAgICB9OwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9u
KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoImNyZWF0ZVRyYW5zYWN0aW9uKCk6Iik7
Ci0gICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIp
OwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3Jl
JykiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2Fs
bGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQ7Ci19Ci0KLWZ1
bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZCgpCi17Ci0gICAgdGVzdFBhc3NlZCgiVHJhbnNhY3Rp
b24gYWJvcnRlZCIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCgwKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiLCAiJ1RyYW5z
YWN0aW9uSW5hY3RpdmVFcnJvciciKTsKLSAgICByZWN1cnNpb25UZXN0KCk7Ci19Ci0KLWZ1bmN0
aW9uIHJlY3Vyc2lvblRlc3QoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygicmVjdXJz
aW9uVGVzdCgpOiIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rp
b24oJ3N0b3JlJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZScpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHRyYW5zYWN0
aW9uQ29tcGxldGVkOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5nZXQoMCkiKTsKLSAgICB0ZXN0UGFzc2Vk
KCJ0cmFuc2FjdGlvbiBpcyBhY3RpdmUiKTsKLSAgICByZWN1cnNlKDEpOwotfQotCi1mdW5jdGlv
biByZWN1cnNlKGNvdW50KQotewotICAgIGRlYnVnKCJyZWN1cnNpb24gZGVwdGg6ICIgKyBjb3Vu
dCk7Ci0gICAgZXZhbEFuZExvZygic3RvcmUuZ2V0KDApIik7Ci0gICAgdGVzdFBhc3NlZCgidHJh
bnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZlIik7Ci0gICAgaWYgKGNvdW50IDwgMykgewotICAgICAg
ICByZWN1cnNlKGNvdW50ICsgMSk7Ci0gICAgfQotICAgIGRlYnVnKCJyZWN1cnNpb24gZGVwdGg6
ICIgKyBjb3VudCk7Ci0gICAgZXZhbEFuZExvZygic3RvcmUuZ2V0KDApIik7Ci0gICAgdGVzdFBh
c3NlZCgidHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZlIik7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5z
YWN0aW9uQ29tcGxldGVkKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJ0cmFuc2FjdGlvbiBjb21wbGV0
ZWQiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5nZXQoMCkiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIiwgIidUcmFuc2FjdGlvbklu
YWN0aXZlRXJyb3InIik7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRyeWluZyBhIHRp
bWVvdXQgY2FsbGJhY2s6Iik7Ci0gICAgZXZhbEFuZExvZygic2V0VGltZW91dCh0aW1lb3V0VGVz
dCwgMCkiKTsKLX0KLQotZnVuY3Rpb24gdGltZW91dFRlc3QoKQotewotICAgIGRlYnVnKCIiKTsK
LSAgICBkZWJ1ZygidGltZW91dFRlc3QoKToiKTsKLQotICAgIGV2YWxBbmRMb2coInRyYW5zYWN0
aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9uLm9u
YWJvcnQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoInRyYW5zYWN0aW9uIHN0
YXJ0ZWQgaW4gc2V0VGltZW91dCgpIGNhbGxiYWNrIGFib3J0ZWQiKTsKLSAgICAgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRS
QU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIsICInVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJyIpOwot
Ci0gICAgICAgIGVycm9yVGVzdCgpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGVycm9yVGVzdCgp
Ci17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJlcnJvclRlc3QoKToiKTsKLSAgICBldmFs
QW5kTG9nKCJzZWxmLm9sZF9vbmVycm9yID0gc2VsZi5vbmVycm9yIik7Ci0gICAgZXZhbEFuZExv
Zygic2VsZi5vbmVycm9yID0gZXJyb3JIYW5kbGVyIik7Ci0gICAgdGhyb3cgbmV3IEVycm9yKCJp
Z25vcmUgdGhpcyIpOwotfQotCi1mdW5jdGlvbiBlcnJvckhhbmRsZXIoZSkKLXsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgZGVidWcoImVycm9ySGFuZGxlcigpOiIpOwotICAgIC8vIEZJWE1FOiBTaG91
bGQgYmUgYWJsZSB0byBzdG9wIHRoZSBlcnJvciBoZXJlLCBidXQgaXQgaXNuJ3QgYW4gRXZlbnQg
b2JqZWN0LgotICAgIC8vIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKLSAg
ICBldmFsQW5kTG9nKCJzZWxmLm9uZXJyb3IgPSBzZWxmLm9sZF9vbmVycm9yIik7Ci0gICAgZXZh
bEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOwotICAgIGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAg
ICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0g
ICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRy
YW5zYWN0aW9uLm9uYWJvcnQgPSBlcnJvclRyYW5zYWN0aW9uQWJvcnRlZDsKLX0KLQotZnVuY3Rp
b24gZXJyb3JUcmFuc2FjdGlvbkFib3J0ZWQoKQotewotICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0
aW9uIGFib3J0ZWQiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5nZXQoMCki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIiwgIidUcmFu
c2FjdGlvbkluYWN0aXZlRXJyb3InIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3Qo
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90
cmFuc2FjdGlvbi1hY3RpdmUtZmxhZy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy90cmFuc2FjdGlvbi1hY3RpdmUtZmxhZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjUzNDk5
NTEwOWY3ZjQ2OGY3NGM4MDVkYThkNGEzMWE3MDc1Yjc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFjdGl2ZS1m
bGFnLmpzCkBAIC0wLDAgKzEsMTM4IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCIHRyYW5zYWN0aW9uIGludGVybmFsIGFjdGl2ZSBmbGFnLiIpOworCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ3RyYW5zYWN0aW9uLWFjdGl2
ZS1mbGFnJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnJyki
KTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkYiA9
IHJlcXVlc3QucmVzdWx0OworICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNl
dFZlcnNpb24oJzEnKSIpOworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQ7CisgICAg
ICAgICAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlJykiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJ
bmRleCgnaW5kZXgnLCAna2V5cGF0aCcpIik7CisgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24u
b25jb21wbGV0ZSA9IHJ1blRyYW5zYWN0aW9uOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsK
KyAgICB9OworfQorCitmdW5jdGlvbiBydW5UcmFuc2FjdGlvbigpCit7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJydW5UcmFuc2FjdGlvbigpOiIpOworICAgIGV2YWxBbmRMb2coInRyYW5z
YWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWR3cml0ZScpIik7CisKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoIlZlcmlmeSB0aGF0IHRyYW5zYWN0aW9ucyBhcmUgY3JlYXRl
ZCB3aXRoIHxhY3RpdmV8IGZsYWcgc2V0OiIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJpbmRleCA9
IHN0b3JlLmluZGV4KCdpbmRleCcpIik7CisgICAgZm9yIChpID0gMDsgaSA8IHN0YXRlbWVudHMu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgc2hvdWxkTm90VGhyb3coc3RhdGVtZW50c1tpXSk7Cisg
ICAgfQorCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUcmFuc2FjdGlvbiBzaG91bGRuJ3Qg
YmUgYWN0aXZlIGluc2lkZSBhIG5vbi1JREItZXZlbnQgY2FsbGJhY2siKTsKKyAgICBldmFsQW5k
TG9nKCJzZXRUaW1lb3V0KHRlc3RUaW1lb3V0LCAwKSIpOworCisgICAgdGltZW91dENvbXBsZXRl
ID0gZmFsc2U7CisKKyAgICAvLyBLZWVwIHRyYW5zYWN0aW9uIGFsaXZlIHVudGlsIHRpbWVvdXQg
Y2FsbGJhY2sgY29tcGxldGVzIC0gZG9uJ3QgbG9nCisgICAgLy8gYW55dGhpbmcgaGVyZSBhcyB0
aGlzIGNvdWxkIHJ1biBhIHZhcmlhYmxlIG51bWJlciBvZiB0aW1lcyBkZXBlbmRpbmcKKyAgICAv
LyBvbiB0aGUgcG9ydC4KKyAgICBmdW5jdGlvbiBidXN5KCkgeworICAgICAgICBpZiAodGltZW91
dENvbXBsZXRlKSB7CisgICAgICAgICAgICB0ZXN0RXZlbnRDYWxsYmFjaygpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJ1c3lSZXF1ZXN0ID0gdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ3N0b3JlJykuZ2V0KDApOworICAgICAgICBidXN5UmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIGJ1c3lSZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGJ1c3koKTsKKyAgICAgICAgfTsKKyAgICB9
CisgICAgYnVzeSgpOworCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9u
Q29tcGxldGU7Cit9CisKK3ZhciBzdGF0ZW1lbnRzID0gWworICAgICJzdG9yZS5hZGQoMCwgMCki
LAorICAgICJzdG9yZS5wdXQoMCwgMCkiLAorICAgICJzdG9yZS5nZXQoMCkiLAorICAgICJzdG9y
ZS5nZXQoSURCS2V5UmFuZ2Uub25seSgwKSkiLAorICAgICJzdG9yZS5kZWxldGUoMCkiLAorICAg
ICJzdG9yZS5kZWxldGUoSURCS2V5UmFuZ2Uub25seSgwKSkiLAorICAgICJzdG9yZS5jb3VudCgp
IiwKKyAgICAic3RvcmUuY291bnQoMCkiLAorICAgICJzdG9yZS5jb3VudChJREJLZXlSYW5nZS5v
bmx5KDApKSIsCisgICAgInN0b3JlLmNsZWFyKCkiLAorICAgICJzdG9yZS5vcGVuQ3Vyc29yKCki
LAorICAgICJzdG9yZS5vcGVuQ3Vyc29yKDApIiwKKyAgICAic3RvcmUub3BlbkN1cnNvcigwLCAn
bmV4dCcpIiwKKyAgICAic3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApKSIsCisg
ICAgInN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSwgJ25leHQnKSIsCisgICAg
ImluZGV4LmdldCgwKSIsCisgICAgImluZGV4LmdldChJREJLZXlSYW5nZS5vbmx5KDApKSIsCisg
ICAgImluZGV4LmdldEtleSgwKSIsCisgICAgImluZGV4LmdldEtleShJREJLZXlSYW5nZS5vbmx5
KDApKSIsCisgICAgImluZGV4LmNvdW50KCkiLAorICAgICJpbmRleC5jb3VudCgwKSIsCisgICAg
ImluZGV4LmNvdW50KElEQktleVJhbmdlLm9ubHkoMCkpIiwKKyAgICAiaW5kZXgub3BlbkN1cnNv
cigpIiwKKyAgICAiaW5kZXgub3BlbkN1cnNvcigwKSIsCisgICAgImluZGV4Lm9wZW5DdXJzb3Io
MCwgJ25leHQnKSIsCisgICAgImluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSki
LAorICAgICJpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCksICduZXh0JykiLAor
ICAgICJpbmRleC5vcGVuS2V5Q3Vyc29yKCkiLAorICAgICJpbmRleC5vcGVuS2V5Q3Vyc29yKDAp
IiwKKyAgICAiaW5kZXgub3BlbktleUN1cnNvcigwLCAnbmV4dCcpIiwKKyAgICAiaW5kZXgub3Bl
bktleUN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApKSIsCisgICAgImluZGV4Lm9wZW5LZXlDdXJz
b3IoSURCS2V5UmFuZ2Uub25seSgwKSwgJ25leHQnKSIKK107CisKK2Z1bmN0aW9uIHRlc3RUaW1l
b3V0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RUaW1lb3V0KCk6Iik7Cisg
ICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKSIp
OworICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4JykiKTsKKyAgICBm
b3IgKGkgPSAwOyBpIDwgc3RhdGVtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKHN0YXRlbWVudHNbaV0sICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFO
U0FDVElPTl9JTkFDVElWRV9FUlIiLCAiJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciciKTsKKyAg
ICB9CisgICAgdGltZW91dENvbXBsZXRlID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gdGVzdEV2ZW50
Q2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdEV2ZW50Q2FsbGJh
Y2soKToiKTsKKworICAgIGRlYnVnKCJUcmFuc2FjdGlvbiBzaG91bGQgYmUgYWN0aXZlIGluc2lk
ZSBhIG5vbi1JREItZXZlbnQgY2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRy
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygiaW5kZXgg
PSBzdG9yZS5pbmRleCgnaW5kZXgnKSIpOworICAgIGZvciAoaSA9IDA7IGkgPCBzdGF0ZW1lbnRz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIHNob3VsZE5vdFRocm93KHN0YXRlbWVudHNbaV0pOwor
ICAgIH0KK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZSgpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJ0cmFuc2FjdGlvbkNvbXBsZXRlKCk6Iik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKSIs
ICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWJhc2lj
cy5qcwppbmRleCA0ZGE5ZGNlMmMwODE4ZGY4MGRmOGQ5Y2M5MjM3NjUxOTc2ODA4ZjMyLi5hNzc4
NjFhZjMyZGQ3NTBmNGI0MDM5MTVhYmVjYjI3YTdkMzVhMGEyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1i
YXNpY3MuanMKQEAgLTI0OSwxNCArMjQ5LDE0IEBAIGZ1bmN0aW9uIGNvbXBsZXRlQ2FsbGJhY2so
KQogICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LmNhbmNlbGFibGUiKTsKICAgICB0ZXN0UGFzc2Vk
KCJjb21wbGV0ZSBldmVudCBmaXJlZCIpOwogICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygi
ZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSkiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0
ID0gYWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZW1wdHlDb21w
bGV0ZUNhbGxiYWNrOwogICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJzdG9yZS5uYW1lIiwgInN0b3JlTmFtZSIpOwogfQogCi1mdW5jdGlvbiBhYm9ydENhbGxi
YWNrKCkKK2Z1bmN0aW9uIGVtcHR5Q29tcGxldGVDYWxsYmFjaygpCiB7Ci0gICAgdGVzdFBhc3Nl
ZCgiYWJvcnQgZXZlbnQgZmlyZWQiKTsKKyAgICB0ZXN0UGFzc2VkKCJjb21wbGV0ZSBldmVudCBm
aXJlZCIpOwogICAgIHRlc3RET01TdHJpbmdMaXN0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb21wbGV0ZS13
b3JrZXJzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5z
YWN0aW9uLWNvbXBsZXRlLXdvcmtlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDYwMzI0ZGMwYWUyZGJjNmRl
Nzg3ZmUzOTY3NmY5YjM3YTUyYmFkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb21wbGV0ZS13b3JrZXJzLmpz
CkBAIC0wLDAgKzEsMTI4IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCIHdvcmtlcnMsIHJlY3Vyc2lvbiwgYW5kIHRyYW5zYWN0aW9uIHRlcm1pbmF0aW9uLiIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisg
ICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1jb21w
bGV0ZS13b3JrZXInKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBl
dmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgIGV2YWxBbmRMb2coInJl
cXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5l
eHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgICAg
ICAgICAgZXZhbEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAg
ZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAgICAgICAg
IHRyYW5zLm9uY29tcGxldGUgPSBjcmVhdGVUcmFuc2FjdGlvbjsKKyAgICAgICAgfTsKKyAgICB9
OworfQorCitmdW5jdGlvbiBjcmVhdGVUcmFuc2FjdGlvbigpCit7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJjcmVhdGVUcmFuc2FjdGlvbigpOiIpOworICAgIGV2YWxBbmRMb2coInRyYW5z
YWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9y
ZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgdHJhbnNhY3Rpb24u
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRl
ID0gZW1wdHlUcmFuc2FjdGlvbkNvbXBsZXRlZDsKK30KKworZnVuY3Rpb24gZW1wdHlUcmFuc2Fj
dGlvbkNvbXBsZXRlZCgpCit7CisgICAgdGVzdFBhc3NlZCgiVHJhbnNhY3Rpb24gY29tcGxldGVk
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIsICInVHJhbnNhY3Rpb25JbmFj
dGl2ZUVycm9yJyIpOworICAgIHJlY3Vyc2lvblRlc3QoKTsKK30KKworZnVuY3Rpb24gcmVjdXJz
aW9uVGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJyZWN1cnNpb25UZXN0KCk6
Iik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUn
KSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0
b3JlJykiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0
ZWQ7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgIGV2YWxBbmRMb2coInN0b3JlLmdldCgwKSIpOworICAgIHRlc3RQYXNzZWQoInRyYW5zYWN0
aW9uIGlzIGFjdGl2ZSIpOworICAgIHJlY3Vyc2UoMSk7Cit9CisKK2Z1bmN0aW9uIHJlY3Vyc2Uo
Y291bnQpCit7CisgICAgZGVidWcoInJlY3Vyc2lvbiBkZXB0aDogIiArIGNvdW50KTsKKyAgICBl
dmFsQW5kTG9nKCJzdG9yZS5nZXQoMCkiKTsKKyAgICB0ZXN0UGFzc2VkKCJ0cmFuc2FjdGlvbiBp
cyBzdGlsbCBhY3RpdmUiKTsKKyAgICBpZiAoY291bnQgPCAzKSB7CisgICAgICAgIHJlY3Vyc2Uo
Y291bnQgKyAxKTsKKyAgICB9CisgICAgZGVidWcoInJlY3Vyc2lvbiBkZXB0aDogIiArIGNvdW50
KTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5nZXQoMCkiKTsKKyAgICB0ZXN0UGFzc2VkKCJ0cmFu
c2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUiKTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21w
bGV0ZWQoKQoreworICAgIHRlc3RQYXNzZWQoInRyYW5zYWN0aW9uIGNvbXBsZXRlZCIpOworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCgwKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiLCAiJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJv
ciciKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidHJ5aW5nIGEgdGltZW91dCBjYWxs
YmFjazoiKTsKKyAgICBldmFsQW5kTG9nKCJzZXRUaW1lb3V0KHRpbWVvdXRUZXN0LCAwKSIpOwor
fQorCitmdW5jdGlvbiB0aW1lb3V0VGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJ0aW1lb3V0VGVzdCgpOiIpOworCisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50
cmFuc2FjdGlvbignc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgidHJhbnNhY3Rpb24gc3RhcnRlZCBpbiBzZXRU
aW1lb3V0KCkgY2FsbGJhY2sgY29tcGxldGVkIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInN0b3JlLmdldCgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9J
TkFDVElWRV9FUlIiLCAiJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciciKTsKKworICAgICAgICBl
cnJvclRlc3QoKTsKKyAgICB9OworfQorCitmdW5jdGlvbiBlcnJvclRlc3QoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygiZXJyb3JUZXN0KCk6Iik7CisgICAgZXZhbEFuZExvZygic2Vs
Zi5vbGRfb25lcnJvciA9IHNlbGYub25lcnJvciIpOworICAgIGV2YWxBbmRMb2coInNlbGYub25l
cnJvciA9IGVycm9ySGFuZGxlciIpOworICAgIHRocm93IG5ldyBFcnJvcigiaWdub3JlIHRoaXMi
KTsKK30KKworZnVuY3Rpb24gZXJyb3JIYW5kbGVyKGUpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJlcnJvckhhbmRsZXIoKToiKTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIGJlIGFibGUg
dG8gc3RvcCB0aGUgZXJyb3IgaGVyZSwgYnV0IGl0IGlzbid0IGFuIEV2ZW50IG9iamVjdC4KKyAg
ICAvLyBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7CisgICAgZXZhbEFuZExv
Zygic2VsZi5vbmVycm9yID0gc2VsZi5vbGRfb25lcnJvciIpOworICAgIGV2YWxBbmRMb2coInRy
YW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJz
dG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgdHJhbnNhY3Rp
b24ub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBs
ZXRlID0gZXJyb3JUcmFuc2FjdGlvbkNvbXBsZXRlZDsKK30KKworZnVuY3Rpb24gZXJyb3JUcmFu
c2FjdGlvbkNvbXBsZXRlZCgpCit7CisgICAgdGVzdFBhc3NlZCgiVHJhbnNhY3Rpb24gY29tcGxl
dGVkIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIsICInVHJhbnNhY3Rpb25J
bmFjdGl2ZUVycm9yJyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLmh0bWwK
aW5kZXggZDE3ZjE4NDU5NmE0MWM5ZWI3NDAzZjM5ODQzZDJhNWVmZGM5NGVlMS4uMDMxODhkZTBl
NjdkN2YzOWZhNTJiZjVkYWRmMjllNjRjMGU3MzA4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3N0cnVjdHVyZWQtY2xvbmUuaHRtbApAQCAtNTE0LDggKzUxNCw4
IEBAIGZ1bmN0aW9uIHRlc3RCYWRUeXBlcygpCiAgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24g
PSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgJ3JlYWR3cml0ZScpIik7CiAgICAgZXZhbEFu
ZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKICAg
ICB0cmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJh
bnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotICAgIHRy
YW5zYWN0aW9uLm9uYWJvcnQgPSBmaW5pc2hKU1Rlc3Q7CisgICAgdHJhbnNhY3Rpb24ub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUg
PSBmaW5pc2hKU1Rlc3Q7CiAKICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoIk90aGVyIEphdmFT
Y3JpcHQgb2JqZWN0IHR5cGVzOiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
YWJvcnQtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmU5MjFiMzQzMjQwNmI2ODk5OTc1YTYyOWYwMmU1ZGEx
MTBkNjRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVj
dXJzaW9uLWNyb3NzLWZyYW1lLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIyICsw
LDAgQEAKLVRlc3QgdGhhdCBwZW5kaW5nIHRyYW5zYWN0aW9ucyBhcmUgbm90IGFib3J0ZWQgZHVy
aW5nIHJlY3Vyc2l2ZSBKUyBjYWxscyB1bnRpbCBhbGwgSlMgKGluIGFsbCBmcmFtZXMpIGlzIGZp
bmlzaGVkLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotaW5kZXhlZERCID0gc2Vs
Zi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIg
fHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7Ci0KLWluZGV4ZWREQi5kZWxl
dGVEYXRhYmFzZSgndHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJh
bWUnKQotaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9u
LWNyb3NzLWZyYW1lJykKLWRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAotZGIuc2V0VmVyc2lvbign
bmV3IHZlcnNpb24nKQotcGVuZGluZ1RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydvYmpl
Y3RTdG9yZSddLCAncmVhZHdyaXRlJykKLVN0YXJ0IHJlLWVudHJhbnQgSlMKLXRyYW5zYWN0aW9u
ID0gZGIudHJhbnNhY3Rpb24oWydvYmplY3RTdG9yZSddLCAncmVhZHdyaXRlJykKLUVuZCByZS1l
bnRyYW50IEpTCi1zdG9yZSA9IHBlbmRpbmdUcmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnb2JqZWN0
U3RvcmUnKQotUEFTUyBzdG9yZSAhPT0gdW5kZWZpbmVkIGlzIHRydWUKLVBlbmRpbmcgdHJhbnNh
Y3Rpb24gYWJvcnRlZAotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENP
TVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5z
YWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lv
bi1jcm9zcy1mcmFtZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWNmNDc5
OTIwNTE0MDE0ZjEwNjRmN2IzODljMDU2ZTQxYzY0ODI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGlm
cmFtZT4KLSAgICA8Ym9keT4KLSAgICA8L2JvZHk+Ci08L2lmcmFtZT4KLTxzY3JpcHQ+Ci0KLXZh
ciB0cmFuc2FjdGlvbjsKLXZhciBzdG9yZTsKLXZhciBkYjsKLXZhciBib2R5ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5Owot
Ci1kZXNjcmlwdGlvbigiVGVzdCB0aGF0IHBlbmRpbmcgdHJhbnNhY3Rpb25zIGFyZSBub3QgYWJv
cnRlZCBkdXJpbmcgcmVjdXJzaXZlIEpTIGNhbGxzIHVudGlsIGFsbCBKUyAoaW4gYWxsIGZyYW1l
cykgaXMgZmluaXNoZWQuIik7Ci0KLWZ1bmN0aW9uIHNldHVwKCkgewotICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVE
YXRhYmFzZSgndHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUn
KSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJz
aW9uLWNyb3NzLWZyYW1lJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJz
aW9uOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICB9OwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkgewotICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpIHsKLSAgICBzdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScsIG51bGwpOwotICAgIGV2ZW50
LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IGNsaWNrOwotfQotCi1mdW5jdGlvbiBjbGljaygp
IHsKLSAgICBib2R5Lm9uY2xpY2sgPSB0ZXN0OwotICAgIHZhciBwZW5kaW5nVHJhbnNhY3Rpb24g
PSBldmFsQW5kTG9nKCJwZW5kaW5nVHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVj
dFN0b3JlJ10sICdyZWFkd3JpdGUnKSIpOwotICAgIHBlbmRpbmdUcmFuc2FjdGlvbi5vbnN1Y2Nl
c3MgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBwZW5kaW5nVHJhbnNhY3Rpb24ub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHBlbmRpbmdUcmFuc2FjdGlvbi5v
bmFib3J0ID0gYWJvcnRDYWxsYmFjazsKLSAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVF
dmVudCgiTW91c2VFdmVudCIpOwotICAgIGV2ZW50LmluaXRNb3VzZUV2ZW50KCJjbGljayIsIHRy
dWUsIHRydWUsIGRvY3VtZW50LmRlZmF1bHRWaWV3LCAwLCAwLCAwLCAwLCAwLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgMCwgbnVsbCk7Ci0gICAgYm9keS5kaXNwYXRjaEV2ZW50KGV2ZW50
KTsKLSAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHBlbmRpbmdUcmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgnb2JqZWN0U3RvcmUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUg
IT09IHVuZGVmaW5lZCIpOwotICAgIGJvZHkub25jbGljayA9IHVuZGVmaW5lZDsKLX0KLQotZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgZGVidWcoIlN0YXJ0IHJlLWVudHJhbnQgSlMiKTsKLSAgICB0
cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydv
YmplY3RTdG9yZSddLCAncmVhZHdyaXRlJykiKTsKLSAgICBkZWJ1ZygiRW5kIHJlLWVudHJhbnQg
SlMiKTsKLX0KLQotCi1mdW5jdGlvbiBhYm9ydENhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiUGVu
ZGluZyB0cmFuc2FjdGlvbiBhYm9ydGVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXNl
dHVwKCk7Ci0KLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpz
LXJlY3Vyc2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0OGZjZTIwZDRlMmY0MjgyMTZiZWI4ZDNlMTBkMWJhMTg3
OGY3ZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1
cnNpb24tZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVGVzdCB0
aGF0IHBlbmRpbmcgdHJhbnNhY3Rpb25zIGFyZSBub3QgYWJvcnRlZCBkdXJpbmcgcmVjdXJzaXZl
IEpTIGNhbGxzIHVudGlsIGFsbCBKUyBpcyBmaW5pc2hlZC4KLQotT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgotCi0KLWluZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5k
ZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5P
SW5kZXhlZERCOwotCi1pbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1y
ZWN1cnNpb24nKQotZGIgPSBldmVudC50YXJnZXQucmVzdWx0Ci1kYi5zZXRWZXJzaW9uKCduZXcg
dmVyc2lvbicpCi1wZW5kaW5nVHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVjdFN0
b3JlJ10sICdyZWFkd3JpdGUnKQotU3RhcnQgcmUtZW50cmFudCBKUwotdHJhbnNhY3Rpb24gPSBk
Yi50cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKQotRW5kIHJlLWVudHJh
bnQgSlMKLXN0b3JlID0gcGVuZGluZ1RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdvYmplY3RTdG9y
ZScpCi1QQVNTIHN0b3JlICE9PSB1bmRlZmluZWQgaXMgdHJ1ZQotUGVuZGluZyB0cmFuc2FjdGlv
biBhYm9ydGVkCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExF
VEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzODc5MzU2NDMxNjUwZDFhMzM2MzY3ZWI2MjFiYWQ0MDFh
ZDRmY2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1
cnNpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLTxodG1sPg0KLTxoZWFk
Pg0KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+DQotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pg0K
LTwvaGVhZD4NCi08Ym9keT4NCi08c2NyaXB0Pg0KLQ0KLXZhciB0cmFuc2FjdGlvbjsNCi12YXIg
c3RvcmU7DQotdmFyIGRiOw0KLXZhciBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXTsNCi0NCi1kZXNjcmlwdGlvbigiVGVzdCB0aGF0IHBlbmRpbmcgdHJhbnNh
Y3Rpb25zIGFyZSBub3QgYWJvcnRlZCBkdXJpbmcgcmVjdXJzaXZlIEpTIGNhbGxzIHVudGlsIGFs
bCBKUyBpcyBmaW5pc2hlZC4iKTsNCi0NCi1mdW5jdGlvbiBzZXR1cCgpIHsNCi0gICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsNCi0NCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKCd0cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbicpIik7DQotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIHNldFZlcnNpb24oKSB7DQot
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7DQotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7DQotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBzZXRWZXJz
aW9uU3VjY2VzcygpDQotew0KLSAgICBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvYmpl
Y3RTdG9yZScsIG51bGwpOw0KLSAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBj
bGljazsNCi19DQotDQotZnVuY3Rpb24gY2xpY2soKSANCi17DQotICAgIGJvZHkub25jbGljayA9
IHRlc3Q7DQotICAgIHZhciBwZW5kaW5nVHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJwZW5kaW5n
VHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUn
KSIpOw0KLSAgICBwZW5kaW5nVHJhbnNhY3Rpb24ub25zdWNjZXNzID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7DQotICAgIHBlbmRpbmdUcmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7DQotICAgIHBlbmRpbmdUcmFuc2FjdGlvbi5vbmFib3J0ID0gYWJvcnRDYWxs
YmFjazsNCi0gICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQi
KTsNCi0gICAgZXZlbnQuaW5pdE1vdXNlRXZlbnQoImNsaWNrIiwgdHJ1ZSwgdHJ1ZSwgZG9jdW1l
bnQuZGVmYXVsdFZpZXcsIDAsIDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCAwLCBudWxsKTsNCi0gICAgYm9keS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsNCi0gICAgdmFyIHN0
b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBwZW5kaW5nVHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J29iamVjdFN0b3JlJykiKTsNCi0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPT0gdW5kZWZpbmVk
Iik7DQotICAgIGJvZHkub25jbGljayA9IHVuZGVmaW5lZDsNCi19DQotDQotZnVuY3Rpb24gdGVz
dCgpDQotew0KLSAgICBkZWJ1ZygiU3RhcnQgcmUtZW50cmFudCBKUyIpOw0KLSAgICB0cmFuc2Fj
dGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydvYmplY3RT
dG9yZSddLCAncmVhZHdyaXRlJykiKTsNCi0gICAgZGVidWcoIkVuZCByZS1lbnRyYW50IEpTIik7
DQotfQ0KLQ0KLQ0KLWZ1bmN0aW9uIGFib3J0Q2FsbGJhY2soKQ0KLXsNCi0gICAgZGVidWcoIlBl
bmRpbmcgdHJhbnNhY3Rpb24gYWJvcnRlZCIpOw0KLSAgICBmaW5pc2hKU1Rlc3QoKTsNCi19DQot
DQotc2V0dXAoKTsNCi0NCi08L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4NCi08L2JvZHk+DQotPC9odG1sPg0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFi
b3J0LXdvcmtlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
dHJhbnNhY3Rpb24tYWJvcnQtd29ya2Vycy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ3MDNmYmFiMTNmNjhlNGM5ODVjNDZiN2Y1OGE3ZDIxOWRlMDEwODUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd29ya2Vycy1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi1bV29ya2VyXSBUZXN0IEluZGV4ZWREQiB3
b3JrZXJzLCByZWN1cnNpb24sIGFuZCB0cmFuc2FjdGlvbiB0ZXJtaW5hdGlvbi4KLQotT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVN0YXJ0aW5nIHdvcmtlcjogcmVzb3VyY2VzL3RyYW5z
YWN0aW9uLWFib3J0LXdvcmtlcnMuanMKLVtXb3JrZXJdIGluZGV4ZWREQiA9IHNlbGYuaW5kZXhl
ZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYu
bXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOwotW1dvcmtlcl0gCi1bV29ya2VyXSByZXF1
ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcicpCi1bV29ya2Vy
XSBkYiA9IHJlcXVlc3QucmVzdWx0Ci1bV29ya2VyXSByZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpCi1bV29ya2VyXSBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotW1dvcmtlcl0gdHJhbnMg
PSByZXF1ZXN0LnJlc3VsdAotW1dvcmtlcl0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykK
LVtXb3JrZXJdIAotW1dvcmtlcl0gY3JlYXRlVHJhbnNhY3Rpb24oKToKLVtXb3JrZXJdIHRyYW5z
YWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykKLVtXb3JrZXJdIHN0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKLVBBU1MgW1dvcmtlcl0gVHJhbnNhY3Rpb24gYWJv
cnRlZAotW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmdldCgwKQotUEFT
UyBbV29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93bi4KLVBBU1MgW1dvcmtlcl0gY29kZSBpcyBJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKLVBBU1MgW1dvcmtl
cl0gZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKLVtXb3JrZXJdIAotW1dvcmtl
cl0gcmVjdXJzaW9uVGVzdCgpOgotW1dvcmtlcl0gdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlv
bignc3RvcmUnKQotW1dvcmtlcl0gc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmUnKQotW1dvcmtlcl0gc3RvcmUuZ2V0KDApCi1QQVNTIFtXb3JrZXJdIHRyYW5zYWN0aW9uIGlz
IGFjdGl2ZQotW1dvcmtlcl0gcmVjdXJzaW9uIGRlcHRoOiAxCi1bV29ya2VyXSBzdG9yZS5nZXQo
MCkKLVBBU1MgW1dvcmtlcl0gdHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZlCi1bV29ya2VyXSBy
ZWN1cnNpb24gZGVwdGg6IDIKLVtXb3JrZXJdIHN0b3JlLmdldCgwKQotUEFTUyBbV29ya2VyXSB0
cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUKLVtXb3JrZXJdIHJlY3Vyc2lvbiBkZXB0aDogMwot
W1dvcmtlcl0gc3RvcmUuZ2V0KDApCi1QQVNTIFtXb3JrZXJdIHRyYW5zYWN0aW9uIGlzIHN0aWxs
IGFjdGl2ZQotW1dvcmtlcl0gcmVjdXJzaW9uIGRlcHRoOiAzCi1bV29ya2VyXSBzdG9yZS5nZXQo
MCkKLVBBU1MgW1dvcmtlcl0gdHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZlCi1bV29ya2VyXSBy
ZWN1cnNpb24gZGVwdGg6IDIKLVtXb3JrZXJdIHN0b3JlLmdldCgwKQotUEFTUyBbV29ya2VyXSB0
cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUKLVtXb3JrZXJdIHJlY3Vyc2lvbiBkZXB0aDogMQot
W1dvcmtlcl0gc3RvcmUuZ2V0KDApCi1QQVNTIFtXb3JrZXJdIHRyYW5zYWN0aW9uIGlzIHN0aWxs
IGFjdGl2ZQotUEFTUyBbV29ya2VyXSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQKLVtXb3JrZXJdIEV4
cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5nZXQoMCkKLVBBU1MgW1dvcmtlcl0gRXhjZXB0
aW9uIHdhcyB0aHJvd24uCi1QQVNTIFtXb3JrZXJdIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRp
b24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCi1QQVNTIFtXb3JrZXJdIGVuYW1lIGlzICdUcmFu
c2FjdGlvbkluYWN0aXZlRXJyb3InCi1bV29ya2VyXSAKLVtXb3JrZXJdIHRyeWluZyBhIHRpbWVv
dXQgY2FsbGJhY2s6Ci1bV29ya2VyXSBzZXRUaW1lb3V0KHRpbWVvdXRUZXN0LCAwKQotW1dvcmtl
cl0gCi1bV29ya2VyXSB0aW1lb3V0VGVzdCgpOgotW1dvcmtlcl0gdHJhbnNhY3Rpb24gPSBkYi50
cmFuc2FjdGlvbignc3RvcmUnKQotW1dvcmtlcl0gc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnc3RvcmUnKQotUEFTUyBbV29ya2VyXSB0cmFuc2FjdGlvbiBzdGFydGVkIGluIHNldFRp
bWVvdXQoKSBjYWxsYmFjayBhYm9ydGVkCi1bV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZy
b20gc3RvcmUuZ2V0KDApCi1QQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgotUEFT
UyBbV29ya2VyXSBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUgotUEFTUyBbV29ya2VyXSBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9y
JwotW1dvcmtlcl0gCi1bV29ya2VyXSBlcnJvclRlc3QoKToKLVtXb3JrZXJdIHNlbGYub2xkX29u
ZXJyb3IgPSBzZWxmLm9uZXJyb3IKLVtXb3JrZXJdIHNlbGYub25lcnJvciA9IGVycm9ySGFuZGxl
cgotW1dvcmtlcl0gCi1bV29ya2VyXSBlcnJvckhhbmRsZXIoKToKLVtXb3JrZXJdIHNlbGYub25l
cnJvciA9IHNlbGYub2xkX29uZXJyb3IKLVtXb3JrZXJdIHRyYW5zYWN0aW9uID0gZGIudHJhbnNh
Y3Rpb24oJ3N0b3JlJykKLVtXb3JrZXJdIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J3N0b3JlJykKLUdvdCBleHBlY3RlZCBlcnJvciBmcm9tIHdvcmtlciwgaWdub3JpbmcKLWV2ZW50
LnByZXZlbnREZWZhdWx0KCkKLVBBU1MgW1dvcmtlcl0gVHJhbnNhY3Rpb24gYWJvcnRlZAotW1dv
cmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmdldCgwKQotUEFTUyBbV29ya2Vy
XSBFeGNlcHRpb24gd2FzIHRocm93bi4KLVBBU1MgW1dvcmtlcl0gY29kZSBpcyBJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKLVBBU1MgW1dvcmtlcl0gZW5hbWUg
aXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ODI2NGMxZDM5NmZiMTAwNGYyZTAxMWZlNDgzZjdjMTY3
MmRmZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd29ya2Vycy5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxzY3JpcHQ+Ci0KLXZhciB3b3JrZXIgPSBzdGFydFdvcmtlcigncmVzb3VyY2VzL3RyYW5z
YWN0aW9uLWFib3J0LXdvcmtlcnMuanMnKTsKLQotLy8gRklYTUU6IEl0IHNob3VsZCBiZSBwb3Nz
aWJsZSBmb3IgdGhlIHdvcmtlciB0byBzZXQgc2VsZi5vbmVycm9yIHRvIGNhdGNoIHRoZSBldmVu
dAotLy8gYW5kIGNhbGwgZXZlbnQucHJldmVudERlZmF1bHQoKSwgYnV0IGluIHRoZSBjdXJyZW50
IFdvcmtlciBpbXBsZW1lbnRhdGlvbiB0aGUgcmF3Ci0vLyBleGNlcHRpb24gaXMgc2VlbiBieSB0
aGUgZXZlbnQgaGFuZGxlciBpbiB0aGUgd29ya2VyLCBub3QgYW4gRXJyb3JFdmVudCBvYmplY3Qu
Ci0KLXZhciBvcmlnX29uZXJyb3IgPSB3b3JrZXIub25lcnJvcjsKLXdvcmtlci5vbmVycm9yID0g
ZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgaWYgKGV2ZW50Lm1lc3NhZ2UgPT09ICJVbmNhdWdodCBF
cnJvcjogaWdub3JlIHRoaXMiKSB7Ci0gICAgICAgIGRlYnVnKCJHb3QgZXhwZWN0ZWQgZXJyb3Ig
ZnJvbSB3b3JrZXIsIGlnbm9yaW5nIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZl
bnREZWZhdWx0KCkiKTsKLSAgICB9IGVsc2UgaWYgKG9yaWdfb25lcnJvcikgewotICAgICAgICBv
cmlnX29uZXJyb3IoZXZlbnQpOwotICAgIH0KLX07Ci0KLQotPC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iYTkxYzViNjY1ODE2YTZjZThlMGI1OWM1NjAyNmMxNzgyOTRkNjhlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWN0aXZl
LWZsYWctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMzIEBACitUZXN0IEluZGV4ZWREQiB0cmFu
c2FjdGlvbiBpbnRlcm5hbCBhY3RpdmUgZmxhZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERC
IHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhl
ZERCOworCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFn
JykKK2luZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1hY3RpdmUtZmxhZycpCitkYi5zZXRWZXJz
aW9uKCcxJykKK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKK3N0b3JlLmNy
ZWF0ZUluZGV4KCdpbmRleCcsICdrZXlwYXRoJykKKworcnVuVHJhbnNhY3Rpb24oKToKK3RyYW5z
YWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWR3cml0ZScpCisKK1ZlcmlmeSB0
aGF0IHRyYW5zYWN0aW9ucyBhcmUgY3JlYXRlZCB3aXRoIHxhY3RpdmV8IGZsYWcgc2V0Ogorc3Rv
cmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKQoraW5kZXggPSBzdG9yZS5pbmRl
eCgnaW5kZXgnKQorUEFTUyBzdG9yZS5hZGQoMCwgMCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CitQQVNTIHN0b3JlLnB1dCgwLCAwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3Rv
cmUuZ2V0KDApIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5nZXQoSURCS2V5
UmFuZ2Uub25seSgwKSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHN0b3JlLmRlbGV0
ZSgwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3RvcmUuZGVsZXRlKElEQktleVJh
bmdlLm9ubHkoMCkpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5jb3VudCgp
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5jb3VudCgwKSBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3RvcmUuY291bnQoSURCS2V5UmFuZ2Uub25seSgwKSkgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHN0b3JlLmNsZWFyKCkgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIHN0b3JlLm9wZW5DdXJzb3IoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK1BBU1Mgc3RvcmUub3BlbkN1cnNvcigwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1Mgc3RvcmUub3BlbkN1cnNvcigwLCAnbmV4dCcpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgor
UEFTUyBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCkpIGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCksICdu
ZXh0JykgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGluZGV4LmdldCgwKSBkaWQgbm90
IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXguZ2V0KElEQktleVJhbmdlLm9ubHkoMCkpIGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5nZXRLZXkoMCkgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTIGluZGV4LmdldEtleShJREJLZXlSYW5nZS5vbmx5KDApKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXguY291bnQoKSBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KK1BBU1MgaW5kZXguY291bnQoMCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQ
QVNTIGluZGV4LmNvdW50KElEQktleVJhbmdlLm9ubHkoMCkpIGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgorUEFTUyBpbmRleC5vcGVuQ3Vyc29yKCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQ
QVNTIGluZGV4Lm9wZW5DdXJzb3IoMCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGlu
ZGV4Lm9wZW5DdXJzb3IoMCwgJ25leHQnKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
aW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApKSBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KK1BBU1MgaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApLCAnbmV4dCcp
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5vcGVuS2V5Q3Vyc29yKCkgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGluZGV4Lm9wZW5LZXlDdXJzb3IoMCkgZGlkIG5v
dCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGluZGV4Lm9wZW5LZXlDdXJzb3IoMCwgJ25leHQnKSBk
aWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXgub3BlbktleUN1cnNvcihJREJLZXlS
YW5nZS5vbmx5KDApKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXgub3Blbktl
eUN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApLCAnbmV4dCcpIGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgorCitUcmFuc2FjdGlvbiBzaG91bGRuJ3QgYmUgYWN0aXZlIGluc2lkZSBhIG5vbi1JREIt
ZXZlbnQgY2FsbGJhY2sKK3NldFRpbWVvdXQodGVzdFRpbWVvdXQsIDApCisKK3Rlc3RUaW1lb3V0
KCk6CitzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpCitpbmRleCA9IHN0
b3JlLmluZGV4KCdpbmRleCcpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuYWRkKDAs
IDApCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNl
RXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNh
Y3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLnB1dCgw
LCAwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5z
YWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5nZXQo
MCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VF
eGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1lIGlzICdUcmFuc2Fj
dGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuZ2V0KElE
QktleVJhbmdlLm9ubHkoMCkpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2Rl
IGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBl
bmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBm
cm9tIHN0b3JlLmRlbGV0ZSgwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29k
ZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1Mg
ZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24g
ZnJvbSBzdG9yZS5kZWxldGUoSURCS2V5UmFuZ2Uub25seSgwKSkKK1BBU1MgRXhjZXB0aW9uIHdh
cyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InCitF
eHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuY291bnQoKQorUEFTUyBFeGNlcHRpb24gd2Fz
IHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9J
TkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4
cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5jb3VudCgwKQorUEFTUyBFeGNlcHRpb24gd2Fz
IHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9J
TkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4
cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5vbmx5KDApKQor
UEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9u
SW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5jbGVhcigpCitQ
QVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0
aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25J
bmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLm9wZW5DdXJzb3Io
KQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4
Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0
aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5vcGVuQ3Vy
c29yKDApCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFi
YXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJh
bnNhY3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLm9w
ZW5DdXJzb3IoMCwgJ25leHQnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29k
ZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1Mg
ZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24g
ZnJvbSBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCkpCitQQVNTIEV4Y2VwdGlv
biB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNU
SU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9y
JworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uu
b25seSgwKSwgJ25leHQnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBp
cyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5h
bWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJv
bSBpbmRleC5nZXQoMCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMg
SURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1l
IGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20g
aW5kZXguZ2V0KElEQktleVJhbmdlLm9ubHkoMCkpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3du
LgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5n
IGV4Y2VwdGlvbiBmcm9tIGluZGV4LmdldEtleSgwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93
bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElW
RV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGlu
ZyBleGNlcHRpb24gZnJvbSBpbmRleC5nZXRLZXkoSURCS2V5UmFuZ2Uub25seSgwKSkKK1BBU1Mg
RXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24u
VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0
aXZlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gaW5kZXguY291bnQoKQorUEFTUyBF
eGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5U
UkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3Rp
dmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBpbmRleC5jb3VudCgwKQorUEFTUyBF
eGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5U
UkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3Rp
dmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBpbmRleC5jb3VudChJREJLZXlSYW5n
ZS5vbmx5KDApKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJE
YXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMg
J1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBpbmRl
eC5vcGVuQ3Vyc29yKCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMg
SURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1l
IGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20g
aW5kZXgub3BlbkN1cnNvcigwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29k
ZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1Mg
ZW5hbWUgaXMgJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24g
ZnJvbSBpbmRleC5vcGVuQ3Vyc29yKDAsICduZXh0JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJv
d24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJ
VkVfRVJSCitQQVNTIGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3Rp
bmcgZXhjZXB0aW9uIGZyb20gaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApKQor
UEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1MgZW5hbWUgaXMgJ1RyYW5zYWN0aW9u
SW5hY3RpdmVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBpbmRleC5vcGVuQ3Vyc29y
KElEQktleVJhbmdlLm9ubHkoMCksICduZXh0JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24u
CitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSCitQQVNTIGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3Rpbmcg
ZXhjZXB0aW9uIGZyb20gaW5kZXgub3BlbktleUN1cnNvcigpCitQQVNTIEV4Y2VwdGlvbiB3YXMg
dGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lO
QUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworRXhw
ZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGluZGV4Lm9wZW5LZXlDdXJzb3IoMCkKK1BBU1MgRXhjZXB0
aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNB
Q1RJT05fSU5BQ1RJVkVfRVJSCitQQVNTIGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJy
b3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gaW5kZXgub3BlbktleUN1cnNvcigwLCAnbmV4
dCcpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNl
RXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJhbnNh
Y3Rpb25JbmFjdGl2ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGluZGV4Lm9wZW5L
ZXlDdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24u
CitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSCitQQVNTIGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InCitFeHBlY3Rpbmcg
ZXhjZXB0aW9uIGZyb20gaW5kZXgub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS5vbmx5KDApLCAn
bmV4dCcpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFi
YXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBlbmFtZSBpcyAnVHJh
bnNhY3Rpb25JbmFjdGl2ZUVycm9yJworCit0ZXN0RXZlbnRDYWxsYmFjaygpOgorVHJhbnNhY3Rp
b24gc2hvdWxkIGJlIGFjdGl2ZSBpbnNpZGUgYSBub24tSURCLWV2ZW50IGNhbGxiYWNrCitzdG9y
ZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpCitpbmRleCA9IHN0b3JlLmluZGV4
KCdpbmRleCcpCitQQVNTIHN0b3JlLmFkZCgwLCAwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1Mgc3RvcmUucHV0KDAsIDApIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdG9y
ZS5nZXQoMCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHN0b3JlLmdldChJREJLZXlS
YW5nZS5vbmx5KDApKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3RvcmUuZGVsZXRl
KDApIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5kZWxldGUoSURCS2V5UmFu
Z2Uub25seSgwKSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHN0b3JlLmNvdW50KCkg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHN0b3JlLmNvdW50KDApIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5vbmx5KDApKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mgc3RvcmUuY2xlYXIoKSBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KK1BBU1Mgc3RvcmUub3BlbkN1cnNvcigpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyBzdG9yZS5vcGVuQ3Vyc29yKDApIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFT
UyBzdG9yZS5vcGVuQ3Vyc29yKDAsICduZXh0JykgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQ
QVNTIHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSkgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uub25seSgwKSwgJ25l
eHQnKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXguZ2V0KDApIGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5nZXQoSURCS2V5UmFuZ2Uub25seSgwKSkgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGluZGV4LmdldEtleSgwKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXguZ2V0S2V5KElEQktleVJhbmdlLm9ubHkoMCkpIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5jb3VudCgpIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUEFTUyBpbmRleC5jb3VudCgwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgaW5kZXguY291bnQoSURCS2V5UmFuZ2Uub25seSgwKSkgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIGluZGV4Lm9wZW5DdXJzb3IoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgaW5kZXgub3BlbkN1cnNvcigwKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5k
ZXgub3BlbkN1cnNvcigwLCAnbmV4dCcpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBp
bmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCkpIGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgorUEFTUyBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCksICduZXh0Jykg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGluZGV4Lm9wZW5LZXlDdXJzb3IoKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXgub3BlbktleUN1cnNvcigwKSBkaWQgbm90
IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaW5kZXgub3BlbktleUN1cnNvcigwLCAnbmV4dCcpIGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJh
bmdlLm9ubHkoMCkpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBpbmRleC5vcGVuS2V5
Q3Vyc29yKElEQktleVJhbmdlLm9ubHkoMCksICduZXh0JykgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCisKK3RyYW5zYWN0aW9uQ29tcGxldGUoKToKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBz
dG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpCitQQVNTIEV4Y2VwdGlvbiB3
YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgor
UEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWN0aXZlLWZsYWcuaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWU2MjZkNDlmODA3YTdiZWZlMTQyYzExYjM4MmExMGExYjhjYWFiMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFjdGl2ZS1m
bGFnLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWN0aXZlLWZsYWcuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRl
eCAyZDhkY2U0MDMwYWY5YTJhY2I0NDM2NzRlZWRlMzg5ZTM1MTg4MmI5Li43OTI3MDhlNzRkMGIy
OTA3NjJmZTEyZTIyY2VlZWU0OWRkZGI3MWJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQK
QEAgLTE4Nyw3ICsxODcsNyBAQCBQQVNTIGNvbXBsZXRlIGV2ZW50IGZpcmVkCiBkYi50cmFuc2Fj
dGlvbihbJ3N0b3JlTmFtZSddKQogc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykKIFBBU1Mgc3RvcmUubmFtZSBpcyAic3RvcmVOYW1lIgotUEFTUyBhYm9ydCBldmVu
dCBmaXJlZAorUEFTUyBjb21wbGV0ZSBldmVudCBmaXJlZAogCiBWZXJpZnlpbmcgRE9NU3RyaW5n
TGlzdCB3b3JrcyBhcyBhcmd1bWVudCBmb3IgSURCRGF0YWJhc2UudHJhbnNhY3Rpb24oKQogZGIu
b2JqZWN0U3RvcmVOYW1lcyBpcyBbb2JqZWN0IERPTVN0cmluZ0xpc3RdCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpz
LXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1m
cmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhlMjcxNTlkYjkxZTk0NWEyMmRkYjFlYzQw
NzgxNTg4MmIyYmQ5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1l
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIyIEBACitUZXN0IHRoYXQgcGVuZGluZyB0cmFuc2Fj
dGlvbnMgYXJlIG5vdCBjb21wbGV0ZWQgZHVyaW5nIHJlY3Vyc2l2ZSBKUyBjYWxscyB1bnRpbCBh
bGwgSlMgKGluIGFsbCBmcmFtZXMpIGlzIGZpbmlzaGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRl
eGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9J
bmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgndHJhbnNhY3Rpb24tY29tcGxl
dGUtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUnKQoraW5kZXhlZERCLm9wZW4oJ3RyYW5z
YWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lJykKK2RiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdAorZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKQorcGVuZGluZ1Ry
YW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydvYmplY3RTdG9yZSddLCAncmVhZHdyaXRlJykK
K1N0YXJ0IHJlLWVudHJhbnQgSlMKK3RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydvYmpl
Y3RTdG9yZSddLCAncmVhZHdyaXRlJykKK0VuZCByZS1lbnRyYW50IEpTCitzdG9yZSA9IHBlbmRp
bmdUcmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnb2JqZWN0U3RvcmUnKQorUEFTUyBzdG9yZSAhPT0g
dW5kZWZpbmVkIGlzIHRydWUKK1BlbmRpbmcgdHJhbnNhY3Rpb24gY29tcGxldGVkCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1q
cy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2FlYTczNTI5NmJjMzMyZTVhY2VkMzU3OTIxZDBkNzBmY2ZjMzFlZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLmh0bWwKQEAgLTAsMCAr
MSw3NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWU+CisgICAgPGJvZHk+
CisgICAgPC9ib2R5PgorPC9pZnJhbWU+Cis8c2NyaXB0PgorCit2YXIgdHJhbnNhY3Rpb247Cit2
YXIgc3RvcmU7Cit2YXIgZGI7Cit2YXIgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJpZnJhbWUiKVswXS5jb250ZW50RG9jdW1lbnQuYm9keTsKKworZGVzY3JpcHRpb24oIlRl
c3QgdGhhdCBwZW5kaW5nIHRyYW5zYWN0aW9ucyBhcmUgbm90IGNvbXBsZXRlZCBkdXJpbmcgcmVj
dXJzaXZlIEpTIGNhbGxzIHVudGlsIGFsbCBKUyAoaW4gYWxsIGZyYW1lcykgaXMgZmluaXNoZWQu
Iik7CisKK2Z1bmN0aW9uIHNldHVwKCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgndHJhbnNh
Y3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUnKSIpOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3Nz
LWZyYW1lJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOworICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9Owor
fQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkgeworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNp
b25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpIHsKKyAgICBzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScsIG51bGwpOworICAgIGV2ZW50LnRhcmdldC5y
ZXN1bHQub25jb21wbGV0ZSA9IGNsaWNrOworfQorCitmdW5jdGlvbiBjbGljaygpIHsKKyAgICBi
b2R5Lm9uY2xpY2sgPSB0ZXN0OworICAgIHZhciBwZW5kaW5nVHJhbnNhY3Rpb24gPSBldmFsQW5k
TG9nKCJwZW5kaW5nVHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10s
ICdyZWFkd3JpdGUnKSIpOworICAgIHBlbmRpbmdUcmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcGVuZGluZ1RyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBwZW5kaW5nVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGNvbXBsZXRlQ2FsbGJhY2s7CisgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQo
Ik1vdXNlRXZlbnQiKTsKKyAgICBldmVudC5pbml0TW91c2VFdmVudCgiY2xpY2siLCB0cnVlLCB0
cnVlLCBkb2N1bWVudC5kZWZhdWx0VmlldywgMCwgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIDAsIG51bGwpOworICAgIGJvZHkuZGlzcGF0Y2hFdmVudChldmVudCk7Cisg
ICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBwZW5kaW5nVHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ29iamVjdFN0b3JlJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9PSB1
bmRlZmluZWQiKTsKKyAgICBib2R5Lm9uY2xpY2sgPSB1bmRlZmluZWQ7Cit9CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIGRlYnVnKCJTdGFydCByZS1lbnRyYW50IEpTIik7CisgICAgdHJhbnNh
Y3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnb2JqZWN0
U3RvcmUnXSwgJ3JlYWR3cml0ZScpIik7CisgICAgZGVidWcoIkVuZCByZS1lbnRyYW50IEpTIik7
Cit9CisKKworZnVuY3Rpb24gY29tcGxldGVDYWxsYmFjaygpCit7CisgICAgZGVidWcoIlBlbmRp
bmcgdHJhbnNhY3Rpb24gY29tcGxldGVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Nl
dHVwKCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRo
LWpzLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDM4MzA1NmE0M2E1YWZiODMzNzVjZTViZTgyYWNhY2RiMWNmYmEzZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNv
bXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIyIEBACitU
ZXN0IHRoYXQgcGVuZGluZyB0cmFuc2FjdGlvbnMgYXJlIG5vdCBjb21wbGV0ZWQgZHVyaW5nIHJl
Y3Vyc2l2ZSBKUyBjYWxscyB1bnRpbCBhbGwgSlMgaXMgZmluaXNoZWQuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndl
YmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8
IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCd0cmFuc2FjdGlv
bi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbicpCitpbmRleGVkREIub3BlbigndHJhbnNhY3Rp
b24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24nKQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0
CitkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpCitwZW5kaW5nVHJhbnNhY3Rpb24gPSBkYi50
cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKQorU3RhcnQgcmUtZW50cmFu
dCBKUwordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sICdyZWFk
d3JpdGUnKQorRW5kIHJlLWVudHJhbnQgSlMKK3N0b3JlID0gcGVuZGluZ1RyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCdvYmplY3RTdG9yZScpCitQQVNTIHN0b3JlICE9PSB1bmRlZmluZWQgaXMgdHJ1
ZQorUEFTUyBQZW5kaW5nIHRyYW5zYWN0aW9uIGNvbXBsZXRlZAorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0
ZS13aXRoLWpzLXJlY3Vyc2lvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0YjBjMzg5NmQxYmFiM2RmNjQw
MmE1MjhhYmY2ODNhNDk2NmRkZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi5odG1s
CkBAIC0wLDAgKzEsNzUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0Pgor
Cit2YXIgdHJhbnNhY3Rpb247Cit2YXIgc3RvcmU7Cit2YXIgZGI7Cit2YXIgYm9keSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IHRoYXQgcGVuZGluZyB0cmFuc2FjdGlvbnMgYXJlIG5vdCBjb21wbGV0ZWQgZHVyaW5nIHJlY3Vy
c2l2ZSBKUyBjYWxscyB1bnRpbCBhbGwgSlMgaXMgZmluaXNoZWQuIik7CisKK2Z1bmN0aW9uIHNl
dHVwKCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCd0cmFuc2FjdGlvbi1jb21wbGV0ZS13
aXRoLWpzLXJlY3Vyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAg
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tY29t
cGxldGUtd2l0aC1qcy1yZWN1cnNpb24nKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHNldFZlcnNpb247CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIH07Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKSB7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKK3sK
KyAgICBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScsIG51bGwpOwor
ICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IGNsaWNrOworfQorCitmdW5jdGlv
biBjbGljaygpCit7CisgICAgYm9keS5vbmNsaWNrID0gdGVzdDsKKyAgICB2YXIgcGVuZGluZ1Ry
YW5zYWN0aW9uID0gZXZhbEFuZExvZygicGVuZGluZ1RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rp
b24oWydvYmplY3RTdG9yZSddLCAncmVhZHdyaXRlJykiKTsKKyAgICBwZW5kaW5nVHJhbnNhY3Rp
b24ub25zdWNjZXNzID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcGVuZGluZ1RyYW5z
YWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBwZW5kaW5nVHJh
bnNhY3Rpb24ub25jb21wbGV0ZSA9IGNvbXBsZXRlQ2FsbGJhY2s7CisgICAgdmFyIGV2ZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTsKKyAgICBldmVudC5pbml0TW91c2VF
dmVudCgiY2xpY2siLCB0cnVlLCB0cnVlLCBkb2N1bWVudC5kZWZhdWx0VmlldywgMCwgMCwgMCwg
MCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIG51bGwpOworICAgIGJvZHkuZGlz
cGF0Y2hFdmVudChldmVudCk7CisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBw
ZW5kaW5nVHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ29iamVjdFN0b3JlJykiKTsKKyAgICBzaG91
bGRCZVRydWUoInN0b3JlICE9PSB1bmRlZmluZWQiKTsKKyAgICBib2R5Lm9uY2xpY2sgPSB1bmRl
ZmluZWQ7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGRlYnVnKCJTdGFydCByZS1lbnRy
YW50IEpTIik7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRi
LnRyYW5zYWN0aW9uKFsnb2JqZWN0U3RvcmUnXSwgJ3JlYWR3cml0ZScpIik7CisgICAgZGVidWco
IkVuZCByZS1lbnRyYW50IEpTIik7Cit9CisKKworZnVuY3Rpb24gY29tcGxldGVDYWxsYmFjaygp
Cit7CisgICAgdGVzdFBhc3NlZCgiUGVuZGluZyB0cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKworc2V0dXAoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdvcmtlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd29ya2Vycy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjQzZDlmOGY0NTUyZjg0OTNhYWJlMDQ2MGRlNzUxMjA4OTY5ODVhYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWNvbXBsZXRlLXdvcmtlcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODQgQEAKK1tXb3Jr
ZXJdIFRlc3QgSW5kZXhlZERCIHdvcmtlcnMsIHJlY3Vyc2lvbiwgYW5kIHRyYW5zYWN0aW9uIHRl
cm1pbmF0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworU3RhcnRpbmcgd29y
a2VyOiByZXNvdXJjZXMvdHJhbnNhY3Rpb24tY29tcGxldGUtd29ya2Vycy5qcworW1dvcmtlcl0g
aW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2Vs
Zi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7Citb
V29ya2VyXSAKK1tXb3JrZXJdIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24t
Y29tcGxldGUtd29ya2VyJykKK1tXb3JrZXJdIGRiID0gcmVxdWVzdC5yZXN1bHQKK1tXb3JrZXJd
IHJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykKK1tXb3JrZXJdIERlbGV0ZWQgYWxsIG9iamVj
dCBzdG9yZXMuCitbV29ya2VyXSB0cmFucyA9IHJlcXVlc3QucmVzdWx0CitbV29ya2VyXSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQorW1dvcmtlcl0gCitbV29ya2VyXSBjcmVhdGVUcmFu
c2FjdGlvbigpOgorW1dvcmtlcl0gdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUn
KQorW1dvcmtlcl0gc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKQorUEFT
UyBbV29ya2VyXSBUcmFuc2FjdGlvbiBjb21wbGV0ZWQKK1tXb3JrZXJdIEV4cGVjdGluZyBleGNl
cHRpb24gZnJvbSBzdG9yZS5nZXQoMCkKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJv
d24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJ
T05fSU5BQ1RJVkVfRVJSCitQQVNTIFtXb3JrZXJdIGVuYW1lIGlzICdUcmFuc2FjdGlvbkluYWN0
aXZlRXJyb3InCitbV29ya2VyXSAKK1tXb3JrZXJdIHJlY3Vyc2lvblRlc3QoKToKK1tXb3JrZXJd
IHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykKK1tXb3JrZXJdIHN0b3JlID0g
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK1tXb3JrZXJdIHN0b3JlLmdldCgwKQor
UEFTUyBbV29ya2VyXSB0cmFuc2FjdGlvbiBpcyBhY3RpdmUKK1tXb3JrZXJdIHJlY3Vyc2lvbiBk
ZXB0aDogMQorW1dvcmtlcl0gc3RvcmUuZ2V0KDApCitQQVNTIFtXb3JrZXJdIHRyYW5zYWN0aW9u
IGlzIHN0aWxsIGFjdGl2ZQorW1dvcmtlcl0gcmVjdXJzaW9uIGRlcHRoOiAyCitbV29ya2VyXSBz
dG9yZS5nZXQoMCkKK1BBU1MgW1dvcmtlcl0gdHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZlCitb
V29ya2VyXSByZWN1cnNpb24gZGVwdGg6IDMKK1tXb3JrZXJdIHN0b3JlLmdldCgwKQorUEFTUyBb
V29ya2VyXSB0cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUKK1tXb3JrZXJdIHJlY3Vyc2lvbiBk
ZXB0aDogMworW1dvcmtlcl0gc3RvcmUuZ2V0KDApCitQQVNTIFtXb3JrZXJdIHRyYW5zYWN0aW9u
IGlzIHN0aWxsIGFjdGl2ZQorW1dvcmtlcl0gcmVjdXJzaW9uIGRlcHRoOiAyCitbV29ya2VyXSBz
dG9yZS5nZXQoMCkKK1BBU1MgW1dvcmtlcl0gdHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZlCitb
V29ya2VyXSByZWN1cnNpb24gZGVwdGg6IDEKK1tXb3JrZXJdIHN0b3JlLmdldCgwKQorUEFTUyBb
V29ya2VyXSB0cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUKK1BBU1MgW1dvcmtlcl0gdHJhbnNh
Y3Rpb24gY29tcGxldGVkCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUu
Z2V0KDApCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2Vy
XSBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgor
UEFTUyBbV29ya2VyXSBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworW1dvcmtl
cl0gCitbV29ya2VyXSB0cnlpbmcgYSB0aW1lb3V0IGNhbGxiYWNrOgorW1dvcmtlcl0gc2V0VGlt
ZW91dCh0aW1lb3V0VGVzdCwgMCkKK1tXb3JrZXJdIAorW1dvcmtlcl0gdGltZW91dFRlc3QoKToK
K1tXb3JrZXJdIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykKK1tXb3JrZXJd
IHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK1BBU1MgW1dvcmtlcl0g
dHJhbnNhY3Rpb24gc3RhcnRlZCBpbiBzZXRUaW1lb3V0KCkgY2FsbGJhY2sgY29tcGxldGVkCitb
V29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuZ2V0KDApCitQQVNTIFtXb3Jr
ZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIElEQkRhdGFi
YXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorUEFTUyBbV29ya2VyXSBlbmFt
ZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJworW1dvcmtlcl0gCitbV29ya2VyXSBlcnJv
clRlc3QoKToKK1tXb3JrZXJdIHNlbGYub2xkX29uZXJyb3IgPSBzZWxmLm9uZXJyb3IKK1tXb3Jr
ZXJdIHNlbGYub25lcnJvciA9IGVycm9ySGFuZGxlcgorW1dvcmtlcl0gCitbV29ya2VyXSBlcnJv
ckhhbmRsZXIoKToKK1tXb3JrZXJdIHNlbGYub25lcnJvciA9IHNlbGYub2xkX29uZXJyb3IKK1tX
b3JrZXJdIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykKK1tXb3JrZXJdIHN0
b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK0dvdCBleHBlY3RlZCBlcnJv
ciBmcm9tIHdvcmtlciwgaWdub3JpbmcKK2V2ZW50LnByZXZlbnREZWZhdWx0KCkKK1BBU1MgW1dv
cmtlcl0gVHJhbnNhY3Rpb24gY29tcGxldGVkCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9u
IGZyb20gc3RvcmUuZ2V0KDApCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgor
UEFTUyBbV29ya2VyXSBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lO
QUNUSVZFX0VSUgorUEFTUyBbV29ya2VyXSBlbmFtZSBpcyAnVHJhbnNhY3Rpb25JbmFjdGl2ZUVy
cm9yJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNv
bXBsZXRlLXdvcmtlcnMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5z
YWN0aW9uLWNvbXBsZXRlLXdvcmtlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2VjZjFhZGQxYmQzZGM3
OTZhMWQxN2E3MDc0MDQyY2VlMjZlMWU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd29ya2Vycy5odG1sCkBAIC0w
LDAgKzEsMjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorCit2YXIg
d29ya2VyID0gc3RhcnRXb3JrZXIoJ3Jlc291cmNlcy90cmFuc2FjdGlvbi1jb21wbGV0ZS13b3Jr
ZXJzLmpzJyk7CisKKy8vIEZJWE1FOiBJdCBzaG91bGQgYmUgcG9zc2libGUgZm9yIHRoZSB3b3Jr
ZXIgdG8gc2V0IHNlbGYub25lcnJvciB0byBjYXRjaCB0aGUgZXZlbnQKKy8vIGFuZCBjYWxsIGV2
ZW50LnByZXZlbnREZWZhdWx0KCksIGJ1dCBpbiB0aGUgY3VycmVudCBXb3JrZXIgaW1wbGVtZW50
YXRpb24gdGhlIHJhdworLy8gZXhjZXB0aW9uIGlzIHNlZW4gYnkgdGhlIGV2ZW50IGhhbmRsZXIg
aW4gdGhlIHdvcmtlciwgbm90IGFuIEVycm9yRXZlbnQgb2JqZWN0LgorCit2YXIgb3JpZ19vbmVy
cm9yID0gd29ya2VyLm9uZXJyb3I7Cit3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uIChldmVudCkg
eworICAgIGlmIChldmVudC5tZXNzYWdlID09PSAiVW5jYXVnaHQgRXJyb3I6IGlnbm9yZSB0aGlz
IikgeworICAgICAgICBkZWJ1ZygiR290IGV4cGVjdGVkIGVycm9yIGZyb20gd29ya2VyLCBpZ25v
cmluZyIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7Cisg
ICAgfSBlbHNlIGlmIChvcmlnX29uZXJyb3IpIHsKKyAgICAgICAgb3JpZ19vbmVycm9yKGV2ZW50
KTsKKyAgICB9Cit9OworCisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90dXRvcmlhbC5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHV0b3JpYWwuaHRtbAppbmRleCBiOTM1ZWU1
NDcxN2RjYjE2ZWY3NTg0ODJlMWZkZDkwMWY3ZmVmMTc4Li4wMjg5YTg1ZDYwZDM4ZjA0ODZkZWFk
MzllZDkwOWIwNTc5MGI3ZWY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90dXRvcmlhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3R1
dG9yaWFsLmh0bWwKQEAgLTgyLDExICs4Miw4IEBAIGZ1bmN0aW9uIHVuZXhwZWN0ZWRFcnJvcigp
CiAgICAgLy8gdGhlIGNvcnJlY3QgdmFsdWVzLgogICAgIGxvZ0Vycm9yKCJFcnJvciAiICsgZXZl
bnQuY29kZSArICI6ICIgKyBldmVudC5tZXNzYWdlKTsKIAotICAgIC8vIFVuZm9ydHVuYXRlbHks
IENocm9taXVtL1dlYktpdCBkbyBub3QgaW1wbGljaXRseSBhYm9ydCBhIHRyYW5zYWN0aW9uIHdo
ZW4gYW4gZXJyb3Igb2NjdXJzCi0gICAgLy8gd2l0aGluIG9uZSBvZiBpdHMgYXN5bmMgb3BlcmF0
aW9ucy4gSW4gdGhlIGZ1dHVyZSwgd2hlbiBhbiBlcnJvciBvY2N1cnMgYW5kIHRoZSBldmVudCBp
cwotICAgIC8vIG5vdCBjYW5jZWxlZCwgdGhlIHRyYW5zYWN0aW9uIHdpbGwgYmUgYWJvcnRlZC4K
LSAgICBpZiAoY3VycmVudFRyYW5zYWN0aW9uKQotICAgICAgICBjdXJyZW50VHJhbnNhY3Rpb24u
YWJvcnQoKTsKKyAgICAvLyBJZiB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgZXJyb3IgaXMg
bm90IHByZXZlbnRlZCwgdGhlIHRyYW5zYWN0aW9uIHdpbGwgaW1wbGljaXRseQorICAgIC8vIGJl
IGFib3J0ZWQuCiB9CiAKIGZ1bmN0aW9uIG9uT3BlbigpCkBAIC0yMTksOCArMjE2LDggQEAgZnVu
Y3Rpb24gb25TZXRWZXJzaW9uQ29tcGxldGUoKQogICAgIC8vIFRoYXQncyBmaW5lIGZvciB0aGlz
IGNhc2UsIGJ1dCBsYXRlciB3ZSdsbCBhc2sgZm9yICdyZWFkd3JpdGUnLiBBdCB0aGUgbW9tZW50
LAogICAgIC8vIENocm9taXVtL1dlYktpdCBwcmV0ZW5kcyBldmVyeSB0cmFuc2FjdGlvbiBpcyBS
RUFEX1dSSVRFLCB3aGljaCBpcyBraW5kIG9mIGJhZC4KICAgICB3aW5kb3cuY3VycmVudFRyYW5z
YWN0aW9uID0gZGIudHJhbnNhY3Rpb24oInBlb3BsZSIsICdyZWFkd3JpdGUnKTsKLSAgICBjdXJy
ZW50VHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZTsKLSAgICBjdXJy
ZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9IG9uVHJhbnNhY3Rpb25BYm9ydGVkOworICAgIGN1cnJl
bnRUcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gb25UcmFuc2FjdGlvbkNvbXBsZXRlZDsKKyAgICBj
dXJyZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydDsKIAogICAgIC8vIFZl
cmlmeSB0aGF0ICJwZW9wbGUiIGlzIHRoZSBvbmx5IG9iamVjdCBzdG9yZSBpbiBleGlzdGFuY2Uu
IFRoZSBvYmplY3RTdG9yZU5hbWVzIGF0dHJpYnV0ZSBpcwogICAgIC8vIGEgRE9NU3RyaW5nTGlz
dCB3aGljaCBpcyBzb21ld2hhdCBsaWtlIGFuIGFycmF5LgpAQCAtMjU0LDE2ICsyNTEsMTEgQEAg
ZnVuY3Rpb24gb25TZXRWZXJzaW9uQ29tcGxldGUoKQogICAgIGlmIChvYmplY3RTdG9yZS5pbmRl
eE5hbWVzLmxlbmd0aCAhPSAyKQogICAgICAgICBsb2dFcnJvcigiU29tZXRoaW5nIHdlbnQgd3Jv
bmcuIik7CiAKLSAgICAvLyBOb3RlIHRoYXQgbm8gYXN5bmMgYWN0aW9ucyB3ZXJlIGV2ZXIgcXVl
dWVkIHVwIGFnaWFuc3Qgb3VyIHRyYW5zYWN0aW9uLCBzbyBpdCdsbCBhYm9ydCBvbmNlCisgICAg
Ly8gTm90ZSB0aGF0IG5vIGFzeW5jIGFjdGlvbnMgd2VyZSBldmVyIHF1ZXVlZCB1cCBhZ2FpbnN0
IG91ciB0cmFuc2FjdGlvbi4gSXQgd2lsbCBjb21taXQgd2hlbgogICAgIC8vIHdlIGxlYXZlIHRo
aXMgY29udGV4dC4KIH0KIAotZnVuY3Rpb24gdW5leHBlY3RlZENvbXBsZXRlKCkKLXsKLSAgICBs
b2dFcnJvcigiQSB0cmFuc2FjdGlvbiBjb21taXR0ZWQgdW5leHBlY3RlZGx5ISIpOwotfQotCi1m
dW5jdGlvbiBvblRyYW5zYWN0aW9uQWJvcnRlZCgpCitmdW5jdGlvbiBvblRyYW5zYWN0aW9uQ29t
cGxldGVkKCkKIHsKICAgICAvLyBOb3cgbGV0J3MgbWFrZSBhIHJlYWwgdHJhbnNhY3Rpb24gYW5k
IGEgcGVyc29uIHRvIG91ciBvYmplY3RTdG9yZS4KICAgICB3aW5kb3cuY3VycmVudFRyYW5zYWN0
aW9uID0gZGIudHJhbnNhY3Rpb24oInBlb3BsZSIsICdyZWFkd3JpdGUnKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>